{"version":3,"file":"investors.0762b8fcdb5d6ea68677.chunk.js","mappings":"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","sources":["webpack://AlfaLaval/./node_modules/classnames/index.js","webpack://AlfaLaval/./assets/icons/common/Profile.tsx","webpack://AlfaLaval/./assets/icons/common/IconContainer.tsx","webpack://AlfaLaval/./assets/icons/common/Facebook.tsx","webpack://AlfaLaval/./assets/icons/common/Twitter.tsx","webpack://AlfaLaval/./assets/icons/common/ExternalLink.tsx","webpack://AlfaLaval/./assets/icons/common/Arrow.tsx","webpack://AlfaLaval/./assets/icons/common/Cross.tsx","webpack://AlfaLaval/./assets/icons/common/Delete.tsx","webpack://AlfaLaval/./assets/icons/common/Email.tsx","webpack://AlfaLaval/./assets/icons/common/Phone.tsx","webpack://AlfaLaval/./components/Select/components/CategoryList.tsx","webpack://AlfaLaval/./components/Select/components/SubCategoriesList.tsx","webpack://AlfaLaval/./components/Select/Select.tsx","webpack://AlfaLaval/./components/Select/Select.hooks.ts","webpack://AlfaLaval/./components/SocialMediaShare/SocialMediaShare.tsx","webpack://AlfaLaval/./helpers/stringHelpers.ts","webpack://AlfaLaval/./hooks/useOutsideClick.tsx","webpack://AlfaLaval/./layouts/HeaderBar/HeaderBar.service.ts","webpack://AlfaLaval/./assets/icons/investors/IRArrowDownWideSvg.tsx","webpack://AlfaLaval/./hooks/useMediaQuery.ts","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeaderBar/components/IRBreadcrumbs/IRBreadcrumbs.tsx","webpack://AlfaLaval/./assets/icons/investors/IRArrowRightSvg.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeaderBar/components/IRMenu/IRMenuLink.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeaderBar/components/IRMenu/IRMenuFeaturedLink.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeaderBar/components/IRMenu/IRMenuBtn.tsx","webpack://AlfaLaval/./hooks/useDelayUnmount.ts","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeaderBar/components/IRMenu/IRMenu.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeaderBar/IRHeaderBar.hooks.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeaderBar/IRHeaderBar.tsx","webpack://AlfaLaval/./components/IRHtmlDiv/IRHtmlDiv.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRFullWidthImageBlock/IRFullWidthImageBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRHeroBlock/IRHeroBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRTextBlock/IRTextBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRUnknownBlock/IRUnknownBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRKeyFactsBlock/IRKeyFactsBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRPresentationCardBlock/IRPresentationCardBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRContactBlock/IRContactBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRInfoBoxBlock/IRInfoBoxBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRQuickLinkBlock/IRQuickLinkBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRButton/IRButton.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRTextImageBlock/IRTextImageBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRColumnBlock/IRColumnBlock.tsx","webpack://AlfaLaval/./assets/icons/investors/IRDownloadHoverIcon.tsx","webpack://AlfaLaval/./assets/icons/investors/IRPdfSvg.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRFileItem/IRFileItemBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRLink/IRLink.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRCTABlock/IRCTABlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRRelatedContentBlock/IRRelatedContentBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/InvestorRelations.service.ts","webpack://AlfaLaval/./pages/InvestorRelations/components/IRSubscriptionBlock/IRSubscriptionBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRFileListingBlock/IRFileListingBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRCalendarEventBlock/components/IRCalendarEventComponent.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRCalendarEventBlock/IRCalendarEventBlock.tsx","webpack://AlfaLaval/./assets/icons/investors/IRArrowDownRightSvg.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRTickerBlock/components/IRTickerBlockSmall.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRTickerBlock/components/IRTickerBlockLarge.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRTickerBlock/IRTickerBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRVideoBlock/IRVideoBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRShareGraphBlock/IRShareGraphBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRQuarterlyReportBlock/IRQuarterlyReportRowBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRQuarterlyReportBlock/IRQuarterlyReportBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRAccordion/IRAccordion.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRQuarterlyReportBlock/IRQuarterlyReportListBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRPressReleaseListBlock/IRPressReleaseFilter.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRPressReleaseListBlock/IRPressReleaseListCompact.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRPressReleaseListBlock/IRPressReleaseListStandard.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRPressReleaseListBlock/IRPressReleaseListBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRCalendarListBlock/IRCalendarListBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/IRAnnualReports/IRAnnualReportsBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/components/getBlock.tsx","webpack://AlfaLaval/./pages/InvestorRelations/pageTypes/InvestorRelationsFullwidthPage.tsx","webpack://AlfaLaval/./pages/InvestorRelations/pageTypes/InvestorRelationsStandardPage.tsx","webpack://AlfaLaval/./pages/InvestorRelations/pageTypes/InvestorRelationsStartPage.tsx","webpack://AlfaLaval/./pages/InvestorRelations/InvestorRelations.tsx","webpack://AlfaLaval/./pages/InvestorRelations/index.ts","webpack://AlfaLaval/./services/endpoints.ts"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\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)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\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","import React from 'react';\r\n\r\nexport const Profile = () => (\r\n  <svg\r\n    xmlns='http://www.w3.org/2000/svg'\r\n    width='21'\r\n    height='21'\r\n    viewBox='0 0 21 21'\r\n    fill='none'\r\n    stroke='#11387f'\r\n    strokeWidth='2'\r\n    strokeLinecap='round'\r\n    strokeLinejoin='round'\r\n  >\r\n    <circle cx='12' cy='7' r='4' />\r\n    <path d='M12 14s-8-1.5-8 4h16c0-5.5-8-4-8-4z' />\r\n  </svg>\r\n);\r\n","import React, { ReactNode } from 'react';\r\n\r\ninterface IconContainerProps {\r\n  icon: ReactNode;\r\n  className?: string;\r\n}\r\n\r\nexport const IconContainer = ({ icon, className }: IconContainerProps) => {\r\n  return (\r\n    <i className={className} aria-hidden=\"true\">\r\n      {icon}\r\n    </i>\r\n  )\r\n};","import React from 'react';\r\n\r\nexport const Facebook = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"20\" viewBox=\"0 0 24 24\" width=\"20\">\r\n    <rect fill=\"none\" height=\"20\" width=\"20\" />\r\n    <path d=\"M22,12c0-5.52-4.48-10-10-10S2,6.48,2,12c0,4.84,3.44,8.87,8,9.8V15H8v-3h2V9.5C10,7.57,11.57,6,13.5,6H16v3h-2 c-0.55,0-1,0.45-1,1v2h3v3h-3v6.95C18.05,21.45,22,17.19,22,12z\" />\r\n  </svg>\r\n);\r\n\r\n\r\n","import React from 'react';\r\n\r\nexport const Twitter = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\">\r\n    <path d=\"M 2.3671875 3 L 9.4628906 13.140625 L 2.7402344 21 L 5.3808594 21 L 10.644531 14.830078 L 14.960938 21 L 21.871094 21 L 14.449219 10.375 L 20.740234 3 L 18.140625 3 L 13.271484 8.6875 L 9.2988281 3 L 2.3671875 3 z M 6.2070312 5 L 8.2558594 5 L 18.033203 19 L 16.001953 19 L 6.2070312 5 z\"></path>\r\n  </svg>\r\n);","import React from 'react';\r\n\r\nexport const ExternalLink = () => (\r\n  <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n    <g id=\"external-link\">\r\n      <path id=\"Vector\" d=\"M18 13V17C18 18.0609 17.5786 19.0783 16.8284 19.8284C16.0783 20.5786 15.0609 21 14 21H3V6H11\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n      <path id=\"Vector_2\" d=\"M15 3H21V9\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n      <path id=\"Vector_3\" d=\"M10 14L21 3\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    </g>\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const Arrow = ({ stroke = '#10387F', rotate = 0 }) => {\r\n  return (\r\n    <svg\r\n      xmlns='http://www.w3.org/2000/svg'\r\n      width='24'\r\n      height='24'\r\n      viewBox='0 0 24 24'\r\n      fill='none'\r\n      style={{\r\n        transformBox: 'fill-box',\r\n        transformOrigin: 'center',\r\n        transform: `rotate(${rotate}deg)`,\r\n      }}\r\n    >\r\n      <path d='M9 18.5L15 12.5L9 6.5' stroke={stroke} strokeWidth='2' />\r\n    </svg>\r\n  );\r\n};\r\n","import React from 'react';\r\n\r\nexport const Cross = () => (\r\n  <svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n    <path\r\n      d='M18 6L6 18'\r\n      stroke='currentColor'\r\n      strokeWidth='2'\r\n      strokeLinecap='round'\r\n      strokeLinejoin='round'\r\n    />\r\n    <path\r\n      d='M6 6L18 18'\r\n      stroke='currentColor'\r\n      strokeWidth='2'\r\n      strokeLinecap='round'\r\n      strokeLinejoin='round'\r\n    />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const Delete = () => (\r\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n    <path d=\"M3 6H5H21\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    <path d=\"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V18C19 19.0609 18.5786 20.0783 17.8284 20.8284C17.0783 21.5786 16.0609 22 15 22H5V6H19Z\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    <path d=\"M10 11V17\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n    <path d=\"M14 11V17\" stroke=\"#3D3935\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const EmailSvg = () => (\r\n  <svg width='20' height='15' viewBox='0 0 20 15' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n    <path\r\n      d='M0.833496 2.74939C0.833496 1.64482 1.72893 0.74939 2.8335 0.74939H17.1668C18.2714 0.74939 19.1668 1.64482 19.1668 2.74939V3.50801L11.7086 8.675C10.6809 9.38697 9.31942 9.38697 8.29173 8.675L0.833496 3.50801V2.74939Z'\r\n      fill='#3D3935'\r\n    />\r\n    <path\r\n      d='M0.833496 4.42755L8.29173 9.59454C9.31942 10.3065 10.6809 10.3065 11.7086 9.59454L19.1668 4.42755V12.0827C19.1668 13.1873 18.2714 14.0827 17.1668 14.0827H2.8335C1.72893 14.0827 0.833496 13.1873 0.833496 12.0827V4.42755Z'\r\n      fill='#3D3935'\r\n    />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\n\r\nexport const PhoneSvg = () => (\r\n  <svg width='18' height='17' viewBox='0 0 18 17' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n    <path\r\n      fillRule='evenodd'\r\n      clipRule='evenodd'\r\n      d='M17.3327 12.5608V15.0698C17.3336 15.3028 17.2857 15.5333 17.1923 15.7468C17.0988 15.9602 16.9617 16.1517 16.7896 16.3092C16.6177 16.4667 16.4146 16.5865 16.1936 16.6611C15.9725 16.7358 15.7382 16.7635 15.5058 16.7425C12.9272 16.4629 10.4502 15.5835 8.27395 14.175C6.24917 12.8909 4.53255 11.1777 3.24595 9.15694C1.82971 6.97511 0.948369 4.49104 0.673306 1.90593C0.652365 1.67465 0.679901 1.44157 0.754173 1.22149C0.828436 1.00143 0.947808 0.799203 1.10467 0.627696C1.26154 0.456188 1.45247 0.319163 1.66532 0.225335C1.87815 0.131506 2.10824 0.0829403 2.34091 0.0827228H4.8549C5.26157 0.0787251 5.65584 0.222458 5.9642 0.487116C6.27256 0.751775 6.47396 1.11931 6.53088 1.52122C6.63701 2.32415 6.83377 3.11253 7.11751 3.87132C7.23022 4.17066 7.25461 4.49599 7.18782 4.80875C7.12095 5.12151 6.96567 5.4086 6.74042 5.63599L5.67613 6.69811C6.86905 8.79196 8.60613 10.5256 10.7041 11.7161L11.7684 10.654C11.9961 10.4292 12.2838 10.2742 12.5972 10.2075C12.9106 10.1408 13.2365 10.1651 13.5365 10.2776C14.2968 10.5608 15.0868 10.7572 15.8913 10.8631C16.2983 10.9204 16.6701 11.125 16.9359 11.438C17.2016 11.7511 17.3428 12.1507 17.3327 12.5608Z'\r\n      fill='#3D3935'\r\n    />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\nimport { SelectItem } from '../Select.types';\r\n\r\ninterface CategoryListProps {\r\n  name: string;\r\n  sub: string;\r\n  selectableTitle: boolean;\r\n  onClickSelectableTitle?: () => void;\r\n  onSelect: (item: SelectItem[]) => void;\r\n  defaultTitle: string;\r\n  list: SelectItem[];\r\n}\r\n\r\nexport const CategoryList = ({\r\n  name,\r\n  sub,\r\n  selectableTitle,\r\n  onClickSelectableTitle,\r\n  onSelect,\r\n  defaultTitle,\r\n  list,\r\n}: CategoryListProps) => {\r\n  return (\r\n    <div>\r\n      <li key={-1} onClick={onClickSelectableTitle} className={selectableTitle ? '' : 'inactive'}>\r\n        {defaultTitle}\r\n      </li>\r\n      {...list.map((item, index) => (\r\n        <li key={index} onClick={() => onSelect(item[sub])}>\r\n          <span>{item[name]}</span>\r\n          <i className='icon-angle-right' />\r\n        </li>\r\n      ))}\r\n    </div>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport { SelectItem } from '../Select.types'\r\n\r\ninterface SubCategoriesListProps {\r\n  name: string;\r\n  backLabel?: string;\r\n  onClickBack?: () => void;\r\n  list: SelectItem[];\r\n  onSelect: (item: SelectItem) => void;\r\n}\r\n\r\nexport const SubCategoriesList = ({\r\n  name,\r\n  backLabel,\r\n  onClickBack,\r\n  list,\r\n  onSelect,\r\n}: SubCategoriesListProps) => {\r\n  return (\r\n    <div>\r\n      <li onClick={onClickBack} key={-1}>\r\n        <span>\r\n          <i className='icon-angle-left' />\r\n          {backLabel || 'Back'}\r\n        </span>\r\n      </li>\r\n      {...list.map((item, index) => (\r\n        <li key={index} onClick={() => onSelect(item)}>\r\n          {item[name]}\r\n        </li>\r\n      ))}\r\n    </div>\r\n  );\r\n};\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport { CategoryList } from './components/CategoryList';\r\nimport { SubCategoriesList } from './components/SubCategoriesList';\r\nimport { useReset } from './Select.hooks';\r\nimport { getComputerName } from '@helpers/stringHelpers';\r\nimport { SelectItem } from './Select.types';\r\nimport './Select.scss';\r\n\r\ninterface List {\r\n  [key: string]: Array<SelectItem> | string;\r\n  Id: string;\r\n  Name: string;\r\n}\r\n\r\ninterface SelectProps {\r\n  name: string;\r\n  sub: string;\r\n  resetTime?: number | null;\r\n  selectFunction: (item: SelectItem) => void;\r\n  defaultTitle: string;\r\n  selectableTitle?: boolean;\r\n  title: string;\r\n  list: List[];\r\n  label?: string;\r\n  backLabel?: string;\r\n  required?: boolean;\r\n}\r\n\r\nexport const Select = ({\r\n  name,\r\n  sub,\r\n  resetTime,\r\n  selectFunction,\r\n  defaultTitle,\r\n  selectableTitle,\r\n  required = false,\r\n  title,\r\n  list,\r\n  label = '',\r\n  backLabel,\r\n}: SelectProps) => {\r\n  const [isShowing, setIsShowing] = useState<boolean>(false);\r\n  const [selectedCategory, setSelectedCategory] = useState<SelectItem[]>(null);\r\n  const [selectedCategoryItem, setSelectedCategoryItem] = useState<SelectItem>(null);\r\n\r\n  const doReset = () => {\r\n    setIsShowing(false);\r\n    setSelectedCategory(null);\r\n    setSelectedCategoryItem(null);\r\n  };\r\n\r\n  useReset(resetTime, doReset);\r\n\r\n  useEffect(() => {\r\n    doReset();\r\n  }, [list]);\r\n\r\n  const selectRef = useRef<HTMLDivElement>(null);\r\n  const handleClickOutside = () => {\r\n    setIsShowing(false);\r\n  };\r\n  useOutsideClick(selectRef, handleClickOutside);\r\n\r\n  const handleClick = () => {\r\n    setIsShowing(!isShowing);\r\n  };\r\n\r\n  const selectCategory = (category: SelectItem[]) => {\r\n    setSelectedCategory(category);\r\n  };\r\n\r\n  const selectCategoryItem = (item: SelectItem) => {\r\n    selectFunction(item);\r\n    setSelectedCategoryItem(item);\r\n    setIsShowing(false);\r\n    setSelectedCategory(null);\r\n  };\r\n\r\n  const onClickSelectableTitle = () => {\r\n    if (selectableTitle) {\r\n      selectFunction(null);\r\n      doReset();\r\n    }\r\n  };\r\n\r\n  const back = () => {\r\n    setSelectedCategory(null);\r\n  };\r\n\r\n  return (\r\n    <div ref={selectRef} className='c-select'>\r\n      {label && (\r\n        <label htmlFor={getComputerName(label)}>\r\n          {label}\r\n          {required && ' *'}\r\n        </label>\r\n      )}\r\n\r\n      <div className='c-button'>\r\n        <div className='c-select-wrapper' data-name={getComputerName(label)} onClick={handleClick}>\r\n          <span>{selectedCategoryItem ? selectedCategoryItem[name] : title}</span>\r\n          <i className='icon-angle-down' />\r\n        </div>\r\n        {isShowing && (\r\n          <div className='c-select-list'>\r\n            <ul>\r\n              {!selectedCategory ? (\r\n                <CategoryList\r\n                  name={name}\r\n                  sub={sub}\r\n                  list={list}\r\n                  onSelect={selectCategory}\r\n                  selectableTitle={selectableTitle}\r\n                  onClickSelectableTitle={onClickSelectableTitle}\r\n                  defaultTitle={defaultTitle}\r\n                />\r\n              ) : (\r\n                <SubCategoriesList\r\n                  name={name}\r\n                  list={selectedCategory}\r\n                  backLabel={backLabel}\r\n                  onClickBack={back}\r\n                  onSelect={selectCategoryItem}\r\n                />\r\n              )}\r\n            </ul>\r\n          </div>\r\n        )}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport const useReset = (resetTime: number | null, doReset: () => void) => {\r\n  const [reset, setReset] = useState<number>(resetTime);\r\n\r\n  useEffect(() => {\r\n    if (resetTime && resetTime !== reset) {\r\n      doReset();\r\n      setReset(resetTime);\r\n    }\r\n  }, [resetTime]);\r\n};\r\n","import React, { MouseEvent } from 'react';\r\nimport { IconContainer, Facebook, Twitter } from '@icons/common';\r\n\r\ninterface SocialMediaShareProps {\r\n  title: string;\r\n}\r\n\r\nexport const SocialMediaShare = ({ title }: SocialMediaShareProps) => {\r\n  const handleClick = (e: MouseEvent<HTMLAnchorElement>, name: string) => {\r\n    e.preventDefault();\r\n\r\n    window.open(\r\n      e.currentTarget.href,\r\n      name + \"Share Window\",\r\n      \"height=450, width=550, top=\" +\r\n      (window.innerHeight / 2 - 275) +\r\n      \", left=\" +\r\n      (window.innerWidth / 2 - 225) +\r\n      \", toolbar=0, location=0, menubar=0, directories=0, scrollbars=0\"\r\n    );\r\n  };\r\n\r\n  const shareUrl = window.location.href;\r\n\r\n  return (\r\n    <div className=\"l-share-buttons-container\">\r\n      <span className=\"share\">{title}</span>\r\n      <div className=\"l-share-buttons-container-links\">\r\n        {/* <!-- Facebook --> */}\r\n        <div className=\"c-share-link is-facebook \">\r\n          <a\r\n            href={\"http://www.facebook.com/sharer.php?u=\" + shareUrl}\r\n            onClick={(e) => handleClick(e, \"Facebook\")}>\r\n            <IconContainer icon={<Facebook />} />\r\n          </a>\r\n        </div>\r\n\r\n        {/* <!-- Twitter --> */}\r\n        <div className=\"c-share-link is-twitter\">\r\n          <a\r\n            onClick={(e) => handleClick(e, \"Twitter\")}\r\n            href={\r\n              \"https://twitter.com/share?url=\" + shareUrl + \"&text=Alfalaval&hashtags=alfalaval\"\r\n            }>\r\n            <IconContainer icon={<Twitter />} />\r\n          </a>\r\n        </div>\r\n\r\n        {/* <!-- Linkedin--> */}\r\n        <div className=\"c-share-link is-linkedin\">\r\n          <a\r\n            onClick={(e) => handleClick(e, \"LinkedIn\")}\r\n            href={\"http://www.linkedin.com/shareArticle?mini=true&url=\" + shareUrl}>\r\n            <i className=\"icon-linkedin\" aria-hidden=\"true\" />\r\n          </a>\r\n        </div>\r\n\r\n        {/* <!-- Mail --> */}\r\n        <div className=\"c-share-link is-mail\">\r\n          <a href={\"mailto:?Subject=Alfalaval&Body=\" + shareUrl}>\r\n            <i className=\"icon-envelope\" aria-hidden=\"true\" />\r\n          </a>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","// replaces all spaces with -\r\nexport const getComputerName = (str: string): string => {\r\n  if (!str) return '';\r\n  const computerName = str.replace(/\\s+/g, '-').toLowerCase();\r\n  return computerName;\r\n};\r\n\r\nexport const truncateString = (str: string, limit: number): string => {\r\n  if (!str) return '';\r\n  let truncated = str.substring(0, limit);\r\n  truncated += '...';\r\n  return truncated;\r\n};\r\n\r\nexport const normalizeInput = (value: string): string => {\r\n  return value.toLowerCase().trim();\r\n};\r\n\r\nexport const interpolateString = (str: string, ...args: string[]): string => {\r\n  let interpolatedString = str;\r\n  args.forEach((arg, index) => {\r\n    interpolatedString = interpolatedString.replace(`{${index}}`, arg);\r\n  });\r\n  return interpolatedString;\r\n};\r\n","import { useEffect } from \"react\";\r\n\r\nexport const useOutsideClick = (\r\n  ref: React.RefObject<any>,\r\n  handler: Function\r\n) => {\r\n  return useEffect(() => {\r\n    const handleClick = (e: any) => {\r\n      if (ref.current && !ref.current.contains(e.target)) {\r\n        handler(e);\r\n      }\r\n    };\r\n\r\n    document.addEventListener(\"mousedown\", handleClick);\r\n    document.addEventListener(\"touchstart\", handleClick);\r\n\r\n    return () => {\r\n      document.removeEventListener(\"mousedown\", handleClick);\r\n      document.removeEventListener(\"touchstart\", handleClick);\r\n    };\r\n  }, [ref, handler]);\r\n};\r\n","import { apiSlice } from '@services/apiSlice';\r\nimport { Breadcrumb as endpoints } from '@services/endpoints';\r\nimport { Breadcrumb } from './HeaderBar.types';\r\n\r\nconst breadcrumbApi = apiSlice.injectEndpoints({\r\n  endpoints: (build) => ({\r\n    fetchBreadcrumb: build.query<Breadcrumb, void>({\r\n      query: () => ({\r\n        url: endpoints.fetchBreadcrumb,\r\n        params: { language: window.lang, pageId: window.pageId }\r\n      }),\r\n    }),\r\n  }),\r\n  overrideExisting: false,\r\n})\r\n\r\nexport const { useFetchBreadcrumbQuery } = breadcrumbApi;","import React from \"react\";\r\n\r\nexport const IRArrowDownWideSvg = () => (\r\n  <svg\r\n    width=\"16\"\r\n    height=\"10\"\r\n    viewBox=\"0 0 16 10\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path d=\"M0.5 1.25031L7.99956 8.75L15.5 1.24994\" stroke=\"#3D3935\" />\r\n  </svg>\r\n);\r\n","import { useState, useEffect } from \"react\";\r\nexport const useMediaQuery = (query: string): boolean => {\r\n  const [matches, setMatches] = useState(false);\r\n\r\n  useEffect(() => {\r\n    if (!window) {\r\n      return;\r\n    }\r\n\r\n    const media = window.matchMedia(query);\r\n\r\n    if (media.matches !== matches) {\r\n      setMatches(media.matches);\r\n    }\r\n\r\n    function listener() {\r\n      setMatches(media.matches);\r\n    }\r\n\r\n    media.addEventListener(\"change\", listener);\r\n\r\n    return () => {\r\n      media.removeEventListener(\"change\", listener);\r\n    };\r\n  }, [matches, query]);\r\n\r\n  return matches;\r\n};\r\n\r\nexport default useMediaQuery;\r\n","import React from 'react';\r\nimport { SocialMediaShare } from '@components/SocialMediaShare';\r\nimport './IRBreadcrumbs.scss';\r\n\r\ntype IRBreadcrumbItem = {\r\n  Href: string;\r\n  Text: string;\r\n};\r\nexport type IRBreadcrumbsProps = {\r\n  Breadcrumbs: IRBreadcrumbItem[];\r\n  Share?: string;\r\n  currentPage?: string;\r\n};\r\n\r\nexport const IRBreadcrumbs = ({ Breadcrumbs, Share, currentPage }: IRBreadcrumbsProps) => {\r\n  return (\r\n    <div className='c-ir-breadcrumb c-breadcrumb'>\r\n      <div className='c-ir-breadcrumb-links'>\r\n        {Breadcrumbs.map((item: IRBreadcrumbItem, index: number) =>\r\n          item.Href ? (\r\n            <>\r\n              {index > 0 && <span>/</span>}\r\n              <a key={index} href={item.Href} className='c-ir-breadcrumb-link'>\r\n                {item.Text}\r\n              </a>\r\n            </>\r\n          ) : null\r\n        )}\r\n        <span>/</span>\r\n        <span className='c-ir-breadcrumb-link current-page'>{currentPage}</span>\r\n      </div>\r\n      {Share && (\r\n        <div className='c-headerbar-social'>\r\n          <SocialMediaShare title={Share} />\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\n\r\nexport const IRArrowRightSvg = () => (\r\n  <svg\r\n    width=\"9\"\r\n    height=\"15\"\r\n    viewBox=\"0 0 9 15\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path d=\"M1 13.5L7 7.5L1 1.5\" stroke=\"#11387F\" strokeWidth=\"2\" />\r\n  </svg>\r\n);\r\n","import React from \"react\";\r\nimport { IRMenuItem } from \"./IRMenu\";\r\n\r\ntype IRMenuLinkProps = {\r\n  Title: IRMenuItem[\"Title\"];\r\n  Url: IRMenuItem[\"Url\"];\r\n};\r\n\r\nexport default function IRMenuLink({ Title, Url }: IRMenuLinkProps) {\r\n  return (\r\n    <li className=\"c-ir-menu-link-wrapper\">\r\n      <a href={Url} className=\"c-ir-menu-link\">\r\n        {Title}\r\n      </a>\r\n    </li>\r\n  );\r\n}\r\n","import React from \"react\";\r\nimport { IRArrowRightSvg } from \"@icons/investors/IRArrowRightSvg\";\r\n\r\ntype IRMenuFeaturedLinkProps = {\r\n  heading: string;\r\n  url: string;\r\n};\r\n\r\nexport default function IRMenuFeaturedLink({\r\n  heading,\r\n  url,\r\n}: IRMenuFeaturedLinkProps) {\r\n  return (\r\n    <li>\r\n      <a href={url} className=\"c-ir-menu-visit-page-link\">\r\n        <div className=\"c-ir-current-page-text-wrapper\">\r\n          <div className=\"c-ir-menu-current-page-heading\">{heading}</div>\r\n          <div className=\"c-ir-menu-current-page-visit\">Visit page</div>\r\n        </div>\r\n        <div className=\"c-ir-menu-current-page-arrow-svg\">\r\n          <IRArrowRightSvg />\r\n        </div>\r\n      </a>\r\n    </li>\r\n  );\r\n}\r\n","import React from \"react\";\r\nimport { IRArrowRightSvg } from \"@icons/investors/IRArrowRightSvg\";\r\nimport { IRMenuItem } from \"./IRMenu\";\r\n\r\n\r\ntype IRMenuBtn = {\r\n  item?: IRMenuItem;\r\n  onClick: () => void\r\n}\r\n\r\nexport default function IRMenuBtn({ item, onClick }) {\r\n  return (\r\n    <li key={item.ID} className=\"c-ir-menu-link-wrapper\">\r\n      <button\r\n        className=\"c-ir-menu-link has-subpages\"\r\n        onClick={() => onClick()}\r\n      >\r\n        <span className=\"btn-text-content\">{item.Title}</span>\r\n        <div className=\"c-ir-menu-link-arrow-svg\">\r\n          <IRArrowRightSvg />\r\n        </div>\r\n      </button>\r\n\r\n    </li>\r\n  );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\n/*\r\n  Snippet source: https://dev.to/oussel/how-to-use-conditional-rendering-with-animation-in-react-1k20\r\n*/\r\nexport const useDelayUnmount = (isMounted, delayTime) => {\r\n  const [showDiv, setShowDiv] = useState(false);\r\n  useEffect(() => {\r\n    let timeoutId;\r\n    if (isMounted && !showDiv) {\r\n      setShowDiv(true);\r\n    } else if (!isMounted && showDiv) {\r\n      //delay our unmount\r\n      timeoutId = setTimeout(() => setShowDiv(false), delayTime);\r\n    }\r\n    // cleanup mechanism for effects , the use of setTimeout generate a sideEffect\r\n    return () => clearTimeout(timeoutId);\r\n  }, [isMounted, delayTime, showDiv]);\r\n  return showDiv;\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Cross } from '@icons/common';\r\nimport { IRArrowRightSvg } from '@icons/investors/IRArrowRightSvg';\r\nimport IRMenuLink from './IRMenuLink';\r\nimport IRMenuVisitPage from './IRMenuFeaturedLink';\r\nimport IRMenuBtn from './IRMenuBtn';\r\nimport { useDelayUnmount } from '@hooks/useDelayUnmount';\r\nimport './IRMenu.scss';\r\n\r\nexport type IRMenuItem = {\r\n  Children?: IRMenuItem[];\r\n  ID?: number;\r\n  Language?: string;\r\n  Title?: string;\r\n  Url?: string;\r\n};\r\n\r\nexport type IRMenuProps = {\r\n  data?: IRMenuItem;\r\n  openUrl?: string;\r\n  onClose?: () => void;\r\n};\r\n\r\nconst mountedStyleFading = {\r\n  animation: 'fadeInAnimation 525ms cubic-bezier(0.4, 0, 0.2, 1)',\r\n};\r\nconst unmountedStyleFading = {\r\n  animation: 'fadeOutAnimation 525ms cubic-bezier(0.4, 0, 0.2, 1)',\r\n  animationFillMode: 'forwards',\r\n};\r\n\r\nexport const IRMenu = ({ data, openUrl, onClose }: IRMenuProps) => {\r\n  const [subMenu, setSubMenu] = useState<IRMenuItem | null>(null);\r\n  const [transitioning, setTransitioning] = useState<boolean>(false);\r\n  const [menuIsMounted, setMenuIsMounted] = useState(false);\r\n\r\n  const [submenuActive, setSubmenuActive] = useState(false);\r\n\r\n  useEffect(() => {\r\n    if (openUrl) {\r\n      const subMenu = data.Children.find((item: IRMenuItem) => item.Url === openUrl);\r\n      setSubMenu(subMenu);\r\n      setSubmenuActive(!!subMenu);\r\n      setTransitioning(false);\r\n      setMenuIsMounted(true);\r\n    } else {\r\n      setSubMenu(null);\r\n      setMenuIsMounted(false);\r\n    }\r\n  }, [openUrl]);\r\n\r\n  const handleClosingModule = (evt) => {\r\n    if (\r\n      evt.target.classList.value !== 'c-ir-menu-modal' &&\r\n      evt.target.classList.value !== 'c-ir-menu-cross-svg'\r\n    )\r\n      return;\r\n    setMenuIsMounted(false);\r\n    onClose();\r\n  };\r\n\r\n  // Animate correctly with conditional rendering\r\n  const showModal = useDelayUnmount(menuIsMounted, 525);\r\n\r\n  const openSubMenu = (item: IRMenuItem) => {\r\n    setSubMenu(item);\r\n    setTransitioning(true);\r\n    setSubmenuActive(true);\r\n  };\r\n  const closeSubMenu = () => {\r\n    setTransitioning(true);\r\n    setSubmenuActive(false);\r\n  };\r\n  return (\r\n    <>\r\n      {showModal && (\r\n        <div\r\n          className='c-ir-menu-modal'\r\n          onClick={(evt) => handleClosingModule(evt)}\r\n          style={menuIsMounted ? mountedStyleFading : unmountedStyleFading}\r\n        />\r\n      )}\r\n\r\n      <div\r\n        className={classNames('c-ir-menu', {\r\n          open: menuIsMounted,\r\n        })}\r\n      >\r\n        <div className='c-ir-menu-header-wrapper'>\r\n          {submenuActive ? (\r\n            <>\r\n              <button\r\n                className='c-ir-menu-sub-menu-back-btn c-ir-menu-heading'\r\n                style={menuIsMounted ? mountedStyleFading : unmountedStyleFading}\r\n                onClick={() => closeSubMenu()}\r\n              >\r\n                <div className='c-ir-menu-current-page-arrow-svg'>\r\n                  <IRArrowRightSvg />\r\n                </div>\r\n                Back\r\n              </button>\r\n              <button className='c-ir-menu-cross-svg' onClick={(evt) => handleClosingModule(evt)}>\r\n                <Cross />\r\n              </button>\r\n            </>\r\n          ) : (\r\n            <>\r\n              <div\r\n                className='c-ir-menu-heading'\r\n                style={menuIsMounted ? mountedStyleFading : unmountedStyleFading}\r\n              >\r\n                Investor relations\r\n              </div>\r\n              <button className='c-ir-menu-cross-svg' onClick={(evt) => handleClosingModule(evt)}>\r\n                <Cross />\r\n              </button>\r\n            </>\r\n          )}\r\n        </div>\r\n        <div\r\n          className={classNames('wrapper', {\r\n            open: submenuActive,\r\n            transitioning: transitioning,\r\n          })}\r\n        >\r\n          <div className='c-ir-root-menu'>\r\n            <nav>\r\n              <ul className='c-ir-menu-list'>\r\n                {data ? (\r\n                  <>\r\n                    <IRMenuVisitPage heading={data.Title} url={data.Url} />\r\n                    {data.Children?.map((item: IRMenuItem) => (\r\n                      <>\r\n                        {item.Children.length > 0 ? (\r\n                          <IRMenuBtn key={item.ID} item={item} onClick={() => openSubMenu(item)} />\r\n                        ) : (\r\n                          <IRMenuLink key={item.ID} Title={item.Title} Url={item.Url} />\r\n                        )}\r\n                      </>\r\n                    ))}\r\n                  </>\r\n                ) : null}\r\n              </ul>\r\n            </nav>\r\n          </div>\r\n          <div className='c-ir-sub-menu'>\r\n            <nav>\r\n              <ul className='c-ir-menu-list'>\r\n                {subMenu ? (\r\n                  <>\r\n                    <IRMenuVisitPage heading={subMenu.Title} url={subMenu.Url} />\r\n                    {subMenu?.Children?.map((item: IRMenuItem) => (\r\n                      <IRMenuLink key={item.ID} Title={item.Title} Url={item.Url} />\r\n                    ))}\r\n                  </>\r\n                ) : null}\r\n              </ul>\r\n            </nav>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </>\r\n  );\r\n};\r\n","import { useEffect, MutableRefObject } from \"react\";\r\n\r\nexport const useStickyHeaderBar = (menuRef: MutableRefObject<HTMLDivElement>) => {\r\n  const onScroll = (headerStickyEl) => {\r\n    if (!headerStickyEl || !menuRef.current) return;\r\n\r\n    if (window.pageYOffset > 0) {\r\n      menuRef.current.classList.add('sticky');\r\n      headerStickyEl.classList.remove(\"no-shadow\")\r\n    } else {\r\n      menuRef.current.classList.remove(\"sticky\");\r\n      headerStickyEl.classList.add(\"no-shadow\")\r\n    }\r\n  }\r\n\r\n  useEffect(() => {\r\n    let sticky = document.querySelector(\".l-header-sticky\");\r\n    const onWindowScroll = () => onScroll(sticky);\r\n    // Added to make IR menu sticky\r\n    window.addEventListener('scroll', onWindowScroll);\r\n\r\n    return (() => {\r\n      window.removeEventListener('scroll', onWindowScroll);\r\n    })\r\n  }, []);\r\n}\r\n","import classNames from 'classnames';\r\nimport React, { useRef, useState } from 'react';\r\nimport { IRArrowDownWideSvg } from '@icons/investors/IRArrowDownWideSvg';\r\nimport useMediaQuery from '@hooks/useMediaQuery';\r\nimport { IRBreadcrumbs, IRBreadcrumbsProps } from './components/IRBreadcrumbs';\r\nimport { IRMenu, IRMenuItem } from './components/IRMenu';\r\nimport { useStickyHeaderBar } from './IRHeaderBar.hooks';\r\nimport './IRHeaderBar.scss';\r\nimport { InvestorsMenu } from '@pages/InvestorRelations/InvestorRelations.types';\r\n\r\nexport type IRHeaderBarProps = {\r\n  menu: InvestorsMenu;\r\n  breadcrumbs: IRBreadcrumbsProps;\r\n  hideBreadcrumbs: boolean;\r\n  pageTitle: string;\r\n};\r\n\r\nexport const IRHeaderBar = ({\r\n  menu,\r\n  breadcrumbs,\r\n  hideBreadcrumbs,\r\n  pageTitle,\r\n}: IRHeaderBarProps) => {\r\n  const { Url, Title, Children } = menu;\r\n  const menuRef = useRef(null);\r\n\r\n  const [menuOpen, setMenuOpen] = useState(false);\r\n  const [_openUrl, setOpenUrl] = useState<string | null>(null);\r\n\r\n  const isMobile = useMediaQuery('(max-width: 480px)');\r\n  useStickyHeaderBar(menuRef);\r\n\r\n  const onClose = () => {\r\n    setOpenUrl(null);\r\n    setMenuOpen(false);\r\n  };\r\n\r\n  const handleClick = (Url: string) => {\r\n    setOpenUrl(Url);\r\n    setMenuOpen(!menuOpen);\r\n  };\r\n  let url = new URL(window.location.href).pathname;\r\n\r\n  const currentPageTitle = pageTitle ?? Children.find((obj) => obj.Url === url)?.Title;\r\n\r\n  const activeUrl = Children.find((item: IRMenuItem) => url.indexOf(item.Url) >= 0)?.Url;\r\n\r\n  return (\r\n    <>\r\n      {isMobile ? (\r\n        <div ref={menuRef} className='c-ir-header-submenu-mobile' onClick={() => handleClick(Url)}>\r\n          <div className='c-ir-header-submenu-mobile-title'>{Title}</div>\r\n          <div className='c-ir-arrow-svg'>\r\n            <IRArrowDownWideSvg />\r\n          </div>\r\n        </div>\r\n      ) : (\r\n        <div ref={menuRef} className='c-headerbar with-bg'>\r\n          <div className='c-headerbar-container'>\r\n            <div className='c-submenu'>\r\n              <ul className='c-submenu-list'>\r\n                <li\r\n                  className='c-submenu-link-container c-ir-mobile-first-item'\r\n                  onClick={() => handleClick(Url)}\r\n                >\r\n                  <a\r\n                    className={classNames('c-submenu-link', {\r\n                      'is-active': !activeUrl,\r\n                    })}\r\n                  >\r\n                    {Title}\r\n                  </a>\r\n                </li>\r\n                {(menuOpen || !isMobile) &&\r\n                  Children.map((child: IRMenuItem) => {\r\n                    return (\r\n                      <li key={child.ID} className='c-submenu-link-container'>\r\n                        {child.Children?.length > 0 ? (\r\n                          <a\r\n                            className={classNames('c-submenu-link', {\r\n                              'is-active': activeUrl === child.Url,\r\n                            })}\r\n                            onClick={() => handleClick(child.Url)}\r\n                          >\r\n                            {child.Title}\r\n                          </a>\r\n                        ) : (\r\n                          <a\r\n                            className={classNames('c-submenu-link', {\r\n                              'is-active': activeUrl === child.Url,\r\n                            })}\r\n                            href={child.Url}\r\n                          >\r\n                            {child.Title}\r\n                          </a>\r\n                        )}\r\n                      </li>\r\n                    );\r\n                  })}\r\n              </ul>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      )}\r\n\r\n      <IRMenu data={menu} openUrl={_openUrl} onClose={() => onClose()} />\r\n      {!hideBreadcrumbs && (\r\n        <div className='c-ir-breadcrumbs'>\r\n          <div className='c-headerbar-container'>\r\n            <IRBreadcrumbs {...breadcrumbs} currentPage={currentPageTitle} />\r\n          </div>\r\n        </div>\r\n      )}\r\n    </>\r\n  );\r\n};\r\n","import React, { useEffect } from \"react\"\r\nimport { useRef } from \"react\"\r\nimport * as ReactDOM from 'react-dom';\r\ninterface IHtmlDivProps {\r\n    html:string,\r\n    className?:string\r\n}\r\nexport const IRHtmlDiv = ({html,className}:IHtmlDivProps) => {\r\n    const htmlRef = useRef<HTMLDivElement>()\r\n    useEffect(()=> {\r\n        var node = ReactDOM.findDOMNode(htmlRef.current)\r\n        var imgs = node.getElementsByTagName('img');\r\n        for(let i = 0; i < imgs.length;i++) {\r\n            const w = imgs[i].attributes[\"width\"]?.value;\r\n            const h = imgs[i].attributes[\"height\"]?.value;\r\n            if(w) {\r\n                imgs[i].style.width=w+'px';\r\n            }\r\n            if(h) {\r\n                imgs[i].style.height = h+'px';\r\n            }\r\n        }\r\n    },[])\r\n\r\n    return <div className={className} ref={htmlRef} dangerouslySetInnerHTML={{ __html: html }}></div>\r\n}","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { BaseImageBlock, UrlType } from '../types';\r\nimport useMediaQuery from '@hooks/useMediaQuery';\r\nimport { IRHtmlDiv } from '@components/IRHtmlDiv';\r\nimport './IRFullWidthImageBlock.scss';\r\n\r\ntype IRFullWidthImageBlockProps = BaseImageBlock & {\r\n  TextBackgroundColor: 'Transparent' | 'Blue' | 'White';\r\n  TextColor: 'Primary' | 'Secondary';\r\n  TextPosition: 'Left' | 'Center' | 'Right';\r\n  Body?: string;\r\n  Link?: UrlType;\r\n  LinkText?: string;\r\n};\r\n\r\nexport const IRFullWidthImageBlock = ({\r\n  Title,\r\n  Body,\r\n  Link,\r\n  LinkText,\r\n  BackgroundImage,\r\n  TextBackgroundColor,\r\n  TextColor,\r\n  TextPosition,\r\n  BackgroundImageMobile,\r\n  Margin,\r\n  pageType,\r\n}: IRFullWidthImageBlockProps) => {\r\n  const isMobile = useMediaQuery('(max-width: 768px)');\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-full-width-image-wrapper', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n        fullwidth: TextBackgroundColor === 'Transparent',\r\n      })}\r\n      style={{\r\n        backgroundImage: `url(${isMobile ? BackgroundImageMobile.Url : BackgroundImage.Url})`,\r\n      }}\r\n    >\r\n      <div\r\n        className={classNames('c-ir-full-width-image', {\r\n          'c-ir-text-left': TextPosition === 'Left',\r\n          'c-ir-text-center': TextPosition === 'Center',\r\n          'c-ir-text-right': TextPosition === 'Right',\r\n          'c-ir-background-image-non-transparent-card': TextBackgroundColor !== 'Transparent',\r\n        })}\r\n      >\r\n        {(Title || Body || Link) && (\r\n          <div\r\n            className={classNames('c-ir-content-card', {\r\n              'c-ir-content-card-primary': TextBackgroundColor === 'Blue',\r\n              'c-ir-content-card-light': TextBackgroundColor === 'White',\r\n              'c-ir-content-card-non-transparent-card': TextBackgroundColor !== 'Transparent',\r\n            })}\r\n          >\r\n            {Title && (\r\n              <h2\r\n                className={classNames('c-ir-content-card-heading', {\r\n                  'c-ir-dark-text': TextColor === 'Primary',\r\n                  'c-ir-light-text': TextColor === 'Secondary',\r\n                })}\r\n              >\r\n                {Title}\r\n              </h2>\r\n            )}\r\n            {Body && (\r\n              <IRHtmlDiv\r\n                className={classNames('c-ir-content-card-body', {\r\n                  'c-ir-dark-text': TextColor === 'Primary',\r\n                  'c-ir-light-text': TextColor === 'Secondary',\r\n                })}\r\n                html={Body}\r\n              />\r\n            )}\r\n            {Link && (\r\n              <a\r\n                href={Link.Url}\r\n                className={classNames('c-ir-content-card-button', {\r\n                  'c-ir-content-card-button-primary':\r\n                    TextBackgroundColor === 'White' || TextBackgroundColor === 'Transparent',\r\n                  'c-ir-content-card-button-light': TextBackgroundColor === 'Blue',\r\n                })}\r\n              >\r\n                {LinkText}\r\n              </a>\r\n            )}\r\n          </div>\r\n        )}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport useMediaQuery from '@hooks/useMediaQuery';\r\nimport { BaseImageBlock, UrlType } from '../types';\r\nimport './IRHeroBlock.scss';\r\n\r\nexport type IRHeroBlockProps = BaseImageBlock & {\r\n  Description?: string;\r\n  Link: UrlType;\r\n  LinkText: string;\r\n  TextColor: 'White' | 'Dark';\r\n};\r\n\r\nexport const IRHeroBlock = ({\r\n  Title,\r\n  Description,\r\n  Link,\r\n  LinkText,\r\n  Margin,\r\n  TextColor,\r\n  BackgroundImage,\r\n  BackgroundImageMobile,\r\n}: IRHeroBlockProps) => {\r\n  const isMobile = useMediaQuery('(max-width: 768px)');\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-hero-banner', {\r\n        small: Margin === 'Small',\r\n        medium: Margin === 'Medium',\r\n        large: Margin === 'Large',\r\n      })}\r\n    >\r\n      <div className='c-ir-hero-banner-content'>\r\n        <div className='c-ir-hero-banner-cta'>\r\n          {Title && (\r\n            <h1\r\n              className={classNames('c-ir-hero-banner-title', {\r\n                'is-white': TextColor === 'White',\r\n                'is-dark': TextColor === 'Dark',\r\n              })}\r\n            >\r\n              {Title}\r\n            </h1>\r\n          )}\r\n          {Description && (\r\n            <h4\r\n              className={classNames('c-ir-hero-banner-description', {\r\n                'is-white': TextColor === 'White',\r\n                'is-dark': TextColor === 'Dark',\r\n              })}\r\n            >\r\n              {Description}\r\n            </h4>\r\n          )}\r\n          {Link && (\r\n            <a className='c-ir-hero-banner-link-button' href={Link.Url}>\r\n              {LinkText}\r\n            </a>\r\n          )}\r\n        </div>\r\n      </div>\r\n      <img\r\n        src={isMobile ? BackgroundImageMobile.Url : BackgroundImage.Url}\r\n        className='c-ir-hero-banner-image'\r\n        alt={Title}\r\n      />\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { BaseBlock } from \"../types\";\r\nimport { IRHtmlDiv } from \"@components/IRHtmlDiv\";\r\nimport './IRTextBlock.scss';\r\n\r\nexport type IRTextBlockProps = BaseBlock & {\r\n  BackgroundColor: \"None\" | \"White\" | \"Gray\";\r\n  Content?: string;\r\n  Layout: \"Fullwidth\" | \"Column\";\r\n  TopLine?: boolean;\r\n};\r\n\r\nexport const IRTextBlock = ({\r\n  Margin,\r\n  BackgroundColor,\r\n  Content,\r\n  Layout,\r\n  TopLine\r\n}: IRTextBlockProps) => {\r\n  return (\r\n    <IRHtmlDiv\r\n      className={classNames(\"c-ir-text-block\", {\r\n        \"margin-small\": Margin === \"Small\",\r\n        \"margin-medium\": Margin === \"Medium\",\r\n        \"margin-large\": Margin === \"Large\",\r\n        \"white-bg\": BackgroundColor === \"White\",\r\n        \"gray-bg\": BackgroundColor === \"Gray\",\r\n        \"c-ir-full-width\": Layout === \"Fullwidth\",\r\n        \"c-ir-column\": Layout === \"Column\",\r\n        \"top-line\": TopLine,\r\n      })}\r\n      html={Content}\r\n    />\r\n  );\r\n};\r\n","import React from \"react\";\r\n\r\nexport const IRUnknownBlock = (props: any) => {\r\n  return (\r\n      \r\n     <div>\r\n       <h4>Unknown block {props.name}</h4>\r\n       <code>\r\n         <pre>{JSON.stringify(props.props, null, 2)}</pre>\r\n       </code>\r\n     </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { BaseBlock } from \"../types\";\r\nimport './IRKeyFactsBlock.scss';\r\n\r\ntype KeyFact = {\r\n  Key: string;\r\n  Fact: string;\r\n};\r\n\r\ntype IRKeyFactsBlockProps = BaseBlock & {\r\n  List: KeyFact[];\r\n  BackgroundColor: \"None\" | \"White\" | \"Gray\";\r\n  Size: \"Big\" | \"Small\";\r\n};\r\n\r\nexport const IRKeyFactsBlock = ({\r\n  List,\r\n  Size,\r\n  Title,\r\n  Margin,\r\n  BackgroundColor,\r\n}: IRKeyFactsBlockProps) => {\r\n  return (\r\n    <div\r\n      className={classNames(\"c-ir-key-facts\", {\r\n        \"margin-small\": Margin === \"Small\",\r\n        \"margin-medium\": Margin === \"Medium\",\r\n        \"margin-large\": Margin === \"Large\",\r\n        \"white-bg\": BackgroundColor === \"White\",\r\n        \"gray-bg\": BackgroundColor === \"Gray\",\r\n      })}\r\n    >\r\n      {Title && <h2 className=\"c-ir-key-facts-title\">{Title}</h2>}\r\n      <div\r\n        className={classNames(\"c-ir-key-facts-grid\", {\r\n          \"one-column\": List.length === 1,\r\n          \"two-column\": List.length === 2,\r\n          \"three-column\": List.length === 3,\r\n          \"four-column\": List.length === 4,\r\n        })}\r\n      >\r\n        {List.map(item => (\r\n          <div>\r\n            <h3\r\n              className={classNames(\"c-ir-key-facts-key\", {\r\n                big: Size === \"Big\",\r\n              })}\r\n            >\r\n              {item.Key}\r\n            </h3>\r\n            <h4\r\n              className={classNames(\"c-ir-key-facts-fact\", {\r\n                big: Size === \"Big\",\r\n              })}\r\n            >\r\n              {item.Fact}\r\n            </h4>\r\n          </div>\r\n        ))}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport { IRHtmlDiv } from '@components/IRHtmlDiv';\r\nimport { BaseBlock, UrlType } from '../types';\r\nimport './IRPresentationCardBlock.scss';\r\n\r\ntype IRPresentationCardBlockProps = BaseBlock & {\r\n  Image: UrlType;\r\n  Intro: string;\r\n  Description: string;\r\n};\r\n\r\nexport const IRPresentationCardBlock = ({\r\n  Image,\r\n  Title,\r\n  Intro,\r\n  Description,\r\n}: IRPresentationCardBlockProps) => {\r\n  return (\r\n    <div className='c-ir-presentation-card'>\r\n      {Image && (\r\n        <img\r\n          src={Image.Url}\r\n          loading='lazy'\r\n          alt={`${Title}: ${Intro}`}\r\n          className='c-ir-presentation-card-image'\r\n        />\r\n      )}\r\n      <div className='c-ir-presentation-card-text-wrapper'>\r\n        {Title && <h4 className='c-ir-presentation-card-title'>{Title}</h4>}\r\n        {Intro && <p className='c-ir-presentation-card-intro'>{Intro}</p>}\r\n        <IRHtmlDiv html={Description} className='c-ir-presentation-card-description' />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { BaseBlock, UrlType } from '../types';\r\nimport { PhoneSvg, EmailSvg } from '@icons/common';\r\nimport './IRContactBlock.scss';\r\n\r\ntype IRContactBlockProps = BaseBlock & {\r\n  Image?: UrlType;\r\n  Title: string;\r\n  Role: string;\r\n  Location: string;\r\n  Phone: string;\r\n  Email: string;\r\n  Layout: string;\r\n};\r\n\r\nexport const IRContactBlock = ({\r\n  Margin,\r\n  Image,\r\n  Title,\r\n  Role,\r\n  Location,\r\n  Phone,\r\n  Email,\r\n  Layout,\r\n}: IRContactBlockProps) => {\r\n  return (\r\n    <address\r\n      className={classNames('c-ir-contact-block', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n        'c-ir-contact-full-width': Layout === 'Fullwidth',\r\n        'c-ir-contact-not-full-width': Layout !== 'Fullwidth',\r\n      })}\r\n    >\r\n      {Image && (\r\n        <img\r\n          loading='lazy'\r\n          className='c-ir-contact-block-img'\r\n          src={Image.Url}\r\n          alt={`${Title}: ${Role}`}\r\n        />\r\n      )}\r\n      <div>\r\n        {Title && <p className='c-ir-contact-block-name'>{Title}</p>}\r\n        {Role && <p className='c-ir-contact-block-role'>{Role}</p>}\r\n        {Location && <p className='c-ir-contact-block-location'>{Location}</p>}\r\n        {Phone && (\r\n          <p>\r\n            <a href={`tel:${Phone}`} className='phone-number-wrapper'>\r\n              <PhoneSvg />\r\n              <span className='c-ir-contact-block-phone-number'>{Phone}</span>\r\n            </a>\r\n          </p>\r\n        )}\r\n        {Email && (\r\n          <p>\r\n            <a href={`mailto:${Email}`} className='email-wrapper'>\r\n              <EmailSvg />\r\n              <span className='c-ir-contact-block-email'>{Email}</span>\r\n            </a>\r\n          </p>\r\n        )}\r\n      </div>\r\n    </address>\r\n  );\r\n};\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { IRTextBlockProps } from \"../IRTextBlock\";\r\nimport { BaseBlock } from \"../types\";\r\nimport { getBlock } from \"../getBlock\";\r\nimport { ColumnsType } from \"../IRColumnBlock\";\r\nimport './IRInfoBoxBlock.scss';\r\n\r\ntype IRInfoBoxBlockProps = BaseBlock & {\r\n  BackgroundColor:\r\n  | \"None\"\r\n  | \"White\"\r\n  | \"Gray\"\r\n  | \"Mixed\"\r\n  | \"Green\"\r\n  | \"Sun\"\r\n  | \"Earth\";\r\n  TextColor: \"Primary\" | \"Secondary\";\r\n  Content: IRTextBlockProps[];\r\n  columns?: ColumnsType;\r\n};\r\nexport const IRInfoBoxBlock = ({\r\n  Margin,\r\n  Title,\r\n  BackgroundColor,\r\n  TextColor,\r\n  Content,\r\n  columns,\r\n}: IRInfoBoxBlockProps) => {\r\n  return (\r\n    <div\r\n      className={classNames(\"c-ir-info-box\", {\r\n        \"margin-small\": Margin === \"Small\",\r\n        \"margin-medium\": Margin === \"Medium\",\r\n        \"margin-large\": Margin === \"Large\",\r\n        \"color-white\": TextColor === \"Secondary\",\r\n        white: BackgroundColor === \"White\",\r\n        gray: BackgroundColor === \"Gray\",\r\n        green: BackgroundColor === \"Green\",\r\n        mixed: BackgroundColor === \"Mixed\",\r\n        sun: BackgroundColor === \"Sun\",\r\n        earth: BackgroundColor === \"Earth\",\r\n      })}\r\n    >\r\n      <div className=\"c-ir-info-box-title-container\">\r\n        <h3\r\n          className={classNames(\"c-ir-info-box-title\", {\r\n            \"border-white\": TextColor === \"Secondary\",\r\n            \"border-black\":\r\n              TextColor === \"Primary\" &&\r\n              (BackgroundColor === \"Sun\" || BackgroundColor === \"Earth\"),\r\n          })}\r\n        >\r\n          {Title}\r\n        </h3>\r\n      </div>\r\n      {columns ? (\r\n        <div className=\"c-ir-info-box-grid one\">\r\n          {Content?.map((columnBlock) =>\r\n            getBlock({ ...columnBlock, Layout: \"Column\" })\r\n          )}\r\n        </div>\r\n      ) : (\r\n        <div\r\n          className={classNames(\"c-ir-info-box-grid\", {\r\n            one: Content.length === 1,\r\n            two: Content.length === 2,\r\n            three: Content.length === 3,\r\n          })}\r\n        >\r\n          {Content.map((block) => getBlock(block))}\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { BaseBlock, UrlType } from '../types';\r\nimport './IRQuickLinkBlock.scss';\r\n\r\ntype PreviewImageType = {\r\n  AltText: string;\r\n  FileSize: string;\r\n  Url: string;\r\n};\r\n\r\ntype PageLinks = UrlType & {\r\n  Title: string;\r\n  PreviewImage?: PreviewImageType;\r\n};\r\n\r\ntype IRQuickLinkBlockProps = BaseBlock & {\r\n  List: PageLinks[];\r\n};\r\n\r\nexport const IRQuickLinkBlock = ({ Title, Margin, List }: IRQuickLinkBlockProps) => {\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-quick-link-block fullwidth', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n      })}\r\n    >\r\n      <div className='c-ir-quick-link-block-content'>\r\n        <h2 className='c-ir-quick-link-group-heading'>{Title}</h2>\r\n        <div className='c-ir-quick-link-links-wrapper'>\r\n          {List.map((PageLink) => (\r\n            <a href={PageLink.Url} className='c-ir-quick-link-anchor'>\r\n              <img\r\n                loading='lazy'\r\n                className='c-ir-quick-link-img'\r\n                src={\r\n                  PageLink.PreviewImage\r\n                    ? PageLink.PreviewImage.Url\r\n                    : '/ui/css/img/logo-alfalaval.svg'\r\n                }\r\n                alt={PageLink.PreviewImage ? PageLink.PreviewImage.AltText : 'Alfa Laval'}\r\n              />\r\n              <h4 className='c-ir-quick-link-name'>{PageLink.Title}</h4>\r\n            </a>\r\n          ))}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { BaseBlock, UrlType } from \"../types\";\r\nimport './IRButton.scss';\r\n\r\ntype IRButtonProps = BaseBlock & {\r\n  ButtonLink?: UrlType;\r\n  ButtonText?: string;\r\n  dark?: boolean;\r\n};\r\n\r\nexport const IRButton = ({ ButtonLink, ButtonText, dark }: IRButtonProps) => {\r\n  return (\r\n    <a\r\n      className={classNames(\"c-ir-btn\", {\r\n        dark: dark,\r\n      })}\r\n      href={ButtonLink.Url}\r\n    >\r\n      {ButtonText}\r\n    </a>\r\n  );\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport useMediaQuery from '@hooks/useMediaQuery';\r\nimport { IRHtmlDiv } from '@components/IRHtmlDiv';\r\nimport { IRButton } from '../IRButton/IRButton';\r\nimport { ColumnsType } from '../IRColumnBlock';\r\nimport { BaseBlock, UrlType } from '../types';\r\nimport './IRTextImageBlock.scss';\r\n\r\ntype IRTextImageBlockProps = BaseBlock & {\r\n  Body: string;\r\n  ImagePosition: 'Left' | 'Right';\r\n  Image: UrlType;\r\n  Link?: UrlType;\r\n  LinkText?: string;\r\n  columns?: ColumnsType;\r\n};\r\n\r\nexport function IRTextImageBlock({\r\n  Title,\r\n  Body,\r\n  ImagePosition,\r\n  Image,\r\n  Link,\r\n  LinkText,\r\n  Margin,\r\n  columns,\r\n}: IRTextImageBlockProps) {\r\n  const isMobile = useMediaQuery('(max-width: 768px)');\r\n\r\n  const renderText =\r\n    (Link && Link.Url?.length > 0) || LinkText?.length > 0 || Body?.length > 0 || Title?.length > 0;\r\n\r\n  const ImageComponent = (\r\n    <img className='c-ir-text-image-image' loading='lazy' src={Image.Url} alt={Title} />\r\n  );\r\n  const BodyComponent = (\r\n    <div className='c-ir-text-image-text-wrapper'>\r\n      <h3 className='c-ir-text-image-heading'>{Title}</h3>\r\n      <IRHtmlDiv className='c-ir-text-image-body' html={Body} />\r\n      {Link && <IRButton ButtonLink={Link} ButtonText={LinkText} />}\r\n    </div>\r\n  );\r\n\r\n  const TextImageComponentArray = [ImageComponent, BodyComponent];\r\n\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-text-image-block-wrapper', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n        'grid-columns-1': columns === 1 || !columns,\r\n        'grid-columns-2': columns === 2,\r\n        'grid-columns-3': columns === 3,\r\n        'no-text': !renderText,\r\n      })}\r\n    >\r\n      {ImagePosition == 'Right' && !isMobile && !columns\r\n        ? TextImageComponentArray.reverse()\r\n        : TextImageComponentArray}\r\n    </div>\r\n  );\r\n}\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { getBlock } from \"../getBlock\";\r\nimport { BaseBlock } from \"../types\";\r\nimport './IRColumnBlock.scss';\r\n\r\nexport type ColumnsType = 1 | 2 | 3 | 4;\r\n\r\ntype IRColumnBlockProps = BaseBlock & {\r\n  Content: any[];\r\n  ColumnSize: \"One\" | \"Two\" | \"Three\" | \"Four\";\r\n};\r\n\r\nconst getColumns = (ColumnSize: IRColumnBlockProps[\"ColumnSize\"]) => {\r\n  switch (ColumnSize) {\r\n    case \"One\":\r\n      return 1;\r\n    case \"Two\":\r\n      return 2;\r\n    case \"Three\":\r\n      return 3;\r\n    case \"Four\":\r\n      return 4;\r\n    default:\r\n      return 1;\r\n  }\r\n};\r\n\r\nexport function IRColumnBlock({\r\n  Title,\r\n  Content,\r\n  ColumnSize,\r\n  Margin,\r\n}: IRColumnBlockProps) {\r\n  const columns = getColumns(ColumnSize);\r\n  return (\r\n    <div\r\n      className={classNames(\"c-ir-column-block-wrapper\", {\r\n        \"margin-small\": Margin === \"Small\",\r\n        \"margin-medium\": Margin === \"Medium\",\r\n        \"margin-large\": Margin === \"Large\",\r\n      })}\r\n    >\r\n      {Title && <h2 className=\"c-ir-column-block-title\">{Title}</h2>}\r\n      <div\r\n        className={classNames(\"c-ir-column-block\", {\r\n          \"grid-columns-1\": ColumnSize === \"One\",\r\n          \"grid-columns-2\": ColumnSize === \"Two\",\r\n          \"grid-columns-3\": ColumnSize === \"Three\",\r\n          \"grid-columns-4\": ColumnSize === \"Four\",\r\n        })}\r\n      >\r\n        {Content?.map((columnBlock) => getBlock({ ...columnBlock, columns }))}\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n","import React from \"react\";\r\n\r\nexport const IRDownloadHoverIcon = () => (\r\n  <svg\r\n    width=\"24\"\r\n    height=\"24\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M2 12V20C2 20.5304 2.21071 21.0391 2.58579 21.4142C2.96086 21.7893 3.46957 22 4 22H20C20.5304 22 21.0391 21.7893 21.4142 21.4142C21.7893 21.0391 22 20.5304 22 20V12\"\r\n      stroke=\"#3D3935\"\r\n      strokeWidth=\"1.5\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    />\r\n    <path\r\n      d=\"M7.19995 9.2L12 14L16.8 9.2\"\r\n      stroke=\"#3D3935\"\r\n      strokeWidth=\"1.5\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    />\r\n    <path\r\n      d=\"M12 14V2\"\r\n      stroke=\"#3D3935\"\r\n      strokeWidth=\"1.5\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    />\r\n  </svg>\r\n);\r\n","import React from \"react\";\r\n\r\nexport const IRPdfSvg = () => (\r\n  <svg\r\n    width=\"32\"\r\n    height=\"32\"\r\n    viewBox=\"0 0 32 32\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M9.20557 24.381H10.3771V22.5844H11.362C12.6363 22.5844 13.3776 21.8242 13.3776 20.7175C13.3776 19.6164 12.6498 18.8398 11.3917 18.8398H9.20557V24.381ZM10.3771 21.6456V19.7976H11.1671C11.8436 19.7976 12.1709 20.1656 12.1709 20.7175C12.1709 21.2668 11.8436 21.6456 11.1726 21.6456H10.3771Z\"\r\n      fill=\"#11387F\"\r\n    />\r\n    <path\r\n      d=\"M16.1029 24.381C17.7912 24.381 18.8139 23.3366 18.8139 21.605C18.8139 19.8788 17.7912 18.8398 16.1191 18.8398H14.1386V24.381H16.1029ZM15.3101 23.3772V19.8436H16.0569C17.0959 19.8436 17.6451 20.3739 17.6451 21.605C17.6451 22.8415 17.0959 23.3772 16.0542 23.3772H15.3101Z\"\r\n      fill=\"#11387F\"\r\n    />\r\n    <path\r\n      d=\"M19.6818 24.381H20.8533V22.092H23.1071V21.1261H20.8533V19.8058H23.3506V18.8398H19.6818V24.381Z\"\r\n      fill=\"#11387F\"\r\n    />\r\n    <path\r\n      d=\"M4 29C4 30.1046 4.89543 31 6 31L26 31C27.1046 31 28 30.1046 28 29L28 11.4142C28 11.149 27.8946 10.8946 27.7071 10.7071L18.2929 1.2929C18.1054 1.10536 17.851 1.00001 17.5858 1.00001L6 1C4.89543 1 4 1.89543 4 3L4 29Z\"\r\n      stroke=\"#11387F\"\r\n      strokeWidth=\"2\"\r\n    />\r\n    <path\r\n      d=\"M18 1L28 11H21C19.3431 11 18 9.65685 18 8V1Z\"\r\n      stroke=\"#11387F\"\r\n      strokeWidth=\"2\"\r\n      strokeLinejoin=\"round\"\r\n    />\r\n  </svg>\r\n);\r\n","import React from 'react';\r\nimport { IRDownloadHoverIcon } from '@icons/investors/IRDownloadHoverIcon';\r\nimport { IRPdfSvg } from '@icons/investors/IRPdfSvg';\r\nimport { FileType } from '../types';\r\nimport { getURLFileData } from '@helpers/URLHelpers';\r\nimport dataLayer from '@helpers/dataLayer';\r\nimport './IRFileItemBlock.scss';\r\n\r\ntype FileProps = {\r\n  File: FileType;\r\n};\r\n\r\nexport const IRFileItemBlock = ({ File }: FileProps) => {\r\n  const { fileName, extension } = getURLFileData(File.File);\r\n  const onDownload = () => {\r\n    dataLayer.push('file_download', {\r\n      file_name: fileName,\r\n      file_extension: extension,\r\n      file_category: undefined,\r\n      file_context: undefined,\r\n      link_text: File.FileText,\r\n      link_url: File.File,\r\n    });\r\n  };\r\n\r\n  return (\r\n    <a download href={File.File} onClick={onDownload} target='_blank' className='c-ir-file-item'>\r\n      <div className='c-ir-file-svg-pdf-wrapper'>\r\n        <IRPdfSvg />\r\n      </div>\r\n      <div>\r\n        <div className='c-ir-file-text'>{File.FileText}</div>\r\n        {File.CreateDate && File.FileSize ? (\r\n          <div className='c-ir-file-date-and-size'>\r\n            {File.CreateDate.split('T')[0]} {File.FileSize}\r\n          </div>\r\n        ) : File.FileSize ? (\r\n          <div className='c-ir-file-date-and-size'>{File.FileSize}</div>\r\n        ) : (\r\n          File.CreateDate && (\r\n            <div className='c-ir-file-date-and-size'>{File.CreateDate.split('T')[0]}</div>\r\n          )\r\n        )}\r\n      </div>\r\n      <div className='c-ir-file-download-hover-icon'>\r\n        <IRDownloadHoverIcon />\r\n      </div>\r\n    </a>\r\n  );\r\n};\r\n","import React from \"react\";\r\nimport { IRArrowRightSvg } from \"@icons/investors/IRArrowRightSvg\";\r\nimport './IRLink.scss';\r\n\r\ntype LinkObj = {\r\n  Href: string;\r\n  Text: string;\r\n};\r\n\r\ntype IRLinkProps = {\r\n  linkObj: LinkObj;\r\n};\r\n\r\nexport const IRLink = ({ linkObj }: IRLinkProps) => {\r\n  return (\r\n    <a href={linkObj.Href} className=\"c-ir-link\">\r\n      <div className=\"c-ir-svg-arrow-wrapper\">\r\n        <IRArrowRightSvg />\r\n      </div>\r\n      <div className=\"c-ir-link-text\">{linkObj.Text}</div>\r\n    </a>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { BaseBlock, EpiLinkType, FileType, UrlType } from '../types';\r\nimport { IRFileItemBlock } from '../IRFileItem';\r\nimport { ColumnsType } from '../IRColumnBlock';\r\nimport useMediaQuery from '@hooks/useMediaQuery';\r\nimport { IRButton } from '../IRButton/IRButton';\r\nimport { IRLink } from '../IRLink/IRLink';\r\nimport { IRHtmlDiv } from '@components/IRHtmlDiv';\r\nimport './IRCTABlock.scss';\r\n\r\ntype IRCTABlockProps = BaseBlock & {\r\n  Text: string;\r\n  Image: UrlType;\r\n  ButtonLink?: UrlType;\r\n  ButtonText?: string;\r\n  FileListTitle?: string;\r\n  FileList?: FileType[];\r\n  LinkList?: EpiLinkType[];\r\n  ImagePosition?: 'Left' | 'Right';\r\n  columns?: ColumnsType;\r\n};\r\n\r\nexport const IRCTABlock = ({\r\n  Margin,\r\n  Title,\r\n  Text,\r\n  Image,\r\n  ButtonLink,\r\n  ButtonText,\r\n  FileListTitle,\r\n  FileList,\r\n  LinkList,\r\n  ImagePosition,\r\n  columns,\r\n}: IRCTABlockProps) => {\r\n  const isMobile = useMediaQuery('(max-width: 768px)');\r\n\r\n  const ImageComponent = Image && (\r\n    <img loading='lazy' src={Image.Url} alt={Title} className='c-ir-cta-block-img' />\r\n  );\r\n  const BodyComponent = (\r\n    <>\r\n      <div className='c-ir-cta-block-content'>\r\n        {Title && <h2 className='c-ir-cta-block-title'>{Title}</h2>}\r\n        {Text && <IRHtmlDiv className={classNames('c-ir-cta-block-text-content')} html={Text} />}\r\n        {ButtonLink && <IRButton ButtonLink={ButtonLink} ButtonText={ButtonText} />}\r\n        {FileList && FileList.length > 0 && (\r\n          <div className='c-ir-cta-block-filelist'>\r\n            {FileListTitle && <h3 className='c-ir-cta-block-filelist-heading'>{FileListTitle}</h3>}\r\n            <div className='c-ir-cta-block-filelist-wrapper'>\r\n              {FileList.map((fileObj) => (\r\n                <div className='c-ir-cta-block-filelist-file-wrapper'>\r\n                  <IRFileItemBlock File={fileObj} />\r\n                </div>\r\n              ))}\r\n            </div>\r\n          </div>\r\n        )}\r\n        {LinkList && LinkList.length > 0 && (\r\n          <div className='c-ir-cta-block-linklist'>\r\n            {LinkList.map((linkObj) => (\r\n              <IRLink linkObj={linkObj} />\r\n            ))}\r\n          </div>\r\n        )}\r\n      </div>\r\n    </>\r\n  );\r\n\r\n  const CTAComponentArray = [ImageComponent, BodyComponent];\r\n\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-cta-block', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n        'in-columns': columns,\r\n      })}\r\n    >\r\n      {ImagePosition == 'Right' && !isMobile && !columns\r\n        ? CTAComponentArray.reverse()\r\n        : CTAComponentArray}\r\n    </div>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { BaseBlock, EpiLinkType, FileType, UrlType } from '../types';\r\nimport { IRFileItemBlock } from '../IRFileItem';\r\nimport { IRLink } from '../IRLink/IRLink';\r\nimport { IRHtmlDiv } from '@components/IRHtmlDiv';\r\nimport './IRRelatedContentBlock.scss';\r\n\r\ntype IRRelatedContentBlockProps = BaseBlock & {\r\n  Text: string;\r\n  Image: UrlType;\r\n  FileList?: FileType[];\r\n  LinkList?: EpiLinkType[];\r\n};\r\n\r\nexport const IRRelatedContentBlock = ({\r\n  Margin,\r\n  Title,\r\n  Text,\r\n  Image,\r\n  FileList,\r\n  LinkList,\r\n}: IRRelatedContentBlockProps) => {\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-related-content-block', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n        'has-img': Image,\r\n      })}\r\n    >\r\n      {Image && (\r\n        <img\r\n          src={Image.Url}\r\n          loading='lazy'\r\n          alt={Title}\r\n          className='c-ir-related-content-block-img'\r\n        />\r\n      )}\r\n      <div className='c-ir-related-content-block-content'>\r\n        {Title && <h3 className='c-ir-related-content-block-title'>{Title}</h3>}\r\n        {Text && (\r\n          <IRHtmlDiv\r\n            className={classNames('c-ir-related-content-block-text-content')}\r\n            html={Text}\r\n          />\r\n        )}\r\n        {FileList && FileList.length > 0 && (\r\n          <div className='c-ir-related-content-block-filelist'>\r\n            {FileList.map((fileObj) => (\r\n              <IRFileItemBlock File={fileObj} />\r\n            ))}\r\n          </div>\r\n        )}\r\n        {LinkList && LinkList.length > 0 && (\r\n          <div className='c-ir-related-content-block-linklist'>\r\n            {LinkList.map((linkObj) => (\r\n              <IRLink linkObj={linkObj} />\r\n            ))}\r\n          </div>\r\n        )}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import { apiSlice } from '@services/apiSlice';\r\nimport { InvestorRelations as endpoints } from '@services/endpoints';\r\nimport {\r\n  InvestorsMenu,\r\n  InvestorsNewsList,\r\n  InvestorsPage,\r\n  InvestorsPressReleaseFilter,\r\n} from './InvestorRelations.types';\r\n\r\nexport interface NewsFilterParams {\r\n  page: number;\r\n  category: string;\r\n  country: string;\r\n  industries: string;\r\n  startDate: string;\r\n  endDate: string;\r\n  newsCount: number;\r\n}\r\n\r\nconst investorRelationsApi = apiSlice.injectEndpoints({\r\n  endpoints: (build) => ({\r\n    fetchPressReleaseFilterData: build.query<InvestorsPressReleaseFilter, void>({\r\n      query: () => ({\r\n        url: endpoints.fetchPressReleaseFilterData,\r\n        params: {\r\n          language: window.lang,\r\n        },\r\n      }),\r\n    }),\r\n    fetchInvestorNews: build.query<InvestorsNewsList, NewsFilterParams>({\r\n      query: (params) => ({\r\n        url: endpoints.fetchInvestorRelationsNews,\r\n        params: {\r\n          language: window.lang,\r\n          ...params,\r\n        },\r\n      }),\r\n    }),\r\n    fetchInvestorRelationsPage: build.query<InvestorsPage, void>({\r\n      query: () => ({\r\n        url: endpoints.fetchInvestorRelationsPage,\r\n        params: {\r\n          language: window.lang,\r\n          pageId: window.pageId,\r\n        },\r\n        responseHandler: (response) => response.text(),\r\n      }),\r\n      transformResponse: (response: string) => {\r\n        return JSON.parse(response.replaceAll('<iframe', `<iframe loading=\\\\\"lazy\\\\\"`));\r\n      },\r\n    }),\r\n    fetchInvestorRelationsMenu: build.query<InvestorsMenu, void>({\r\n      query: () => ({\r\n        url: endpoints.fetchInvestorRelationsMenu,\r\n        params: {\r\n          language: window.lang,\r\n          pageId: window.pageId,\r\n        },\r\n      }),\r\n    }),\r\n    makeSubscription: build.mutation<string, FormData>({\r\n      query: (data) => ({\r\n        url: endpoints.makeSubscription,\r\n        method: 'POST',\r\n        body: data,\r\n        responseHandler: (response) => response.text(),\r\n      }),\r\n    }),\r\n  }),\r\n  overrideExisting: false,\r\n});\r\n\r\nexport const {\r\n  useFetchInvestorRelationsPageQuery,\r\n  useFetchInvestorRelationsMenuQuery,\r\n  useMakeSubscriptionMutation,\r\n  useFetchPressReleaseFilterDataQuery,\r\n  useLazyFetchInvestorNewsQuery,\r\n} = investorRelationsApi;\r\n","import { useMakeSubscriptionMutation } from '@pages/InvestorRelations/InvestorRelations.service';\r\nimport classNames from 'classnames';\r\nimport React, { FormEvent, useRef, useState, useEffect } from 'react';\r\nimport { BaseBlock } from '../types';\r\nimport './IRSubscriptionBlock.scss';\r\n\r\nenum STATUS {\r\n  NONE = 0,\r\n  SUCCESS,\r\n  FAILURE,\r\n  RECAPTCHA_FAILED,\r\n}\r\n\r\ntype IRSubscriptionBlockProps = BaseBlock & {\r\n  Title: string;\r\n  SelectTypeLabel: string;\r\n  PressReleaseLabel: string;\r\n  InterimReportsLabel: string;\r\n  YearEndReportsLabel: string;\r\n  SelectLanguageLabel: string;\r\n  SwedishLabel: string;\r\n  EnglishLabel: string;\r\n  NameLabel: string;\r\n  EmailLabel: string;\r\n  SubscribeLabel: string;\r\n  SuccessLabel: string;\r\n  FailureLabel: string;\r\n  MissingRecaptchaLabel: string;\r\n};\r\n\r\nexport const IRSubscriptionBlock = ({\r\n  Title,\r\n  Margin,\r\n  SelectTypeLabel,\r\n  PressReleaseLabel,\r\n  InterimReportsLabel,\r\n  YearEndReportsLabel,\r\n  SelectLanguageLabel,\r\n  SwedishLabel,\r\n  EnglishLabel,\r\n  NameLabel,\r\n  EmailLabel,\r\n  SubscribeLabel,\r\n  SuccessLabel,\r\n  FailureLabel,\r\n  MissingRecaptchaLabel,\r\n}: IRSubscriptionBlockProps) => {\r\n  const _formRef = useRef<HTMLFormElement>();\r\n  const [_status, setStatus] = useState<STATUS>(STATUS.NONE);\r\n  const [makeSubscription] = useMakeSubscriptionMutation();\r\n\r\n  useEffect(() => {\r\n    const script = document.createElement('script');\r\n    script.src = 'https://recaptcha.net/recaptcha/api.js';\r\n    script.async = true;\r\n    script.defer = true;\r\n    document.body.appendChild(script);\r\n  }, []);\r\n\r\n  const onSubmit = (e: FormEvent<HTMLFormElement>) => {\r\n    // Stop right there\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n\r\n    // Get data from form\r\n    const formData = new FormData(e.currentTarget);\r\n\r\n    // Get access to captcha\r\n    const grecaptcha = window['grecaptcha'];\r\n    if (grecaptcha) {\r\n      const recaptchaResponse = grecaptcha.getResponse();\r\n\r\n      if (recaptchaResponse) {\r\n        makeSubscription(formData)\r\n          .unwrap()\r\n          .then((response) => {\r\n            if (response === 'Success') {\r\n              _formRef.current.reset();\r\n              grecaptcha.reset();\r\n              setStatus(STATUS.SUCCESS);\r\n            } else {\r\n              setStatus(STATUS.FAILURE);\r\n            }\r\n          })\r\n          .catch((e: any) => {\r\n            setStatus(STATUS.FAILURE);\r\n          });\r\n      } else {\r\n        setStatus(STATUS.RECAPTCHA_FAILED);\r\n      }\r\n    }\r\n    return false;\r\n  };\r\n  return (\r\n    <form\r\n      ref={_formRef}\r\n      id='PageForm'\r\n      className={classNames('c-ir-subscription-block', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n      })}\r\n      onSubmit={(e) => onSubmit(e)}\r\n      action='//publish.ne.cision.com/Subscription/SubscribeWithCaptcha'\r\n      method='post'\r\n      name='PageForm'\r\n    >\r\n      <input name='subscriptionUniqueIdentifier' type='hidden' value='2a0c2e468e' />\r\n      <input name='Replylanguage' type='hidden' value='en' />\r\n      <input id='wpySubscribeAction' name='SubscribeAction' type='hidden' value='begin' />\r\n      <h2 className='c-ir-subscription-block-heading'>{Title}</h2>\r\n      <div className='c-ir-subscription-block-multiple-choice-container'>\r\n        <div className='c-ir-subscription-block-checkbox-container'>\r\n          <b className='c-ir-subscription-block-input-category-header'>{SelectTypeLabel}</b>\r\n          <label className='c-ir-subscription-block-checkbox-label'>\r\n            <input id='informationtype' name='informationtype' type='checkbox' value='prm' />\r\n            <span>{PressReleaseLabel}</span>\r\n          </label>\r\n          <label className='c-ir-subscription-block-checkbox-label'>\r\n            <input id='informationtype' name='informationtype' type='checkbox' value='rpt,kmk' />\r\n            <span>{InterimReportsLabel}</span>\r\n          </label>\r\n          <label className='c-ir-subscription-block-checkbox-label'>\r\n            <input id='informationtype' name='informationtype' type='checkbox' value='rdv' />\r\n            <span>{YearEndReportsLabel}</span>\r\n          </label>\r\n        </div>\r\n        <div className='c-ir-subscription-block-radio-container'>\r\n          <b className='c-ir-subscription-block-input-category-header'>{SelectLanguageLabel}</b>\r\n          <label className='c-ir-subscription-block-radio-label'>\r\n            <input id='LanguageEn' checked={true} name='language' type='radio' value='en' />\r\n            {EnglishLabel}\r\n          </label>\r\n          <label className='c-ir-subscription-block-radio-label'>\r\n            <input id='LanguageSv' name='language' type='radio' value='sv' />\r\n            {SwedishLabel}\r\n          </label>\r\n        </div>\r\n      </div>\r\n      <label className='c-ir-subscription-block-input-category-header' htmlFor='name'>\r\n        {NameLabel}\r\n      </label>\r\n      <input\r\n        id='name'\r\n        className='c-ir-subscription-block-text-input'\r\n        name='Name'\r\n        type='text'\r\n        placeholder={NameLabel}\r\n      />\r\n      <label className='c-ir-subscription-block-input-category-header' htmlFor='email'>\r\n        {EmailLabel}\r\n      </label>\r\n      <input\r\n        id='email'\r\n        className='c-ir-subscription-block-text-input'\r\n        name='email'\r\n        type='email'\r\n        placeholder={EmailLabel}\r\n        required\r\n      />\r\n      <div className='c-ir-subscription-footer'>\r\n        <div\r\n          id='c-subscription-pub'\r\n          className='g-recaptcha captcha-custom c-subscription c-ir-subscription-captcha'\r\n          data-sitekey='6Ldwa2EkAAAAAEK-Pwn_zR_7Jaj2h_en0-fvbWOs'\r\n        >\r\n          &nbsp;\r\n        </div>\r\n        <button id='sendForm' className='c-ir-subscription-btn'>\r\n          <span className='c-ir-subscription-btn-text'>{SubscribeLabel}</span>\r\n        </button>\r\n        {_status === STATUS.SUCCESS ? (\r\n          <p className='c-ir-form-status'>{SuccessLabel}</p>\r\n        ) : _status === STATUS.FAILURE ? (\r\n          <p className='c-ir-form-status failure' id='subscriptionErrMsg'>\r\n            {FailureLabel}\r\n          </p>\r\n        ) : _status === STATUS.RECAPTCHA_FAILED ? (\r\n          <p className='c-ir-form-status failure'>{MissingRecaptchaLabel}</p>\r\n        ) : (\r\n          <p className='c-ir-form-status'></p>\r\n        )}\r\n      </div>\r\n    </form>\r\n  );\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { BaseBlock, FileType, UrlType } from '../types';\r\nimport { IRFileItemBlock } from '../IRFileItem';\r\nimport { IRLink } from '../IRLink/IRLink';\r\nimport './IRFileListingBlock.scss';\r\n\r\ntype IRFileListingBlockProps = BaseBlock & {\r\n  Files: FileType[];\r\n  BackgroundColor: 'None' | 'White' | 'Gray' | 'Mixed';\r\n  Link: UrlType;\r\n  LinkText: string;\r\n  TopLine?: boolean;\r\n};\r\n\r\nexport const IRFileListingBlock = ({\r\n  Margin,\r\n  Title,\r\n  Files,\r\n  BackgroundColor,\r\n  Link,\r\n  LinkText,\r\n  TopLine,\r\n}: IRFileListingBlockProps) => {\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-file-listing-block', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n        'white-bg': BackgroundColor === 'White',\r\n        'gray-bg': BackgroundColor === 'Gray',\r\n        'mixed-bg': BackgroundColor === 'Mixed',\r\n        'has-link': Link,\r\n        'has-title': Title,\r\n        'top-line': TopLine,\r\n      })}\r\n    >\r\n      {Title && (\r\n        <div\r\n          className={classNames('c-ir-file-listing-title-container', {\r\n            'white-bg': BackgroundColor === 'White',\r\n            'gray-bg': BackgroundColor === 'Gray',\r\n            'mixed-bg': BackgroundColor === 'Mixed',\r\n          })}\r\n        >\r\n          <h3 className='c-ir-file-listing-title'>{Title}</h3>\r\n        </div>\r\n      )}\r\n      {Files && Files.length > 0 && (\r\n        <ul className='c-ir-file-listing'>\r\n          {Files.map((fileObj) => (\r\n            <li className='c-ir-file-wrapper'>\r\n              <IRFileItemBlock File={fileObj} />\r\n            </li>\r\n          ))}\r\n        </ul>\r\n      )}\r\n      {Link && (\r\n        <div className='c-ir-file-listing-link-wrapper'>\r\n          <IRLink linkObj={{ Href: Link.Url, Text: LinkText }} />\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\n\r\nexport function IRCalendarEventComponent({ Title, StartDate, EndDate, ShowTime }) {\r\n  const StartDateObj = new Date(StartDate);\r\n  const EndDateObj = EndDate?new Date(EndDate):new Date(StartDate);\r\n\r\n  const monthsFormatted = [\r\n    \"JAN\",\r\n    \"FEB\",\r\n    \"MAR\",\r\n    \"APR\",\r\n    \"MAY\",\r\n    \"JUN\",\r\n    \"JUL\",\r\n    \"AUG\",\r\n    \"SEP\",\r\n    \"OCT\",\r\n    \"NOV\",\r\n    \"DEC\",\r\n  ];\r\n\r\n  const padZeros = (num) => num.toString().padStart(2, \"0\");\r\n\r\n  const formatDate = (startDate:Date, endDate:Date,showTime:boolean) => {\r\n\r\n    const sameDate = seeIfSameDate(startDate,endDate)\r\n    const sameDateTime = startDate.getTime() === endDate.getTime();\r\n    let startDateString = startDate.getFullYear()+'-'+padZeros(startDate.getMonth()+1)+\"-\"+padZeros(startDate.getDate())\r\n    if(showTime) {\r\n      startDateString += ' '+padZeros(startDate.getHours())+':'+padZeros(startDate.getMinutes())\r\n    }\r\n    if(sameDate) {\r\n      if(showTime && !sameDateTime) {\r\n        startDateString += ' - '+padZeros(endDate.getHours())+':'+padZeros(endDate.getMinutes())\r\n        return <span className=\"date-string\">{startDateString}</span>\r\n      }\r\n      else return <span className=\"date-string\">{startDateString}</span>\r\n    }\r\n    startDateString += ' - ';\r\n    let endDateString = endDate.getFullYear()+'-'+padZeros(endDate.getMonth()+1)+\"-\"+padZeros(endDate.getDate())\r\n    if(showTime) {\r\n      endDateString += ' '+padZeros(endDate.getHours())+':'+padZeros(endDate.getMinutes())\r\n    }\r\n    return <div className=\"multiple-date-container\"><span className=\"date-string\">{startDateString}</span><span className=\"date-string\">{endDateString}</span></div>\r\n\r\n  };\r\n\r\n  const seeIfSameDate = (startDateObj, endDateObj) => {\r\n    const sameYear = startDateObj.getYear() === endDateObj.getYear();\r\n    const sameMonth = startDateObj.getMonth() === endDateObj.getMonth();\r\n    const sameDay = startDateObj.getDay() === endDateObj.getDay();\r\n    return sameYear && sameMonth && sameDay;\r\n  };\r\n\r\n\r\n  return (\r\n    <>\r\n      <div className=\"c-ir-calendar-date-big\">\r\n        <div className=\"c-ir-calendar-month\">\r\n          {monthsFormatted[StartDateObj.getMonth()]}\r\n        </div>\r\n        <div className=\"c-ir-calendar-start-date\">{StartDateObj.getDate()}</div>\r\n        <div className=\"c-ir-calendar-year\">{StartDateObj.getFullYear()}</div>\r\n      </div>\r\n      <div className=\"c-ir-calendar-details\">\r\n        <div className=\"c-ir-calendar-dates\">\r\n          {formatDate(StartDateObj, EndDateObj,ShowTime)}\r\n        </div>\r\n        <div className=\"c-ir-calendar-title\">{Title}</div>\r\n      </div>\r\n    </>\r\n  );\r\n}\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { BaseBlock, UrlType } from \"../types\";\r\nimport { IRCalendarEventComponent } from \"./components/IRCalendarEventComponent\";\r\nimport './IRCalendarEventBlock.scss';\r\n\r\nexport type IRCalendarEventBlockProps = BaseBlock & {\r\n  StartDate?: string;\r\n  EndDate?: string;\r\n  Link?: UrlType;\r\n  ShowTime?: Boolean\r\n};\r\n\r\nexport const IRCalendarEventBlock = ({\r\n  Margin,\r\n  Link,\r\n  Title,\r\n  StartDate,\r\n  EndDate,\r\n  ShowTime,\r\n}: IRCalendarEventBlockProps) => {\r\n\r\n  const [_style, setStyle] = useState<string>('')\r\n  const elem = useRef<HTMLDivElement>()\r\n  useEffect(() => {\r\n    if (elem.current) {\r\n      if (elem.current.parentElement.classList.contains(\"c-ir-column-block\")) {\r\n        setStyle(\"compact-style\")\r\n      } else {\r\n        setStyle(\"standard\")\r\n      }\r\n    }\r\n  }, [])\r\n\r\n  return (\r\n    <div ref={elem}\r\n      className={classNames({\r\n        \"margin-small\": Margin === \"Small\",\r\n        \"margin-medium\": Margin === \"Medium\",\r\n        \"margin-large\": Margin === \"Large\",\r\n      })}\r\n    >\r\n      {Link?.Url ? (\r\n        <a href={Link.Url} className={classNames(\"c-ir-calendar-block\", _style)}>\r\n          <IRCalendarEventComponent\r\n            Title={Title}\r\n            StartDate={StartDate}\r\n            EndDate={EndDate}\r\n            ShowTime={ShowTime}\r\n          />\r\n        </a>\r\n      ) : (\r\n        <div className=\"c-ir-calendar-block compact-style\">\r\n          <IRCalendarEventComponent\r\n            Title={Title}\r\n            StartDate={StartDate}\r\n            EndDate={EndDate}\r\n            ShowTime={ShowTime}\r\n          />\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\n\r\nexport const IRArrowDownRightSvg = () => (\r\n  <svg\r\n    width=\"24\"\r\n    height=\"24\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M7.3335 7L17.3335 17\"\r\n      stroke=\"white\"\r\n      strokeWidth=\"2\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    />\r\n    <path\r\n      d=\"M17.3335 7V17H7.3335\"\r\n      stroke=\"white\"\r\n      strokeWidth=\"2\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    />\r\n  </svg>\r\n);\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { IRArrowDownRightSvg } from \"@icons/investors/IRArrowDownRightSvg\";\r\nimport { IRArrowRightSvg } from \"@icons/investors/IRArrowRightSvg\";\r\n\r\ntype IRTickerBlockSmallProps = {\r\n  title?: string;\r\n  ticker: any;\r\n  link?: string;\r\n  linkText?: string;\r\n  formatNumber: (n: number, decimals: number) => any;\r\n  formatDate: (d: string, f: string) => any;\r\n  formatTime: (t: string, f: string) => any;\r\n};\r\n\r\nexport function IRTickerBlockSmall({\r\n  title,\r\n  ticker,\r\n  formatNumber,\r\n  formatDate,\r\n  formatTime,\r\n  link,\r\n  linkText,\r\n}: IRTickerBlockSmallProps) {\r\n  return (\r\n    <>\r\n      <div className=\"c-ir-ticker-info-wrapper\">\r\n        {title && <div className=\"c-ir-ticker-title\">{title}</div>}\r\n        <div className=\"c-ir-ticker-share-name\">\r\n          {ticker.TickerName} ({ticker.TickerSymbol})\r\n        </div>\r\n        <div className=\"c-ir-ticker-share-price-wrapper\">\r\n          <div className=\"c-ir-ticker-share-price\">\r\n            {formatNumber(ticker.Price, 1)}\r\n          </div>\r\n          <div className=\"c-ir-ticker-share-currency\">\r\n            {ticker.TradeCurrency}\r\n          </div>\r\n        </div>\r\n        <div className=\"c-ir-ticker-latest-changes\">\r\n          <div\r\n            className={classNames(\"c-ir-ticker-price-arrow-svg\", {\r\n              \"c-ir-ticker-price-arrow-svg-positive\": ticker.Delta > 0,\r\n              \"c-ir-ticker-price-arrow-svg-no-change\": ticker.Delta === 0,\r\n            })}\r\n          >\r\n            <IRArrowDownRightSvg />\r\n          </div>\r\n\r\n          <div className=\"c-ir-ticker-price-delta\">\r\n            {formatNumber(ticker.DeltaPercentage, 3)}%\r\n          </div>\r\n          <div className=\"c-ir-ticker-price-date\">\r\n            on {formatDate(ticker.QuoteTime, \"DD MMM YYYY\")} at{\" \"}\r\n            {formatTime(ticker.QuoteTime, \"HH:mm\")}\r\n          </div>\r\n        </div>\r\n      </div>\r\n      {link && linkText ? (\r\n        <div className=\"c-ir-ticker-link-wrapper\">\r\n          <a href={link} className=\"c-ir-ticker-link\">\r\n            <div className=\"c-ir-ticker-link-arrow-svg\">\r\n              <IRArrowRightSvg />\r\n            </div>\r\n            <div className=\"c-ir-ticker-link-text\">{linkText}</div>\r\n          </a>\r\n        </div>\r\n      ) : null}\r\n    </>\r\n  );\r\n}\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { IRArrowDownRightSvg } from \"@icons/investors/IRArrowDownRightSvg\";\r\nimport { IRArrowRightSvg } from \"@icons/investors/IRArrowRightSvg\";\r\n\r\ntype IRTickerBlockLargeProps = {\r\n  ticker: any;\r\n  link?:string;\r\n  linkText?:string;\r\n  formatNumber: (n: number, decimals: number) => any;\r\n  formatDate: (d: string, f: string) => any;\r\n  formatTime: (t: string, f: string) => any;\r\n};\r\n\r\nexport function IRTickerBlockLarge({\r\n  ticker,\r\n  link,\r\n  linkText,\r\n  formatNumber,\r\n  formatDate,\r\n  formatTime,\r\n}: IRTickerBlockLargeProps) {\r\n  return (\r\n    <>\r\n      <div className=\"c-ir-ticker-info-wrapper\">\r\n        <div className=\"c-ir-ticker-share-name\">\r\n          {ticker.TickerName} ({ticker.TickerSymbol})\r\n        </div>\r\n        <div className=\"c-ir-ticker-price-date\">\r\n          {formatDate(ticker.QuoteTime, \"dddd\")},{\" \"}\r\n          {formatDate(ticker.QuoteTime, \"DD MMMM YYYY\")},{\" \"}\r\n          {formatTime(ticker.QuoteTime, \"HH:mm Z\")}\r\n        </div>\r\n        <div className=\"c-ir-ticker-share-price-wrapper\">\r\n          <div className=\"c-ir-ticker-share-price\">\r\n            {formatNumber(ticker.Price, 1)}\r\n          </div>\r\n          <div className=\"c-ir-ticker-share-currency\">\r\n            {ticker.TradeCurrency}\r\n          </div>\r\n        </div>\r\n        <div className=\"c-ir-ticker-share-daily-price-interval\">\r\n          <div>\r\n            High: <b>{formatNumber(ticker.HighPrice, 2)}</b>\r\n          </div>\r\n          <div>\r\n            Low: <b>{formatNumber(ticker.LowPrice, 2)}</b>\r\n          </div>\r\n        </div>\r\n        <div className=\"c-ir-ticker-latest-changes\">\r\n          <div\r\n            className={classNames(\"c-ir-ticker-price-arrow-svg\", {\r\n              \"c-ir-ticker-price-arrow-svg-positive\": ticker.Delta > 0,\r\n              \"c-ir-ticker-price-arrow-svg-no-change\": ticker.Delta === 0,\r\n            })}\r\n          >\r\n            <IRArrowDownRightSvg />\r\n          </div>\r\n          <div className=\"c-ir-ticker-price-delta\">\r\n            {formatNumber(ticker.DeltaPercentage, 3)}% (\r\n            {formatNumber(ticker.Delta, 2)})\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div className=\"c-ir-ticker-footer\">\r\n        <div className=\"c-ir-ticker-footer-key-value\">\r\n          Buy: <b>{formatNumber(ticker.BidPrice, 2)}</b>\r\n        </div>\r\n        <div className=\"c-ir-ticker-footer-key-value\">\r\n          Sell: <b>{formatNumber(ticker.AskPrice, 2)}</b>\r\n        </div>\r\n        <div className=\"c-ir-ticker-footer-key-value\">\r\n          Volume: <b>{formatNumber(ticker.Quantity, 2)}</b>\r\n        </div>\r\n        <div className=\"c-ir-ticker-footer-key-value\">\r\n          Turnover:{\" \"}\r\n          <b>\r\n            {formatNumber(ticker.Turnover, 0)} {ticker.TradeCurrency}\r\n          </b>\r\n        </div>\r\n      </div>\r\n      {(link && linkText)?(<div className=\"c-ir-ticker-link-wrapper\">\r\n        <a href={link} className=\"c-ir-ticker-link\">\r\n          <div className=\"c-ir-ticker-link-arrow-svg\">\r\n            <IRArrowRightSvg />\r\n          </div>\r\n          <div className=\"c-ir-ticker-link-text\">{linkText}</div>\r\n        </a>\r\n      </div>):null}\r\n    </>\r\n  );\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport classNames from 'classnames';\r\nimport { BaseBlock, UrlType } from '../types';\r\nimport { IRTickerBlockSmall } from './components/IRTickerBlockSmall';\r\nimport { IRTickerBlockLarge } from './components/IRTickerBlockLarge';\r\nimport './IRTickerBlock.scss';\r\n\r\nexport type IRTickerBlockProps = BaseBlock & {\r\n  Title?: string;\r\n  BackgroundColor?: 'None' | 'Blue';\r\n  Size?: 'Small' | 'Large';\r\n  Link?: { Url: string };\r\n  LinkText?: string;\r\n  BackgroundImage?: UrlType;\r\n};\r\n\r\nexport const IRTickerBlock = ({\r\n  Title,\r\n  Size,\r\n  Margin,\r\n  Link,\r\n  LinkText,\r\n  BackgroundImage,\r\n}: IRTickerBlockProps) => {\r\n  const [_tickerData, setTickerData] = useState<any>();\r\n  const loadTicker = async () => {\r\n    // Snatched from cision\r\n    const cision = window['cision'];\r\n    const accessKey = cision.websolution.settings.ticker.accessKey;\r\n    const settings = cision.websolution.settings.general;\r\n    const texts = cision.websolution.texts[settings.uiLanguage];\r\n    var promiseTicker = cision.websolution.common.getModuleData({\r\n      accessKey: accessKey,\r\n      module: 'Ticker',\r\n      path: 'Ticker/' + accessKey,\r\n    });\r\n    var promiseSharePerformance = cision.websolution.common.getModuleData({\r\n      accessKey: accessKey,\r\n      module: 'Ticker performance',\r\n      path: 'Ticker/' + accessKey + '/Performance',\r\n    });\r\n\r\n    Promise.all([promiseTicker, promiseSharePerformance])\r\n      .then(function (results) {\r\n        // we only get here if ALL promises fulfill\r\n        var tickerData = results[0],\r\n          sharePerformanceData = results[1];\r\n\r\n        var data = {\r\n          tickers: [],\r\n        };\r\n\r\n        var sortedTickerData = tickerData.Instruments.sort(function (a, b) {\r\n          return a.TickerSymbol - b.TickerSymbol;\r\n        });\r\n\r\n        for (var instrumentIx = 0; instrumentIx < sortedTickerData.length; instrumentIx++) {\r\n          var instrument = sortedTickerData[instrumentIx],\r\n            lastDate = '2010-02-01T00:00:00.000000Z',\r\n            ticker;\r\n\r\n          for (var i = 0; i < instrument.Quotes.length; i++) {\r\n            var quote = instrument.Quotes[0];\r\n            if (quote.QuoteTime >= lastDate) {\r\n              ticker = quote;\r\n            }\r\n            lastDate = quote.QuoteTime;\r\n          }\r\n\r\n          var model = {\r\n            TickerName: instrument.TickerName,\r\n            TickerSymbol: instrument.TickerSymbol,\r\n            TradeCurrency: instrument.TradeCurrency,\r\n            ...ticker,\r\n            ...texts,\r\n            ArrowImageurl: '',\r\n          };\r\n\r\n          var p = sharePerformanceData.Instruments[instrumentIx],\r\n            useKiloFormat = false, //om tusen\r\n            useMegaFormat = true, //om miljon\r\n            currency = '$', //settings.valueSuffix,\r\n            isPrefixedCurrency = false, //före el efter\r\n            kiloPrefix = ' k', //prefix, sätts av user\r\n            megaPrefix = ' M'; //prefix, sätts av user\r\n\r\n          var lastPrice = p.LastPrice || p.ClosePrice1D || -1;\r\n          var numberOfShares = p.NumberOfShares || -1;\r\n\r\n          var marketCap = numberOfShares * lastPrice;\r\n\r\n          model.mcapTotalRaw = Math.round(marketCap);\r\n          model.mcapTotalKilo = Math.round(marketCap / 1000);\r\n          model.mcapTotalMega = Math.round(marketCap / 1000000);\r\n\r\n          if (useKiloFormat) {\r\n            model.mcapTotal = model.mcapTotalKilo + kiloPrefix;\r\n          } else if (useMegaFormat) {\r\n            model.mcapTotal = model.mcapTotalMega + megaPrefix;\r\n          } else {\r\n            model.mcapTotal = model.mcapTotalRaw + megaPrefix;\r\n          }\r\n\r\n          if (isPrefixedCurrency) {\r\n            model.mcapTotal = currency + model.mcapTotal;\r\n          } else {\r\n            model.mcapTotal = model.mcapTotal + currency;\r\n          }\r\n\r\n          // Instead of returning a NaN, turn this into an empty string if needed\r\n          model.mcapTotal = model.mcapTotal || '';\r\n\r\n          if (model.Delta > 0) {\r\n            model.ArrowImageurl = settings.tickerImagePlus;\r\n          } else if (model.Delta < 0) {\r\n            model.ArrowImageurl = settings.tickerImageMinus;\r\n          } else {\r\n            model.ArrowImageurl = settings.tickerImageUnchanged;\r\n          }\r\n\r\n          data.tickers.push(model);\r\n        }\r\n\r\n        setTickerData(data);\r\n      })\r\n      .catch(function (err) {\r\n        // Will catch failure of first failed promise\r\n        console.log('Failed:', err);\r\n      });\r\n  };\r\n  useEffect(() => {\r\n    loadTicker();\r\n  }, []);\r\n  const formatNumber = (n: number, decimals: number = 2) => {\r\n    return window['cision'].websolution.formatHelpers.formatNumber(n, decimals);\r\n  };\r\n  const formatDate = (d: string, f: string) => {\r\n    return window['cision'].websolution.formatHelpers.formatDate(d, f);\r\n  };\r\n\r\n  const formatTime = (t: string, f: string) => {\r\n    return window['cision'].websolution.formatHelpers.formatDate(t, f);\r\n  };\r\n\r\n  return _tickerData ? (\r\n    <>\r\n      {_tickerData.tickers.map((ticker: any) => {\r\n        return (\r\n          <div\r\n            className={classNames('c-ir-ticker-block', {\r\n              'c-ir-ticker-block-small': Size === 'Small',\r\n              'c-ir-ticker-block-large': Size === 'Large',\r\n              'margin-small': Margin === 'Small',\r\n              'margin-medium': Margin === 'Medium',\r\n              'margin-large': Margin === 'Large',\r\n            })}\r\n          >\r\n            {BackgroundImage?.Url && (\r\n              <img\r\n                className='background-image'\r\n                loading='lazy'\r\n                src={BackgroundImage.Url}\r\n                alt={Title}\r\n              />\r\n            )}\r\n            {Size === 'Large' ? (\r\n              <IRTickerBlockLarge\r\n                ticker={ticker}\r\n                formatNumber={formatNumber}\r\n                formatDate={formatDate}\r\n                formatTime={formatTime}\r\n                link={Link?.Url}\r\n                linkText={LinkText}\r\n              />\r\n            ) : (\r\n              <IRTickerBlockSmall\r\n                title={Title}\r\n                ticker={ticker}\r\n                formatNumber={formatNumber}\r\n                formatDate={formatDate}\r\n                formatTime={formatTime}\r\n                link={Link?.Url}\r\n                linkText={LinkText}\r\n              />\r\n            )}\r\n          </div>\r\n        );\r\n      })}\r\n    </>\r\n  ) : (\r\n    <div>Ticker loading</div>\r\n  );\r\n};\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { IRHtmlDiv } from \"@components/IRHtmlDiv\";\r\nimport { ColumnsType } from \"../IRColumnBlock\";\r\nimport { BaseBlock, UrlType } from \"../types\";\r\nimport './IRVideoBlock.scss';\r\n\r\ntype IRVideoBlockProps = BaseBlock & {\r\n  Description?: string;\r\n  YouTubeURL?: string;\r\n  VideoURL?: UrlType;\r\n  columns?: ColumnsType;\r\n};\r\n\r\nexport const IRVideoBlock = ({\r\n  Margin,\r\n  Title,\r\n  Description,\r\n  YouTubeURL,\r\n  VideoURL,\r\n  columns,\r\n}: IRVideoBlockProps) => {\r\n  return (\r\n    <div\r\n      className={classNames(\"c-ir-video-block\", {\r\n        \"video-block-fullwidth\": columns === undefined,\r\n        \"margin-small\": Margin === \"Small\",\r\n        \"margin-medium\": Margin === \"Medium\",\r\n        \"margin-large\": Margin === \"Large\",\r\n      })}\r\n    >\r\n      {VideoURL && (\r\n        <video className=\"c-ir-video-block-video\" controls>\r\n          <source src={VideoURL.Url} type=\"video/mp4\" />\r\n          Your broswer does not support the video tag.\r\n        </video>\r\n      )}\r\n      {YouTubeURL && (\r\n        <iframe\r\n          className=\"c-ir-video-block-iframe\"\r\n          title={`youtube video ${YouTubeURL}`}\r\n          src={\"https://www.youtube-nocookie.com/embed/\" + YouTubeURL}\r\n          allowFullScreen\r\n        />\r\n      )}\r\n      {(Title || Description) && (\r\n        <div className=\"c-ir-video-block-info\">\r\n          {Title && <div className=\"c-ir-video-block-title\">{Title}</div>}\r\n          {Description && (\r\n            <IRHtmlDiv\r\n              className=\"c-ir-video-block-description\"\r\n              html={Description}\r\n            />\r\n          )}\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import React, { useEffect } from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { BaseBlock } from \"../types\";\r\nimport './IRShareGraphBlock.scss';\r\n\r\nexport type IRShareGraphBlockProps = BaseBlock & {};\r\n\r\nexport const IRShareGraphBlock = ({\r\n    Title,\r\n    Margin,\r\n    InstanceID,\r\n}: IRShareGraphBlockProps) => {\r\n    const loadShareGraph = async () => {\r\n        // Snatched from cision\r\n        const cision = window[\"cision\"];\r\n        const settings = cision.websolution.settings.general;\r\n        const texts = cision.websolution.texts[settings.uiLanguage];\r\n\r\n        cision.websolution.sharegraph.init({\r\n            templateElement: InstanceID + \"-template\",\r\n            outputTargetElement: InstanceID + \"-wrapper\",\r\n            enableNavigator: false,\r\n        });\r\n        console.log(\"init done\");\r\n        if (\r\n            cision?.websolution?.settings?.sharecalculator?.accessKey?.trim()\r\n                ?.length > 0\r\n        ) {\r\n            console.log(\"Valid access key\");\r\n        } else {\r\n            console.log(\"Invalid key\");\r\n        }\r\n    };\r\n    useEffect(() => {\r\n        loadShareGraph();\r\n    }, []);\r\n\r\n    const shareTemplate = `<script id=\"${InstanceID}-template\" type=\"text/x-jsrender\">\r\n    <div class=\"row justify-content-between\">\r\n        {{>TickerSymbol}}\r\n        <div class=\"sharegraph-extras\">\r\n            <div class=\"dropdown\" id=\"share-options-select\">\r\n                <button class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" id=\"shareOptionsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"true\">\r\n                    <span class=\"caret\"></span>\r\n                    {{>TextShareOptions}}\r\n                </button>\r\n                <ul class=\"dropdown-menu\">\r\n                    <li class=\"dropdown-header\">{{>TextShare}} & {{>TextIndex}}</li>\r\n                    {{for mainInstruments}}\r\n                    <li class=\"dropdown-item show-hide-instrument selected\" data-initialstate=\"selected\" data-key='{{>symbol}}{{>marketPlace}}{{>currency}}'><a href=\"#\"><i class=\"fas fa-check\"></i>{{>name}}</a></li>\r\n                    {{if hasEffectiveYield}}\r\n                    <!-- To access this value you have to have this service activated in Millistream-->\r\n                    <li class=\"dropdown-item show-hide-instrument\" data-key=\"{{>symbol}}{{>marketPlace}}{{>currency}}{{:~root.effectiveYieldSuffix}}\" id=\"chk2\"><a href=\"#\"><i class=\"fas fa-check\"></i>{{>name}} [{{:~root.TextTotalReturn}}]</a></li>\r\n                    {{/if}}\r\n                    {{/for}}\r\n                    {{if indexInstruments.length}}\r\n                    {{for indexInstruments}}\r\n                    <li class=\"dropdown-item show-hide-instrument share-index\" data-triggercomparison='true' data-symbol='{{>symbol}}' data-key='{{>symbol}}{{>marketPlace}}{{>currency}}'><a href=\"#\"><i class=\"fas fa-check\"></i>{{>name}}</a></li>\r\n                    {{/for}}\r\n                    {{/if}}\r\n                    {{if peersInstruments.length}}\r\n                    <li role=\"separator\" class=\"dropdown-divider\"></li>\r\n                    <li class=\"dropdown-header\">{{>TextPeers}}</li>\r\n                    {{for peersInstruments}}\r\n                    <li class=\"dropdown-item show-hide-instrument share-peer\" data-triggercomparison='true' data-symbol='{{>symbol}}' data-key='{{>symbol}}{{>marketPlace}}{{>currency}}'><a href=\"#\"><i class=\"fas fa-check\"></i>{{>name}}</a></li>\r\n                    {{/for}}\r\n                    {{/if}}\r\n                    <li role=\"separator\" class=\"dropdown-divider\"></li>\r\n                    <li class=\"dropdown-header\">{{>TextReleases}}</li>\r\n                    {{for indicatorsOnSeries}}\r\n                    <li class=\"dropdown-item show-hide-instrument indicator\" data-title=\"{{:~root.TextIndicatorDisabledTooltip}}\" data-toggle=\"tooltip\" data-key='{{>uniqueKey}}'><a href=\"#\"><i class=\"fas fa-check\"></i>{{>~getTranslation(translationKey)}}</a></li>\r\n                    {{/for}}\r\n                    <li role=\"separator\" class=\"dropdown-divider\"></li>\r\n                    <li class=\"dropdown-header\">{{>TextCompSubtitle}}</li>\r\n                    <li class=\"dropdown-item chartComparisonType\" id=\"comparisonPercent\" data-key='percent'><a href=\"#\"><i class=\"fa fa-check\"></i>{{>TextPercent}}</a></li>\r\n                    <li class=\"dropdown-item chartComparisonType selected\" data-initialstate=\"selected\" id=\"comparisonNone\" data-key='price'><a href=\"#\"><i class=\"fas fa-check\"></i>{{>TextPrice}}</a></li>\r\n                    <li role=\"separator\" class=\"dropdown-divider\"></li>\r\n                    <li class=\"dropdown-item chartComparisonType volume\" data-title=\"{{>TextVolumeDisabledTooltip}}\" data-toggle=\"tooltip\" data-key='volume'><a href=\"#\"><i class=\"fas fa-check\"></i>{{>TextShowVolume}}</a></li>\r\n                </ul>\r\n            </div>\r\n            <div class=\"dropdown\" id=\"share-download-options\">\r\n                <button class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" id=\"downloadOptionsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"true\">\r\n                    <span class=\"caret\"></span>\r\n                    {{>TextDownload}}\r\n                </button>\r\n                <ul class=\"dropdown-menu\">\r\n                    <li class=\"dropdown-item\" id=\"excel-download\"><a href=\"#\"><i class=\"fas fa-download\"></i> {{>TextDownloadShareHistory}}</a></li>\r\n                    <li class=\"dropdown-item\" id=\"print-chart\"><a href=\"#\"><i class=\"fas fa-print\"></i> {{>TextPrintChart}}</a></li>\r\n                    <li class=\"dropdown-item\" id=\"export-png-chart\"><a href=\"#\"><i class=\"fas fa-image\"></i> {{>TextDownloadAsPNG}}</a></li>\r\n                    <li class=\"dropdown-item\" id=\"export-jpeg-chart\"><a href=\"#\"><i class=\"fas fa-image\"></i> {{>TextDownloadAsJPEG}}</a></li>\r\n                    <li class=\"dropdown-item\" id=\"export-svg-chart\"><a href=\"#\"><i class=\"fas fa-image\"></i> {{>TextDownloadAsSVG}}</a></li>\r\n                    <li class=\"dropdown-item\" id=\"export-pdf-chart\"><a href=\"#\"><i class=\"fas fa-file-pdf\"></i> {{>TextDownloadAsPDF}}</a></li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n\r\n        <div id=\"periods\" class=\"btn-group sharegraph-extras\">\r\n            <div class=\"action btn btn-outline-secondary\" id=\"intraDay\" name=\"dataPeriod\" data-key=\"dataPeriodDays1\">{{>TextPartOfDay}}</div>\r\n            <div class=\"action btn btn-outline-secondary\" name=\"dataPeriod\" data-key=\"dataPeriodWeeks1\">{{>Text1V}}</div>\r\n            <div class=\"action btn btn-outline-secondary\" name=\"dataPeriod\" data-key=\"dataPeriodMonths1\">{{>Text1M}}</div>\r\n            <div class=\"action btn btn-outline-secondary\" name=\"dataPeriod\" data-key=\"dataPeriodMonths3\">{{>Text3M}}</div>\r\n            <div class=\"action btn btn-outline-secondary\" id=\"defaultPeriod\" name=\"dataPeriod\" data-key=\"dataPeriodMonths6\">{{>Text6M}}</div>\r\n            <div class=\"action btn btn-outline-secondary\" name=\"dataPeriod\" data-key=\"dataPeriodYears1\">{{>Text1Y}}</div>\r\n            <div class=\"action btn btn-outline-secondary\" name=\"dataPeriod\" data-key=\"dataPeriodYearsAll\">{{>TextAll}}</div>\r\n        </div>\r\n\r\n        <div class=\"sharegraph-extras\">\r\n            <div class=\"input-group date-picker\" id=\"datePickerFrom\">\r\n                <span class=\"input-group-prepend\">\r\n                    <button class=\"btn btn-outline-secondary\" type=\"button\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n                </span>\r\n                <input type=\"text\" class=\"form-control date-input\" style=\"margin: 0;\" />\r\n            </div>\r\n            <div class=\"input-group date-picker\" id=\"datePickerTo\">\r\n                <span class=\"input-group-prepend\">\r\n                    <button class=\"btn btn-outline-secondary\" type=\"button\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n                </span>\r\n                <input type=\"text\" class=\"form-control date-input\" style=\"margin: 0;\" />\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div id=\"sharegraph-container\"></div>\r\n\r\n    <div class=\"sharegraph-tabs\">\r\n        <!-- Nav tabs -->\r\n        <ul class=\"nav nav-tabs\" role=\"tablist\">\r\n            <li class=\"nav-item\" role=\"presentation\"><a href=\"#performance\" class=\"nav-link active\" aria-controls=\"home\" role=\"tab\" data-toggle=\"tab\">{{>TextPerformance}}</a></li>\r\n            <li class=\"nav-item\" role=\"presentation\"><a href=\"#orderbook\" class=\"nav-link\" aria-controls=\"profile\" role=\"tab\" data-toggle=\"tab\">{{>TextOrderBook}}</a></li>\r\n            <li class=\"nav-item\" role=\"presentation\"><a href=\"#trades\" class=\"nav-link\" aria-controls=\"messages\" role=\"tab\" data-toggle=\"tab\">{{>TextTrades}}</a></li>\r\n        </ul>\r\n        <div class=\"tab-content\">\r\n            <div role=\"tabpanel\" class=\"tab-pane active\" id=\"performance\"><div id=\"target-share-performance\"></div></div>\r\n            <div role=\"tabpanel\" class=\"tab-pane\" id=\"orderbook\"><div id=\"target-orderbook\"></div></div>\r\n            <div role=\"tabpanel\" class=\"tab-pane\" id=\"trades\"><div id=\"target-trades\"></div></div>\r\n        </div>\r\n    </div>\r\n</script>\r\n\r\n<script id=\"template-sharecalclulator-sharetype\" type=\"text/x-jsrender\">\r\n        <div class=\"share-help-container\">\r\n            <p class=\"helptext\">{{>TextShareTypeHelp}}</p>\r\n        </div>\r\n        <div class=\"row justify-content-between\">\r\n            {{for Instruments}}\r\n            <div class=\"col\">\r\n                <label><input type=\"radio\" name=\"shareType\" value=\"{{>TickerSymbol}}\" {{if Checked}} checked=\"checked\" {{/if}} /> {{>TickerSymbol}} ({{>TradeCurrency}})</label><br />\r\n            </div>\r\n            {{/for}}\r\n        </div>\r\n</script>\r\n\r\n<script id=\"template-sharecalclulator\" type=\"text/x-jsrender\">\r\n    <div class=\"row\">\r\n        <div class=\"col-6\">\r\n            <p class=\"helptext\">{{>TextPeriodHelp}}</p>\r\n            <table class=\"table table-borderless sharevalues\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n                <tr>\r\n                    <td class=\"bold first\">{{>TextFromIncluding}}:</td>\r\n                    <td>\r\n                        <div class=\"input-group date-picker\" id=\"datePickerShareCalculatorFrom\">\r\n                            <span class=\"input-group-prepend\">\r\n                                <button class=\"btn btn-outline-secondary\" type=\"button\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n                            </span>\r\n                            <input type=\"text\" class=\"form-control date-input\" />\r\n                        </div>\r\n                    </td>\r\n                </tr>\r\n                <tr>\r\n                    <td class=\"bold\">{{>TextToIncluding}}:</td>\r\n                    <td>\r\n                        <div class=\"input-group date-picker\" id=\"datePickerShareCalculatorTo\">\r\n                            <span class=\"input-group-prepend\">\r\n                                <button class=\"btn btn-outline-secondary\" type=\"button\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n                            </span>\r\n                            <input type=\"text\" class=\"form-control date-input\" />\r\n                        </div>\r\n                    </td>\r\n                </tr>\r\n            </table>\r\n        </div>\r\n        <div class=\"col-6\">\r\n            <p class=\"helptext\">{{>TextNumberOfSharesHelp}}</p>\r\n            <table class=\"table table-borderless sharevalues\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n                <tr>\r\n                    <td class=\"bold first\">{{>TextNumberOfShares}}:</td>\r\n                    <td>\r\n                        <input type=\"text\" id=\"tbNumberOfShares\" class=\"amount form-control\" value=\"\" />\r\n                    </td>\r\n                </tr>\r\n                <tr>\r\n                    <td class=\"bold\">{{>TextShareValue}}:</td>\r\n                    <td>\r\n                        <input type=\"text\" id=\"tbAmount\" class=\"amount form-control\" value=\"\" />\r\n                    </td>\r\n                </tr>\r\n            </table>\r\n        </div>\r\n    </div>\r\n    <button type=\"button\" class=\"btn btn-outline-dark float-right compute-button\" onclick=\"ShareCalculatorCompute()\">{{>TextShareCompute}}</button>\r\n    <div class=\"clear\"></div>\r\n    <br />\r\n</script>\r\n\r\n<script id=\"template-sharecalclulator-results\" type=\"text/x-jsrender\">\r\n    {{if RenderResults}}\r\n    <hr />\r\n    <br />\r\n    <div class=\"results-right\">\r\n        <div class=\"text-center\">\r\n            <h4 id=\"initial-investment-header\" class=\"h4 bold\">{{>TextInitialInvestment}}</h4>\r\n            <p id=\"initial-investment-type\">({{>TextEndOfTheDay}})</p>\r\n        </div>\r\n        <table id=\"initial-investment\" class=\"table table-sm fullsize\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n            <tbody>\r\n                <tr class=\"bold\">\r\n                    <td>{{>TextDate}}</td>\r\n                    <td class=\"text-right\">{{>Results.StartDateFormated}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextValue}} ({{>Results.Currency}})</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.StartValue, 2)}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextSharePrice}} ({{>Results.Currency}})</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.StartPrice, 2)}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextSharesBought}}</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.NumberOfShares, 0)}}</td>\r\n                </tr>\r\n            </tbody>\r\n        </table>\r\n    </div>\r\n    <div class=\"results-left\">\r\n        <div class=\"text-center\">\r\n            <h4 id=\"end-value-header\" class=\"h4 bold\">{{>TextEndValue}}</h4>\r\n            {{if Results.EndDateQuote.QuoteType == \"PartOfDay\"}}\r\n            <p id=\"end-value-type\">({{>TextPartOfTheDay}})</p>\r\n            {{else}}\r\n            <p id=\"end-value-type\">({{>TextEndOfTheDay}})</p>\r\n            {{/if}}\r\n        </div>\r\n        <table id=\"end-value\" class=\"table table-sm\">\r\n            <tbody>\r\n                <tr class=\"bold\">\r\n                    <td>{{>TextDate}}</td>\r\n                    <td class=\"text-right\">{{>Results.EndDateFormated}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextValue}} ({{>Results.Currency}})</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.EndValue, 2)}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextSharePrice}} ({{>Results.Currency}})</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.EndPrice, 2)}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextChange}} ({{>Results.Currency}})</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.Change, 2)}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextChange}} (%)</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.ChangePercent, 2)}}</td>\r\n                </tr>\r\n                <tr>\r\n                    <td>{{>TextAnnualizedChange}} (%)</td>\r\n                    <td class=\"text-right\">{{>~formatNumber(Results.ChangeAnnualizedPercent, 2)}}</td>\r\n                </tr>\r\n            </tbody>\r\n        </table>\r\n    </div>\r\n    {{/if}}\r\n</script>\r\n\r\n<script id=\"template-sharecalclulator-history\" type=\"text/x-jsrender\">\r\n    <legend>{{>TextShareCalculatorHistory}}</legend>\r\n    <div class=\"history-download float-right\">\r\n        <a href=\"javascript:cision.websolution.sharecalculator.exportCsv();\" id=\"csvExport\" role='button'>\r\n            <i class=\"fas fa-file-excel\"></i> {{>TextDownloadResultsAndShareHistory}}\r\n        </a>\r\n    </div>\r\n    {{if ~root.PartOfDayHelp}}\r\n    <div>\r\n        <p class=\"helptext pull-right\">* {{>TextPartOfTheDay}}</p>\r\n    </div>\r\n    {{/if}}\r\n\r\n    <table id=\"shareCalculatorHistory\" class=\"table table-sm\">\r\n        <thead>\r\n            <tr>\r\n                <th>{{>TextDate}}</th>\r\n                <th>{{>TextOpenPrice}}</th>\r\n                <th>{{>TextAsk}}</th>\r\n                <th>{{>TextBid}}</th>\r\n                <th>{{>TextPrice}}</th>\r\n                <th>{{>TextHigh}}</th>\r\n                <th>{{>TextLow}}</th>\r\n                <th>{{>TextVolume}}</th>\r\n                <th>{{>TextTurnover}}</th>\r\n            </tr>\r\n        </thead>\r\n        <tbody>\r\n            {{for Quotes}}\r\n            <tr>\r\n                {{if QuoteType == \"PartOfDay\"}}\r\n                <td>{{>QuoteTimeFormated}} *</td>\r\n                {{else}}\r\n                <td>{{>QuoteTimeFormated}}</td>\r\n                {{/if}}\r\n                <td>{{>~formatNumber(OpenPrice, 2)}}</td>\r\n                <td>{{>~formatNumber(AskPrice, 2)}}</td>\r\n                <td>{{>~formatNumber(BidPrice, 2)}}</td>\r\n                <td>{{>~formatNumber(Price, 2)}}</td>\r\n                <td>{{>~formatNumber(HighPrice, 2)}}</td>\r\n                <td>{{>~formatNumber(LowPrice, 2)}}</td>\r\n                <td>{{>~formatNumber(Quantity, 0)}}</td>\r\n                <td>{{>~formatNumber(Turnover, 0)}}</td>\r\n            </tr>\r\n            {{/for}}\r\n        </tbody>\r\n    </table>\r\n</script>\r\n\r\n<script id=\"tplTickerPerformance\" type=\"text/x-jsrender\">\r\n    <table class=\"table table-sm performance-table\">\r\n        <tr>\r\n            <td>{{>TextSymbol}}</td>\r\n            <td class=\"text-right\">{{>Symbol}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextCurrency}}</td>\r\n            <td class=\"text-right\">{{>TradeCurrency}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextMarketPlace}}</td>\r\n            <td class=\"text-right\">{{>MarketPlace}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextClosingPrice}}</td>\r\n            <td class=\"text-right\">{{>~formatNumber(ClosePrice1D, 2)}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextLatestPrice}} ({{>LastUpdateFormatted}})</td>\r\n            <td class=\"text-right\">{{>~formatNumber(LastPrice, 2)}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextYearHigh}} ({{>~formatDate(HighPrice1YDate)}})</td>\r\n            <td class=\"text-right\">{{>~formatNumber(HighPrice1Y)}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextYearLow}} ({{>~formatDate(LowPrice1YDate)}})</td>\r\n            <td class=\"text-right\">{{>~formatNumber(LowPrice1Y)}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextAtHigh}} ({{>AthDateFormatted}})</td>\r\n            <td class=\"text-right\">{{>~formatNumber(Ath, 2)}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextAtLast}} ({{>AtlDateFormatted}})</td>\r\n            <td class=\"text-right\">{{>~formatNumber(Atl, 2)}}</td>\r\n        </tr>\r\n        <tr>\r\n            <td>{{>TextNumberOfShares}}</td>\r\n            <td class=\"text-right\">{{>~formatNumber(NumberOfShares, 0)}}</td>\r\n        </tr>\r\n    </table>\r\n</script>\r\n\r\n<script id=\"templateorderbook\" type=\"text/x-jsrender\">\r\n    {{if OrderBookItems.length}}\r\n    <table class=\"table table-sm orderbook-table\">\r\n        <thead>\r\n            <tr>\r\n                <th>{{>TextBuy}}</th>\r\n                <th>{{>TextVolume}}</th>\r\n                <th style=\"width: 30%\">&nbsp;</th>\r\n                <th>&nbsp;</th>\r\n                <th style=\"width: 30%\">&nbsp;</th>\r\n                <th>{{>TextVolume}}</th>\r\n                <th>{{>TextSell}}</th>\r\n            </tr>\r\n        </thead>\r\n        {{for OrderBookItems}}\r\n        <tr id=\"order-level-{{>Level}}\">\r\n            <td>{{>~formatNumber(BidPrice)}}</td>\r\n            <td>{{>~formatNumber(BidQuantity, 0)}}</td>\r\n            <td style=\"vertical-align:middle; text-align: center;\">\r\n                <div style=\"height:8px; padding: 0; margin: 2px;\">\r\n                    <div style=\"height:8px; float:right; background-color:#204A84; width : {{>BidVisualComparison}}%\">&nbsp;</div>\r\n                </div>\r\n            </td>\r\n            <td style=\"width:2px;\"></td>\r\n            <td style=\"vertical-align:middle; text-align: center;\">\r\n                <div style=\"height:8px; padding: 0; margin: 2px; \">\r\n                    <div style=\"height:8px; background-color:#8cc63f; width : {{>AskVisualComparison}}%\">&nbsp;</div>\r\n                </div>\r\n            </td>\r\n            <td>{{>~formatNumber(AskQuantity, 0)}}</td>\r\n            <td>{{>~formatNumber(AskPrice)}}</td>\r\n        </tr>\r\n        {{/for}}\r\n    </table>\r\n    {{else}}\r\n    <p>{{>TextNoTradesYet}}</p>\r\n    {{/if}}\r\n</script>\r\n\r\n<script id=\"tplTickerTrades\" type=\"text/x-jsrender\">\r\n    {{if Trades.length}}\r\n    <table class=\"table table-sm\">\r\n        <thead>\r\n            <tr>\r\n                <th class=\"text-left\">{{>TextPrice}} {{>TradeCurrency}}</th>\r\n                <th class=\"text-left\">{{>TextVolume}}</th>\r\n                <th class=\"text-left\">{{>TextBuyer}}</th>\r\n                <th class=\"text-left\">{{>TextSeller}}</th>\r\n                <th class=\"text-left\">{{>TextTime}}</th>\r\n            </tr>\r\n        </thead>\r\n        {{for Trades}}\r\n        <tr>\r\n            <td class=\"text-left\">{{>~formatNumber(Price)}}</td>\r\n            <td class=\"text-left\">{{>~formatNumber(Quantity, 0)}}</td>\r\n            <td class=\"text-left\">{{>Buyer}}</td>\r\n            <td class=\"text-left\">{{>Seller}}</td>\r\n            <td class=\"text-left\" data-time=\"{{>TradeTime}}\">{{>~formatTime(TradeTime, 'HH:mm:ss')}}</td>\r\n        </tr>\r\n        {{/for}}\r\n    </table>\r\n    {{else}}\r\n    <p>{{>TextNoTradesYet}}</p>\r\n    {{/if}}\r\n</script>`;\r\n    return (\r\n        <>\r\n            <div\r\n                className={classNames(\"c-ir-share-graph-block\", {\r\n                    \"margin-small\": Margin === \"Small\",\r\n                    \"margin-medium\": Margin === \"Medium\",\r\n                    \"margin-large\": Margin === \"Large\",\r\n                })}\r\n            >\r\n                <h2 className=\"c-ir-share-graph-block-heading\">\r\n                    {Title}\r\n                </h2>\r\n                <div id={InstanceID + \"-wrapper\"} />\r\n                <div dangerouslySetInnerHTML={{ __html: shareTemplate }} />\r\n            </div>\r\n        </>\r\n    );\r\n};\r\n","import React from 'react';\r\nimport { IRPdfSvg } from '@icons/investors/IRPdfSvg';\r\nimport dataLayer from '@helpers/dataLayer';\r\nimport { getURLFileData } from '@helpers/URLHelpers';\r\n\r\ntype IRQuarterlyReportDocument = {\r\n  Href: string;\r\n  Text: string;\r\n};\r\n\r\nexport type IRQuarterlyReportRowBlockProps = {\r\n  Title: string;\r\n  FirstQuarter: IRQuarterlyReportDocument[];\r\n  SecondQuarter: IRQuarterlyReportDocument[];\r\n  ThirdQuarter: IRQuarterlyReportDocument[];\r\n  FourthQuarter: IRQuarterlyReportDocument[];\r\n};\r\n\r\nexport const IRQuarterlyReportRowBlock = ({\r\n  Title,\r\n  FirstQuarter,\r\n  SecondQuarter,\r\n  ThirdQuarter,\r\n  FourthQuarter,\r\n}: IRQuarterlyReportRowBlockProps) => {\r\n  const onDownloadReport = (document: IRQuarterlyReportDocument, linkText) => {\r\n    const { fileName, extension } = getURLFileData(document.Href);\r\n    dataLayer.push('file_download', {\r\n      file_name: fileName,\r\n      file_extension: extension,\r\n      file_category: undefined,\r\n      file_context: undefined,\r\n      link_text: linkText,\r\n      link_url: document.Href,\r\n    });\r\n  };\r\n  return (\r\n    <>\r\n      {(FirstQuarter?.length > 0 ||\r\n        SecondQuarter?.length > 0 ||\r\n        ThirdQuarter?.length > 0 ||\r\n        FourthQuarter?.length > 0) && (\r\n        <tr className='c-ir-quarterly-report-row'>\r\n          <td>\r\n            <div className='title'>\r\n              <IRPdfSvg />\r\n              <p className='text'>{Title}</p>\r\n            </div>\r\n          </td>\r\n          <td>\r\n            {FirstQuarter?.length > 0 ? (\r\n              <a\r\n                download\r\n                href={FirstQuarter[0].Href}\r\n                target='_blank'\r\n                onClick={() => onDownloadReport(FirstQuarter[0], 'Q1')}\r\n              >\r\n                Q1\r\n              </a>\r\n            ) : (\r\n              <span>Q1</span>\r\n            )}\r\n          </td>\r\n          <td>\r\n            {SecondQuarter?.length > 0 ? (\r\n              <a\r\n                download\r\n                href={SecondQuarter[0].Href}\r\n                target='_blank'\r\n                onClick={() => onDownloadReport(SecondQuarter[0], 'Q2')}\r\n              >\r\n                Q2\r\n              </a>\r\n            ) : (\r\n              <span>Q2</span>\r\n            )}\r\n          </td>\r\n          <td>\r\n            {ThirdQuarter?.length > 0 ? (\r\n              <a\r\n                download\r\n                href={ThirdQuarter[0].Href}\r\n                onClick={() => onDownloadReport(ThirdQuarter[0], 'Q3')}\r\n                target='_blank'\r\n              >\r\n                Q3\r\n              </a>\r\n            ) : (\r\n              <span>Q3</span>\r\n            )}\r\n          </td>\r\n          <td>\r\n            {FourthQuarter?.length > 0 ? (\r\n              <a\r\n                download\r\n                href={FourthQuarter[0].Href}\r\n                onClick={() => onDownloadReport(FourthQuarter[0], 'Q4')}\r\n                target='_blank'\r\n              >\r\n                Q4\r\n              </a>\r\n            ) : (\r\n              <span>Q4</span>\r\n            )}\r\n          </td>\r\n        </tr>\r\n      )}\r\n    </>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport { IRFileItemBlock } from '../IRFileItem';\r\nimport { BaseBlock, FileType } from '../types';\r\nimport {\r\n  IRQuarterlyReportRowBlock,\r\n  IRQuarterlyReportRowBlockProps,\r\n} from './IRQuarterlyReportRowBlock';\r\nimport './IRQuarterlyReportBlock.scss';\r\n\r\nexport type IRQuarterlyReportsBlockProps = BaseBlock & {\r\n  Year: string;\r\n  InterimReports: IRQuarterlyReportRowBlockProps;\r\n  Transcriptions: IRQuarterlyReportRowBlockProps;\r\n  Presentations: IRQuarterlyReportRowBlockProps;\r\n  WebCast: IRQuarterlyReportRowBlockProps;\r\n  ExtraFiles?: FileType[];\r\n};\r\n\r\nexport const IRQuarterlyReportsBlock = ({\r\n  Year,\r\n  InterimReports,\r\n  Transcriptions,\r\n  Presentations,\r\n  WebCast,\r\n  ExtraFiles,\r\n}: IRQuarterlyReportsBlockProps) => {\r\n  return (\r\n    <div className='c-ir-quarterly-report-row'>\r\n      <table>\r\n        <IRQuarterlyReportRowBlock {...InterimReports} />\r\n        <IRQuarterlyReportRowBlock {...Transcriptions} />\r\n        <IRQuarterlyReportRowBlock {...Presentations} />\r\n        <IRQuarterlyReportRowBlock {...WebCast} />\r\n      </table>\r\n      {ExtraFiles?.length > 0 && (\r\n        <div className='extra-files'>\r\n          {ExtraFiles?.map((item: FileType) => {\r\n            return <IRFileItemBlock File={item} />;\r\n          })}\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import classNames from \"classnames\"\r\nimport React, { useState } from \"react\"\r\nimport { getBlock } from \"../getBlock\";\r\nimport './IRAccordion.scss';\r\n\r\nexport type IRAccordionProps = {\r\n    Child: any,\r\n    Title: string,\r\n    Topline?: boolean\r\n};\r\nexport const IRAccordion = ({ Title, Child, Topline }: IRAccordionProps) => {\r\n    const [open, setOpen] = useState<boolean>(false)\r\n\r\n    return (\r\n        <div\r\n            className={classNames(\"c-ir-accordion\", {\r\n                \"open\": open,\r\n                \"top-line\": Topline\r\n            })}\r\n\r\n        >\r\n            <div className=\"c-ir-accordion-header\" onClick={() => { setOpen(!open) }}>\r\n                <div className=\"title\">{Title}</div>\r\n                <div className=\"toggle\"><i className=\"icon-chevron-down c-accordion-tabs-head-icon\"></i></div>\r\n            </div>\r\n            <div className=\"c-ir-accordion-body\">{getBlock(Child)}</div>\r\n        </div>\r\n\r\n    )\r\n}","import React, { useState } from \"react\";\r\nimport { IRAccordion } from \"../IRAccordion\";\r\nimport { BaseBlock } from \"../types\";\r\nimport { IRQuarterlyReportsBlockProps } from \"./IRQuarterlyReportBlock\";\r\n\r\ntype IRQuarterlyReportsListBlockProps = BaseBlock & {\r\n  List: IRQuarterlyReportsBlockProps[],\r\n  ButtonText?: string,\r\n  ItemsPerPage: number,\r\n  TopLine?: boolean\r\n}\r\n\r\nexport const IRQuarterlyReportsListBlock = ({\r\n  List,\r\n  ButtonText,\r\n  ItemsPerPage,\r\n  TopLine\r\n}: IRQuarterlyReportsListBlockProps) => {\r\n  const [Page, setPage] = useState<number>(1)\r\n  return <div className=\"c-ir-quarterly-report-list\">\r\n    {List.slice(0, ItemsPerPage * Page).map((block: IRQuarterlyReportsBlockProps, index: number) => <IRAccordion Title={block.Year} Child={block} Topline={TopLine} />)}\r\n    {(ButtonText && List.length > (Page * ItemsPerPage)) && (\r\n      <div className=\"c-ir-btn dark\" onClick={() => setPage(Page + 1)}>\r\n        {ButtonText}\r\n      </div>\r\n    )}\r\n  </div>\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { Select } from '@components/Select';\r\nimport { PressReleaseType, UrlType } from '../types';\r\nimport './IRPressReleaseFilter.scss';\r\nimport {\r\n  useFetchPressReleaseFilterDataQuery,\r\n  useLazyFetchInvestorNewsQuery,\r\n} from '@pages/InvestorRelations/InvestorRelations.service';\r\n\r\ntype IRPressReleaseFilterProps = {\r\n  onNews: (news: PressReleaseType[]) => void;\r\n  onResetNews: () => void;\r\n  page: number;\r\n  newsCount: number;\r\n  InstanceID: string;\r\n  ButtonLink: UrlType;\r\n  ButtonText: string;\r\n};\r\ninterface Filter {\r\n  page: number;\r\n  category: string;\r\n  country: string;\r\n  industries: string;\r\n  startDate: string;\r\n  endDate: string;\r\n}\r\n\r\nconst IRRadioButton = ({ title, name, onChange, checked = false }) => {\r\n  return (\r\n    <div className='c-radio-button'>\r\n      <label className='c-radio-button-container'>\r\n        {title}\r\n        <input\r\n          type='radio'\r\n          onChange={onChange}\r\n          className='checkmark'\r\n          value={title}\r\n          checked={checked}\r\n        />\r\n        <span className='checkmark' />\r\n      </label>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport const IRPressReleseFilter = ({\r\n  onNews,\r\n  onResetNews,\r\n  page,\r\n  newsCount,\r\n  InstanceID,\r\n  ButtonLink,\r\n  ButtonText,\r\n}: IRPressReleaseFilterProps) => {\r\n  const [filters, setFilters] = useState<Filter>({\r\n    page: 0,\r\n    category: '',\r\n    country: '',\r\n    industries: '',\r\n    startDate: '',\r\n    endDate: '',\r\n  });\r\n  const { data: pressReleaseData } = useFetchPressReleaseFilterDataQuery();\r\n  const [getNews, { data: news }] = useLazyFetchInvestorNewsQuery();\r\n\r\n  useEffect(() => {\r\n    if (filters) {\r\n      onResetNews();\r\n      getNews({\r\n        ...filters,\r\n        newsCount,\r\n      });\r\n    }\r\n  }, [filters]);\r\n\r\n  useEffect(() => {\r\n    if (news?.length > 0) {\r\n      onNews(news);\r\n    }\r\n  }, [news]);\r\n\r\n  useEffect(() => {\r\n    getNews({\r\n      ...filters,\r\n      newsCount,\r\n    });\r\n  }, [page]);\r\n\r\n  const resetFilters = () => {\r\n    setFilters({\r\n      page: 0,\r\n      category: '',\r\n      country: '',\r\n      industries: '',\r\n      startDate: '',\r\n      endDate: '',\r\n    } as Filter);\r\n  };\r\n\r\n  const setFilter = (key: string, value: string) => {\r\n    let f = { ...filters };\r\n    f[key] = value;\r\n    setFilters(f);\r\n  };\r\n\r\n  const getNameFromSubList = (id, list, subListName) => {\r\n    let returnName = '';\r\n    list.forEach((item) => {\r\n      item[subListName].forEach((subListItem) => {\r\n        if (parseInt(subListItem.Id) === parseInt(id)) returnName = subListItem.Name;\r\n      });\r\n    });\r\n    return returnName;\r\n  };\r\n\r\n  return (\r\n    <div className='c-news-filter'>\r\n      <div className='c-ir-press-release-filter'>\r\n        {pressReleaseData?.CategoryList && (\r\n          <div className='categories'>\r\n            <label className='c-news-filter-label'>{pressReleaseData.I18n.CategoryTitle}</label>\r\n            <IRRadioButton\r\n              key={InstanceID + '-1'}\r\n              title={pressReleaseData.I18n.AllCategory}\r\n              onChange={() => setFilter('category', '')}\r\n              name='category'\r\n              checked={filters.category === ''}\r\n            />\r\n            {...Object.keys(pressReleaseData.CategoryList).map((category, index) => (\r\n              <IRRadioButton\r\n                key={InstanceID + index}\r\n                title={category}\r\n                onChange={() =>\r\n                  setFilter('category', pressReleaseData.CategoryList[category].toString())\r\n                }\r\n                name='category'\r\n                checked={parseInt(filters.category) === pressReleaseData.CategoryList[category]}\r\n              />\r\n            ))}\r\n          </div>\r\n        )}\r\n        <div className='countries'>\r\n          {pressReleaseData?.CountriesList && (\r\n            <div>\r\n              <div className='c-news-filter-row'>\r\n                <fieldset data-country-picker='' className=''>\r\n                  <label className='c-news-filter-label'>\r\n                    {pressReleaseData.I18n.CountryTitle}\r\n                  </label>\r\n                  <Select\r\n                    key={0}\r\n                    title={\r\n                      filters.country\r\n                        ? getNameFromSubList(\r\n                            filters.country,\r\n                            pressReleaseData.CountriesList,\r\n                            'Countries'\r\n                          )\r\n                        : pressReleaseData.I18n.ShowAllRegions\r\n                    }\r\n                    defaultTitle={pressReleaseData.I18n.ShowAllRegions}\r\n                    selectableTitle={true}\r\n                    list={pressReleaseData.CountriesList}\r\n                    name='Name'\r\n                    sub='Countries'\r\n                    selectFunction={(value) => setFilter('country', value.Id ? value.Id : '')}\r\n                    backLabel={pressReleaseData.I18n.Back}\r\n                  />\r\n                </fieldset>\r\n              </div>\r\n            </div>\r\n          )}\r\n          {pressReleaseData?.IndustriesList && (\r\n            <div>\r\n              <div className='c-news-filter-row'>\r\n                <fieldset>\r\n                  <legend className='c-news-filter-label'>\r\n                    {pressReleaseData.I18n.IndustryTitle}\r\n                  </legend>\r\n                  <Select\r\n                    key={1}\r\n                    title={\r\n                      filters.industries\r\n                        ? getNameFromSubList(\r\n                            filters.industries,\r\n                            pressReleaseData.IndustriesList,\r\n                            'SubIndustries'\r\n                          )\r\n                        : pressReleaseData.I18n.AllIndustry\r\n                    }\r\n                    defaultTitle={pressReleaseData.I18n.AllIndustry}\r\n                    selectableTitle={true}\r\n                    list={pressReleaseData.IndustriesList}\r\n                    name='Name'\r\n                    sub='SubIndustries'\r\n                    selectFunction={(value) => setFilter('industries', value.Id ? value.Id : '')}\r\n                    backLabel={pressReleaseData.I18n.Back}\r\n                  />\r\n                </fieldset>\r\n              </div>\r\n            </div>\r\n          )}\r\n        </div>\r\n        {pressReleaseData?.I18n && (\r\n          <div className='c-news-filter-row'>\r\n            <div className='c-news-filter-row-50'>\r\n              <span className='c-news-filter-label'>{pressReleaseData.I18n.StartDateTitle}</span>\r\n              <input\r\n                onChange={(event) => setFilter('startDate', event.currentTarget.value)}\r\n                className='c-input-date'\r\n                name='startDate'\r\n                type='date'\r\n                id='startDate'\r\n                value={filters.startDate}\r\n              />\r\n            </div>\r\n            <div className='c-news-filter-row-50'>\r\n              <span className='c-news-filter-label'>{pressReleaseData.I18n.EndDateTitle}</span>\r\n              <input\r\n                onChange={(event) => setFilter('endDate', event.currentTarget.value)}\r\n                className='c-input-date'\r\n                name='endDate'\r\n                type='date'\r\n                id='endDate'\r\n                value={filters.endDate}\r\n              />\r\n            </div>\r\n          </div>\r\n        )}\r\n      </div>\r\n      <div className='buttons'>\r\n        {pressReleaseData?.I18n && (\r\n          <a onClick={() => resetFilters()} className='c-ir-button c-ir-button-white'>\r\n            {pressReleaseData.I18n.ResetFilterButtonText}\r\n          </a>\r\n        )}\r\n        {ButtonLink?.Url && ButtonText && (\r\n          <a href={ButtonLink.Url} className='c-ir-button c-ir-button-blue'>\r\n            {ButtonText}\r\n          </a>\r\n        )}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\nimport useMediaQuery from \"@hooks/useMediaQuery\";\r\nimport { PressReleaseType, UrlType } from \"../types\";\r\nimport { IRLink } from \"../IRLink/IRLink\";\r\nimport { IRButton } from \"../IRButton/IRButton\";\r\n\r\ntype IRPressReleaseListCompactProps = {\r\n  List?: PressReleaseType[];\r\n  Link?: UrlType;\r\n  LinkText?: string;\r\n  ButtonLink?: UrlType;\r\n  ButtonText?: string;\r\n  NewsCount?: number;\r\n  MoreText?: string;\r\n  InstanceID: string;\r\n};\r\n\r\nexport default function IRPressReleaseListCompact({\r\n  List,\r\n  Link,\r\n  LinkText,\r\n  ButtonLink,\r\n  ButtonText,\r\n}: IRPressReleaseListCompactProps) {\r\n  const isMobile = useMediaQuery(\"(max-width: 768px)\");\r\n  return (\r\n    <>\r\n      {List && List.length > 0 && (\r\n        <ul className=\"c-ir-press-release-block-list\">\r\n          {List.map((listObj) => (\r\n            <li className=\"c-ir-press-release-block-item\">\r\n              <a href={listObj.Url} className=\"c-ir-press-release-link\">\r\n                <div className=\"c-ir-press-release-block-date\">\r\n                  {listObj.Date}\r\n                </div>\r\n                <div className=\"c-ir-press-release-block-item-title\">\r\n                  {listObj.Title}\r\n                </div>\r\n                {!isMobile && (\r\n                  <div className=\"c-ir-press-release-block-item-text\">\r\n                    {listObj.Text}\r\n                  </div>\r\n                )}\r\n              </a>\r\n            </li>\r\n          ))}\r\n        </ul>\r\n      )}\r\n      {(Link || ButtonLink) && (\r\n        <div className=\"c-ir-press-release-block-footer\">\r\n          {Link && (\r\n            <div className=\"c-ir-press-release-block-footer-link-wrapper\">\r\n              {Link?.Url && LinkText && (\r\n                <IRLink linkObj={{ Href: Link.Url, Text: LinkText }} />\r\n              )}\r\n            </div>\r\n          )}\r\n          {ButtonLink?.Url && ButtonText && (\r\n            <IRButton\r\n              ButtonLink={ButtonLink}\r\n              ButtonText={ButtonText}\r\n              dark={true}\r\n            />\r\n          )}\r\n        </div>\r\n      )}\r\n    </>\r\n  );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { PressReleaseType, UrlType } from \"../types\";\r\nimport { IRPressReleseFilter } from \"./IRPressReleaseFilter\";\r\n\r\ntype IRPressReleaseListStandardProps = {\r\n  List?: PressReleaseType[]\r\n  ButtonLink?: UrlType,\r\n  ButtonText?: string,\r\n  NewsCount?: number,\r\n  InstanceID?: string,\r\n  MoreText?: string\r\n\r\n};\r\n\r\n\r\nexport const IRPressReleaseListStandard = ({\r\n  ButtonLink,\r\n  ButtonText,\r\n  MoreText,\r\n  NewsCount,\r\n  InstanceID\r\n}: IRPressReleaseListStandardProps) => {\r\n  const [News, setNews] = useState<PressReleaseType[]>()\r\n  const [Page, setPage] = useState<number>(0)\r\n  const [LastPage, setLastPage] = useState<boolean>(false)\r\n  useEffect(() => {\r\n\r\n  }, [])\r\n\r\n\r\n  const onNews = (news: any) => {\r\n    News ? setNews(News => News.concat(news)) : setNews(news)\r\n    if (news.length < NewsCount) {\r\n      setLastPage(true)\r\n    }\r\n\r\n  }\r\n\r\n  const onResetNews = () => {\r\n    setNews([]);\r\n    setPage(0);\r\n    setLastPage(false)\r\n  }\r\n  return (\r\n    <>\r\n      <IRPressReleseFilter page={Page} InstanceID={InstanceID} newsCount={NewsCount} ButtonText={ButtonText} ButtonLink={ButtonLink} onResetNews={() => onResetNews()} onNews={(news: any) => onNews(news)} />\r\n      {News && News.length > 0 && (\r\n        <ul className=\"c-ir-press-release-block-list\">\r\n          {News.map((listObj) => (\r\n            <li className=\"c-ir-press-release-block-item\">\r\n              <a href={listObj.Url} className=\"c-ir-press-release-link\">\r\n                <div className=\"c-ir-press-release-block-date\">\r\n                  {listObj.Date}\r\n                </div>\r\n                <div className=\"c-ir-press-release-block-item-title\">\r\n                  {listObj.Title}\r\n                </div>\r\n                <div className=\"c-ir-press-release-block-item-text\">\r\n                  {listObj.Text}\r\n                </div>\r\n              </a>\r\n            </li>\r\n          ))}\r\n        </ul>\r\n      )}\r\n      {!LastPage && <div className=\"c-ir-button c-ir-button-blue\" onClick={() => setPage(Page + 1)}>{MoreText}</div>}\r\n    </>\r\n  );\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { BaseBlock, PressReleaseType, UrlType } from '../types';\r\nimport IRPressReleaseListCompact from './IRPressReleaseListCompact';\r\nimport { IRPressReleaseListStandard } from './IRPressReleaseListStandard';\r\nimport './IRPressReleaseListBlock.scss';\r\n\r\nexport type IRPressReleaseListBlockProps = BaseBlock & {\r\n  List?: PressReleaseType[];\r\n  MoreText?: string;\r\n  Link?: UrlType;\r\n  LinkText?: string;\r\n  ButtonLink?: UrlType;\r\n  ButtonText?: string;\r\n  NewsCount?: number;\r\n  InstanceID: string;\r\n  TopLine?: boolean;\r\n};\r\n\r\nexport const IRPressReleaseListBlock = ({\r\n  Margin,\r\n  Title,\r\n  TopLine,\r\n  ...props\r\n}: IRPressReleaseListBlockProps) => {\r\n  const [_style, setStyle] = useState<string>('');\r\n  const elem = useRef<HTMLDivElement>();\r\n  useEffect(() => {\r\n    if (elem.current) {\r\n      if (elem.current.parentElement.classList.contains('c-ir-column-block')) {\r\n        setStyle('Compact');\r\n      } else {\r\n        setStyle('Standard');\r\n      }\r\n    }\r\n  }, []);\r\n  return (\r\n    <div\r\n      ref={elem}\r\n      className={classNames('c-ir-press-release-block', {\r\n        'margin-small': Margin === 'Small',\r\n        'margin-medium': Margin === 'Medium',\r\n        'margin-large': Margin === 'Large',\r\n        'top-line': TopLine,\r\n      })}\r\n    >\r\n      {Title && <h2 className='c-ir-press-release-block-heading'>{Title}</h2>}\r\n      {_style === 'Standard' && <IRPressReleaseListStandard {...props} />}\r\n      {_style === 'Compact' && <IRPressReleaseListCompact {...props} />}\r\n    </div>\r\n  );\r\n};\r\n","import classNames from \"classnames\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { BaseBlock, UrlType } from \"../types\";\r\nimport { IRCalendarEventBlockProps } from \"../IRCalendarEventBlock\";\r\nimport { getBlock } from \"../getBlock\";\r\nimport { IRLink } from \"../IRLink/IRLink\";\r\nimport './IRCalendarListBlock.scss';\r\n\r\nexport type IRCalendarListBlockProps = BaseBlock & {\r\n  List?: IRCalendarEventBlockProps[];\r\n  BackgroundColor?: \"None\" | \"White\" | \"Gray\";\r\n  Link?: UrlType;\r\n  LinkText?: string;\r\n  TopLine?: boolean;\r\n};\r\n\r\nexport const IRCalendarListBlock = ({\r\n  Margin,\r\n  Title,\r\n  BackgroundColor,\r\n  List,\r\n  Link,\r\n  LinkText,\r\n  TopLine,\r\n}: IRCalendarListBlockProps) => {\r\n  const [_style, setStyle] = useState<string>(\"\");\r\n  const elem = useRef<HTMLDivElement>();\r\n  useEffect(() => {\r\n    if (elem.current) {\r\n      if (elem.current.parentElement.classList.contains(\"c-ir-column-block\")) {\r\n        setStyle(\"compact-style\");\r\n      } else {\r\n        setStyle(\"standard\");\r\n      }\r\n    }\r\n  }, []);\r\n  return (\r\n    <div\r\n      ref={elem}\r\n      className={classNames(\"c-ir-calendar-list-block\", _style, {\r\n        \"margin-small\": Margin === \"Small\",\r\n        \"margin-medium\": Margin === \"Medium\",\r\n        \"margin-large\": Margin === \"Large\",\r\n        \"bg-grey\": BackgroundColor === \"Gray\",\r\n        \"top-line\": TopLine,\r\n      })}\r\n    >\r\n      <h2 className=\"c-ir-calendar-list-heading\">{Title}</h2>\r\n      {List && List.length > 0 && (\r\n        <div className=\"c-ir-calendar-list\">\r\n          {List.map((calendarBlock) => getBlock({ ...calendarBlock }))}\r\n        </div>\r\n      )}\r\n      {Link && (\r\n        <div className=\"c-ir-calendar-list-link-wrapper\">\r\n          <IRLink linkObj={{ Href: Link.Url, Text: LinkText }} />\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useState } from 'react';\r\nimport { IRFileItemBlock } from '../IRFileItem';\r\nimport { BaseBlock } from '../types';\r\nimport './IRAnnualReportsBlock.scss';\r\n\r\ntype IRAnnualReport = {\r\n  Year: string;\r\n  File?: string;\r\n  FileSize?: string;\r\n  CreateDate?: string;\r\n  ComingText?: string;\r\n};\r\nexport type IRAnnualReportsBlockProps = BaseBlock & {\r\n  ReportList: IRAnnualReport[];\r\n  Title: String;\r\n  ButtonText: String;\r\n  ReportsPerPage: number;\r\n  ReportTitleTemplate: String;\r\n  TopLine?: boolean;\r\n};\r\n\r\nexport const IRAnnualReportsBlock = ({\r\n  ReportList,\r\n  Title,\r\n  ReportTitleTemplate,\r\n  ButtonText,\r\n  ReportsPerPage,\r\n  TopLine,\r\n}: IRAnnualReportsBlockProps) => {\r\n  const [Page, setPage] = useState<number>(1);\r\n\r\n  return (\r\n    <div\r\n      className={classNames('c-ir-annual-reports-block', {\r\n        'top-line': TopLine,\r\n      })}\r\n    >\r\n      <h2 className='title'>{Title}</h2>\r\n      {ReportList.slice(0, ReportsPerPage * Page).map((item: IRAnnualReport) => {\r\n        const fileObj = {\r\n          File: item.File,\r\n          FileText: ReportTitleTemplate.replace('{0}', item.Year),\r\n          CreateDate: item.CreateDate,\r\n          FileSize: item.FileSize,\r\n          MimeType: 'application/pdf',\r\n        };\r\n        return (\r\n          <div\r\n            className={classNames('c-ir-annual-reports-block-row', {\r\n              link: item.File,\r\n            })}\r\n          >\r\n            <div className='year'>{item.Year}</div>\r\n            {item.File ? (\r\n              <div className='item'>\r\n                <IRFileItemBlock File={fileObj} />\r\n              </div>\r\n            ) : (\r\n              <div>{item.ComingText}</div>\r\n            )}\r\n          </div>\r\n        );\r\n      })}\r\n      {Page * ReportsPerPage < ReportList.length && (\r\n        <div className='c-ir-btn dark' onClick={() => setPage(Page + 1)}>\r\n          {ButtonText}\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\nimport { IRFullWidthImageBlock } from \"./IRFullWidthImageBlock\";\r\nimport { IRHeroBlock } from \"./IRHeroBlock\";\r\nimport { IRTextBlock } from \"./IRTextBlock\";\r\nimport { IRUnknownBlock } from \"./IRUnknownBlock\";\r\nimport { IRKeyFactsBlock } from \"./IRKeyFactsBlock\";\r\nimport { IRPresentationCardBlock } from \"./IRPresentationCardBlock\";\r\nimport { IRContactBlock } from \"./IRContactBlock\";\r\nimport { IRInfoBoxBlock } from \"./IRInfoBoxBlock\";\r\nimport { IRQuickLinkBlock } from \"./IRQuickLinkBlock\";\r\nimport { IRTextImageBlock } from \"./IRTextImageBlock\";\r\nimport { IRColumnBlock } from \"./IRColumnBlock\";\r\nimport { IRCTABlock } from \"./IRCTABlock\";\r\nimport { IRRelatedContentBlock } from \"./IRRelatedContentBlock\";\r\nimport { IRSubscriptionBlock } from \"./IRSubscriptionBlock\";\r\nimport { IRFileListingBlock } from \"./IRFileListingBlock\";\r\nimport { IRCalendarEventBlock } from \"./IRCalendarEventBlock\";\r\nimport { IRTickerBlock } from \"./IRTickerBlock\";\r\nimport { IRVideoBlock } from \"./IRVideoBlock\";\r\nimport { IRShareGraphBlock } from \"./IRShareGraphBlock\";\r\nimport { IRQuarterlyReportsBlock } from \"./IRQuarterlyReportBlock\";\r\nimport { IRQuarterlyReportsListBlock } from \"./IRQuarterlyReportBlock\";\r\nimport { IRPressReleaseListBlock } from \"./IRPressReleaseListBlock\";\r\nimport { IRCalendarListBlock } from \"./IRCalendarListBlock\";\r\nimport { IRAnnualReportsBlock } from \"./IRAnnualReports\";\r\nimport { IRAccordion } from \"./IRAccordion\";\r\n\r\nexport const getBlock = (blockData) => {\r\n  const { ContentType, ...props } = blockData;\r\n  switch (ContentType) {\r\n    case \"IRHeroBlock\":\r\n      return <IRHeroBlock {...props} />;\r\n    case \"IRTextBlock\":\r\n      return <IRTextBlock {...props} />;\r\n    case \"IRFullWidthImageBlock\":\r\n      return <IRFullWidthImageBlock {...props} />;\r\n    case \"IRKeyFactsBlock\":\r\n      return <IRKeyFactsBlock {...props} />;\r\n    case \"IRPresentationCardBlock\":\r\n      return <IRPresentationCardBlock {...props} />;\r\n    case \"IRContactBlock\":\r\n      return <IRContactBlock {...props} />;\r\n    case \"IRInfoBoxBlock\":\r\n      return <IRInfoBoxBlock {...props} />;\r\n    case \"IRQuickLinkBlock\":\r\n      return <IRQuickLinkBlock {...props} />;\r\n    case \"IRTextImageBlock\":\r\n      return <IRTextImageBlock {...props} />;\r\n    case \"IRColumnBlock\":\r\n      return <IRColumnBlock {...props} />;\r\n    case \"IRCTABlock\":\r\n      return <IRCTABlock {...props} />;\r\n    case \"IRRelatedContentBlock\":\r\n      return <IRRelatedContentBlock {...props} />;\r\n    case \"IRSubscriptionBlock\":\r\n      return <IRSubscriptionBlock {...props} />;\r\n    case \"IRFileListingBlock\":\r\n      if (props.Collapsable) { // Workaround for putting filelist in an accordion without major rewrite\r\n        const { Title, Collapsable, TopLine, ...rest } = props\r\n        return <IRAccordion Title={props.Title} Topline={TopLine} Child={{ ...rest, ContentType: 'IRFileListingBlock' }} />\r\n      } else {\r\n        return <IRFileListingBlock {...props} />;\r\n      }\r\n    case \"IRCalendarEventBlock\":\r\n      return <IRCalendarEventBlock {...props} />;\r\n    case \"IRTickerBlock\":\r\n      return <IRTickerBlock {...props} />;\r\n    case \"IRShareGraphBlock\":\r\n      return <IRShareGraphBlock {...props} />;\r\n    case \"IRVideoBlock\":\r\n      return <IRVideoBlock {...props} />;\r\n    case \"IRQuarterlyReport\":\r\n      return <IRQuarterlyReportsBlock {...props} />\r\n    case \"IRQuarterlyReportListBlock\":\r\n      return <IRQuarterlyReportsListBlock {...props} />\r\n    case \"IRPressReleaseListBlock\":\r\n      return <IRPressReleaseListBlock {...props} key={props.InstanceID} />;\r\n    case \"IRCalendarList\":\r\n      return <IRCalendarListBlock {...props} />;\r\n    case \"IRAnnualReportBlock\":\r\n      return <IRAnnualReportsBlock {...props} />;\r\n    default:\r\n      return <IRUnknownBlock name={ContentType} props={props} />;\r\n  }\r\n};\r\n","import React from \"react\";\r\nimport { getBlock } from \"../components/getBlock\";\r\nimport { IRHtmlDiv } from \"@components/IRHtmlDiv\";\r\nimport { BasePage } from \"../InvestorRelations.types\";\r\nimport './InvestorRelationsFullwidthPage.scss';\r\n\r\nexport const InvestorRelationsFullwidthPage = ({\r\n  Title,\r\n  Ingress,\r\n  Content,\r\n  ContentType,\r\n}: BasePage) => {\r\n  return (\r\n    <div className=\"ir-fullwidth-page\">\r\n      {Title ? <h1 className=\"ir-fullwidth-page-title\">{Title}</h1> : null}\r\n      {Ingress ? <IRHtmlDiv className=\"c-ir-text-block ingress\" html={Ingress} /> : null}\r\n      {Content\r\n        ? Content.map((child) => {\r\n          return getBlock({\r\n            ...child,\r\n            pageType: ContentType,\r\n          });\r\n        })\r\n        : null}\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\nimport { getBlock } from \"../components/getBlock\";\r\nimport { IRHtmlDiv } from \"@components/IRHtmlDiv\";\r\nimport { BasePage } from \"../InvestorRelations.types\";\r\nimport './InvestorRelationsStandardPage.scss';\r\n\r\nexport const InvestorRelationsStandardPage = ({\r\n  Title,\r\n  Ingress,\r\n  Content,\r\n  ContentType,\r\n}: BasePage) => {\r\n  return (\r\n    <div className=\"ir-standard-page\">\r\n      {Title && <h1 className=\"ir-standard-page-title\">{Title}</h1>}\r\n      {Ingress && <IRHtmlDiv className=\"c-ir-text-block ingress\" html={Ingress} />}\r\n      {Content &&\r\n        Content.map((child) => {\r\n          return getBlock({\r\n            ...child,\r\n            pageType: ContentType,\r\n          });\r\n        })}\r\n    </div>\r\n  );\r\n};\r\n","import React from \"react\";\r\nimport { getBlock } from \"../components/getBlock\";\r\nimport {\r\n  IRHeroBlock,\r\n  IRHeroBlockProps,\r\n} from \"../components/IRHeroBlock\";\r\nimport { IRHtmlDiv } from \"@components/IRHtmlDiv\";\r\nimport { BasePage } from \"../InvestorRelations.types\";\r\nimport './InvestorRelationsStartPage.scss';\r\n\r\ntype IRStartPageProps = BasePage & {\r\n  HeroBanner?: IRHeroBlockProps;\r\n};\r\n\r\nexport const InvestorRelationsStartPage = ({\r\n  Content,\r\n  HeroBanner,\r\n  Ingress,\r\n  ContentType,\r\n}: IRStartPageProps) => {\r\n  return (\r\n    <div className=\"ir-start-page\">\r\n      {HeroBanner ? <IRHeroBlock {...HeroBanner} /> : null}\r\n      {Ingress ? (\r\n        <IRHtmlDiv\r\n          className=\"ir-start-page-ingress\"\r\n          html={Ingress}\r\n        />\r\n      ) : null}\r\n      <div className=\"ir-start-page-content\">\r\n        {Content\r\n          ? Content.map((child) => {\r\n            return getBlock({\r\n              ...child,\r\n              pageType: ContentType,\r\n            });\r\n          })\r\n          : null}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n","import React from 'react';\r\nimport { IRHeaderBar } from './components/IRHeaderBar/IRHeaderBar';\r\nimport { InvestorRelationsFullwidthPage } from './pageTypes/InvestorRelationsFullwidthPage';\r\nimport { InvestorRelationsStandardPage } from './pageTypes/InvestorRelationsStandardPage';\r\nimport { InvestorRelationsStartPage } from './pageTypes/InvestorRelationsStartPage';\r\nimport { useFetchBreadcrumbQuery } from '@layouts/HeaderBar/HeaderBar.service';\r\nimport {\r\n  useFetchInvestorRelationsMenuQuery,\r\n  useFetchInvestorRelationsPageQuery,\r\n} from './InvestorRelations.service';\r\n\r\nconst InvestorRelationsPage = () => {\r\n  const { data: breadcrumbs } = useFetchBreadcrumbQuery();\r\n  const { data: menu } = useFetchInvestorRelationsMenuQuery();\r\n  const { data: pageData } = useFetchInvestorRelationsPageQuery();\r\n  const pageType = pageData?.ContentType;\r\n\r\n  React.useEffect(() => {\r\n    const Footer = document.querySelector('#footer');\r\n    Footer && Footer && Footer.classList.add('ir-hide-footer');\r\n    window.addEventListener('load', () => {\r\n      Footer && Footer && Footer.classList.remove('ir-hide-footer');\r\n    });\r\n  }, []);\r\n\r\n  const getPageType = () => {\r\n    switch (pageType) {\r\n      case 'InvestorRelationsStartPage':\r\n        return <InvestorRelationsStartPage {...pageData} />;\r\n      case 'InvestorRelationsFullWidthPage':\r\n        return <InvestorRelationsFullwidthPage {...pageData} />;\r\n      case 'InvestorRelationsStandardPage':\r\n        return <InvestorRelationsStandardPage {...pageData} />;\r\n      default:\r\n        return null;\r\n    }\r\n  };\r\n\r\n  return pageType && menu && breadcrumbs ? (\r\n    <>\r\n      <IRHeaderBar\r\n        menu={menu}\r\n        breadcrumbs={breadcrumbs}\r\n        hideBreadcrumbs={pageType === 'InvestorRelationsStartPage'}\r\n        pageTitle={pageData.Name}\r\n      />\r\n      {getPageType()}\r\n    </>\r\n  ) : null;\r\n};\r\n\r\nexport default InvestorRelationsPage;\r\n","import InvestorRelationsPage from \"./InvestorRelations\";\r\nexport default InvestorRelationsPage;","export const Breadcrumb = {\r\n  fetchBreadcrumb: '/webapi/Breadcrumb/Get',\r\n};\r\n\r\nexport const Footer = {\r\n  fetchFooter: '/api/footer',\r\n};\r\n\r\nexport const CountrySelector = {\r\n  fetchCountrySelectList: '/webapi/CountrySelector/Get',\r\n};\r\n\r\nexport const RelatedTabs = {\r\n  fetchRelatedTabs: '/webapi/RelatedTabs/Get',\r\n  relatedTabs: '/webapi/RelatedTabs/GetTabs', // NOT IN USE\r\n};\r\n\r\nexport const Search = {\r\n  doSearch: '/webapi/SearchApi/SearchFor',\r\n  doSearchAutocomplete: '/webapi/SearchApi/GetAutocomplete',\r\n};\r\n\r\nexport const NewsAndStories = {\r\n  fetchNewsAndStoriesData: '/webapi/NewsListingApi/GetNewsListItems',\r\n  fetchNews: '/webapi/NewsListingApi/GetNewsList',\r\n  fetchStories: '/webapi/StoriesList/Get',\r\n};\r\n\r\nexport const Webinars = {\r\n  fetchWebinarBanner: '/webapi/WebinarLandingPage/Get',\r\n  fetchWebinarList: '/webapi/WebinarPage/Get',\r\n};\r\n\r\nexport const Header = {\r\n  fetchHeader: '/webapi/Header/Get', //NOT IN USE\r\n  fetchSubNavigation: '/webapi/SubNavigation/Get',\r\n  fetchMegaMenuNavigation: '/api/mainmenu',\r\n  fetchGeolocation: '/api/Geolocation',\r\n  fetchTopMenu: '/api/TopNavigation/',\r\n  fetchMegaMenuColumn: '/webapi/menuitems/columns',\r\n};\r\n\r\nexport const Stories = {\r\n  fetchStories: '/webapi/StoriesList/Get',\r\n};\r\n\r\nexport const News = {\r\n  fetchNews: '/webapi/NewsListPage/Get',\r\n};\r\n\r\nexport const Vacancies = {\r\n  fetchVacancies: '/webapi/Vacancy/Get', // NOT IN USE\r\n};\r\n\r\nexport const Webshop = {\r\n  fetchWebshop: '/webapi/WebShop/Get', // NOT IN USE\r\n};\r\n\r\nexport const ContactUs = {\r\n  fetchContactUsForm: '/webapi/ContactUsForm/GetForm',\r\n  fetchFindOfficeData: '/webapi/CountriesCategories/Get',\r\n  fetchEnquiryForm: '/webapi/contactus/getenquiryform',\r\n  fetchEnquirySerialLinkData: '/webapi/contactus/GetModalPopUp',\r\n  submitEnquiryForm: '/Quote/ProcessForm',\r\n  fetchEnquiryApplicationList: '/webapi/contactus/GetIndustryApplication',\r\n};\r\n\r\nexport const InvestorRelations = {\r\n  fetchPressReleaseFilterData: '/api/v1/ir/pressrelease',\r\n  fetchInvestorRelationsNews: '/api/v1/ir/news',\r\n  fetchInvestorRelationsPage: '/api/v1/ir/page2',\r\n  fetchInvestorRelationsMenu: '/api/v1/ir/menu2',\r\n  makeSubscription: '//publish.ne.cision.com/Subscription/SubscribeWithCaptcha',\r\n};\r\n\r\nexport const CoolCalc = {\r\n  getCoolCalc: '/webapi/CoolCalc/Get', // NOT IN USE\r\n  shareCoolCalc: '/webapi/CoolCalc/Save',\r\n};\r\n\r\nexport const Hexpert = {\r\n  fetchHexpertPage: '/api/v1/hex/page',\r\n  getAntiForgeryToken: '/api/v1/hex/GetAntiForgery',\r\n  submitHexpertForm: '/EPiServer.Forms/DataSubmit/Submit',\r\n  createHexpertPdf: '/api/v1/hex/CreatePdf',\r\n  getIsMatchingProducts: '/api/v1/hex/IsMatchingProduct',\r\n  getHexpertResult: '/api/v1/hex/GetResult',\r\n  mailResult: '/api/v1/hex/SendMail',\r\n};\r\n\r\nexport const SafetyDatasheet = {\r\n  fetchSafetyDatasheet: '/webapi/SafetyDataSheet/GetSafetyDataSheetResult',\r\n};\r\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","module","exports","default","define","window","Profile","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","r","d","IconContainer","icon","className","Facebook","Twitter","x","y","ExternalLink","id","Arrow","rotate","style","transformBox","transformOrigin","transform","Cross","Delete","EmailSvg","PhoneSvg","fillRule","clipRule","CategoryList","name","sub","selectableTitle","onClickSelectableTitle","onSelect","defaultTitle","list","onClick","map","item","index","SubCategoriesList","backLabel","onClickBack","Select","resetTime","selectFunction","required","title","label","isShowing","setIsShowing","useState","selectedCategory","setSelectedCategory","selectedCategoryItem","setSelectedCategoryItem","doReset","reset","setReset","useEffect","useReset","selectRef","useRef","useOutsideClick","ref","htmlFor","category","SocialMediaShare","handleClick","e","preventDefault","open","currentTarget","href","innerHeight","innerWidth","shareUrl","location","getComputerName","str","replace","toLowerCase","truncateString","limit","truncated","substring","interpolateString","args","interpolatedString","forEach","handler","current","contains","target","document","addEventListener","removeEventListener","breadcrumbApi","endpoints","build","fetchBreadcrumb","query","url","params","language","lang","pageId","overrideExisting","useFetchBreadcrumbQuery","IRArrowDownWideSvg","matches","setMatches","media","matchMedia","listener","IRBreadcrumbs","Breadcrumbs","Share","currentPage","Href","Text","IRArrowRightSvg","IRMenuLink","Title","Url","IRMenuFeaturedLink","heading","IRMenuBtn","ID","mountedStyleFading","animation","unmountedStyleFading","animationFillMode","IRMenu","data","openUrl","onClose","subMenu","setSubMenu","transitioning","setTransitioning","menuIsMounted","setMenuIsMounted","submenuActive","setSubmenuActive","Children","find","handleClosingModule","evt","classList","value","showModal","isMounted","delayTime","showDiv","setShowDiv","timeoutId","setTimeout","clearTimeout","useDelayUnmount","openSubMenu","useStickyHeaderBar","menuRef","sticky","querySelector","onWindowScroll","headerStickyEl","pageYOffset","add","remove","IRHeaderBar","menu","breadcrumbs","hideBreadcrumbs","pageTitle","menuOpen","setMenuOpen","_openUrl","setOpenUrl","isMobile","URL","pathname","currentPageTitle","obj","activeUrl","indexOf","child","IRHtmlDiv","html","htmlRef","imgs","getElementsByTagName","w","attributes","h","dangerouslySetInnerHTML","__html","IRFullWidthImageBlock","Body","Link","LinkText","BackgroundImage","TextBackgroundColor","TextColor","TextPosition","BackgroundImageMobile","Margin","pageType","fullwidth","backgroundImage","IRHeroBlock","Description","small","medium","large","src","alt","IRTextBlock","BackgroundColor","Content","Layout","TopLine","IRUnknownBlock","props","JSON","stringify","IRKeyFactsBlock","List","Size","big","Key","Fact","IRPresentationCardBlock","Image","Intro","loading","IRContactBlock","Role","Location","Phone","Email","IRInfoBoxBlock","columns","white","gray","green","mixed","sun","earth","columnBlock","getBlock","one","two","three","block","IRQuickLinkBlock","PageLink","PreviewImage","AltText","IRButton","ButtonLink","ButtonText","dark","IRTextImageBlock","ImagePosition","renderText","TextImageComponentArray","reverse","IRColumnBlock","ColumnSize","getColumns","IRDownloadHoverIcon","IRPdfSvg","IRFileItemBlock","File","fileName","extension","download","dataLayer","file_name","file_extension","file_category","undefined","file_context","link_text","FileText","link_url","CreateDate","FileSize","split","IRLink","linkObj","IRCTABlock","FileListTitle","FileList","LinkList","CTAComponentArray","fileObj","IRRelatedContentBlock","investorRelationsApi","apiSlice","fetchPressReleaseFilterData","fetchInvestorNews","fetchInvestorRelationsPage","responseHandler","response","text","transformResponse","parse","replaceAll","fetchInvestorRelationsMenu","makeSubscription","mutation","method","body","useFetchInvestorRelationsPageQuery","useFetchInvestorRelationsMenuQuery","useMakeSubscriptionMutation","useFetchPressReleaseFilterDataQuery","useLazyFetchInvestorNewsQuery","STATUS","IRSubscriptionBlock","SelectTypeLabel","PressReleaseLabel","InterimReportsLabel","YearEndReportsLabel","SelectLanguageLabel","SwedishLabel","EnglishLabel","NameLabel","EmailLabel","SubscribeLabel","SuccessLabel","FailureLabel","MissingRecaptchaLabel","_formRef","_status","setStatus","NONE","script","createElement","async","defer","appendChild","onSubmit","stopPropagation","formData","FormData","grecaptcha","getResponse","unwrap","then","SUCCESS","FAILURE","catch","RECAPTCHA_FAILED","action","type","checked","placeholder","IRFileListingBlock","Files","IRCalendarEventComponent","StartDate","EndDate","ShowTime","StartDateObj","Date","EndDateObj","padZeros","num","padStart","seeIfSameDate","startDateObj","endDateObj","sameYear","getYear","sameMonth","getMonth","sameDay","getDay","getDate","getFullYear","startDate","endDate","showTime","sameDate","sameDateTime","getTime","startDateString","getHours","getMinutes","endDateString","formatDate","IRCalendarEventBlock","_style","setStyle","elem","parentElement","IRArrowDownRightSvg","IRTickerBlockSmall","ticker","formatNumber","formatTime","link","linkText","TickerName","TickerSymbol","Price","TradeCurrency","Delta","DeltaPercentage","QuoteTime","IRTickerBlockLarge","HighPrice","LowPrice","BidPrice","AskPrice","Quantity","Turnover","IRTickerBlock","_tickerData","setTickerData","cision","accessKey","websolution","settings","general","texts","uiLanguage","promiseTicker","common","getModuleData","path","promiseSharePerformance","Promise","all","results","tickerData","sharePerformanceData","tickers","sortedTickerData","Instruments","sort","a","b","instrumentIx","instrument","lastDate","Quotes","quote","model","ArrowImageurl","p","lastPrice","LastPrice","ClosePrice1D","marketCap","NumberOfShares","mcapTotalRaw","Math","round","mcapTotalKilo","mcapTotalMega","mcapTotal","tickerImagePlus","tickerImageMinus","tickerImageUnchanged","err","console","log","loadTicker","n","decimals","formatHelpers","f","t","IRVideoBlock","YouTubeURL","VideoURL","controls","allowFullScreen","IRShareGraphBlock","InstanceID","sharegraph","init","templateElement","outputTargetElement","enableNavigator","sharecalculator","trim","loadShareGraph","shareTemplate","IRQuarterlyReportRowBlock","FirstQuarter","SecondQuarter","ThirdQuarter","FourthQuarter","onDownloadReport","IRQuarterlyReportsBlock","Year","InterimReports","Transcriptions","Presentations","WebCast","ExtraFiles","IRAccordion","Child","Topline","setOpen","IRQuarterlyReportsListBlock","ItemsPerPage","Page","setPage","slice","IRRadioButton","onChange","IRPressReleseFilter","onNews","onResetNews","page","newsCount","filters","setFilters","country","industries","pressReleaseData","getNews","news","setFilter","getNameFromSubList","subListName","returnName","subListItem","parseInt","Id","Name","I18n","CategoryTitle","AllCategory","keys","CountriesList","CountryTitle","ShowAllRegions","Back","IndustriesList","IndustryTitle","AllIndustry","StartDateTitle","event","EndDateTitle","ResetFilterButtonText","IRPressReleaseListCompact","listObj","IRPressReleaseListStandard","MoreText","NewsCount","News","setNews","LastPage","setLastPage","concat","IRPressReleaseListBlock","IRCalendarListBlock","calendarBlock","IRAnnualReportsBlock","ReportList","ReportTitleTemplate","ReportsPerPage","MimeType","ComingText","blockData","ContentType","Collapsable","rest","InvestorRelationsFullwidthPage","Ingress","InvestorRelationsStandardPage","InvestorRelationsStartPage","HeroBanner","pageData","Footer","getPageType","Breadcrumb","fetchFooter","CountrySelector","fetchCountrySelectList","RelatedTabs","fetchRelatedTabs","relatedTabs","Search","doSearch","doSearchAutocomplete","NewsAndStories","fetchNewsAndStoriesData","fetchNews","fetchStories","Webinars","fetchWebinarBanner","fetchWebinarList","Header","fetchHeader","fetchSubNavigation","fetchMegaMenuNavigation","fetchGeolocation","fetchTopMenu","fetchMegaMenuColumn","Stories","ContactUs","fetchContactUsForm","fetchFindOfficeData","fetchEnquiryForm","fetchEnquirySerialLinkData","submitEnquiryForm","fetchEnquiryApplicationList","InvestorRelations","fetchInvestorRelationsNews","CoolCalc","getCoolCalc","shareCoolCalc","Hexpert","fetchHexpertPage","getAntiForgeryToken","submitHexpertForm","createHexpertPdf","getIsMatchingProducts","getHexpertResult","mailResult","SafetyDatasheet","fetchSafetyDatasheet"],"sourceRoot":""}