{"version":3,"sources":["webpack:///./src/Frontend/app/types/alignment.ts","webpack:///./src/Frontend/app/components/image-text-cta-slider/image-text-cta-slider-item/image-text-cta-slider-item.tsx","webpack:///./src/Frontend/app/components/image-text-cta-slider/image-text-cta-slider.tsx","webpack:///./src/Frontend/app/views/image-text-cta-slider/image-text-cta-slider-view.tsx","webpack:///./node_modules/classnames/index.js","webpack:///./src/Frontend/app/components/icons/icon.tsx","webpack:///./src/Frontend/app/components/anchor/anchor.tsx","webpack:///./src/Frontend/app/components/content-section/content-section.tsx","webpack:///./src/Frontend/app/components/cta-button/cta-button.tsx","webpack:///./src/Frontend/app/components/arrow-link/arrow-link.tsx","webpack:///./src/Frontend/app/utils/image-utils.ts","webpack:///./src/Frontend/app/components/responsive-image/responsive-image.tsx","webpack:///./src/Frontend/app/components/title/title.tsx","webpack:///./src/Frontend/app/types/theme-color.ts","webpack:///./src/Frontend/app/components/wrapper-link/wrapper-link.tsx","webpack:///./src/Frontend/vendor/glueframelib.js","webpack:///./src/Frontend/app/components/video-player/video-player.tsx"],"names":["HorizontalAlignmentType","VerticalAlignmentType","imageSrc","imageAltText","imageLinkUrl","imageLinkTarget","isTitleH1","title","richText","ctaLink","showCtaAsLink","horizontalAlignContent","CENTER","textAlignContent","bgColor","textColor","BLACK","ctaBgColor","ctaTextColor","WHITE","videoUrl","index","activeSlideIndex","wasActiveSlideIndex","playing","setPlaying","hasContent","baseClass","componentClasses","contentClasses","buttonClasses","arrowLinkClasses","linkClassName","href","target","className","defaultSize","srcSetSizes","sizes","alt","srcUrl","url","isPlaying","autoMute","loop","hideNativePlayBtn","dangerouslySetInnerHTML","__html","link","isLarge","slides","autoslide","autoslideSpeed","fade","props","beforeChangeCurrentSlide","setBeforeChangeCurrentSlide","afterChangeCurrentSlide","setAfterChangeCurrentSlide","setActiveSlideIndex","undefined","navigationColor","sliderSettings","slidesToScroll","slidesToShow","infinite","autoplay","autoplaySpeed","speed","focusOnSelect","pauseOnHover","arrows","dots","dotsClass","beforeChange","current","next","afterChange","customPaging","i","type","width","height","strokeWidth","fill","r","cx","cy","map","slide","key","render","this","contextModel","hasOwn","hasOwnProperty","classNames","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","call","join","module","exports","default","spriteUrl","viewBox","iconId","preserveAspectRatio","onClick","xmlnsXlink","xlinkHref","id","anchorId","hasNoMarginTop","hasNoMarginBottom","children","isInverted","isSecondary","getQueryParamDelimiter","indexOf","hasExistingQueryParam","generateSrcSet","srcSetSize","parameterDelimiter","srcSetSizeHighDensity","Math","round","generateColumnImageProps","maxColumns","isFullWidth","gridMaxWidthFactor","ResponsiveImage","ref","src","srcSet","loading","linkHref","linkTarget","titleHtml","ThemeColorType","GlueFrame","iframe","appName","$this","glueframe","_domain","split","slice","_method","window","location","postMessage","ready","_readyInterval","setInterval","get","bootstrapped","clearInterval","_processQueue","contentWindow","glueFrameId","floor","Date","getTime","random","_callbackCount","_callbacks","_registerCallback","callback","requireCallback","callbackIdentifier","_queue","_addToQueue","method","args","queueItem","set","prop","force","cbId","value","messageObject","f","JSON","stringify","val","bind","event","triggerQueue","fire","obj","destroy","addEventListener","removeEventListener","_receiveMessage","detachEvent","e","origin","data","parse","a","b","attachEvent","autoPlay","playerId","setDuration","setIsPlaying","isVideoLoaded","setIsVideoLoaded","player","duration","splitter","includes","hostName","videoId","videoTokenId","domain","video","scrolling","frameBorder","allow","allowFullScreen"],"mappings":"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","file":"14.8ac984d139fcdb783c8f.js","sourcesContent":["export enum HorizontalAlignmentType {\r\n LEFT = \"left\",\r\n RIGHT = \"right\",\r\n CENTER = \"center\"\r\n}\r\nexport enum VerticalAlignmentType {\r\n TOP = \"top\",\r\n BOTTOM = \"bottom\",\r\n CENTER = \"center\"\r\n}\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport ResponsiveImage from \"../../responsive-image/responsive-image\";\r\nimport Title from \"~/components/title/title\";\r\nimport CtaButton from \"../../cta-button/cta-button\";\r\nimport { HorizontalAlignmentType } from \"~/types/alignment\";\r\nimport ArrowLink from \"../../arrow-link/arrow-link\";\r\nimport { ThemeColorType } from \"~/types/theme-color\";\r\nimport WrapperLink from \"~/components/wrapper-link/wrapper-link\";\r\nimport VideoPlayer from \"~/components/video-player/video-player\";\r\n\r\nexport interface ImageTextCtaSliderItemProps {\r\n imageSrc?: string;\r\n imageAltText?: string;\r\n imageLinkUrl?: string;\r\n imageLinkTarget?: string;\r\n isTitleH1?: boolean;\r\n title?: string;\r\n richText?: string;\r\n textColor?: ThemeColorType;\r\n textAlignContent?: HorizontalAlignmentType;\r\n ctaLink?: string;\r\n showCtaAsLink?: boolean;\r\n ctaBgColor?: ThemeColorType;\r\n ctaTextColor?: ThemeColorType;\r\n horizontalAlignContent?: HorizontalAlignmentType;\r\n navigationColor?: ThemeColorType;\r\n bgColor?: ThemeColorType;\r\n videoUrl?: string;\r\n index?: number;\r\n activeSlideIndex?: number;\r\n wasActiveSlideIndex?: number;\r\n}\r\n\r\nconst ImageTextCtaSliderItem = ({\r\n imageSrc,\r\n imageAltText,\r\n imageLinkUrl,\r\n imageLinkTarget,\r\n isTitleH1,\r\n title,\r\n richText,\r\n ctaLink,\r\n showCtaAsLink,\r\n horizontalAlignContent = HorizontalAlignmentType.CENTER,\r\n textAlignContent = HorizontalAlignmentType.CENTER,\r\n bgColor,\r\n textColor = ThemeColorType.BLACK,\r\n ctaBgColor = ThemeColorType.BLACK,\r\n ctaTextColor = ThemeColorType.WHITE,\r\n videoUrl,\r\n index,\r\n activeSlideIndex,\r\n wasActiveSlideIndex\r\n}: ImageTextCtaSliderItemProps) => {\r\n const [playing, setPlaying] = React.useState(false);\r\n\r\n const hasContent = title || richText || ctaLink;\r\n const baseClass = \"image-text-cta-slider-item\";\r\n const componentClasses = classNames(\r\n baseClass,\r\n `horizontal-align-${horizontalAlignContent}`,\r\n `text-align-${textAlignContent}`,\r\n `theme-color-${textColor}`,\r\n {\r\n [`theme-bg-${bgColor}`]: !imageLinkUrl && !!bgColor,\r\n [`${baseClass}--has-no-content`]: !hasContent\r\n }\r\n );\r\n const contentClasses = classNames(`${baseClass}__content-wrapper`);\r\n const buttonClasses = classNames(\r\n `${baseClass}__button`,\r\n `theme-bg-${ctaBgColor}`,\r\n `theme-color-${ctaTextColor}`\r\n );\r\n const arrowLinkClasses = classNames(`${baseClass}__link`, `theme-color-${ctaTextColor}`);\r\n\r\n React.useEffect(() => {\r\n if (index === activeSlideIndex) {\r\n setPlaying(true);\r\n }\r\n }, [activeSlideIndex]);\r\n React.useEffect(() => {\r\n if (index === wasActiveSlideIndex && index !== activeSlideIndex) {\r\n setPlaying(false);\r\n }\r\n }, [wasActiveSlideIndex]);\r\n\r\n return (\r\n \r\n
\r\n {!videoUrl && imageSrc && (\r\n \r\n )}\r\n\r\n {videoUrl && (\r\n \r\n )}\r\n\r\n {hasContent && (\r\n
\r\n {title && }\r\n {richText && (\r\n <div\r\n className={`${baseClass}__rich-text content-rich-text`}\r\n dangerouslySetInnerHTML={{ __html: richText }}\r\n />\r\n )}\r\n {ctaLink && (\r\n <>\r\n {showCtaAsLink ? (\r\n <ArrowLink className={arrowLinkClasses} link={ctaLink} />\r\n ) : (\r\n <CtaButton className={buttonClasses} link={ctaLink} isLarge />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </WrapperLink>\r\n );\r\n};\r\n\r\nexport default ImageTextCtaSliderItem;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport ImageTextCtaSliderItem, {\r\n ImageTextCtaSliderItemProps\r\n} from \"./image-text-cta-slider-item/image-text-cta-slider-item\";\r\nimport Slider, { Settings } from \"react-slick\";\r\nimport { ThemeColorType } from \"~/types/theme-color\";\r\nimport ContentSection from \"../content-section/content-section\";\r\n\r\nexport interface ImageTextCtaSliderProps {\r\n slides: ImageTextCtaSliderItemProps[];\r\n autoslide?: boolean;\r\n autoslideSpeed?: 4000 | 6000;\r\n fade?: boolean;\r\n bgColor?: ThemeColorType;\r\n textColor?: ThemeColorType;\r\n ctaBgColor?: ThemeColorType;\r\n ctaTextColor?: ThemeColorType;\r\n navigationColor?: ThemeColorType;\r\n anchorId?: string;\r\n}\r\n\r\nconst ImageTextCtaSlider = ({\r\n slides,\r\n autoslide = false,\r\n autoslideSpeed = 4000,\r\n fade = false,\r\n bgColor,\r\n textColor,\r\n ctaBgColor,\r\n ctaTextColor,\r\n ...props\r\n}: ImageTextCtaSliderProps) => {\r\n const [beforeChangeCurrentSlide, setBeforeChangeCurrentSlide] = React.useState<number | undefined>(0);\r\n const [afterChangeCurrentSlide, setAfterChangeCurrentSlide] = React.useState<number | undefined>();\r\n const [activeSlideIndex, setActiveSlideIndex] = React.useState(0);\r\n const wasActiveSlideIndex =\r\n activeSlideIndex === afterChangeCurrentSlide ? beforeChangeCurrentSlide : undefined;\r\n const navigationColor =\r\n slides[activeSlideIndex].navigationColor || props.navigationColor || ThemeColorType.BLACK;\r\n\r\n const baseClass = \"image-text-cta-slider\";\r\n const componentClasses = classNames(baseClass, {\r\n [`${baseClass}--auto-slide-speed-${autoslideSpeed}`]: autoslide && autoslideSpeed,\r\n [`${baseClass}--auto-slide`]: autoslide\r\n });\r\n const sliderSettings: Settings = {\r\n slidesToScroll: 1,\r\n slidesToShow: 1,\r\n // Infinite=true creates cloned slides and is only needed if autoplaying\r\n // So for performance we turn it off if no autoplay\r\n // NB: The cloned slides would create problems if we autoplay videos without muting!!!\r\n infinite: autoslide,\r\n autoplay: autoslide,\r\n autoplaySpeed: autoslideSpeed,\r\n speed: 700,\r\n focusOnSelect: false,\r\n fade: fade,\r\n // lazyLoad: \"ondemand\", // Lazy loading would be nice, but then we cannot keep equal height on all slides...🤷‍♀️\r\n pauseOnHover: true,\r\n arrows: false,\r\n dots: true,\r\n dotsClass: `${baseClass}__dots`,\r\n beforeChange: (current, next) => {\r\n // Inorder to first stop the video after the animation\r\n // we need to get the currentIndex before starting the animation\r\n setBeforeChangeCurrentSlide(current);\r\n setActiveSlideIndex(next);\r\n },\r\n afterChange: current => {\r\n // We cannot get the previous current index at this point,\r\n // but we can set this to figure out that the animation is over\r\n setAfterChangeCurrentSlide(current);\r\n },\r\n customPaging: i => (\r\n <button\r\n type=\"button\"\r\n className={classNames(`${baseClass}__dot`, `theme-color-${navigationColor}`, \"reset-button\")}\r\n >\r\n <svg className=\"progress-ring\" width=\"36\" height=\"36\">\r\n <circle\r\n className=\"progress-ring__circle\"\r\n strokeWidth=\"2\"\r\n fill=\"transparent\"\r\n r=\"16\"\r\n cx=\"18\"\r\n cy=\"18\"\r\n />\r\n </svg>\r\n {i + 1}\r\n </button>\r\n )\r\n };\r\n\r\n return (\r\n <ContentSection className={componentClasses} {...props}>\r\n <Slider {...sliderSettings}>\r\n {slides.map((slide, index) => (\r\n <ImageTextCtaSliderItem\r\n key={index}\r\n {...slide}\r\n bgColor={slide.bgColor || bgColor}\r\n textColor={slide.textColor || textColor}\r\n ctaBgColor={slide.ctaBgColor || ctaBgColor}\r\n ctaTextColor={slide.ctaTextColor || ctaTextColor}\r\n activeSlideIndex={activeSlideIndex}\r\n wasActiveSlideIndex={wasActiveSlideIndex}\r\n index={index}\r\n />\r\n ))}\r\n </Slider>\r\n </ContentSection>\r\n );\r\n};\r\n\r\nexport default ImageTextCtaSlider;\r\n","import * as React from \"react\";\r\nimport ImageTextCtaSlider, {\r\n ImageTextCtaSliderProps\r\n} from \"~/components/image-text-cta-slider/image-text-cta-slider\";\r\n\r\nexport interface IImageTextCtaSliderViewProps {\r\n contextModel: ImageTextCtaSliderProps;\r\n}\r\n\r\nclass ImageTextCtaSliderView extends React.PureComponent<IImageTextCtaSliderViewProps> {\r\n public render() {\r\n return <ImageTextCtaSlider {...this.props.contextModel} />;\r\n }\r\n}\r\n\r\nexport default ImageTextCtaSliderView;\r\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\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) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\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 * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport type TIconNames =\r\n | \"24_expand\"\r\n | \"24_play\"\r\n | \"24_star\"\r\n | \"24_trash\"\r\n | \"32_add-user\"\r\n | \"32_basket\"\r\n | \"32_checkmark-circle\"\r\n | \"32_checkmark\"\r\n | \"32_error\"\r\n | \"32_information\"\r\n | \"32_katalog\"\r\n | \"32_search\"\r\n | \"32_truck-in-motion\"\r\n | \"32_user\"\r\n | \"32_warning\"\r\n | \"icon_16_arrow-down\"\r\n | \"icon_16_arrow-left\"\r\n | \"icon_16_arrow-right-bold\"\r\n | \"icon_16_arrow-right\"\r\n | \"icon_16_arrow-up\"\r\n | \"icon_28_close\"\r\n | \"icon_32_thumbs-up\"\r\n | \"icon_80x41_quotation-mark-gyldendal-dk\"\r\n | \"icon_80x48_quotation-mark\"\r\n | \"icon_checkbox-black\"\r\n | \"icon_checkmark-black\"\r\n | \"icon_herringbone-narrow\"\r\n | \"icon_herringbone-wide\"\r\n | \"icon_placeholder-email\"\r\n | \"icon_placeholder-lock\"\r\n | \"icon_placeholder-phone-small\"\r\n | \"icon_placeholder-vip-white\"\r\n | \"icon_placeholder_basket\"\r\n | \"icon_placeholder_checkmark\"\r\n | \"icon_placeholder_eye-closed\"\r\n | \"icon_placeholder_eye\"\r\n | \"icon_placeholder_facebook\"\r\n | \"icon_placeholder_filtering\"\r\n | \"icon_placeholder_hamburger\"\r\n | \"icon_placeholder_instagram\"\r\n | \"icon_placeholder_phone\"\r\n | \"icon_placeholder_user\"\r\n | \"icon_read\"\r\n | \"icon_listen\";\r\n\r\nexport interface IIconProps {\r\n iconId: TIconNames;\r\n spriteUrl?: string;\r\n viewBox?: string;\r\n className?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst Icon: React.FC<IIconProps> = props => {\r\n const spriteUrl = props.spriteUrl || \"\";\r\n const viewBox = props.viewBox || \"0 0 32 32\";\r\n\r\n return (\r\n <svg\r\n viewBox={viewBox}\r\n className={classNames(props.className, \"icon\", `icon-${props.iconId}`)}\r\n preserveAspectRatio=\"xMidYMid\"\r\n onClick={() => props.onClick && props.onClick()}\r\n >\r\n <use xmlnsXlink=\"http://www.w3.org/1999/xlink\" xlinkHref={`${spriteUrl}#${props.iconId}`} />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default Icon;\r\n","import * as React from \"react\";\r\n\r\nexport interface AnchorProps {\r\n id?: string;\r\n}\r\n\r\nconst Anchor = ({ id }: AnchorProps) => {\r\n return <div className=\"anchor\" id={id} />;\r\n};\r\n\r\nexport default Anchor;\r\n","import classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport Anchor from \"../anchor/anchor\";\r\n\r\nexport interface ContentSectionProps {\r\n className?: string;\r\n type?: \"default\" | \"full\";\r\n anchorId?: string;\r\n hasNoMarginTop?: boolean;\r\n hasNoMarginBottom?: boolean;\r\n}\r\n\r\nconst ContentSection: React.FC<ContentSectionProps> = ({\r\n className,\r\n type = \"default\",\r\n anchorId,\r\n hasNoMarginTop,\r\n hasNoMarginBottom,\r\n ...props\r\n}) => {\r\n const baseClass = \"content-section\";\r\n const componentClasses = classNames(baseClass, className, {\r\n [`${baseClass}--full`]: type === \"full\",\r\n \"anchor-wrapper\": !!anchorId,\r\n \"content-no-margin-top\": hasNoMarginTop,\r\n \"content-no-margin-bottom\": hasNoMarginBottom\r\n });\r\n return (\r\n <section className={componentClasses}>\r\n {anchorId && <Anchor id={anchorId} />}\r\n {props.children}\r\n </section>\r\n );\r\n};\r\n\r\nexport default ContentSection;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport interface ICtaButtonProps {\r\n className?: string;\r\n isLarge?: boolean;\r\n isInverted?: boolean;\r\n isSecondary?: boolean;\r\n link: string;\r\n onClick?(): void;\r\n}\r\n\r\nconst CtaButton = ({ className, isLarge, isInverted, isSecondary, link, onClick }: ICtaButtonProps) => {\r\n const baseClass = \"cta-button\";\r\n const componentClasses = classNames(className, baseClass, {\r\n [`${baseClass}--large`]: isLarge,\r\n [`${baseClass}--inverted`]: isInverted,\r\n [`${baseClass}--secondary`]: isSecondary\r\n });\r\n\r\n return <div onClick={onClick} className={componentClasses} dangerouslySetInnerHTML={{ __html: link }} />;\r\n};\r\n\r\nexport default CtaButton;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport Icon from \"../icons/icon\";\r\n\r\nexport interface IArrowLinkProps {\r\n className?: string;\r\n link: string;\r\n}\r\n\r\nconst ArrowLink = ({ className, link }: IArrowLinkProps) => {\r\n const baseClass = \"arrow-link\";\r\n const componentClasses = classNames(baseClass, className);\r\n\r\n return (\r\n <div className={componentClasses}>\r\n <Icon iconId=\"icon_16_arrow-right-bold\" />\r\n <span dangerouslySetInnerHTML={{ __html: link }} />\r\n </div>\r\n );\r\n};\r\n\r\nexport default ArrowLink;\r\n","const hasExistingQueryParam = (url: string) => url.indexOf(\"?\") !== -1;\r\n\r\nexport const getQueryParamDelimiter = (url: string) => (hasExistingQueryParam(url) ? \"&\" : \"?\");\r\n\r\nexport const generateSrcSet = (srcSetSizes: number[], srcUrl: string) => {\r\n const generateSrcSetString = (srcSetSize: number) => {\r\n const parameterDelimiter = getQueryParamDelimiter(srcUrl);\r\n const srcSetSizeHighDensity = Math.round(srcSetSize * 1.5);\r\n\r\n return `\r\n ${srcUrl}${parameterDelimiter}w=${srcSetSize} ${srcSetSize}w,\r\n ${srcUrl}${parameterDelimiter}w=${srcSetSizeHighDensity} ${srcSetSizeHighDensity}w\r\n `;\r\n };\r\n\r\n return srcSetSizes.map(generateSrcSetString).join(\", \");\r\n};\r\n\r\nexport const generateColumnImageProps = (maxColumns: number, isFullWidth?: boolean) => {\r\n // The sizes are column-widths and are not considering padding\r\n const gridMaxWidthFactor = isFullWidth ? 1 : 0.75;\r\n const gridMaxWidth = 1366 * gridMaxWidthFactor;\r\n const defaultSize = gridMaxWidth / maxColumns;\r\n let sizes;\r\n\r\n switch (maxColumns) {\r\n case 5:\r\n sizes = `(max-width: 479px) 100vw, \r\n (max-width: 639px) 75vw,\r\n (max-width: 767px) 50vw,\r\n (max-width: 1023px) ${100 / 3}vw,\r\n (max-width: 1099px) ${(100 / 3) * gridMaxWidthFactor}vw,\r\n (max-width: 1279px) ${(100 / 4) * gridMaxWidthFactor}vw,\r\n ${defaultSize}px`;\r\n case 4:\r\n sizes = `(max-width: 479px) 100vw, \r\n (max-width: 639px) 75vw,\r\n (max-width: 767px) 50vw,\r\n (max-width: 1023px) ${100 / 3}vw,\r\n (max-width: 1099px) ${(100 / 3) * gridMaxWidthFactor}vw,\r\n (max-width: 1279px) ${(100 / 4) * gridMaxWidthFactor}vw,\r\n ${defaultSize}px`;\r\n case 3:\r\n sizes = `(max-width: 479px) 100vw,\r\n (max-width: 639px) 75vw,\r\n (max-width: 767px) 50vw,\r\n (max-width: 1023px) ${100 / 3}vw,\r\n (max-width: 1279px) ${(100 / 3) * gridMaxWidthFactor}vw,\r\n ${defaultSize}px`;\r\n case 2:\r\n sizes = `(max-width: 479px) 100vw,\r\n (max-width: 639px) 75vw,\r\n (max-width: 1023px) ${100 / 2}vw,\r\n (max-width: 1279px) ${(100 / 2) * gridMaxWidthFactor}vw, \r\n ${defaultSize}px`;\r\n case 1:\r\n sizes = `(max-width: 479px) 100vw,\r\n (max-width: 1023px) ${100 * 0.75}vw,\r\n (max-width: 1279px) ${100 * 0.75 * gridMaxWidthFactor}vw,\r\n ${defaultSize * 0.75}px`;\r\n }\r\n\r\n return {\r\n // The sizes are column-widths and are not considering padding\r\n defaultSize: defaultSize,\r\n srcSetSizes: [205, 257, 274, 342, 456, 513, 683, 769, 1025],\r\n sizes: sizes\r\n };\r\n};\r\n","import * as React from \"react\";\r\nimport { generateSrcSet, getQueryParamDelimiter } from \"~/utils/image-utils\";\r\n\r\nexport interface IResponsiveImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\r\n className?: string;\r\n srcUrl: string;\r\n defaultSize: number;\r\n srcSetSizes?: number[];\r\n sizes?: string;\r\n ref?: React.Ref<HTMLImageElement>;\r\n}\r\n\r\nconst ResponsiveImage: React.FC<IResponsiveImageProps> = React.forwardRef(\r\n ({ srcUrl, defaultSize, srcSetSizes, ...props }, ref: React.Ref<HTMLImageElement>) => {\r\n const src = `${srcUrl}${getQueryParamDelimiter(srcUrl)}w=${defaultSize}`;\r\n const srcSet = srcSetSizes ? generateSrcSet(srcSetSizes, srcUrl) : \"\";\r\n\r\n return <img ref={ref} src={src} srcSet={srcSet} {...props} loading=\"lazy\" />;\r\n }\r\n);\r\n\r\nexport default ResponsiveImage;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport interface ITitleProps {\r\n title: string;\r\n isTitleH1?: boolean;\r\n linkHref?: string;\r\n linkTarget?: string;\r\n className?: string;\r\n}\r\n\r\nconst Title = ({ title, isTitleH1, className, linkHref, linkTarget }: ITitleProps) => {\r\n const baseClass = \"title\";\r\n const componentClasses = classNames(baseClass, className, \"h2-style\");\r\n const titleHtml = linkHref ? (\r\n <a className=\"reset-a\" href={linkHref} target={linkTarget}>\r\n {title}\r\n </a>\r\n ) : (\r\n title\r\n );\r\n\r\n return isTitleH1 ? (\r\n <h1 className={componentClasses}>{titleHtml}</h1>\r\n ) : (\r\n <h2 className={componentClasses}>{titleHtml}</h2>\r\n );\r\n};\r\n\r\nexport default Title;\r\n","export enum ThemeColorType {\r\n BLACK = \"black\",\r\n WHITE = \"white\",\r\n GRAY = \"gray\",\r\n GRAY_LIGHT = \"gray-light\",\r\n BRAND_CTA = \"brand-cta\",\r\n BRAND_1 = \"brand-1\",\r\n BRAND_2 = \"brand-2\",\r\n BRAND_3 = \"brand-3\",\r\n BRAND_4 = \"brand-4\",\r\n BRAND_5 = \"brand-5\"\r\n}\r\n","import * as React from \"react\";\r\n\r\nexport interface WrapperLinkProps {\r\n linkClassName?: string;\r\n href: string | undefined;\r\n target?: string;\r\n}\r\n\r\nconst WrapperLink: React.FC<WrapperLinkProps> = ({ linkClassName, href, target, ...props }) => {\r\n if (href) {\r\n return (\r\n <a className={linkClassName} href={href} target={target}>\r\n {props.children}\r\n </a>\r\n );\r\n }\r\n\r\n return <>{props.children}</>;\r\n};\r\n\r\nexport default WrapperLink;\r\n","var GlueFrame = function(iframe, appName) {\r\n\r\n var $this = this;\r\n\r\n // GlueFrame version\r\n $this.glueframe = \"1.1.3\";\r\n\r\n // Allow posting messages only to the domain of the app\r\n var _domain = (\"\"+iframe.src).split(\"/\").slice(0,3).join(\"/\");\r\n\r\n // Determine method of communication with iframe\r\n var _method = (function() {\r\n if (_domain == (\"\"+window.location).split(\"/\").slice(0,3).join(\"/\") ) {\r\n return \"object\";\r\n } else if (typeof window.postMessage !== \"undefined\") {\r\n return \"post\";\r\n } else {\r\n return \"none\";\r\n }\r\n })();\r\n\r\n // Poll the iframe until the app is bootstrapped\r\n $this.ready = false;\r\n var _readyInterval = window.setInterval(function(){\r\n if (!this.ready && _method === \"object\") {\r\n if (iframe.contentWindow[appName] && iframe.contentWindow[appName].bootstrapped) {\r\n $this.ready = true;\r\n window.clearInterval(_readyInterval);\r\n _processQueue();\r\n }\r\n } else if (!this.ready && _method === \"post\") {\r\n $this.get(\"bootstrapped\", function(bootstrapped){\r\n if (bootstrapped) {\r\n $this.ready = true;\r\n window.clearInterval(_readyInterval);\r\n _processQueue();\r\n }\r\n }, true);\r\n }\r\n }, 100);\r\n\r\n $this.glueFrameId = Math.floor((new Date()).getTime()*Math.random());\r\n var _callbackCount = 0;\r\n var _callbacks = {};\r\n\r\n // Store callback functions in the parent window\r\n var _registerCallback = function(callback, requireCallback) {\r\n var callbackIdentifier = $this.glueFrameId + \"_\" + (++_callbackCount);\r\n if (typeof callback === \"function\") {\r\n _callbacks[callbackIdentifier] = callback;\r\n } else if (requireCallback) {\r\n throw \"GlueFrame: Callback not registered correctly.\";\r\n }\r\n return callbackIdentifier;\r\n };\r\n\r\n // Queue up method calls until app is ready\r\n var _queue = [];\r\n var _addToQueue = function(method, args) {\r\n _queue.push({method: method, args: args});\r\n };\r\n\r\n // Loop through queue when app is ready\r\n var _processQueue = function() {\r\n for (var i = 0; i < _queue.length; i += 1) {\r\n var queueItem = _queue[i];\r\n queueItem.method.apply(null, queueItem.args);\r\n }\r\n _queue = [];\r\n $this.set(\"queuedEventsProcessed\", true);\r\n };\r\n\r\n $this.get = function(prop, callback, force) {\r\n if (!$this.ready && !force) {\r\n _addToQueue($this.get, [prop, callback]);\r\n return;\r\n }\r\n var cbId = _registerCallback(callback, true);\r\n if (_method === \"object\") {\r\n var value = iframe.contentWindow[appName].get.apply(null, [prop]);\r\n if (typeof _callbacks[cbId] !== \"undefined\") {\r\n _callbacks[cbId].apply(null, [value]);\r\n }\r\n } else if (_method === \"post\") {\r\n var messageObject = {f: \"get\", args: [prop], cbId: cbId};\r\n iframe.contentWindow.postMessage( JSON.stringify(messageObject), force ? \"*\" : _domain );\r\n }\r\n };\r\n\r\n $this.set = function(prop, val, callback) {\r\n if (!$this.ready) {\r\n _addToQueue($this.set, [prop, val, callback]);\r\n return;\r\n }\r\n var cbId = _registerCallback(callback, false);\r\n if (_method === \"object\") {\r\n var value = iframe.contentWindow[appName].set.apply(null, [prop, val]);\r\n if (typeof _callbacks[cbId] !== \"undefined\") {\r\n _callbacks[cbId].apply(null, [value]);\r\n }\r\n } else if (_method === \"post\") {\r\n var messageObject = {f: \"set\", args: [prop, val], cbId: cbId};\r\n iframe.contentWindow.postMessage( JSON.stringify(messageObject), _domain );\r\n }\r\n };\r\n\r\n $this.bind = function(event, callback, triggerQueue) {\r\n var triggerQueue = triggerQueue || false;\r\n if (!$this.ready) {\r\n _addToQueue($this.bind, [event, callback, true]);\r\n return;\r\n }\r\n var cbId = _registerCallback(callback, true);\r\n if (_method === \"object\") {\r\n iframe.contentWindow[appName].bind.apply(null, [event, callback, triggerQueue]);\r\n } else if (_method === \"post\") {\r\n var messageObject = {f: \"bind\", args: [event], cbId: cbId, triggerQueue: triggerQueue};\r\n iframe.contentWindow.postMessage( JSON.stringify(messageObject), _domain );\r\n }\r\n };\r\n\r\n $this.fire = function(event, obj) {\r\n if (!$this.ready) {\r\n _addToQueue($this.fire, [event, obj]);\r\n return;\r\n }\r\n if (_method === \"object\") {\r\n return iframe.contentWindow[appName].fire.apply(null, [event, obj]);\r\n } else if (_method === \"post\") {\r\n var messageObject = {f: \"fire\", args: [event, obj]};\r\n iframe.contentWindow.postMessage( JSON.stringify(messageObject), _domain );\r\n }\r\n };\r\n\r\n // Remove event listeners, callbacks and intervals\r\n $this.destroy = function(){\r\n if (window.addEventListener) {\r\n window.removeEventListener(\"message\", _receiveMessage, false);\r\n } else {\r\n window.detachEvent(\"onmessage\", _receiveMessage);\r\n }\r\n window.clearInterval(_readyInterval);\r\n _callbacks = {};\r\n };\r\n\r\n // Parse messages received from iframe\r\n var _receiveMessage = function(e) {\r\n \tif (e.origin === _domain) {\r\n var data;\r\n try {\r\n data = JSON.parse(e.data);\r\n }catch(e){}\r\n if (typeof data !== \"undefined\" && typeof data.cbId !== \"undefined\" && typeof _callbacks[data.cbId] === \"function\") {\r\n _callbacks[data.cbId].apply(null, [data.a, data.b]);\r\n }\r\n }\r\n };\r\n\r\n // Listen for message events if need\r\n if (window.addEventListener) {\r\n window.addEventListener(\"message\", _receiveMessage, false);\r\n } else {\r\n window.attachEvent(\"onmessage\", _receiveMessage);\r\n }\r\n\r\n};\r\n\r\n// Converted to es6 module. This should not be an issue in terms of maintainability since the library has not not been updated since April 2017...\r\n// Should any updates be made to the repository (https://github.com/23/GlueFrame), please make sure to include the proper export syntax as below.\r\n\r\n// Original:\r\n // if(typeof(window.onGlueFrameAvailable)=='function') window.onGlueFrameAvailable(GlueFrame);\r\n\r\n // if (typeof module !== 'undefined' && module.exports) {\r\n // module.exports = GlueFrame;\r\n // }\r\n\r\n// New:\r\nexport default GlueFrame\r\n\r\n","import classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport GlueFrame from \"../../../vendor/glueframelib\";\r\n\r\nexport interface VideoPlayerProps {\r\n url: string;\r\n autoPlay?: boolean;\r\n autoMute?: boolean;\r\n hideNativePlayBtn?: boolean;\r\n loop?: boolean;\r\n playerId?: string;\r\n setDuration?: (duration: number) => void;\r\n setIsPlaying?: (isPlaying: boolean) => void;\r\n isPlaying?: boolean;\r\n}\r\n\r\nconst VideoPlayer = ({\r\n url,\r\n autoPlay,\r\n autoMute,\r\n hideNativePlayBtn,\r\n loop,\r\n playerId,\r\n setDuration,\r\n setIsPlaying,\r\n isPlaying\r\n}: VideoPlayerProps) => {\r\n const [isVideoLoaded, setIsVideoLoaded] = React.useState(false);\r\n const iframe = React.useRef<HTMLIFrameElement>(null);\r\n const player = React.useRef<any>(null);\r\n\r\n React.useLayoutEffect(() => {\r\n if (iframe.current) {\r\n const glueFrame = new (GlueFrame as any)(iframe.current, \"Player\");\r\n\r\n glueFrame.bind(\"player:video:loaded\", () => {\r\n setIsVideoLoaded(true);\r\n if (setDuration) {\r\n glueFrame.get(\"duration\", (duration?: number) => {\r\n if (duration) {\r\n setDuration(duration);\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (setIsPlaying) {\r\n glueFrame.bind(\"player:video:play\", () => setIsPlaying(true));\r\n glueFrame.bind(\"player:video:pause\", () => setIsPlaying(false));\r\n glueFrame.bind(\"player:video:end\", () => setIsPlaying(false));\r\n }\r\n\r\n player.current = glueFrame;\r\n }\r\n\r\n return () => player.current?.destroy();\r\n }, [iframe]);\r\n\r\n React.useEffect(() => {\r\n player.current?.set(\"playing\", isPlaying);\r\n }, [isPlaying]);\r\n\r\n const src = React.useMemo(() => {\r\n const splitter = url.includes(\"/video/\") ? \"/video/\" : \"/secret/\";\r\n const [hostName, trailing] = url.split(splitter);\r\n const [videoId, videoTokenId] = trailing.split(\"/\");\r\n const domain = `${hostName}/${playerId || \"v\"}.ihtml/player.html`;\r\n const video = `photo%5fid=${videoId}`;\r\n return !!videoTokenId\r\n ? `${domain}?token=${videoTokenId}&source=embed&${video}&autoPlay=${autoPlay ? 1 : 0}&autoMute=${\r\n autoMute ? 1 : 0\r\n }&loop=${loop ? 1 : 0}&hideBigPlay=${hideNativePlayBtn ? 1 : 0}`\r\n : `${domain}?source=site&${video}&autoPlay=${autoPlay ? 1 : 0}&autoMute=${\r\n autoMute ? 1 : 0\r\n }&loop=${loop ? 1 : 0}&hideBigPlay=${hideNativePlayBtn ? 1 : 0}`;\r\n }, [url]);\r\n\r\n const baseClass = \"video-player\";\r\n const componentClasses = classNames(baseClass, { [`${baseClass}--has-loaded`]: isVideoLoaded });\r\n\r\n return (\r\n <div className={componentClasses}>\r\n <iframe\r\n loading=\"lazy\"\r\n ref={iframe}\r\n src={src}\r\n scrolling=\"no\"\r\n frameBorder={0}\r\n allow=\"fullscreen; autoplay\"\r\n allowFullScreen\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default VideoPlayer;\r\n"],"sourceRoot":""}