{"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 \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%\"> </th>\r\n <th> </th>\r\n <th style=\"width: 30%\"> </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}}%\"> </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}}%\"> </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":""}