{"version":3,"sources":["webpack:///./src/Frontend/vendor/glueframelib.js","webpack:///./src/Frontend/app/components/video-player/video-player.tsx","webpack:///./src/Frontend/app/components/video/video.tsx","webpack:///./src/Frontend/app/utils/string-utils.ts","webpack:///./src/Frontend/app/views/video/video-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"],"names":["GlueFrame","iframe","appName","$this","this","glueframe","_domain","src","split","slice","join","_method","window","location","postMessage","ready","_readyInterval","setInterval","get","bootstrapped","clearInterval","_processQueue","contentWindow","glueFrameId","Math","floor","Date","getTime","random","_callbackCount","_callbacks","_registerCallback","callback","requireCallback","callbackIdentifier","_queue","_addToQueue","method","args","push","i","length","queueItem","apply","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","url","autoPlay","autoMute","hideNativePlayBtn","loop","playerId","setDuration","setIsPlaying","isPlaying","isVideoLoaded","setIsVideoLoaded","player","current","duration","splitter","includes","hostName","videoId","videoTokenId","domain","video","componentClasses","baseClass","className","loading","ref","scrolling","frameBorder","allow","allowFullScreen","hideDuration","hidePlayButton","title","props","formattedDuration","d","str","targetLength","padString","padLeft","toString","onClick","iconId","render","contextModel","hasOwn","hasOwnProperty","classNames","classes","arguments","arg","argType","Array","isArray","inner","key","call","module","exports","default","spriteUrl","viewBox","preserveAspectRatio","xmlnsXlink","xlinkHref","id","type","anchorId","hasNoMarginTop","hasNoMarginBottom","children"],"mappings":"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","file":"33.67999cea331bf5c14b7c.js","sourcesContent":["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","import * as React from \"react\";\r\nimport { padLeft } from \"~/utils/string-utils\";\r\nimport VideoPlayer, { VideoPlayerProps } from \"../video-player/video-player\";\r\nimport Icon from \"../icons/icon\";\r\nimport ContentSection from \"../content-section/content-section\";\r\n\r\nexport interface VideoProps extends VideoPlayerProps {\r\n    title?: string;\r\n    hideDuration?: boolean;\r\n    hidePlayButton?: boolean;\r\n    hasNoMarginTop?: boolean;\r\n    hasNoMarginBottom?: boolean;\r\n    anchorId?: string;\r\n}\r\n\r\nconst Video = ({ url, autoPlay, playerId, hideDuration, hidePlayButton, title, ...props }: VideoProps) => {\r\n    const baseClass = \"video\";\r\n\r\n    const [duration, setDuration] = React.useState<number | undefined>();\r\n    const [isPlaying, setIsPlaying] = React.useState(false);\r\n\r\n    const formattedDuration = React.useMemo(() => {\r\n        const d = duration || 0;\r\n        const minutes = Math.floor(d / 60);\r\n        const seconds = d % 60;\r\n\r\n        return `${minutes}:${padLeft(seconds.toString(), 2, \"0\")}`;\r\n    }, [duration]);\r\n\r\n    const toggleIsPlaying = () => {\r\n        setIsPlaying(!isPlaying);\r\n    };\r\n\r\n    return (\r\n        <ContentSection className={baseClass} {...props}>\r\n            <div className={`${baseClass}__inner`}>\r\n                <div className={`${baseClass}__meta-wrapper`}>\r\n                    {title && <h3 className={`${baseClass}__title h3-style`}>{title}</h3>}\r\n                    {!hideDuration && duration && (\r\n                        <div className={`${baseClass}__duration`}>{formattedDuration}</div>\r\n                    )}\r\n                </div>\r\n\r\n                <VideoPlayer\r\n                    url={url}\r\n                    playerId={playerId}\r\n                    autoPlay={autoPlay}\r\n                    hideNativePlayBtn={!hidePlayButton}\r\n                    setDuration={setDuration}\r\n                    setIsPlaying={setIsPlaying}\r\n                    isPlaying={isPlaying}\r\n                />\r\n                {!hidePlayButton && (\r\n                    <div className={`${baseClass}__button-wrapper`}>\r\n                        <button\r\n                            className={`${baseClass}__button ${\r\n                                isPlaying ? `${baseClass}__button--playing` : \"\"\r\n                            }`}\r\n                            onClick={toggleIsPlaying}\r\n                        >\r\n                            <Icon iconId=\"24_play\" />\r\n                        </button>\r\n                    </div>\r\n                )}\r\n            </div>\r\n        </ContentSection>\r\n    );\r\n};\r\n\r\nexport default Video;\r\n","export function getAbbreviationFromString(item: string) {\r\n    const initials = item.split(\" \");\r\n    if (initials.length === 1) {\r\n        return initials[0].substring(0, 1);\r\n    }\r\n    return initials[0].substring(0, 1) + initials[initials.length - 1].substring(0, 1);\r\n}\r\n\r\nexport function padLeft(str: string, targetLength: number, padString: string) {\r\n    if (str.length >= targetLength) {\r\n        return str;\r\n    }\r\n\r\n    while (str.length < targetLength) {\r\n        str = padString + str;\r\n    }\r\n\r\n    return str;\r\n}\r\n\r\nexport function capitalizeFirstLetter(str: string) {\r\n    return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","import * as React from \"react\";\r\nimport Video, { VideoProps } from \"~/components/video/video\";\r\n\r\nexport interface IVideoViewProps {\r\n    contextModel: VideoProps;\r\n}\r\n\r\nclass VideoView extends React.PureComponent<IVideoViewProps> {\r\n    public render() {\r\n        return <Video {...this.props.contextModel} />;\r\n    }\r\n}\r\n\r\nexport default VideoView;\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_download\"\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"],"sourceRoot":""}