{"version":3,"sources":["webpack:///./Avensia.Common/Features/Shared/Blocks/Html/HtmlBlock.tsx","webpack:///./Avensia.Common/Features/Shared/BoxLayout/index.tsx","webpack:///./Avensia.Common/Features/Shared/Blocks/PaddedBlock.tsx"],"names":["HtmlBlock","props","promotionImpression","backgroundColor","css","layout","maxWidth","margin","y","x","Div","compose","className","propertyComponentProps","keepImageSizes","displayImage","for","html","component","innerProps","SPACING_DEFAULT","SPACING_MOBILE","BOX_ITEM_CLASSNAME","fractions","spacingDefaulter","value","currentBreakpoint","Tiny","isThin","fraction","Column","div","display","flexDirection","flexGrow","minWidth","Block","sort","entities","a","b","render","children","Children","toArray","this","row","allowSorting","Small","map","entry","element","shift","columns","Micro","reduce","current","item","convert","spacing","spacingBetweenBlocks","flexWrap","xy","wrap","entity","index","isColumn","key","flexBasis","padding","Component","state","BoxLayout","marginTop"],"mappings":"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","file":"assets/26.chunk.509b3c1c73d6cc20f987.js","sourcesContent":["/**\r\n * @ComponentFor HtmlBlock\r\n */\r\nimport React, { useEffect } from 'react';\r\nimport { LinksContainer } from '@avensia/scope';\r\nimport { EpiProperty, epiPropertyValue } from '@avensia/scope-episerver';\r\nimport HtmlBlockType from './HtmlBlock.type';\r\nimport padStyled from 'Shared/Blocks/PaddedBlock';\r\nimport { Style } from '@glitz/type';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { pixelsToUnit } from 'Shared/Style';\r\nimport { BOX_ITEM_CLASSNAME } from 'Shared/BoxLayout';\r\nimport { trackPromotionImpression } from 'TrackingInformation';\r\n\r\nconst HtmlBlock = padStyled((props: HtmlBlockType & StyledProps) => {\r\n useEffect(() => {\r\n trackPromotionImpression(props.promotionImpression);\r\n }, []);\r\n\r\n const backgroundColor = epiPropertyValue(props.backgroundColor);\r\n const css: Style = {\r\n backgroundColor: !!backgroundColor ? backgroundColor : 'transparent',\r\n ...(epiPropertyValue(props.layout) === 'wide'\r\n ? {\r\n maxWidth: '100%',\r\n }\r\n : {\r\n margin: {\r\n y: 0,\r\n x: 'auto',\r\n },\r\n maxWidth: pixelsToUnit(600),\r\n }),\r\n };\r\n return (\r\n \r\n (\r\n \r\n \r\n \r\n )}\r\n className=\"html-block\"\r\n />\r\n \r\n );\r\n});\r\n\r\nexport default HtmlBlock;\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport connect from '../connect';\r\nimport { Breakpoint } from '@avensia/scope';\r\nimport * as style from '../Style';\r\n\r\nexport const SPACING_DEFAULT = style.pixelsToUnit(25);\r\nexport const SPACING_MOBILE = style.pixelsToUnit(15);\r\nexport const BOX_CLASSNAME = 'purefun-box';\r\nexport const BOX_ITEM_CLASSNAME = 'purefun-box-item';\r\n\r\nconst fractions = {\r\n '1:2': 1 / 2,\r\n '1:3': 1 / 3,\r\n '1:4': 1 / 4,\r\n '2:3': 2 / 3,\r\n '3:4': 3 / 4,\r\n};\r\n\r\nexport type LayoutAliasType = keyof typeof fractions;\r\n\r\ntype LayoutColumnType = LayoutAliasType[] & {\r\n 0: LayoutAliasType;\r\n 1: LayoutAliasType[] & {\r\n 0: LayoutAliasType;\r\n 1: LayoutAliasType;\r\n };\r\n};\r\n\r\nexport type LayoutType = LayoutAliasType | LayoutColumnType;\r\n\r\nfunction spacingDefaulter(value: boolean | string, currentBreakpoint: number) {\r\n return value === true ? (currentBreakpoint > Breakpoint.Tiny ? SPACING_DEFAULT : SPACING_MOBILE) : value;\r\n}\r\n\r\nfunction isThin(fraction: number) {\r\n return fraction <= 1 / 3;\r\n}\r\n\r\nconst Column = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n minWidth: 0,\r\n});\r\n\r\nconst Block = styled.div({\r\n flexGrow: 1,\r\n minWidth: 0,\r\n});\r\n\r\ntype BlockEntityType = {\r\n fraction: number;\r\n element: React.ReactNode;\r\n};\r\n\r\ntype ColumnEntityType = {\r\n fraction: number;\r\n columns: BlockEntityType[];\r\n};\r\n\r\nfunction sort(entities: BlockEntityType[]) {\r\n return entities.sort((a, b) => b.fraction - a.fraction);\r\n}\r\n\r\nfunction convert(\r\n row: LayoutType[],\r\n children: React.ReactNode[],\r\n currentBreakpoint: number,\r\n allowSorting?: boolean,\r\n ): (BlockEntityType | ColumnEntityType)[] {\r\n if (currentBreakpoint > Breakpoint.Small) {\r\n return row.map(entry => {\r\n if (typeof entry === 'string') {\r\n return {\r\n fraction: fractions[entry],\r\n element: children.shift(),\r\n };\r\n }\r\n\r\n return {\r\n fraction: fractions[entry[0]],\r\n columns: entry[1].map(entry => ({\r\n fraction: fractions[entry],\r\n element: children.shift(),\r\n })),\r\n };\r\n });\r\n }\r\n\r\n // Flatten all blocks to full or half width\r\n if (currentBreakpoint > Breakpoint.Micro) {\r\n const entities = row.reduce((current, item) => {\r\n if (typeof item === 'string') {\r\n return [\r\n ...current,\r\n {\r\n fraction: isThin(fractions[item]) ? 0.5 : 1,\r\n element: children.shift(),\r\n },\r\n ];\r\n }\r\n\r\n const value = isThin(fractions[item[0]]) ? 0.5 : 1;\r\n return [\r\n ...current,\r\n ...item[1].map(() => ({\r\n fraction: value,\r\n element: children.shift(),\r\n })),\r\n ];\r\n }, []);\r\n\r\n return allowSorting ? sort(entities) : entities;\r\n }\r\n\r\n // Flatten all blocks to full width\r\n const entities = row.reduce(\r\n (current, entry) =>\r\n typeof entry === 'string'\r\n ? [\r\n ...current,\r\n {\r\n fraction: 1,\r\n element: children.shift(),\r\n },\r\n ]\r\n : [\r\n ...current,\r\n ...entry[1].map(() => ({\r\n fraction: 1,\r\n element: children.shift(),\r\n })),\r\n ],\r\n [],\r\n );\r\n\r\n return allowSorting ? sort(entities) : entities;\r\n}\r\n\r\nfunction isColumn(entity: BlockEntityType | ColumnEntityType): entity is ColumnEntityType {\r\n return 'columns' in entity;\r\n}\r\n\r\nfunction wrap(spacingBetweenBlocks: boolean | string, currentBreakpoint: number) {\r\n const spacing = spacingDefaulter(spacingBetweenBlocks, currentBreakpoint);\r\n return (entity: BlockEntityType | ColumnEntityType, index: number): React.ReactNode => {\r\n return isColumn(entity) ? (\r\n \r\n {entity.columns.map(wrap(spacingBetweenBlocks, currentBreakpoint))}\r\n \r\n ) : (\r\n \r\n {entity.element}\r\n \r\n );\r\n };\r\n}\r\n\r\ntype RequiredPropType = {\r\n layout: LayoutType[];\r\n spacingBetweenBlocks?: boolean | string;\r\n allowSorting?: boolean;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n};\r\n\r\ntype ConnectStateType = {\r\n currentBreakpoint: number;\r\n};\r\n\r\ntype PropType = StyledProps & RequiredPropType & ConnectStateType;\r\n\r\nclass BoxLayout extends React.Component {\r\n render() {\r\n const children = React.Children.toArray(this.props.children);\r\n const entities = convert(this.props.layout, children, this.props.currentBreakpoint, this.props.allowSorting);\r\n const spacing = spacingDefaulter(this.props.spacingBetweenBlocks, this.props.currentBreakpoint);\r\n return (\r\n Breakpoint.Small && {\r\n flexWrap: 'nowrap',\r\n }),\r\n }}\r\n className={BOX_CLASSNAME}\r\n >\r\n {entities.map(wrap(this.props.spacingBetweenBlocks, this.props.currentBreakpoint))}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n currentBreakpoint: state.currentBreakpoint,\r\n }),\r\n )(BoxLayout),\r\n);\r\n","import { styled } from '@glitz/react';\r\nimport { minTinyMediaQuery, minLargeMediaQuery, pixelsToUnit } from 'Shared/Style';\r\nimport { SPACING_DEFAULT, SPACING_MOBILE } from 'Shared/BoxLayout';\r\n\r\nexport default styled({\r\n marginTop: SPACING_MOBILE,\r\n [minLargeMediaQuery]: {\r\n marginTop: pixelsToUnit(40),\r\n },\r\n [minTinyMediaQuery]: {\r\n marginTop: SPACING_DEFAULT,\r\n },\r\n});\r\n"],"sourceRoot":""}