UNPKG

418 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/bootstrap ad2168d2f84a38c64090","webpack:///external \"React\"","webpack:///./src/utils.js","webpack:///./src/singlePlayer.js","webpack:///./node_modules/vast-client/src/parser/parser_utils.js","webpack:///./src/props.js","webpack:///./src/players/YouTube.js","webpack:///./src/Player.js","webpack:///./src/players/SoundCloud.js","webpack:///./src/players/Vimeo.js","webpack:///./src/players/DailyMotion.js","webpack:///./src/players/FilePlayer.js","webpack:///./node_modules/vast-client/src/creative/creative.js","webpack:///./node_modules/vast-client/src/util/util.js","webpack:///./src/players/Facebook.js","webpack:///./src/players/Streamable.js","webpack:///./src/players/FaceMask.js","webpack:///./src/players/Wistia.js","webpack:///./src/players/Twitch.js","webpack:///./src/players/UstreamLive.js","webpack:///./src/players/UstreamVideo.js","webpack:///./src/players/Iframe.js","webpack:///./src/players/Mixcloud.js","webpack:///./src/players/VAST.js","webpack:///./node_modules/vpaid-html5-client/js/utils.js","webpack:///./node_modules/vast-client/src/parser/vast_parser.js","webpack:///./node_modules/vast-client/src/companion_ad.js","webpack:///./node_modules/vast-client/src/creative/creative_linear.js","webpack:///./node_modules/vast-client/src/non_linear_ad.js","webpack:///./node_modules/events/events.js","webpack:///./src/players/JWPlayer.js","webpack:///./src/players/PhenixPlayer.js","webpack:///./src/ReactPlayer.js","webpack:///./node_modules/load-script/index.js","webpack:///./node_modules/deepmerge/dist/umd.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/vpaid-html5-client/js/VPAIDHTML5Client.js","webpack:///./node_modules/vpaid-html5-client/js/VPAIDAdUnit.js","webpack:///./node_modules/vpaid-html5-client/js/IVPAIDAdUnit.js","webpack:///./node_modules/vpaid-html5-client/js/subscriber.js","webpack:///./node_modules/vast-client/src/index.js","webpack:///./node_modules/vast-client/src/parser/ad_parser.js","webpack:///./node_modules/vast-client/src/ad.js","webpack:///./node_modules/vast-client/src/ad_extension.js","webpack:///./node_modules/vast-client/src/ad_extension_child.js","webpack:///./node_modules/vast-client/src/parser/creative_companion_parser.js","webpack:///./node_modules/vast-client/src/creative/creative_companion.js","webpack:///./node_modules/vast-client/src/parser/creative_linear_parser.js","webpack:///./node_modules/vast-client/src/icon.js","webpack:///./node_modules/vast-client/src/media_file.js","webpack:///./node_modules/vast-client/src/parser/creative_non_linear_parser.js","webpack:///./node_modules/vast-client/src/creative/creative_non_linear.js","webpack:///./node_modules/vast-client/src/url_handler.js","webpack:///./node_modules/vast-client/src/urlhandlers/flash_url_handler.js","webpack:///./node_modules/vast-client/src/urlhandlers/mock_node_url_handler.js","webpack:///./node_modules/vast-client/src/urlhandlers/xhr_url_handler.js","webpack:///./node_modules/vast-client/src/vast_response.js","webpack:///./node_modules/vast-client/src/vast_client.js","webpack:///./node_modules/vast-client/src/util/storage.js","webpack:///./node_modules/vast-client/src/vast_tracker.js","webpack:///./src/players/index.js","webpack:///./src/Preview.js","webpack:///./src/preload.js"],"names":["parseStartTime","parseEndTime","randomString","queryString","getSDK","getConfig","omit","callPlayer","isObject","isEqual","isMediaStream","MATCH_START_QUERY","MATCH_END_QUERY","MATCH_START_STAMP","MATCH_NUMERIC","parseTimeParam","url","pattern","match","stamp","parseTimeString","test","parseInt","undefined","seconds","array","exec","count","period","Math","random","toString","substr","object","Object","keys","map","key","join","resolves","sdkGlobal","sdkReady","isLoaded","fetchScript","window","Promise","resolve","reject","push","onLoaded","forEach","sdk","previousOnReady","err","props","defaultProps","showWarning","config","p","replace","link","message","console","warn","arrays","omitKeys","concat","output","indexOf","method","player","constructor","displayName","args","val","a","b","Array","length","i","MediaStream","createSinglePlayer","SUPPORTED_PROPS","activePlayer","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","seekTo","fraction","type","ref","nextProps","file","forceVideo","forceAudio","forceHLS","forceDASH","skipCanPlay","canPlay","style","width","height","Wrapper","wrapper","otherProps","propTypes","childByName","node","name","childNodes","childKey","child","nodeName","childrenByName","children","resolveVastAdTagURI","vastAdTagUrl","originalUrl","location","protocol","baseURL","slice","lastIndexOf","parseBoolean","booleanString","parseNodeText","textContent","text","trim","copyNodeAttribute","attributeName","nodeSource","nodeDestination","attributeValue","getAttribute","setAttribute","parseDuration","durationString","isNumeric","durationComponents","split","secondsAndMS","parseFloat","minutes","hours","isNaN","splitVAST","ads","splittedVAST","lastAdPod","ad","sequence","lastAd","mergeWrapperAdData","unwrappedAd","errorURLTemplates","impressionURLTemplates","extensions","creatives","trackingEvents","creative","eventName","urls","isArray","videoClickTrackingURLTemplates","videoCustomClickURLTemplates","videoClickThroughURLTemplate","parserUtils","string","bool","number","oneOfType","shape","func","playing","loop","controls","volume","muted","playbackRate","progressInterval","playsinline","pip","light","render","isRequired","soundcloud","options","preload","youtube","playerVars","embedOptions","facebook","appId","dailymotion","params","vimeo","playerOptions","attributes","tracks","hlsOptions","hlsVersion","dashVersion","wistia","mixcloud","twitch","onAdSkippable","onReady","onStart","onPlay","onPause","onBuffer","onBufferEnd","onEnded","onError","onDuration","onSeek","onProgress","onVolumeChange","onEnablePIP","onDisablePIP","visual","buying","liking","download","sharing","show_comments","show_playcount","showinfo","rel","iv_load_policy","modestbranding","api","autopause","byline","portrait","title","hide_cover","DEPRECATED_CONFIG_PROPS","SDK_URL","SDK_GLOBAL","SDK_GLOBAL_READY","MATCH_URL","MATCH_PLAYLIST","parsePlaylist","playlistId","listType","list","YouTube","onStateChange","data","PlayerState","PLAYING","PAUSED","BUFFERING","ENDED","CUED","isPlaylist","play","mute","unmute","container","isReady","id","loadPlaylist","cueVideoById","videoId","startSeconds","start","endSeconds","end","YT","loaded","then","Player","autoplay","origin","events","event","setLoop","document","body","contains","amount","pause","rate","SEEK_ON_PLAY_EXPIRY","mounted","isPlaying","isLoading","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","progress","playedSeconds","loadedSeconds","duration","played","prevPlayed","prevLoaded","progressTimeout","setTimeout","progressFrequency","setVolume","load","onDurationCheck","setPlaybackRate","e","loopOnEnded","clearTimeout","durationCheckTimeout","stop","disablePIP","enablePIP","isFraction","SoundCloud","currentTime","fractionLoaded","iframe","SC","Widget","Events","PLAY","PLAY_PROGRESS","PAUSE","FINISH","ERROR","bind","currentPosition","loadedProgress","callback","encodeURIComponent","MATCH_FILE_URL","Vimeo","secondsLoaded","ready","querySelector","on","refreshDuration","overflow","backgroundColor","DailyMotion","onDurationChange","DM","video","apiready","seeked","video_end","durationchange","waiting","error","bufferedTime","IOS","navigator","userAgent","MSStream","AUDIO_EXTENSIONS","VIDEO_EXTENSIONS","HLS_EXTENSIONS","HLS_SDK_URL","HLS_GLOBAL","DASH_EXTENSIONS","DASH_SDK_URL","DASH_GLOBAL","MATCH_DROPBOX_URL","item","src","canEnablePIP","pictureInPictureEnabled","FilePlayer","target","renderSourceElement","source","index","renderTrack","track","addListeners","shouldUseAudio","removeListeners","prevProps","videoElementId","addEventListener","removeEventListener","poster","shouldUseHLS","hls","Hls","loadSource","attachMedia","shouldUseDASH","dash","dashjs","MediaPlayer","create","initialize","getDebug","setLogToBrowserConsole","srcObject","URL","createObjectURL","promise","removeAttribute","destroy","reset","requestPictureInPicture","pictureInPictureElement","exitPictureInPicture","seekable","Infinity","buffered","useHLS","useDASH","useAudio","Element","getSource","Creative","creativeAttributes","adId","apiFramework","URLTemplates","variables","URLs","resolveURLTemplates","Image","encodeURIComponentRFC3986","isCustomCode","leftpad","round","Date","toISOString","URLTemplateKey","resolveURL","value","macro1","macro2","str","c","charCodeAt","range","left","right","inclusive","result","ascending","n","isFinite","flatten","arr","reduce","flat","toFlatten","util","PLAYER_ID_PREFIX","Facebook","playerID","FB","XFBML","parse","init","xfbml","version","Event","subscribe","msg","instance","getElementById","visibility","Streamable","playerjs","percent","FaceMask","nfl","playaction","containerId","initialVideo","EVENTS","PLAYER_READY","STATUS","TIME_UPDATE","VOLUME","COMPLETE","status","Wistia","_wq","getID","autoPlay","silentAutoPlay","controlsVisibleOnLoad","unbind","className","MATCH_VIDEO_URL","MATCH_CHANNEL_URL","Twitch","isChannel","setChannel","setVideo","channel","READY","UstreamLive","state","ustreamSrc","m","setState","channelId","parseId","UstreamEmbed","addListener","playTime","now","getProperty","UstreamVideo","currentTimeInterval","clearInterval","setInterval","initInterval","Iframe","alignItems","background","display","justifyContent","borderStyle","borderWidth","color","Mixcloud","PlayerWidget","ended","query","feed","CONTENT_ID_PREFIX","SKIP_ID_PREFIX","VAST","canSkip","framework","preMuteVolume","sources","tracker","vastClient","vpaidAdUnit","vpaidClient","contentID","skipID","setAdVolume","onAdClick","click","complete","errorWithCode","setPaused","setProgress","Number","assetDuration","setMuted","mediaFiles","fileURL","mimeType","filter","removeVPAIDListeners","response","createSourceFiles","onVPAIDAdLoaded","skip","skipAd","startAd","unsubscribe","loadAdUnit","adUnit","addVPAIDListeners","initAd","rawUrl","ord","get","withCredentials","parseResponse","loadVPAID","openAdLink","resumeAd","pauseAd","stopAd","open","clickTrackingURLTemplate","wrapperStyle","cursor","videoStyle","dimensions","contentStyle","top","position","zIndex","skipStyle","bottom","renderVPAID","renderVAST","noop","validate","isValid","Error","timeouts","clearCallbackTimeout","timeout","callbackTimeout","timer","onSuccess","onTimeout","apply","arguments","createElementInEl","parent","tagName","nEl","createElement","appendChild","createIframeWithContent","template","createIframe","setIframeContent","simpleTemplate","marginWidth","marginHeight","frameBorder","setFullSizeStyle","innerHTML","element","margin","padding","border","JSON","stringify","RegExp","iframeEl","content","iframeDoc","contentWindow","write","extend","toExtend","fromSource","unique","prefix","module","exports","DEFAULT_MAX_WRAPPER_DEPTH","DEFAULT_EVENT_DATA","ERRORCODE","VASTParser","remainingAds","parentURLs","rootErrorURLTemplates","maxWrapperDepth","URLTemplateFilters","fetchingOptions","pop","urlTemplates","errorCode","emit","assign","wrapperDepth","urlHandler","xml","rootURL","wrapperLimit","urlhandler","all","shift","resolveAds","buildVASTResponse","resolvedAds","initParsingStatus","fetchVAST","isRootVAST","vastXml","getErrorURLTemplates","completeWrapperResolving","documentElement","nodeKey","errorURLTemplate","trackVastError","resolveAll","wrapperSequence","parseVastXml","adsCount","lastAddedAd","resolveWrappersPromises","resolveWrappersPromise","resolveWrappers","unwrappedAds","remainingAdsToResolve","nextWrapperURL","catch","errorMessage","vastResponse","ERRORMESSAGE","system","splice","CompanionAd","staticResource","htmlResource","iframeResource","altText","companionClickThroughURLTemplate","companionClickTrackingURLTemplates","CreativeLinear","skipDelay","adParameters","icons","NonLinearAd","expandedWidth","expandedHeight","scalable","maintainAspectRatio","minSuggestedDuration","nonlinearClickThroughURLTemplate","nonlinearClickTrackingURLTemplates","EventEmitter","_events","_maxListeners","prototype","defaultMaxListeners","setMaxListeners","isNumber","TypeError","er","handler","len","listeners","context","isUndefined","isFunction","call","listener","newListener","warned","trace","once","fired","g","removeListener","removeAllListeners","ret","listenerCount","evlistener","emitter","arg","JWPlayer","setup","jwplayer","PHENIX_SDK_URL","PHENIX_SDK_GLOBAL","PHENIX_URL_REGEX","getPhenixSdk","PhenixPlayer","channelExpress","playerRef","dispose","backendUri","getPhenixBackendUri","getPhenixChannelId","authenticationData","getPhenixAuthenticationData","joinChannelCallback","success","subscriberCallback","includes","phenix","express","ChannelExpress","joinChannel","videoElement","customPlayers","ReactPlayer","showPreview","onClickPreview","wrapperRef","activePlayerRef","nextState","getActivePlayer","renderedActivePlayer","renderActivePlayer","preloadPlayers","players","sort","sortPlayers","preview","addCustomPlayer","removeCustomPlayers","opts","cb","head","getElementsByTagName","script","charset","async","attrs","setAttributes","onend","stdOnEnd","ieOnEnd","onload","attr","onerror","onreadystatechange","readyState","global","factory","deepmerge","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","Symbol","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","cloneUnlessOtherwiseSpecified","clone","defaultArrayMerge","mergeObject","destination","arrayMerge","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","deepmergeAll","prev","next","deepmerge_1","isValidElement","throwOnDirectAccess","require","emptyFunction","invariant","ReactPropTypesSecret","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","symbol","any","arrayOf","instanceOf","objectOf","oneOf","exact","checkPropTypes","PropTypes","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","validateFormat","format","condition","d","f","argIndex","framesToPop","utils","VPAIDAdUnit","defaultTemplate","AD_STOPPED","VPAIDHTML5Client","el","templateConfig","vpaidOptions","_id","_destroyed","_frameContainer","_videoEl","_vpaidOptions","_templateConfig","extraOptions","$unloadPreviousAdUnit","isDestroyed","adURL","$throwIfDestroyed","that","frame","iframeURL_JS","iframeID","getOrigin","_frame","_onLoad","onLoad","createAd","getVPAIDAd","adEl","$adDestroyed","isValidVPAIDAd","_adUnit","$destroyLoadListener","unloadAdUnit","$removeEl","remove","$removeAdElements","$destroyAdUnit","hostname","port","IVPAIDAdUnit","Subscriber","checkVPAIDInterface","METHODS","AD_CLICK","FILTERED_EVENTS","VPAIDCreative","_isValid","_creative","_el","_iframe","_subscribers","$addEventsSubscribers","ignores","ariaty","callOrTriggerEvent","viewMode","desiredBitrate","creativeData","environmentVars","slot","videoSlot","off","GETTERS","getter","getAdVolume","_destroy","unsubscribeAll","$trigger","$clickThruHook","contentDocument","videoEl","playerHandles","triggerSync","trigger","subscribers","SETTERS","handshakeVersion","VPAIDVersion","resizeAd","expandAd","collapseAd","getAdLinear","getAdWidth","getAdHeight","getAdExpanded","getAdSkippableState","getAdRemainingTime","getAdDuration","getAdCompanions","getAdIcons","addStaticToInterface","VPAID1_METHODS","every","Interface","defineProperty","writable","configurable","isHandlerAttached","subscriber","some","VASTClient","VASTTracker","parseAd","adElement","adTypeElementKey","adTypeElement","parseWrapper","parseInLine","inLineElement","creativeElement","parseCreativeAdIdAttribute","creativeTypeElementKey","creativeTypeElement","parsedCreative","parseExtensions","description","advertiser","pricing","model","currency","survey","wrapperElement","wrapperURLElement","wrapperCreativeElement","collection","ext","extNodeAttrs","extNode","extNodeAttrKey","extNodeAttr","nodeValue","childNodeKey","childNode","txt","extChild","childNodeAttributes","extChildNodeAttrKey","extChildNodeAttr","Ad","AdExtension","AdExtensionChild","parseCreativeCompanion","companionAd","companionResource","htmlElement","iframeElement","staticElement","trackingEventsElement","trackingElement","trackingURLTemplate","clickTrackingElement","companionClickTrackingURLTemplate","variations","CreativeCompanion","parseCreativeLinear","offset","skipOffset","charAt","videoClicksElement","customClickElement","adParamsElement","mediaFilesElement","mediaFile","mediaFileElement","deliveryType","codec","bitrate","minBitrate","maxBitrate","toLowerCase","iconsElement","icon","program","iconElement","xPosition","parseXPosition","yPosition","parseYPosition","iconClicksElement","iconClickThroughURLTemplate","iconClickTrackingURLTemplates","iconClickTrackingElement","iconViewTrackingURLTemplate","Icon","MediaFile","parseCreativeNonLinear","nonlinearAd","nonlinearResource","CreativeNonLinear","supported","xdr","request","XDomainRequest","xmlDocument","ActiveXObject","send","onprogress","loadXML","responseText","flashURLHandler","nodeURLHandler","xhr","XMLHttpRequest","overrideMimeType","responseXML","statusText","XHRURLHandler","VASTResponse","cappingFreeLunch","cappingMinimumTimeInterval","customStorage","defaultOptions","vastParser","storage","lastSuccessfulAd","totalCalls","totalCallsTimeout","getRemainingAds","hasOwnProperty","timeSinceLastCall","getAndParseVAST","getItem","setItem","DEFAULT_STORAGE","removeItem","clear","Storage","initStorage","localStorage","sessionStorage","storageError","isStorageDisabled","testStorage","testValue","DEFAULT_SKIP_DELAY","client","variation","impressed","skippable","_alreadyTriggeredQuartiles","emitAlwaysEvents","_initLinearTracking","_initVariationTracking","linear","setDuration","clickThroughURLTemplate","clickTrackingURLTemplates","quartiles","firstQuartile","midpoint","thirdQuartile","quartile","isQuartileReached","time","quartileReached","paused","fullscreen","expanded","trackURLs","fallbackClickThroughURL","CONTENTPLAYHEAD","progressFormatted","clickThroughURL","trackingURLTemplates","isAlwaysEmitEvent","h","s","ms","ICON_SIZE","Preview","image","fetchImage","fetch","json","thumbnail_url","onClick","flexCenter","styles","backgroundImage","backgroundSize","backgroundPosition","shadow","borderRadius","playIcon","borderColor","marginLeft","renderPreloadPlayers","PRELOAD_PLAYERS","configKey"],"mappings":"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","file":"ReactPlayer.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ad2168d2f84a38c64090","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 0\n// module chunks = 0","import loadScript from 'load-script'\nimport merge from 'deepmerge'\n\nimport { DEPRECATED_CONFIG_PROPS } from './props'\n\nconst MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/\nconst MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/\nconst MATCH_START_STAMP = /(\\d+)(h|m|s)/g\nconst MATCH_NUMERIC = /^\\d+$/\n\n// Parse YouTube URL for a start time param, ie ?t=1h14m30s\n// and return the start time in seconds\nfunction parseTimeParam (url, pattern) {\n const match = url.match(pattern)\n if (match) {\n const stamp = match[1]\n if (stamp.match(MATCH_START_STAMP)) {\n return parseTimeString(stamp)\n }\n if (MATCH_NUMERIC.test(stamp)) {\n return parseInt(stamp)\n }\n }\n return undefined\n}\n\nfunction parseTimeString (stamp) {\n let seconds = 0\n let array = MATCH_START_STAMP.exec(stamp)\n while (array !== null) {\n const [, count, period] = array\n if (period === 'h') seconds += parseInt(count, 10) * 60 * 60\n if (period === 'm') seconds += parseInt(count, 10) * 60\n if (period === 's') seconds += parseInt(count, 10)\n array = MATCH_START_STAMP.exec(stamp)\n }\n return seconds\n}\n\nexport function parseStartTime (url) {\n return parseTimeParam(url, MATCH_START_QUERY)\n}\n\nexport function parseEndTime (url) {\n return parseTimeParam(url, MATCH_END_QUERY)\n}\n\n// http://stackoverflow.com/a/38622545\nexport function randomString () {\n return Math.random().toString(36).substr(2, 5)\n}\n\nexport function queryString (object) {\n return Object\n .keys(object)\n .map(key => `${key}=${object[key]}`)\n .join('&')\n}\n\n// Util function to load an external SDK\n// or return the SDK if it is already loaded\nconst resolves = {}\nexport function getSDK (url, sdkGlobal, sdkReady = null, isLoaded = () => true, fetchScript = loadScript) {\n if (window[sdkGlobal] && isLoaded(window[sdkGlobal])) {\n return Promise.resolve(window[sdkGlobal])\n }\n return new Promise((resolve, reject) => {\n // If we are already loading the SDK, add the resolve\n // function to the existing array of resolve functions\n if (resolves[url]) {\n resolves[url].push(resolve)\n return\n }\n resolves[url] = [resolve]\n const onLoaded = sdk => {\n // When loaded, resolve all pending promises\n resolves[url].forEach(resolve => resolve(sdk))\n }\n if (sdkReady) {\n const previousOnReady = window[sdkReady]\n window[sdkReady] = function () {\n if (previousOnReady) previousOnReady()\n onLoaded(window[sdkGlobal])\n }\n }\n fetchScript(url, err => {\n if (err) reject(err)\n if (!sdkReady) {\n onLoaded(window[sdkGlobal])\n }\n })\n })\n}\n\nexport function getConfig (props, defaultProps, showWarning) {\n let config = merge(defaultProps.config, props.config)\n for (let p of DEPRECATED_CONFIG_PROPS) {\n if (props[p]) {\n const key = p.replace(/Config$/, '')\n config = merge(config, { [key]: props[p] })\n if (showWarning) {\n const link = 'https://github.com/CookPete/react-player#config-prop'\n const message = `ReactPlayer: %c${p} %cis deprecated, please use the config prop instead – ${link}`\n console.warn(message, 'font-weight: bold', '')\n }\n }\n }\n return config\n}\n\nexport function omit (object, ...arrays) {\n const omitKeys = [].concat(...arrays)\n const output = {}\n const keys = Object.keys(object)\n for (let key of keys) {\n if (omitKeys.indexOf(key) === -1) {\n output[key] = object[key]\n }\n }\n return output\n}\n\nexport function callPlayer (method, ...args) {\n // Util method for calling a method on this.player\n // but guard against errors and console.warn instead\n if (!this.player || !this.player[method]) {\n let message = `ReactPlayer: ${this.constructor.displayName} player could not call %c${method}%c – `\n if (!this.player) {\n message += 'The player was not available'\n } else if (!this.player[method]) {\n message += 'The method was not available'\n }\n console.warn(message, 'font-weight: bold', '')\n return null\n }\n return this.player[method](...args)\n}\n\nexport function isObject (val) {\n return val !== null && typeof val === 'object'\n}\n\n// Deep comparison of two objects but ignoring\n// functions, for use in shouldComponentUpdate\nexport function isEqual (a, b) {\n if (typeof a === 'function' && typeof b === 'function') {\n return true\n }\n if (a instanceof Array && b instanceof Array) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i !== a.length; i++) {\n if (!isEqual(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n if (isObject(a) && isObject(b)) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n for (let key of Object.keys(a)) {\n if (!isEqual(a[key], b[key])) {\n return false\n }\n }\n return true\n }\n return a === b\n}\n\nexport function isMediaStream (url) {\n return (\n typeof window !== 'undefined' &&\n typeof window.MediaStream !== 'undefined' &&\n url instanceof window.MediaStream\n )\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","import React, { Component } from 'react'\n\nimport { propTypes, defaultProps, DEPRECATED_CONFIG_PROPS } from './props'\nimport { getConfig, omit, isEqual } from './utils'\nimport Player from './Player'\n\nconst SUPPORTED_PROPS = Object.keys(propTypes)\n\nexport default function createSinglePlayer (activePlayer) {\n return class SinglePlayer extends Component {\n static displayName = `${activePlayer.displayName}Player`\n static propTypes = propTypes\n static defaultProps = defaultProps\n static canPlay = activePlayer.canPlay\n\n config = getConfig(this.props, defaultProps, true)\n shouldComponentUpdate (nextProps) {\n return !isEqual(this.props, nextProps)\n }\n componentWillUpdate (nextProps) {\n this.config = getConfig(nextProps, defaultProps)\n }\n getDuration = () => {\n if (!this.player) return null\n return this.player.getDuration()\n }\n getCurrentTime = () => {\n if (!this.player) return null\n return this.player.getCurrentTime()\n }\n getSecondsLoaded = () => {\n if (!this.player) return null\n return this.player.getSecondsLoaded()\n }\n getInternalPlayer = (key = 'player') => {\n if (!this.player) return null\n return this.player.getInternalPlayer(key)\n }\n seekTo = (fraction, type) => {\n if (!this.player) return null\n this.player.seekTo(fraction, type)\n }\n ref = player => {\n this.player = player\n }\n render () {\n const { forceVideo, forceAudio, forceHLS, forceDASH } = this.config.file\n const skipCanPlay = forceVideo || forceAudio || forceHLS || forceDASH\n if (!activePlayer.canPlay(this.props.url) && !skipCanPlay) {\n return null\n }\n const { style, width, height, wrapper: Wrapper } = this.props\n const otherProps = omit(this.props, SUPPORTED_PROPS, DEPRECATED_CONFIG_PROPS)\n return (\n <Wrapper style={{ ...style, width, height }} {...otherProps}>\n <Player\n {...this.props}\n ref={this.ref}\n activePlayer={activePlayer}\n config={this.config}\n />\n </Wrapper>\n )\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/singlePlayer.js","import { util } from '../util/util';\n\n/**\n * This module provides support methods to the parsing classes.\n */\n\n/**\n * Returns the first element of the given node which nodeName matches the given name.\n * @param {Object} node - The node to use to find a match.\n * @param {String} name - The name to look for.\n * @return {Object}\n */\nfunction childByName(node, name) {\n const childNodes = node.childNodes;\n\n for (const childKey in childNodes) {\n const child = childNodes[childKey];\n\n if (child.nodeName === name) {\n return child;\n }\n }\n}\n\n/**\n * Returns all the elements of the given node which nodeName match the given name.\n * @param {any} node - The node to use to find the matches.\n * @param {any} name - The name to look for.\n * @return {Array}\n */\nfunction childrenByName(node, name) {\n const children = [];\n const childNodes = node.childNodes;\n\n for (const childKey in childNodes) {\n const child = childNodes[childKey];\n\n if (child.nodeName === name) {\n children.push(child);\n }\n }\n return children;\n}\n\n/**\n * Converts relative vastAdTagUri.\n * @param {String} vastAdTagUrl - The url to resolve.\n * @param {String} originalUrl - The original url.\n * @return {String}\n */\nfunction resolveVastAdTagURI(vastAdTagUrl, originalUrl) {\n if (!originalUrl) {\n return vastAdTagUrl;\n }\n\n if (vastAdTagUrl.indexOf('//') === 0) {\n const { protocol } = location;\n return `${protocol}${vastAdTagUrl}`;\n }\n\n if (vastAdTagUrl.indexOf('://') === -1) {\n // Resolve relative URLs (mainly for unit testing)\n const baseURL = originalUrl.slice(0, originalUrl.lastIndexOf('/'));\n return `${baseURL}/${vastAdTagUrl}`;\n }\n\n return vastAdTagUrl;\n}\n\n/**\n * Converts a boolean string into a Boolean.\n * @param {String} booleanString - The boolean string to convert.\n * @return {Boolean}\n */\nfunction parseBoolean(booleanString) {\n return ['true', 'TRUE', '1'].indexOf(booleanString) !== -1;\n}\n\n/**\n * Parses a node text (for legacy support).\n * @param {Object} node - The node to parse the text from.\n * @return {String}\n */\nfunction parseNodeText(node) {\n return node && (node.textContent || node.text || '').trim();\n}\n\n/**\n * Copies an attribute from a node to another.\n * @param {String} attributeName - The name of the attribute to clone.\n * @param {Object} nodeSource - The source node to copy the attribute from.\n * @param {Object} nodeDestination - The destination node to copy the attribute at.\n */\nfunction copyNodeAttribute(attributeName, nodeSource, nodeDestination) {\n const attributeValue = nodeSource.getAttribute(attributeName);\n if (attributeValue) {\n nodeDestination.setAttribute(attributeName, attributeValue);\n }\n}\n\n/**\n * Parses a String duration into a Number.\n * @param {String} durationString - The dureation represented as a string.\n * @return {Number}\n */\nfunction parseDuration(durationString) {\n if (durationString === null || typeof durationString === 'undefined') {\n return -1;\n }\n // Some VAST doesn't have an HH:MM:SS duration format but instead jus the number of seconds\n if (util.isNumeric(durationString)) {\n return parseInt(durationString);\n }\n\n const durationComponents = durationString.split(':');\n if (durationComponents.length !== 3) {\n return -1;\n }\n\n const secondsAndMS = durationComponents[2].split('.');\n let seconds = parseInt(secondsAndMS[0]);\n if (secondsAndMS.length === 2) {\n seconds += parseFloat(`0.${secondsAndMS[1]}`);\n }\n\n const minutes = parseInt(durationComponents[1] * 60);\n const hours = parseInt(durationComponents[0] * 60 * 60);\n\n if (\n isNaN(hours) ||\n isNaN(minutes) ||\n isNaN(seconds) ||\n minutes > 60 * 60 ||\n seconds > 60\n ) {\n return -1;\n }\n return hours + minutes + seconds;\n}\n\n/**\n * Splits an Array of ads into an Array of Arrays of ads.\n * Each subarray contains either one ad or multiple ads (an AdPod)\n * @param {Array} ads - An Array of ads to split\n * @return {Array}\n */\nfunction splitVAST(ads) {\n const splittedVAST = [];\n let lastAdPod = null;\n\n ads.forEach((ad, i) => {\n if (ad.sequence) {\n ad.sequence = parseInt(ad.sequence, 10);\n }\n // The current Ad may be the next Ad of an AdPod\n if (ad.sequence > 1) {\n const lastAd = ads[i - 1];\n // check if the current Ad is exactly the next one in the AdPod\n if (lastAd && lastAd.sequence === ad.sequence - 1) {\n lastAdPod && lastAdPod.push(ad);\n return;\n }\n // If the ad had a sequence attribute but it was not part of a correctly formed\n // AdPod, let's remove the sequence attribute\n delete ad.sequence;\n }\n\n lastAdPod = [ad];\n splittedVAST.push(lastAdPod);\n });\n\n return splittedVAST;\n}\n\n/**\n * Merges the data between an unwrapped ad and his wrapper.\n * @param {Ad} unwrappedAd - The 'unwrapped' Ad.\n * @param {Ad} wrapper - The wrapper Ad.\n * @return {void}\n */\nfunction mergeWrapperAdData(unwrappedAd, wrapper) {\n unwrappedAd.errorURLTemplates = wrapper.errorURLTemplates.concat(\n unwrappedAd.errorURLTemplates\n );\n unwrappedAd.impressionURLTemplates = wrapper.impressionURLTemplates.concat(\n unwrappedAd.impressionURLTemplates\n );\n unwrappedAd.extensions = wrapper.extensions.concat(unwrappedAd.extensions);\n\n unwrappedAd.creatives.forEach(creative => {\n if (wrapper.trackingEvents && wrapper.trackingEvents[creative.type]) {\n for (const eventName in wrapper.trackingEvents[creative.type]) {\n const urls = wrapper.trackingEvents[creative.type][eventName];\n if (!Array.isArray(creative.trackingEvents[eventName])) {\n creative.trackingEvents[eventName] = [];\n }\n creative.trackingEvents[eventName] = creative.trackingEvents[\n eventName\n ].concat(urls);\n }\n }\n });\n\n if (\n wrapper.videoClickTrackingURLTemplates &&\n wrapper.videoClickTrackingURLTemplates.length\n ) {\n unwrappedAd.creatives.forEach(creative => {\n if (creative.type === 'linear') {\n creative.videoClickTrackingURLTemplates = creative.videoClickTrackingURLTemplates.concat(\n wrapper.videoClickTrackingURLTemplates\n );\n }\n });\n }\n\n if (\n wrapper.videoCustomClickURLTemplates &&\n wrapper.videoCustomClickURLTemplates.length\n ) {\n unwrappedAd.creatives.forEach(creative => {\n if (creative.type === 'linear') {\n creative.videoCustomClickURLTemplates = creative.videoCustomClickURLTemplates.concat(\n wrapper.videoCustomClickURLTemplates\n );\n }\n });\n }\n\n // VAST 2.0 support - Use Wrapper/linear/clickThrough when Inline/Linear/clickThrough is null\n if (wrapper.videoClickThroughURLTemplate) {\n unwrappedAd.creatives.forEach(creative => {\n if (\n creative.type === 'linear' &&\n (creative.videoClickThroughURLTemplate === null ||\n typeof creative.videoClickThroughURLTemplate === 'undefined')\n ) {\n creative.videoClickThroughURLTemplate =\n wrapper.videoClickThroughURLTemplate;\n }\n });\n }\n}\n\nexport const parserUtils = {\n childByName,\n childrenByName,\n resolveVastAdTagURI,\n parseBoolean,\n parseNodeText,\n copyNodeAttribute,\n parseDuration,\n splitVAST,\n mergeWrapperAdData\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/parser/parser_utils.js","import PropTypes from 'prop-types'\n\nconst { string, bool, number, array, oneOfType, shape, object, func } = PropTypes\n\nexport const propTypes = {\n url: oneOfType([ string, array, object ]),\n playing: bool,\n loop: bool,\n controls: bool,\n volume: number,\n muted: bool,\n playbackRate: number,\n width: oneOfType([ string, number ]),\n height: oneOfType([ string, number ]),\n style: object,\n progressInterval: number,\n playsinline: bool,\n pip: bool,\n light: oneOfType([ bool, string ]),\n wrapper: oneOfType([\n string,\n func,\n shape({ render: func.isRequired })\n ]),\n config: shape({\n soundcloud: shape({\n options: object,\n preload: bool\n }),\n youtube: shape({\n playerVars: object,\n embedOptions: object,\n preload: bool\n }),\n facebook: shape({\n appId: string\n }),\n dailymotion: shape({\n params: object,\n preload: bool\n }),\n vimeo: shape({\n playerOptions: object,\n preload: bool\n }),\n file: shape({\n attributes: object,\n tracks: array,\n forceVideo: bool,\n forceAudio: bool,\n forceHLS: bool,\n forceDASH: bool,\n hlsOptions: object,\n hlsVersion: string,\n dashVersion: string\n }),\n wistia: shape({\n options: object\n }),\n mixcloud: shape({\n options: object\n }),\n twitch: shape({\n options: object\n })\n }),\n onAdSkippable: func,\n onReady: func,\n onStart: func,\n onPlay: func,\n onPause: func,\n onBuffer: func,\n onBufferEnd: func,\n onEnded: func,\n onError: func,\n onDuration: func,\n onSeek: func,\n onProgress: func,\n onVolumeChange: func,\n onEnablePIP: func,\n onDisablePIP: func\n}\n\nexport const defaultProps = {\n playing: false,\n loop: false,\n controls: false,\n volume: null,\n muted: false,\n playbackRate: 1,\n width: '640px',\n height: '360px',\n style: {},\n progressInterval: 1000,\n playsinline: false,\n pip: false,\n light: false,\n wrapper: 'div',\n config: {\n soundcloud: {\n options: {\n visual: true, // Undocumented, but makes player fill container and look better\n buying: false,\n liking: false,\n download: false,\n sharing: false,\n show_comments: false,\n show_playcount: false\n }\n },\n youtube: {\n playerVars: {\n playsinline: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1\n },\n embedOptions: {},\n preload: false\n },\n facebook: {\n appId: '1309697205772819'\n },\n dailymotion: {\n params: {\n api: 1,\n 'endscreen-enable': false\n },\n preload: false\n },\n vimeo: {\n playerOptions: {\n autopause: false,\n byline: false,\n portrait: false,\n title: false\n },\n preload: false\n },\n file: {\n attributes: {},\n tracks: [],\n forceVideo: false,\n forceAudio: false,\n forceHLS: false,\n forceDASH: false,\n hlsOptions: {},\n hlsVersion: '0.10.1',\n dashVersion: '2.9.2'\n },\n wistia: {\n options: {}\n },\n mixcloud: {\n options: {\n hide_cover: 1\n }\n },\n twitch: {\n options: {}\n }\n },\n onAdSkippable: function () {},\n onReady: function () {},\n onStart: function () {},\n onPlay: function () {},\n onPause: function () {},\n onBuffer: function () {},\n onBufferEnd: function () {},\n onEnded: function () {},\n onError: function () {},\n onDuration: function () {},\n onSeek: function () {},\n onVolumeChange: function () {},\n onProgress: function () {},\n onEnablePIP: function () {},\n onDisablePIP: function () {}\n}\n\nexport const DEPRECATED_CONFIG_PROPS = [\n 'soundcloudConfig',\n 'youtubeConfig',\n 'facebookConfig',\n 'dailymotionConfig',\n 'vimeoConfig',\n 'fileConfig',\n 'wistiaConfig'\n]\n\n\n\n// WEBPACK FOOTER //\n// ./src/props.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, parseStartTime, parseEndTime } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://www.youtube.com/iframe_api'\nconst SDK_GLOBAL = 'YT'\nconst SDK_GLOBAL_READY = 'onYouTubeIframeAPIReady'\nconst MATCH_URL = /(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})|youtube\\.com\\/playlist\\?list=/\nconst MATCH_PLAYLIST = /list=([a-zA-Z0-9_-]+)/\n\nfunction parsePlaylist (url) {\n if (MATCH_PLAYLIST.test(url)) {\n const [, playlistId] = url.match(MATCH_PLAYLIST)\n return {\n listType: 'playlist',\n list: playlistId\n }\n }\n return {}\n}\n\nexport class YouTube extends Component {\n static displayName = 'YouTube'\n static canPlay = url => MATCH_URL.test(url)\n\n callPlayer = callPlayer\n load (url, isReady) {\n const { playing, muted, playsinline, controls, loop, config, onError } = this.props\n const { playerVars, embedOptions } = config.youtube\n const id = url && url.match(MATCH_URL)[1]\n if (isReady) {\n if (MATCH_PLAYLIST.test(url)) {\n this.player.loadPlaylist(parsePlaylist(url))\n return\n }\n this.player.cueVideoById({\n videoId: id,\n startSeconds: parseStartTime(url) || playerVars.start,\n endSeconds: parseEndTime(url) || playerVars.end\n })\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, YT => YT.loaded).then(YT => {\n if (!this.container) return\n this.player = new YT.Player(this.container, {\n width: '100%',\n height: '100%',\n videoId: id,\n playerVars: {\n autoplay: playing ? 1 : 0,\n mute: muted ? 1 : 0,\n controls: controls ? 1 : 0,\n start: parseStartTime(url),\n end: parseEndTime(url),\n origin: window.location.origin,\n playsinline: playsinline,\n ...parsePlaylist(url),\n ...playerVars\n },\n events: {\n onReady: this.props.onReady,\n onStateChange: this.onStateChange,\n onError: event => onError(event.data)\n },\n ...embedOptions\n })\n if (loop) {\n this.player.setLoop(true) // Enable playlist looping\n }\n }, onError)\n }\n onStateChange = ({ data }) => {\n const { onPlay, onPause, onBuffer, onBufferEnd, onEnded, onReady, loop } = this.props\n const { PLAYING, PAUSED, BUFFERING, ENDED, CUED } = window[SDK_GLOBAL].PlayerState\n if (data === PLAYING) {\n onPlay()\n onBufferEnd()\n }\n if (data === PAUSED) onPause()\n if (data === BUFFERING) onBuffer()\n if (data === ENDED) {\n const isPlaylist = !!this.callPlayer('getPlaylist')\n if (loop && !isPlaylist) {\n this.play() // Only loop manually if not playing a playlist\n }\n onEnded()\n }\n if (data === CUED) onReady()\n }\n play () {\n this.callPlayer('playVideo')\n }\n pause () {\n this.callPlayer('pauseVideo')\n }\n stop () {\n if (!document.body.contains(this.callPlayer('getIframe'))) return\n this.callPlayer('stopVideo')\n }\n seekTo (amount) {\n this.callPlayer('seekTo', amount)\n if (!this.props.playing) {\n this.pause()\n }\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unMute')\n }\n setPlaybackRate (rate) {\n this.callPlayer('setPlaybackRate', rate)\n }\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentTime')\n }\n getSecondsLoaded () {\n return this.callPlayer('getVideoLoadedFraction') * this.getDuration()\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n ...this.props.style\n }\n return (\n <div style={style}>\n <div ref={this.ref} />\n </div>\n )\n }\n}\n\nexport default createSinglePlayer(YouTube)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/YouTube.js","import React, { Component } from 'react'\n\nimport { propTypes, defaultProps } from './props'\nimport { isEqual } from './utils'\n\nconst SEEK_ON_PLAY_EXPIRY = 5000\n\nexport default class Player extends Component {\n static displayName = 'Player'\n static propTypes = propTypes\n static defaultProps = defaultProps\n mounted = false\n isReady = false\n isPlaying = false // Track playing state internally to prevent bugs\n isLoading = true // Use isLoading to prevent onPause when switching URL\n loadOnReady = null\n startOnPlay = true\n seekOnPlay = null\n onDurationCalled = false\n componentDidMount () {\n this.mounted = true\n this.player.load(this.props.url)\n this.progress()\n }\n componentWillUnmount () {\n clearTimeout(this.progressTimeout)\n clearTimeout(this.durationCheckTimeout)\n if (this.isReady) {\n this.player.stop()\n }\n if (this.player.disablePIP) {\n this.player.disablePIP()\n }\n this.mounted = false\n }\n componentWillReceiveProps (nextProps) {\n // Invoke player methods based on incoming props\n const { url, playing, volume, muted, playbackRate, pip, loop } = this.props\n if (!isEqual(url, nextProps.url)) {\n if (this.isLoading) {\n console.warn(`ReactPlayer: the attempt to load ${nextProps.url} is being deferred until the player has loaded`)\n this.loadOnReady = nextProps.url\n return\n }\n this.isLoading = true\n this.startOnPlay = true\n this.onDurationCalled = false\n this.player.load(nextProps.url, this.isReady)\n }\n if (!playing && nextProps.playing && !this.isPlaying) {\n this.player.play()\n }\n if (playing && !nextProps.playing && this.isPlaying) {\n this.player.pause()\n }\n if (!pip && nextProps.pip && this.player.enablePIP) {\n this.player.enablePIP()\n } else if (pip && !nextProps.pip && this.player.disablePIP) {\n this.player.disablePIP()\n }\n if (volume !== nextProps.volume && nextProps.volume !== null) {\n this.player.setVolume(nextProps.volume)\n }\n if (muted !== nextProps.muted) {\n if (nextProps.muted) {\n this.player.mute()\n } else {\n this.player.unmute()\n if (nextProps.volume !== null) {\n // Set volume next tick to fix a bug with DailyMotion\n setTimeout(() => this.player.setVolume(nextProps.volume))\n }\n }\n }\n if (playbackRate !== nextProps.playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(nextProps.playbackRate)\n }\n if (loop !== nextProps.loop && this.player.setLoop) {\n this.player.setLoop(nextProps.loop)\n }\n }\n getDuration () {\n if (!this.isReady) return null\n return this.player.getDuration()\n }\n getCurrentTime () {\n if (!this.isReady) return null\n return this.player.getCurrentTime()\n }\n getSecondsLoaded () {\n if (!this.isReady) return null\n return this.player.getSecondsLoaded()\n }\n getInternalPlayer = (key) => {\n if (!this.player) return null\n return this.player[key]\n }\n progress = () => {\n if (this.props.url && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0\n const loadedSeconds = this.getSecondsLoaded()\n const duration = this.getDuration()\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration\n }\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds\n progress.loaded = loadedSeconds / duration\n }\n // Only call onProgress if values have changed\n if (progress.played !== this.prevPlayed || progress.loaded !== this.prevLoaded) {\n this.props.onProgress(progress)\n }\n this.prevPlayed = progress.played\n this.prevLoaded = progress.loaded\n }\n }\n this.progressTimeout = setTimeout(this.progress, this.props.progressFrequency || this.props.progressInterval)\n }\n seekTo (amount, type) {\n // When seeking before player is ready, store value and seek later\n if (!this.isReady && amount !== 0) {\n this.seekOnPlay = amount\n setTimeout(() => { this.seekOnPlay = null }, SEEK_ON_PLAY_EXPIRY)\n return\n }\n const isFraction = !type ? (amount > 0 && amount < 1) : type === 'fraction'\n if (isFraction) {\n // Convert fraction to seconds based on duration\n const duration = this.player.getDuration()\n if (!duration) {\n console.warn('ReactPlayer: could not seek using fraction – duration not yet available')\n return\n }\n this.player.seekTo(duration * amount)\n return\n }\n this.player.seekTo(amount)\n }\n onReady = () => {\n if (!this.mounted) return\n this.isReady = true\n this.isLoading = false\n const { onReady, playing, volume, muted } = this.props\n onReady()\n if (!muted && volume !== null) {\n this.player.setVolume(volume)\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true)\n this.loadOnReady = null\n } else if (playing) {\n this.player.play()\n }\n this.onDurationCheck()\n }\n onPlay = () => {\n this.isPlaying = true\n this.isLoading = false\n const { onStart, onPlay, playbackRate } = this.props\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate)\n }\n onStart()\n this.startOnPlay = false\n }\n onPlay()\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay)\n this.seekOnPlay = null\n }\n this.onDurationCheck()\n }\n onPause = (e) => {\n this.isPlaying = false\n if (!this.isLoading) {\n this.props.onPause(e)\n }\n }\n onEnded = () => {\n const { activePlayer, loop, onEnded } = this.props\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0)\n }\n if (!loop) {\n this.isPlaying = false\n onEnded()\n }\n }\n onError = (e) => {\n this.isLoading = false\n this.props.onError(e)\n }\n onDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout)\n const duration = this.getDuration()\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration(duration)\n this.onDurationCalled = true\n }\n } else {\n this.durationCheckTimeout = setTimeout(this.onDurationCheck, 100)\n }\n }\n onLoaded = () => {\n // Sometimes we know loading has stopped but onReady/onPlay are never called\n // so this provides a way for players to avoid getting stuck\n this.isLoading = false\n }\n ref = player => {\n if (player) {\n this.player = player\n }\n }\n render () {\n const Player = this.props.activePlayer\n if (!Player) {\n return null\n }\n return (\n <Player\n {...this.props}\n ref={this.ref}\n onReady={this.onReady}\n onPlay={this.onPlay}\n onPause={this.onPause}\n onEnded={this.onEnded}\n onLoaded={this.onLoaded}\n onError={this.onError}\n />\n )\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Player.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://w.soundcloud.com/player/api.js'\nconst SDK_GLOBAL = 'SC'\nconst MATCH_URL = /(soundcloud\\.com|snd\\.sc)\\/.+$/\n\nexport class SoundCloud extends Component {\n static displayName = 'SoundCloud'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n fractionLoaded = null\n load (url, isReady) {\n getSDK(SDK_URL, SDK_GLOBAL).then(SC => {\n if (!this.iframe) return\n const { PLAY, PLAY_PROGRESS, PAUSE, FINISH, ERROR } = SC.Widget.Events\n if (!isReady) {\n this.player = SC.Widget(this.iframe)\n this.player.bind(PLAY, this.props.onPlay)\n this.player.bind(PAUSE, this.props.onPause)\n this.player.bind(PLAY_PROGRESS, e => {\n this.currentTime = e.currentPosition / 1000\n this.fractionLoaded = e.loadedProgress\n })\n this.player.bind(FINISH, () => this.props.onEnded())\n this.player.bind(ERROR, e => this.props.onError(e))\n }\n this.player.load(url, {\n ...this.props.config.soundcloud.options,\n callback: () => {\n this.player.getDuration(duration => {\n this.duration = duration / 1000\n this.props.onReady()\n })\n }\n })\n })\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seekTo', seconds * 1000)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n mute = () => {\n this.setVolume(0)\n }\n unmute = () => {\n if (this.props.volume !== null) {\n this.setVolume(this.props.volume)\n }\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.fractionLoaded * this.duration\n }\n ref = iframe => {\n this.iframe = iframe\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n ...this.props.style\n }\n return (\n <iframe\n ref={this.ref}\n src={`https://w.soundcloud.com/player/?url=${encodeURIComponent(this.props.url)}`}\n style={style}\n frameBorder={0}\n allow='autoplay'\n />\n )\n }\n}\n\nexport default createSinglePlayer(SoundCloud)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/SoundCloud.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://player.vimeo.com/api/player.js'\nconst SDK_GLOBAL = 'Vimeo'\nconst MATCH_URL = /vimeo\\.com\\/.+/\nconst MATCH_FILE_URL = /vimeo\\.com\\/external\\/.+\\.mp4/\n\nexport class Vimeo extends Component {\n static displayName = 'Vimeo'\n static canPlay = url => {\n if (MATCH_FILE_URL.test(url)) {\n return false\n }\n return MATCH_URL.test(url)\n }\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n load (url) {\n this.duration = null\n getSDK(SDK_URL, SDK_GLOBAL).then(Vimeo => {\n if (!this.container) return\n this.player = new Vimeo.Player(this.container, {\n ...this.props.config.vimeo.playerOptions,\n url,\n autoplay: this.props.playing,\n muted: this.props.muted,\n loop: this.props.loop,\n playsinline: this.props.playsinline\n })\n this.player.ready().then(() => {\n const iframe = this.container.querySelector('iframe')\n iframe.style.width = '100%'\n iframe.style.height = '100%'\n }).catch(this.props.onError)\n this.player.on('loaded', () => {\n this.props.onReady()\n this.refreshDuration()\n })\n this.player.on('play', () => {\n this.props.onPlay()\n this.refreshDuration()\n })\n this.player.on('pause', this.props.onPause)\n this.player.on('seeked', e => this.props.onSeek(e.seconds))\n this.player.on('ended', this.props.onEnded)\n this.player.on('error', this.props.onError)\n this.player.on('timeupdate', ({ seconds }) => {\n this.currentTime = seconds\n })\n this.player.on('progress', ({ seconds }) => {\n this.secondsLoaded = seconds\n })\n }, this.props.onError)\n }\n refreshDuration () {\n this.player.getDuration().then(duration => {\n this.duration = duration\n })\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('unload')\n }\n seekTo (seconds) {\n this.callPlayer('setCurrentTime', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n mute = () => {\n this.setVolume(0)\n }\n unmute = () => {\n if (this.props.volume !== null) {\n this.setVolume(this.props.volume)\n }\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n backgroundColor: 'black',\n ...this.props.style\n }\n return (\n <div\n key={this.props.url}\n ref={this.ref}\n style={style}\n />\n )\n }\n}\n\nexport default createSinglePlayer(Vimeo)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Vimeo.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, parseStartTime } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://api.dmcdn.net/all.js'\nconst SDK_GLOBAL = 'DM'\nconst SDK_GLOBAL_READY = 'dmAsyncInit'\nconst MATCH_URL = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?$/\n\nexport class DailyMotion extends Component {\n static displayName = 'DailyMotion'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n load (url) {\n const { controls, config, onError, playing } = this.props\n const [, id] = url.match(MATCH_URL)\n if (this.player) {\n this.player.load(id, {\n start: parseStartTime(url),\n autoplay: playing\n })\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, DM => DM.player).then(DM => {\n if (!this.container) return\n const Player = DM.player\n this.player = new Player(this.container, {\n width: '100%',\n height: '100%',\n video: id,\n params: {\n controls: controls,\n autoplay: this.props.playing,\n mute: this.props.muted,\n start: parseStartTime(url),\n origin: window.location.origin,\n ...config.dailymotion.params\n },\n events: {\n apiready: this.props.onReady,\n seeked: () => this.props.onSeek(this.player.currentTime),\n video_end: this.props.onEnded,\n durationchange: this.onDurationChange,\n pause: this.props.onPause,\n playing: this.props.onPlay,\n waiting: this.props.onBuffer,\n error: event => onError(event)\n }\n })\n }, onError)\n }\n onDurationChange = () => {\n const duration = this.getDuration()\n this.props.onDuration(duration)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n mute = () => {\n this.callPlayer('setMuted', true)\n }\n unmute = () => {\n this.callPlayer('setMuted', false)\n }\n getDuration () {\n return this.player.duration || null\n }\n getCurrentTime () {\n return this.player.currentTime\n }\n getSecondsLoaded () {\n return this.player.bufferedTime\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n backgroundColor: 'black',\n ...this.props.style\n }\n return (\n <div style={style}>\n <div ref={this.ref} />\n </div>\n )\n }\n}\n\nexport default createSinglePlayer(DailyMotion)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/DailyMotion.js","import React, { Component } from 'react'\n\nimport { getSDK, isMediaStream } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst IOS = typeof navigator !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream\nconst AUDIO_EXTENSIONS = /\\.(m4a|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i\nconst VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)($|\\?)/i\nconst HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i\nconst HLS_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/VERSION/hls.min.js'\nconst HLS_GLOBAL = 'Hls'\nconst DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i\nconst DASH_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js'\nconst DASH_GLOBAL = 'dashjs'\nconst MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/\n\nfunction canPlay (url) {\n if (url instanceof Array) {\n for (let item of url) {\n if (typeof item === 'string' && canPlay(item)) {\n return true\n }\n if (canPlay(item.src)) {\n return true\n }\n }\n return false\n }\n if (isMediaStream(url)) {\n return true\n }\n return (\n AUDIO_EXTENSIONS.test(url) ||\n VIDEO_EXTENSIONS.test(url) ||\n HLS_EXTENSIONS.test(url) ||\n DASH_EXTENSIONS.test(url)\n )\n}\n\nfunction canEnablePIP (url) {\n return canPlay(url) && !!document.pictureInPictureEnabled && !AUDIO_EXTENSIONS.test(url)\n}\n\nexport class FilePlayer extends Component {\n static displayName = 'FilePlayer'\n static canPlay = canPlay\n static canEnablePIP = canEnablePIP\n\n componentDidMount () {\n this.addListeners()\n if (IOS) {\n this.player.load()\n }\n }\n componentWillReceiveProps (nextProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(nextProps)) {\n this.removeListeners()\n }\n }\n componentDidUpdate (prevProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n this.addListeners()\n }\n }\n componentWillUnmount () {\n this.removeListeners()\n }\n addListeners () {\n const {\n onReady, onPlay, onBuffer, onBufferEnd,\n onPause, onEnded, onError, playsinline, onEnablePIP,\n onVolumeChange, videoElementId\n } = this.props\n this.player.addEventListener('canplay', onReady)\n this.player.addEventListener('play', onPlay)\n this.player.addEventListener('waiting', onBuffer)\n this.player.addEventListener('playing', onBufferEnd)\n this.player.addEventListener('pause', onPause)\n this.player.addEventListener('seeked', this.onSeek)\n this.player.addEventListener('ended', onEnded)\n this.player.addEventListener('error', onError)\n this.player.addEventListener('volumeChange', onVolumeChange)\n this.player.setAttribute('id', videoElementId)\n this.player.addEventListener('enterpictureinpicture', onEnablePIP)\n this.player.addEventListener('leavepictureinpicture', this.onDisablePIP)\n if (playsinline) {\n this.player.setAttribute('playsinline', '')\n this.player.setAttribute('webkit-playsinline', '')\n this.player.setAttribute('x5-playsinline', '')\n }\n }\n removeListeners () {\n const {\n onReady, onPlay, onBuffer, onBufferEnd,\n onPause, onEnded, onError, onEnablePIP,\n onVolumeChange\n } = this.props\n this.player.removeEventListener('canplay', onReady)\n this.player.removeEventListener('play', onPlay)\n this.player.removeEventListener('waiting', onBuffer)\n this.player.removeEventListener('playing', onBufferEnd)\n this.player.removeEventListener('pause', onPause)\n this.player.removeEventListener('seeked', this.onSeek)\n this.player.removeEventListener('ended', onEnded)\n this.player.removeEventListener('error', onError)\n this.player.removeEventListener('volumeChange', onVolumeChange)\n this.player.removeEventListener('enterpictureinpicture', onEnablePIP)\n this.player.removeEventListener('leavepictureinpicture', this.onDisablePIP)\n }\n onDisablePIP = e => {\n const { onDisablePIP, playing } = this.props\n onDisablePIP(e)\n if (playing) {\n this.play()\n }\n }\n onSeek = e => {\n this.props.onSeek(e.target.currentTime)\n }\n shouldUseAudio (props) {\n if (props.config.file.forceVideo) {\n return false\n }\n if (props.config.file.attributes.poster) {\n return false // Use <video> so that poster is shown\n }\n return AUDIO_EXTENSIONS.test(props.url) || props.config.file.forceAudio\n }\n shouldUseHLS (url) {\n return (HLS_EXTENSIONS.test(url) && !IOS) || this.props.config.file.forceHLS\n }\n shouldUseDASH (url) {\n return DASH_EXTENSIONS.test(url) || this.props.config.file.forceDASH\n }\n load (url) {\n const { hlsVersion, dashVersion } = this.props.config.file\n if (this.shouldUseHLS(url)) {\n getSDK(HLS_SDK_URL.replace('VERSION', hlsVersion), HLS_GLOBAL).then(Hls => {\n this.hls = new Hls(this.props.config.file.hlsOptions)\n this.hls.on(Hls.Events.ERROR, (e, data) => {\n this.props.onError(e, data, this.hls, Hls)\n })\n this.hls.loadSource(url)\n this.hls.attachMedia(this.player)\n })\n }\n if (this.shouldUseDASH(url)) {\n getSDK(DASH_SDK_URL.replace('VERSION', dashVersion), DASH_GLOBAL).then(dashjs => {\n this.dash = dashjs.MediaPlayer().create()\n this.dash.initialize(this.player, url, this.props.playing)\n this.dash.getDebug().setLogToBrowserConsole(false)\n })\n }\n\n if (url instanceof Array) {\n // When setting new urls (<source>) on an already loaded video,\n // HTMLMediaElement.load() is needed to reset the media element\n // and restart the media resource. Just replacing children source\n // dom nodes is not enough\n this.player.load()\n } else if (isMediaStream(url)) {\n try {\n this.player.srcObject = url\n } catch (e) {\n this.player.src = window.URL.createObjectURL(url)\n }\n }\n }\n play () {\n const promise = this.player.play()\n if (promise) {\n promise.catch(this.props.onError)\n }\n }\n pause () {\n this.player.pause()\n }\n stop () {\n this.player.removeAttribute('src')\n if (this.hls) {\n this.hls.destroy()\n }\n if (this.dash) {\n this.dash.reset()\n }\n }\n seekTo (seconds) {\n this.player.currentTime = seconds\n }\n setVolume (fraction) {\n this.player.volume = fraction\n }\n mute = () => {\n this.player.muted = true\n }\n unmute = () => {\n this.player.muted = false\n }\n enablePIP () {\n if (this.player.requestPictureInPicture && document.pictureInPictureElement !== this.player) {\n this.player.requestPictureInPicture()\n }\n }\n disablePIP () {\n if (document.exitPictureInPicture && document.pictureInPictureElement === this.player) {\n document.exitPictureInPicture()\n }\n }\n setPlaybackRate (rate) {\n this.player.playbackRate = rate\n }\n getDuration () {\n if (!this.player) return null\n const { duration, seekable } = this.player\n // on iOS, live streams return Infinity for the duration\n // so instead we use the end of the seekable timerange\n if (duration === Infinity && seekable.length > 0) {\n return seekable.end(seekable.length - 1)\n }\n return duration\n }\n getCurrentTime () {\n if (!this.player) return null\n return this.player.currentTime\n }\n getSecondsLoaded () {\n if (!this.player) return null\n const { buffered } = this.player\n if (buffered.length === 0) {\n return 0\n }\n const end = buffered.end(buffered.length - 1)\n const duration = this.getDuration()\n if (end > duration) {\n return duration\n }\n return end\n }\n getSource (url) {\n const useHLS = this.shouldUseHLS(url)\n const useDASH = this.shouldUseDASH(url)\n if (url instanceof Array || isMediaStream(url) || useHLS || useDASH) {\n return undefined\n }\n if (MATCH_DROPBOX_URL.test(url)) {\n return url.replace('www.dropbox.com', 'dl.dropboxusercontent.com')\n }\n return url\n }\n renderSourceElement = (source, index) => {\n if (typeof source === 'string') {\n return <source key={index} src={source} />\n }\n return <source key={index} {...source} />\n }\n renderTrack = (track, index) => {\n return <track key={index} {...track} />\n }\n ref = player => {\n this.player = player\n }\n render () {\n const { url, playing, loop, controls, muted, config, width, height } = this.props\n const useAudio = this.shouldUseAudio(this.props)\n const Element = useAudio ? 'audio' : 'video'\n const style = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n }\n return (\n <Element\n ref={this.ref}\n src={this.getSource(url)}\n style={style}\n preload='auto'\n autoPlay={playing || undefined}\n controls={controls}\n muted={muted}\n loop={loop}\n {...config.file.attributes}>\n {url instanceof Array &&\n url.map(this.renderSourceElement)\n }\n {config.file.tracks.map(this.renderTrack)}\n </Element>\n )\n }\n}\n\nexport default createSinglePlayer(FilePlayer)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/FilePlayer.js","export class Creative {\n constructor(creativeAttributes = {}) {\n this.id = creativeAttributes.id || null;\n this.adId = creativeAttributes.adId || null;\n this.sequence = creativeAttributes.sequence || null;\n this.apiFramework = creativeAttributes.apiFramework || null;\n this.trackingEvents = {};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/creative/creative.js","function track(URLTemplates, variables, options) {\n const URLs = resolveURLTemplates(URLTemplates, variables, options);\n\n URLs.forEach(URL => {\n if (typeof window !== 'undefined' && window !== null) {\n const i = new Image();\n i.src = URL;\n }\n });\n}\n\n/**\n * Replace the provided URLTemplates with the given values\n *\n * @param {Array} URLTemplates - An array of tracking url templates.\n * @param {Object} [variables={}] - An optional Object of parameters to be used in the tracking calls.\n * @param {Object} [options={}] - An optional Object of options to be used in the tracking calls.\n */\nfunction resolveURLTemplates(URLTemplates, variables = {}, options = {}) {\n const URLs = [];\n\n // Encode String variables, when given\n if (variables['ASSETURI']) {\n variables['ASSETURI'] = encodeURIComponentRFC3986(variables['ASSETURI']);\n }\n if (variables['CONTENTPLAYHEAD']) {\n variables['CONTENTPLAYHEAD'] = encodeURIComponentRFC3986(\n variables['CONTENTPLAYHEAD']\n );\n }\n\n // Set default value for invalid ERRORCODE\n if (\n variables['ERRORCODE'] &&\n !options.isCustomCode &&\n !/^[0-9]{3}$/.test(variables['ERRORCODE'])\n ) {\n variables['ERRORCODE'] = 900;\n }\n\n // Calc random/time based macros\n variables['CACHEBUSTING'] = leftpad(\n Math.round(Math.random() * 1.0e8).toString()\n );\n variables['TIMESTAMP'] = encodeURIComponentRFC3986(new Date().toISOString());\n\n // RANDOM/random is not defined in VAST 3/4 as a valid macro tho it's used by some adServer (Auditude)\n variables['RANDOM'] = variables['random'] = variables['CACHEBUSTING'];\n\n for (const URLTemplateKey in URLTemplates) {\n let resolveURL = URLTemplates[URLTemplateKey];\n\n if (typeof resolveURL !== 'string') {\n continue;\n }\n\n for (const key in variables) {\n const value = variables[key];\n const macro1 = `[${key}]`;\n const macro2 = `%%${key}%%`;\n resolveURL = resolveURL.replace(macro1, value);\n resolveURL = resolveURL.replace(macro2, value);\n }\n URLs.push(resolveURL);\n }\n\n return URLs;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction encodeURIComponentRFC3986(str) {\n return encodeURIComponent(str).replace(\n /[!'()*]/g,\n c => `%${c.charCodeAt(0).toString(16)}`\n );\n}\n\nfunction leftpad(str) {\n if (str.length < 8) {\n return (\n range(0, 8 - str.length, false)\n .map(() => '0')\n .join('') + str\n );\n }\n return str;\n}\n\nfunction range(left, right, inclusive) {\n const result = [];\n const ascending = left < right;\n const end = !inclusive ? right : ascending ? right + 1 : right - 1;\n\n for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n result.push(i);\n }\n return result;\n}\n\nfunction isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction flatten(arr) {\n return arr.reduce((flat, toFlatten) => {\n return flat.concat(\n Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten\n );\n }, []);\n}\n\nexport const util = {\n track,\n resolveURLTemplates,\n encodeURIComponentRFC3986,\n leftpad,\n range,\n isNumeric,\n flatten\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/util/util.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//connect.facebook.net/en_US/sdk.js'\nconst SDK_GLOBAL = 'FB'\nconst SDK_GLOBAL_READY = 'fbAsyncInit'\nconst MATCH_URL = /facebook\\.com\\/([^/?].+\\/)?video(s|\\.php)[/?].*$/\nconst PLAYER_ID_PREFIX = 'facebook-player-'\n\nexport class Facebook extends Component {\n static displayName = 'Facebook'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url, isReady) {\n if (isReady) {\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(FB => FB.XFBML.parse())\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(FB => {\n FB.init({\n appId: this.props.config.facebook.appId,\n xfbml: true,\n version: 'v2.5'\n })\n FB.Event.subscribe('xfbml.render', msg => {\n // Here we know the SDK has loaded, even if onReady/onPlay\n // is not called due to a video that cannot be embedded\n this.props.onLoaded()\n })\n FB.Event.subscribe('xfbml.ready', msg => {\n if (msg.type === 'video' && msg.id === this.playerID) {\n this.player = msg.instance\n this.player.subscribe('startedPlaying', this.props.onPlay)\n this.player.subscribe('paused', this.props.onPause)\n this.player.subscribe('finishedPlaying', this.props.onEnded)\n this.player.subscribe('startedBuffering', this.props.onBuffer)\n this.player.subscribe('finishedBuffering', this.props.onBufferEnd)\n this.player.subscribe('error', this.props.onError)\n if (!this.props.muted) {\n // Player is muted by default\n this.callPlayer('unmute')\n }\n this.props.onReady()\n\n // For some reason Facebook have added `visibility: hidden`\n // to the iframe when autoplay fails, so here we set it back\n document.getElementById(this.playerID).querySelector('iframe').style.visibility = 'visible'\n }\n })\n })\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unmute')\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentPosition')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n backgroundColor: 'black'\n }\n return (\n <div\n style={style}\n id={this.playerID}\n className='fb-video'\n data-href={this.props.url}\n data-autoplay={this.props.playing ? 'true' : 'false'}\n data-allowfullscreen='true'\n data-controls={this.props.controls ? 'true' : 'false'}\n />\n )\n }\n}\n\nexport default createSinglePlayer(Facebook)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Facebook.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//cdn.embed.ly/player-0.1.0.min.js'\nconst SDK_GLOBAL = 'playerjs'\nconst MATCH_URL = /streamable\\.com\\/([a-z0-9]+)$/\n\nexport class Streamable extends Component {\n static displayName = 'Streamable'\n static canPlay = url => MATCH_URL.test(url)\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n load (url) {\n getSDK(SDK_URL, SDK_GLOBAL).then(playerjs => {\n if (!this.iframe) return\n this.player = new playerjs.Player(this.iframe)\n this.player.setLoop(this.props.loop)\n this.player.on('ready', this.props.onReady)\n this.player.on('play', this.props.onPlay)\n this.player.on('pause', this.props.onPause)\n this.player.on('seeked', this.props.onSeek)\n this.player.on('ended', this.props.onEnded)\n this.player.on('error', this.props.onError)\n this.player.on('timeupdate', ({ duration, seconds }) => {\n this.duration = duration\n this.currentTime = seconds\n })\n this.player.on('buffered', ({ percent }) => {\n if (this.duration) {\n this.secondsLoaded = this.duration * percent\n }\n })\n if (this.props.muted) {\n this.player.mute()\n }\n }, this.props.onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('setCurrentTime', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unmute')\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n ref = iframe => {\n this.iframe = iframe\n }\n render () {\n const id = this.props.url.match(MATCH_URL)[1]\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <iframe\n ref={this.ref}\n src={`https://streamable.com/o/${id}`}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n }\n}\n\nexport default createSinglePlayer(Streamable)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Streamable.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://www.nfl.com/libs/playaction/api.js'\nconst SDK_GLOBAL = 'nfl'\nconst MATCH_FILE_URL = /nflent-vh\\.akamaihd\\.net\\/.+\\.m3u8/\nconst PLAYER_ID_PREFIX = 'facemask-player-'\n\nexport class FaceMask extends Component {\n static displayName = 'FaceMask'\n static canPlay = url => MATCH_FILE_URL.test(url)\n callPlayer = callPlayer\n duration = null\n volume = null\n currentTime = null\n secondsLoaded = null\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url) {\n this.duration = null\n getSDK(SDK_URL, SDK_GLOBAL).then(nfl => {\n if (!this.container) return\n // eslint-disable-next-line new-cap\n this.player = new nfl.playaction({\n containerId: this.playerID,\n initialVideo: { url },\n height: '100%',\n width: '100%'\n })\n const { PLAYER_READY, STATUS, TIME_UPDATE, VOLUME } = nfl.playaction.EVENTS\n const { COMPLETE, ERROR, PAUSED, PLAYING } = nfl.playaction.STATUS\n this.player.on(PLAYER_READY, this.props.onReady)\n this.player.on(VOLUME, this.props.onVolumeChange)\n this.player.on(STATUS, (e) => {\n switch (e.status) {\n case COMPLETE: {\n this.props.onEnded()\n break\n }\n case ERROR: {\n this.props.onError(e)\n break\n }\n case PAUSED: {\n this.props.onPause()\n break\n }\n case PLAYING: {\n this.props.onPlay()\n break\n }\n }\n })\n this.player.on(TIME_UPDATE, ({currentTime, duration}) => {\n this.currentTime = currentTime\n this.duration = duration || Infinity\n })\n }, this.props.onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('destroy')\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n // not supported\n }\n mute () {\n this.callPlayer('mute')\n }\n unmute () {\n this.callPlayer('unmute')\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n ref = (container) => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div\n id={this.playerID}\n ref={this.ref}\n style={style}\n />\n )\n }\n}\n\nexport default createSinglePlayer(FaceMask)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/FaceMask.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//fast.wistia.com/assets/external/E-v1.js'\nconst SDK_GLOBAL = 'Wistia'\nconst MATCH_URL = /(?:wistia\\.com|wi\\.st)\\/(?:medias|embed)\\/(.*)$/\n\nexport class Wistia extends Component {\n static displayName = 'Wistia'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n getID (url) {\n return url && url.match(MATCH_URL)[1]\n }\n load (url) {\n const { playing, muted, controls, onReady, onPlay, onPause, onSeek, onEnded, config, onError } = this.props\n getSDK(SDK_URL, SDK_GLOBAL).then(() => {\n window._wq = window._wq || []\n window._wq.push({\n id: this.getID(url),\n options: {\n autoPlay: playing,\n silentAutoPlay: 'allow',\n muted: muted,\n controlsVisibleOnLoad: controls,\n ...config.wistia.options\n },\n onReady: player => {\n this.player = player\n this.unbind()\n this.player.bind('play', onPlay)\n this.player.bind('pause', onPause)\n this.player.bind('seek', onSeek)\n this.player.bind('end', onEnded)\n onReady()\n }\n })\n }, onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n unbind () {\n const { onPlay, onPause, onSeek, onEnded } = this.props\n this.player.unbind('play', onPlay)\n this.player.unbind('pause', onPause)\n this.player.unbind('seek', onSeek)\n this.player.unbind('end', onEnded)\n }\n stop () {\n this.unbind()\n this.callPlayer('remove')\n }\n seekTo (seconds) {\n this.callPlayer('time', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('volume', fraction)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unmute')\n }\n setPlaybackRate (rate) {\n this.callPlayer('playbackRate', rate)\n }\n getDuration () {\n return this.callPlayer('duration')\n }\n getCurrentTime () {\n return this.callPlayer('time')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const id = this.getID(this.props.url)\n const className = `wistia_embed wistia_async_${id}`\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div key={id} className={className} style={style} />\n )\n }\n}\n\nexport default createSinglePlayer(Wistia)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Wistia.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://player.twitch.tv/js/embed/v1.js'\nconst SDK_GLOBAL = 'Twitch'\nconst MATCH_VIDEO_URL = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/\nconst MATCH_CHANNEL_URL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-z0-9_]+)($|\\?)/\nconst PLAYER_ID_PREFIX = 'twitch-player-'\n\nexport class Twitch extends Component {\n static displayName = 'Twitch'\n static canPlay = url => MATCH_VIDEO_URL.test(url) || MATCH_CHANNEL_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url, isReady) {\n const { playsinline, onError, config } = this.props\n const isChannel = MATCH_CHANNEL_URL.test(url)\n const id = isChannel ? url.match(MATCH_CHANNEL_URL)[1] : url.match(MATCH_VIDEO_URL)[1]\n if (isReady) {\n if (isChannel) {\n this.player.setChannel(id)\n } else {\n this.player.setVideo('v' + id)\n }\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL).then(Twitch => {\n this.player = new Twitch.Player(this.playerID, {\n video: isChannel ? '' : id,\n channel: isChannel ? id : '',\n height: '100%',\n width: '100%',\n playsinline: playsinline,\n autoplay: this.props.playing,\n muted: this.props.muted,\n ...config.twitch.options\n })\n const { READY, PLAYING, PAUSE, ENDED } = Twitch.Player\n this.player.addEventListener(READY, this.props.onReady)\n this.player.addEventListener(PLAYING, this.props.onPlay)\n this.player.addEventListener(PAUSE, this.props.onPause)\n this.player.addEventListener(ENDED, this.props.onEnded)\n }, onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('pause')\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n getVolume () {\n return this.callPlayer('getVolume')\n }\n getMuted () {\n return this.callPlayer('getMuted')\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n mute = () => {\n this.callPlayer('setMuted', true)\n }\n unmute = () => {\n this.callPlayer('setMuted', false)\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentTime')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div style={style} id={this.playerID} />\n )\n }\n}\n\nexport default createSinglePlayer(Twitch)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Twitch.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://developers.ustream.tv/js/ustream-embedapi.min.js'\nconst SDK_GLOBAL = 'UstreamEmbed'\nconst MATCH_URL = /(ustream.tv\\/channel\\/)([^#&?/]*)/\nconst PLAYER_ID_PREFIX = 'UstreamLive-player-'\nexport class UstreamLive extends Component {\n static displayName = 'UstreamLive';\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = false;\n\n state = {\n ustreamSrc: null\n }\n\n playerID = PLAYER_ID_PREFIX + randomString()\n\n callPlayer = callPlayer\n parseId (url) {\n const m = url.match(MATCH_URL)\n return m[2]\n }\n componentDidUpdate (prevProps) {\n // reset ustreamSrc on reload\n if (prevProps.url && (prevProps.url !== this.props.url)) {\n this.setState({\n ustreamSrc: null\n })\n }\n }\n\n load () {\n const {onEnded, onError, onPause, onPlay, onReady, playing, url} = this.props\n const channelId = this.parseId(url)\n this.setState({\n ustreamSrc: `https://www.ustream.tv/embed/${channelId}?html5ui=1&autoplay=${playing}&controls=false&showtitle=false`\n })\n getSDK(SDK_URL, SDK_GLOBAL).then(UstreamEmbed => {\n if (!this.container) return\n this.currentTime = 0\n this.player = UstreamEmbed(this.playerID)\n this.player.addListener('playing', (type, playing) => {\n if (playing) {\n this.playTime = Date.now()\n onPlay()\n } else {\n this.currentTime = this.getCurrentTime()\n this.playTime = null\n onPause()\n }\n })\n this.player.addListener('live', onReady)\n this.player.addListener('offline', onReady)\n this.player.addListener('finished', onEnded)\n this.player.getProperty('duration', (duration) => {\n this.player.duration = duration || Infinity\n })\n }, onError)\n }\n // todo\n mute = () => {}\n // todo\n unmute = () => {}\n play () {\n this.callPlayer('callMethod', 'play')\n }\n pause () {\n this.callPlayer('callMethod', 'pause')\n }\n stop () {\n this.callPlayer('callMethod', 'stop')\n }\n seekTo (seconds) {\n this.callPlayer('callMethod', 'seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('callMethod', 'volume', fraction * 100)\n }\n getDuration () {\n return Infinity\n }\n getCurrentTime () {\n let playing = 0\n if (this.playTime) {\n playing = (Date.now() - this.playTime) / 1000\n }\n return this.currentTime + playing\n }\n getSecondsLoaded () {\n return null\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n\n const {ustreamSrc} = this.state\n return (\n ustreamSrc && <iframe\n id={this.playerID}\n ref={this.ref}\n src={ustreamSrc}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n }\n}\n\nexport default createSinglePlayer(UstreamLive)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/UstreamLive.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://developers.ustream.tv/js/ustream-embedapi.min.js'\nconst SDK_GLOBAL = 'UstreamEmbed'\nconst MATCH_URL = /(ustream.tv\\/recorded\\/)([^#&?/]*)/\nconst PLAYER_ID_PREFIX = 'UstreamVideo-player-'\nexport class UstreamVideo extends Component {\n static displayName = 'UstreamVideo';\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = false;\n\n state = {\n ustreamSrc: null\n }\n\n playerID = PLAYER_ID_PREFIX + randomString()\n\n callPlayer = callPlayer\n parseId (url) {\n const m = url.match(MATCH_URL)\n return m[2]\n }\n componentDidUpdate (prevProps) {\n // reset ustreamSrc on reload\n if (prevProps.url && (prevProps.url !== this.props.url)) {\n this.setState({\n ustreamSrc: null\n })\n }\n }\n\n componentWillUnmount () {\n // clear the interval below\n if (this.currentTimeInterval) {\n clearInterval(this.currentTimeInterval)\n }\n }\n\n // there's no events to update progress and duration,\n // so we're going to set an interval here. Also, duration\n // is zero or null for the first few seconds. Couldn't find\n // a deterministic event to let us know when we should grab the duration.\n initInterval () {\n if (this.currentTimeInterval) {\n return\n }\n this.currentTimeInterval = setInterval(() => {\n if (this.player) {\n this.player.getProperty('progress', (progress) => {\n this.player.currentTime = progress\n })\n this.player.getProperty('duration', (duration) => {\n this.player.duration = duration\n })\n }\n }, 500)\n }\n\n load () {\n const {onEnded, onError, onPause, onPlay, onReady, playing, url} = this.props\n const videoId = this.parseId(url)\n this.setState({\n ustreamSrc: `https://www.ustream.tv/embed/recorded/${videoId}?html5ui=1&autoplay=${playing}&controls=false&showtitle=false`\n })\n getSDK(SDK_URL, SDK_GLOBAL).then(UstreamEmbed => {\n if (!this.container) return\n this.player = UstreamEmbed(this.playerID)\n this.player.addListener('playing', (type, playing) => {\n playing ? onPlay() : onPause()\n })\n this.player.addListener('ready', () => {\n this.initInterval()\n onReady()\n })\n this.player.addListener('finished', onEnded)\n }, onError)\n }\n // todo\n mute = () => {}\n // todo\n unmute = () => {}\n play () {\n this.callPlayer('callMethod', 'play')\n }\n pause () {\n this.callPlayer('callMethod', 'pause')\n }\n stop () {\n this.callPlayer('callMethod', 'stop')\n }\n seekTo (seconds) {\n this.callPlayer('callMethod', 'seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('callMethod', 'volume', fraction * 100)\n }\n getDuration () {\n return this.player.duration\n }\n getCurrentTime () {\n return this.player.currentTime\n }\n getSecondsLoaded () {\n return null\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n\n const {ustreamSrc} = this.state\n return (\n ustreamSrc && <iframe\n id={this.playerID}\n ref={this.ref}\n src={ustreamSrc}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n }\n}\n\nexport default createSinglePlayer(UstreamVideo)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/UstreamVideo.js","import React, { Component } from 'react'\n\nimport { randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst PLAYER_ID_PREFIX = 'Iframe-player-'\nexport class Iframe extends Component {\n static displayName = 'Iframe';\n static canPlay = url => true\n playerID = PLAYER_ID_PREFIX + randomString()\n player = {\n currentTime: 0\n }\n load (url) {\n if (!this.container) {\n this.props.onReady()\n } else {\n setTimeout(() => this.props.onReady(), 3000)\n }\n }\n play () {\n this.playTime = Date.now()\n this.props.onPlay()\n }\n pause () {\n this.player.currentTime = this.getCurrentTime()\n this.playTime = null\n this.props.onPause()\n }\n stop () {\n this.player.currentTime = this.getCurrentTime()\n this.playTime = null\n this.props.onPause()\n }\n seekTo (seconds) {\n // no support\n }\n setVolume (fraction) {\n // no support\n }\n mute = () => {\n // no support\n }\n unmute = () => {\n // no support\n }\n getDuration () {\n return Infinity\n }\n getCurrentTime () {\n let playing = 0\n if (this.playTime) {\n playing = (Date.now() - this.playTime) / 1000\n }\n return this.player.currentTime + playing\n }\n getSecondsLoaded () {\n return null\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n const {url, playing} = this.props\n if (playing) {\n return (\n <iframe\n id={this.playerID}\n ref={this.ref}\n src={playing && url}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n } else {\n // pause flow for iframe\n return (\n <div style={style} >\n <div style={{\n alignItems: 'center',\n background: 'rgba(255,255,255,0.3)',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%'\n }}>\n <div className='pause' style={{\n borderStyle: 'double',\n borderWidth: '0px 0px 0px 50px',\n color: 'gray',\n height: '60px'\n }} />\n </div>\n </div>\n )\n }\n }\n}\n\nexport default createSinglePlayer(Iframe)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Iframe.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, queryString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//widget.mixcloud.com/media/js/widgetApi.js'\nconst SDK_GLOBAL = 'Mixcloud'\nconst MATCH_URL = /mixcloud\\.com\\/([^/]+\\/[^/]+)/\n\nexport class Mixcloud extends Component {\n static displayName = 'Mixcloud'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n load (url) {\n getSDK(SDK_URL, SDK_GLOBAL).then(Mixcloud => {\n this.player = Mixcloud.PlayerWidget(this.iframe)\n this.player.ready.then(() => {\n this.player.events.play.on(this.props.onPlay)\n this.player.events.pause.on(this.props.onPause)\n this.player.events.ended.on(this.props.onEnded)\n this.player.events.error.on(this.props.error)\n this.player.events.progress.on((seconds, duration) => {\n this.currentTime = seconds\n this.duration = duration\n })\n this.props.onReady()\n })\n }, this.props.onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n // No volume support\n }\n mute = () => {\n // No volume support\n }\n unmute = () => {\n // No volume support\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return null\n }\n ref = iframe => {\n this.iframe = iframe\n }\n render () {\n const { url, config } = this.props\n const id = url.match(MATCH_URL)[1]\n const style = {\n width: '100%',\n height: '100%'\n }\n const query = queryString({\n ...config.mixcloud.options,\n feed: `/${id}/`\n })\n // We have to give the iframe a key here to prevent a\n // weird dialog appearing when loading a new track\n return (\n <iframe\n key={id}\n ref={this.ref}\n style={style}\n src={`https://www.mixcloud.com/widget/iframe/?${query}`}\n frameBorder='0'\n />\n )\n }\n}\n\nexport default createSinglePlayer(Mixcloud)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Mixcloud.js","import React, { Component } from 'react'\nimport VPAIDHTML5Client from 'vpaid-html5-client'\nimport { VASTClient, VASTTracker } from 'vast-client'\nimport { callPlayer, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\nimport { FilePlayer } from './FilePlayer'\n\nconst PLAYER_ID_PREFIX = 'vast-player-'\nconst CONTENT_ID_PREFIX = 'vast-content-'\nconst SKIP_ID_PREFIX = 'vast-skip-'\nconst MATCH_URL = /^VAST:https:\\/\\//i\nexport class VAST extends Component {\n static displayName = 'VAST';\n static canPlay = url => MATCH_URL.test(url);\n\n state = {\n canSkip: false,\n framework: null,\n preMuteVolume: 0.0,\n sources: [],\n tracker: null,\n type: null,\n vastClient: new VASTClient(),\n vpaidAdUnit: null,\n vpaidClient: null\n }\n\n playerID = PLAYER_ID_PREFIX + randomString()\n contentID = CONTENT_ID_PREFIX + randomString()\n skipID = SKIP_ID_PREFIX + randomString()\n\n callPlayer = callPlayer;\n\n createSourceFiles (mediaFiles = []) {\n return mediaFiles\n .map(({apiFramework, fileURL: src, mimeType: type} = {}) => ({apiFramework, src, type}))\n .filter(({apiFramework, src}) => (apiFramework === 'VPAID') || FilePlayer.canPlay(src))\n }\n\n componentWillUnmount () {\n if (this.state.framework === 'VPAID') {\n this.removeVPAIDListeners()\n }\n }\n\n parseResponse (response) {\n const {onEnded} = this.props\n const {ads = []} = response\n\n // find video creatives\n // todo: handle companion ads\n for (const ad of ads) {\n const {creatives = []} = ad\n for (const creative of creatives) {\n const {mediaFiles = [], type} = creative\n if (type === 'linear') {\n const sources = this.createSourceFiles(mediaFiles)\n if (sources.length) {\n return this.setState({\n framework: sources[0].apiFramework || 'VAST',\n sources,\n // eslint-disable-next-line new-cap\n tracker: new VASTTracker(this.state.vastClient, ad, creative)\n })\n }\n }\n }\n\n return onEnded()\n }\n }\n\n addVPAIDListeners () {\n const { framework } = this.state\n if (framework !== 'VPAID') {\n return null\n }\n const {\n onReady, onPlay, onBuffer, onBufferEnd,\n onPause, onEnded, onError,\n onVolumeChange\n } = this.props\n\n this.container.addEventListener('canplay', onReady)\n this.container.addEventListener('play', onPlay)\n this.container.addEventListener('waiting', onBuffer)\n this.container.addEventListener('playing', onBufferEnd)\n this.container.addEventListener('pause', onPause)\n this.container.addEventListener('ended', onEnded)\n this.container.addEventListener('error', onError)\n this.container.addEventListener('volumeChange', onVolumeChange)\n\n // list of events available in IVPAIDAdUnit.js in vpaid-html5-client\n this.state.vpaidAdUnit.subscribe('AdLoaded', this.onVPAIDAdLoaded.bind(this))\n this.state.vpaidAdUnit.subscribe('AdSkippableStateChange', this.props.onAdSkippable.bind(this))\n }\n\n skip () {\n const { framework, tracker, vpaidAdUnit } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.skip()\n } else {\n vpaidAdUnit.skipAd()\n }\n }\n\n onVPAIDAdLoaded () {\n const { onReady, playing } = this.props\n const { vpaidAdUnit } = this.state\n onReady()\n if (playing) {\n vpaidAdUnit.startAd()\n this.setVolume(0.0)\n }\n }\n\n removeVPAIDListeners () {\n const {\n onReady, onPlay, onBuffer, onBufferEnd,\n onPause, onEnded, onError,\n onVolumeChange\n } = this.props\n this.container.removeEventListener('canplay', onReady)\n this.container.removeEventListener('play', onPlay)\n this.container.removeEventListener('waiting', onBuffer)\n this.container.removeEventListener('playing', onBufferEnd)\n this.container.removeEventListener('pause', onPause)\n this.container.removeEventListener('ended', onEnded)\n this.container.removeEventListener('error', onError)\n this.container.removeEventListener('volumeChange', onVolumeChange)\n this.state.vpaidAdUnit.unsubscribe('AdLoaded')\n this.state.vpaidAdUnit.unsubscribe('AdSkippableStateChange')\n }\n\n loadVPAID (url) {\n this.state.vpaidClient = new VPAIDHTML5Client(\n document.getElementById(this.contentID),\n document.getElementById(this.playerID)\n )\n const { onError } = this.props\n const { vpaidClient } = this.state\n vpaidClient.loadAdUnit(url, (error, adUnit) => {\n if (error) {\n return onError(error)\n }\n this.state.vpaidAdUnit = adUnit\n this.addVPAIDListeners()\n adUnit.initAd('100%', '100%', 'normal', -1, {}, {})\n })\n }\n\n load (rawUrl) {\n // replace [RANDOM] or [random] with a randomly generated cache value\n const ord = Math.random() * 10000000000000000\n const url = rawUrl.replace(/\\[random]/ig, ord)\n this.state.vastClient.get(url.slice('VAST:'.length), { withCredentials: true }).then((response) => {\n this.parseResponse(response)\n const {framework, sources, tracker} = this.state\n if (framework === 'VPAID') {\n this.loadVPAID(sources[0].src)\n } else {\n if (tracker) {\n tracker.on('clickthrough', this.openAdLink)\n }\n }\n }).catch((error) => {\n return this.props.onError(error)\n })\n }\n\n play () {\n const { framework, vpaidAdUnit } = this.state\n if (framework === 'VPAID') {\n vpaidAdUnit.resumeAd()\n } else {\n this.container.play()\n }\n }\n\n pause () {\n const { framework, vpaidAdUnit } = this.state\n if (framework === 'VPAID') {\n vpaidAdUnit.pauseAd()\n } else {\n this.container.pause()\n }\n }\n\n stop () {\n const { framework, vpaidAdUnit } = this.state\n if (framework === 'VPAID') {\n vpaidAdUnit.stopAd()\n } else {\n this.container.stop()\n }\n }\n\n // only allow rewind for VAST\n seekTo (seconds) {\n const {framework} = this.state\n if (framework === 'VAST') {\n if (seconds < this.getCurrentTime()) {\n this.container.seekTo(seconds)\n }\n }\n }\n\n setVolume (fraction) {\n const { framework, vpaidAdUnit } = this.state\n if (framework === 'VPAID') {\n vpaidAdUnit.setAdVolume(fraction)\n } else {\n this.container.setVolume(fraction)\n }\n }\n\n mute = () => {\n const { framework, vpaidAdUnit } = this.state\n if (framework === 'VPAID') {\n this.setState({\n preMuteVolume: this.container.volume\n })\n vpaidAdUnit.setAdVolume(0.0)\n } else {\n this.container.mute()\n }\n };\n\n unmute = () => {\n const { framework, preMuteVolume, vpaidAdUnit } = this.state\n if (framework === 'VPAID') {\n vpaidAdUnit.setAdVolume(preMuteVolume)\n } else {\n this.container.unmute()\n }\n };\n\n getDuration () {\n const { framework } = this.state\n if (framework === 'VPAID') {\n if (!this.container) return null\n const { duration } = this.container\n return duration\n } else {\n return this.container.getDuration()\n }\n }\n\n getCurrentTime () {\n const { framework } = this.state\n if (framework === 'VPAID') {\n return this.container ? this.container.currentTime : null\n } else {\n return this.container.getCurrentTime()\n }\n }\n\n getSecondsLoaded () {\n const { framework } = this.state\n if (framework === 'VPAID') {\n if (!this.container) return null\n const { buffered } = this.container\n if (buffered.length === 0) {\n return 0\n }\n const end = buffered.end(buffered.length - 1)\n const duration = this.getDuration()\n if (end > duration) {\n return duration\n }\n return end\n } else {\n return this.container.getCurrentTime()\n }\n }\n\n ref = (container) => {\n this.container = container\n };\n\n onAdClick = () => {\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.click()\n }\n }\n\n openAdLink (url) {\n window.open(url, '_blank')\n }\n\n // track ended\n onEnded = (event) => {\n const { onEnded } = this.props\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.complete()\n }\n onEnded(event)\n }\n\n // track error\n onError = (event) => {\n const { onError } = this.props\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.errorWithCode(405)\n }\n onError(event)\n }\n\n // track pause\n onPause = (event) => {\n const { onPause } = this.props\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.setPaused(true)\n }\n onPause(event)\n }\n\n // track play\n onPlay = (event) => {\n const { onPlay } = this.props\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.setPaused(false)\n }\n onPlay(event)\n }\n\n onProgress = (event) => {\n const { onProgress } = this.props\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.setProgress(event.playedSeconds)\n }\n onProgress(event)\n }\n\n // track load and duration\n onReady = (event) => {\n const { onReady } = this.props\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n if (Number.isNaN(tracker.assetDuration)) {\n tracker.assetDuration = this.container.getDuration()\n }\n }\n\n onReady(event)\n }\n\n // track volume change\n onVolumeChange = (event) => {\n const { onVolumeChange } = this.props\n const { framework, tracker } = this.state\n if (framework === 'VAST' && tracker) {\n tracker.setMuted(this.container.muted)\n }\n onVolumeChange(event)\n }\n\n renderVAST () {\n const {sources, tracker: clickTrackingURLTemplate} = this.state\n const { width, height } = this.props\n const wrapperStyle = {\n cursor: clickTrackingURLTemplate ? 'pointer' : 'default',\n height: '100%'\n }\n const videoStyle = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n }\n return sources.length ? (\n <div onClick={this.onAdClick} style={wrapperStyle}>\n <FilePlayer\n {...this.props}\n onEnded={this.onEnded}\n onError={this.onError}\n onPause={this.onPause}\n onPlay={this.onPlay}\n onProgress={this.onProgress}\n onReady={this.onReady}\n onVolumeChange={this.onVolumeChange}\n ref={this.ref}\n style={videoStyle}\n url={this.state.sources[0].src}\n />\n </div>\n ) : null\n }\n\n renderVPAID () {\n const { width, height } = this.props\n const { canSkip } = this.state\n const dimensions = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n }\n const contentStyle = {\n ...dimensions,\n top: 0,\n left: 0,\n position: 'absolute',\n zIndex: 1\n }\n const skipStyle = {\n cursor: 'pointer',\n display: 'block',\n position: 'absolute',\n bottom: '10px',\n right: '10px',\n zIndex: 2\n }\n return (\n <div style={{...dimensions, position: 'relative'}}>\n { canSkip && <button\n id={this.skipID}\n style={skipStyle}\n onClick={() => this.skip()}>Skip</button> }\n <div id={this.contentID} style={contentStyle} />\n <video\n ref={this.ref}\n controls={false}\n style={dimensions}\n id={this.playerID}\n />\n </div>\n )\n }\n\n render () {\n const { framework } = this.state\n if (!framework) {\n return null\n }\n if (framework === 'VPAID') {\n return this.renderVPAID()\n } else {\n return this.renderVAST()\n }\n }\n}\n\nexport default createSinglePlayer(VAST)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/VAST.js","'use strict';\n\n/**\n * noop a empty function\n */\nfunction noop() {}\n\n/**\n * validate if is not validate will return an Error with the message\n *\n * @param {boolean} isValid\n * @param {string} message\n */\nfunction validate(isValid, message) {\n return isValid ? null : new Error(message);\n}\n\nvar timeouts = {};\n/**\n * clearCallbackTimeout\n *\n * @param {function} func handler to remove\n */\nfunction clearCallbackTimeout(func) {\n var timeout = timeouts[func];\n if (timeout) {\n clearTimeout(timeout);\n delete timeouts[func];\n }\n}\n\n/**\n * callbackTimeout if the onSuccess is not called and returns true in the timelimit then onTimeout will be called\n *\n * @param {number} timer\n * @param {function} onSuccess\n * @param {function} onTimeout\n */\nfunction callbackTimeout(timer, onSuccess, onTimeout) {\n var callback, timeout;\n\n timeout = setTimeout(function () {\n onSuccess = noop;\n delete timeout[callback];\n onTimeout();\n }, timer);\n\n callback = function () {\n // TODO avoid leaking arguments\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n if (onSuccess.apply(this, arguments)) {\n clearCallbackTimeout(callback);\n }\n };\n\n timeouts[callback] = timeout;\n\n return callback;\n}\n\n\n/**\n * createElementInEl\n *\n * @param {HTMLElement} parent\n * @param {string} tagName\n * @param {string} id\n */\nfunction createElementInEl(parent, tagName, id) {\n var nEl = document.createElement(tagName);\n if (id) nEl.id = id;\n parent.appendChild(nEl);\n return nEl;\n}\n\n/**\n * createIframeWithContent\n *\n * @param {HTMLElement} parent\n * @param {string} template simple template using {{var}}\n * @param {object} data\n */\nfunction createIframeWithContent(parent, template, data) {\n var iframe = createIframe(parent, null, data.zIndex);\n if (!setIframeContent(iframe, simpleTemplate(template, data))) return;\n return iframe;\n}\n\n/**\n * createIframe\n *\n * @param {HTMLElement} parent\n * @param {string} url\n */\nfunction createIframe(parent, url, zIndex) {\n var nEl = document.createElement('iframe');\n nEl.src = url || 'about:blank';\n nEl.marginWidth = '0';\n nEl.marginHeight = '0';\n nEl.frameBorder = '0';\n nEl.width = '100%';\n nEl.height = '100%';\n setFullSizeStyle(nEl);\n\n if(zIndex){\n nEl.style.zIndex = zIndex;\n }\n\n nEl.setAttribute('SCROLLING','NO');\n parent.innerHTML = '';\n parent.appendChild(nEl);\n return nEl;\n}\n\nfunction setFullSizeStyle(element) {\n element.style.position = 'absolute';\n element.style.left = '0';\n element.style.top = '0';\n element.style.margin = '0px';\n element.style.padding = '0px';\n element.style.border = 'none';\n element.style.width = '100%';\n element.style.height = '100%';\n}\n\n/**\n * simpleTemplate\n *\n * @param {string} template\n * @param {object} data\n */\nfunction simpleTemplate(template, data) {\n Object.keys(data).forEach(function (key) {\n var value = (typeof value === 'object') ? JSON.stringify(data[key]) : data[key];\n template = template.replace(new RegExp('{{' + key + '}}', 'g'), value);\n });\n return template;\n}\n\n/**\n * setIframeContent\n *\n * @param {HTMLIframeElement} iframeEl\n * @param content\n */\nfunction setIframeContent(iframeEl, content) {\n var iframeDoc = iframeEl.contentWindow && iframeEl.contentWindow.document;\n if (!iframeDoc) return false;\n\n iframeDoc.write(content);\n\n return true;\n}\n\n\n/**\n * extend object with keys from another object\n *\n * @param {object} toExtend\n * @param {object} fromSource\n */\nfunction extend(toExtend, fromSource) {\n Object.keys(fromSource).forEach(function(key) {\n toExtend[key] = fromSource[key];\n });\n return toExtend;\n}\n\n\n/**\n * unique will create a unique string everytime is called, sequentially and prefixed\n *\n * @param {string} prefix\n */\nfunction unique(prefix) {\n var count = -1;\n return function () {\n return prefix + '_' + (++count);\n };\n}\n\nmodule.exports = {\n noop: noop,\n validate: validate,\n clearCallbackTimeout: clearCallbackTimeout,\n callbackTimeout: callbackTimeout,\n createElementInEl: createElementInEl,\n createIframeWithContent: createIframeWithContent,\n createIframe: createIframe,\n setFullSizeStyle: setFullSizeStyle,\n simpleTemplate: simpleTemplate,\n setIframeContent: setIframeContent,\n extend: extend,\n unique: unique\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vpaid-html5-client/js/utils.js","import { parseAd } from './ad_parser';\nimport { EventEmitter } from 'events';\nimport { parserUtils } from './parser_utils';\nimport { urlHandler } from '../url_handler';\nimport { util } from '../util/util';\nimport { VASTResponse } from '../vast_response';\n\nconst DEFAULT_MAX_WRAPPER_DEPTH = 10;\nconst DEFAULT_EVENT_DATA = {\n ERRORCODE: 900,\n extensions: []\n};\n\n/**\n * This class provides methods to fetch and parse a VAST document.\n * @export\n * @class VASTParser\n * @extends EventEmitter\n */\nexport class VASTParser extends EventEmitter {\n /**\n * Creates an instance of VASTParser.\n * @constructor\n */\n constructor() {\n super();\n\n this.remainingAds = [];\n this.parentURLs = [];\n this.errorURLTemplates = [];\n this.rootErrorURLTemplates = [];\n this.maxWrapperDepth = null;\n this.URLTemplateFilters = [];\n this.fetchingOptions = {};\n }\n\n /**\n * Adds a filter function to the array of filters which are called before fetching a VAST document.\n * @param {function} filter - The filter function to be added at the end of the array.\n * @return {void}\n */\n addURLTemplateFilter(filter) {\n if (typeof filter === 'function') {\n this.URLTemplateFilters.push(filter);\n }\n }\n\n /**\n * Removes the last element of the url templates filters array.\n * @return {void}\n */\n removeURLTemplateFilter() {\n this.URLTemplateFilters.pop();\n }\n\n /**\n * Returns the number of filters of the url templates filters array.\n * @return {Number}\n */\n countURLTemplateFilters() {\n return this.URLTemplateFilters.length;\n }\n\n /**\n * Removes all the filter functions from the url templates filters array.\n * @return {void}\n */\n clearURLTemplateFilters() {\n this.URLTemplateFilters = [];\n }\n\n /**\n * Tracks the error provided in the errorCode parameter and emits a VAST-error event for the given error.\n * @param {Array} urlTemplates - An Array of url templates to use to make the tracking call.\n * @param {Object} errorCode - An Object containing the error data.\n * @param {Object} data - One (or more) Object containing additional data.\n * @emits VASTParser#VAST-error\n * @return {void}\n */\n trackVastError(urlTemplates, errorCode, ...data) {\n this.emit(\n 'VAST-error',\n Object.assign(DEFAULT_EVENT_DATA, errorCode, ...data)\n );\n util.track(urlTemplates, errorCode);\n }\n\n /**\n * Returns an array of errorURLTemplates for the VAST being parsed.\n * @return {Array}\n */\n getErrorURLTemplates() {\n return this.rootErrorURLTemplates.concat(this.errorURLTemplates);\n }\n\n /**\n * Fetches a VAST document for the given url.\n * Returns a Promise which resolves,rejects according to the result of the request.\n * @param {String} url - The url to request the VAST document.\n * @param {Number} wrapperDepth - how many times the current url has been wrapped\n * @param {String} originalUrl - url of original wrapper\n * @emits VASTParser#VAST-resolving\n * @emits VASTParser#VAST-resolved\n * @return {Promise}\n */\n fetchVAST(url, wrapperDepth, originalUrl) {\n return new Promise((resolve, reject) => {\n // Process url with defined filter\n this.URLTemplateFilters.forEach(filter => {\n url = filter(url);\n });\n\n this.parentURLs.push(url);\n this.emit('VAST-resolving', { url, wrapperDepth, originalUrl });\n\n this.urlHandler.get(url, this.fetchingOptions, (err, xml) => {\n this.emit('VAST-resolved', { url, error: err });\n\n if (err) {\n reject(err);\n } else {\n resolve(xml);\n }\n });\n });\n }\n\n /**\n * Inits the parsing properties of the class with the custom values provided as options.\n * @param {Object} options - The options to initialize a parsing sequence\n */\n initParsingStatus(options = {}) {\n this.rootURL = '';\n this.remainingAds = [];\n this.parentURLs = [];\n this.errorURLTemplates = [];\n this.rootErrorURLTemplates = [];\n this.maxWrapperDepth = options.wrapperLimit || DEFAULT_MAX_WRAPPER_DEPTH;\n this.fetchingOptions = {\n timeout: options.timeout,\n withCredentials: options.withCredentials\n };\n\n this.urlHandler = options.urlHandler || options.urlhandler || urlHandler;\n }\n\n /**\n * Resolves the next group of ads. If all is true resolves all the remaining ads.\n * @param {Boolean} all - If true all the remaining ads are resolved\n * @return {Promise}\n */\n getRemainingAds(all) {\n if (this.remainingAds.length === 0) {\n return Promise.reject(\n new Error('No more ads are available for the given VAST')\n );\n }\n\n const ads = all\n ? util.flatten(this.remainingAds)\n : this.remainingAds.shift();\n this.errorURLTemplates = [];\n this.parentURLs = [];\n\n return this.resolveAds(ads, {\n wrapperDepth: 0,\n originalUrl: this.rootURL\n }).then(resolvedAds => {\n return this.buildVASTResponse(resolvedAds);\n });\n }\n\n /**\n * Fetches and parses a VAST for the given url.\n * Returns a Promise which resolves with a fully parsed VASTResponse or rejects with an Error.\n * @param {String} url - The url to request the VAST document.\n * @param {Object} options - An optional Object of parameters to be used in the parsing process.\n * @emits VASTParser#VAST-resolving\n * @emits VASTParser#VAST-resolved\n * @return {Promise}\n */\n getAndParseVAST(url, options = {}) {\n this.initParsingStatus(options);\n this.rootURL = url;\n\n return this.fetchVAST(url).then(xml => {\n options.originalUrl = url;\n options.isRootVAST = true;\n\n return this.parse(xml, options).then(ads => {\n return this.buildVASTResponse(ads);\n });\n });\n }\n\n /**\n * Parses the given xml Object into a VASTResponse.\n * Returns a Promise which resolves with a fully parsed VASTResponse or rejects with an Error.\n * @param {Object} vastXml - An object representing a vast xml document.\n * @param {Object} options - An optional Object of parameters to be used in the parsing process.\n * @emits VASTParser#VAST-resolving\n * @emits VASTParser#VAST-resolved\n * @return {Promise}\n */\n parseVAST(vastXml, options = {}) {\n this.initParsingStatus(options);\n\n options.isRootVAST = true;\n\n return this.parse(vastXml, options).then(ads => {\n return this.buildVASTResponse(ads);\n });\n }\n\n /**\n * Builds a VASTResponse which can be returned.\n * @param {Array} ads - An Array of unwrapped ads\n * @return {VASTResponse}\n */\n buildVASTResponse(ads) {\n const response = new VASTResponse();\n response.ads = ads;\n response.errorURLTemplates = this.getErrorURLTemplates();\n this.completeWrapperResolving(response);\n\n return response;\n }\n\n /**\n * Parses the given xml Object into an array of ads\n * Returns the array or throws an `Error` if an invalid VAST XML is provided\n * @param {Object} vastXml - An object representing an xml document.\n * @param {Object} options - An optional Object of parameters to be used in the parsing process.\n * @return {Array}\n * @throws {Error} `vastXml` must be a valid VAST XMLDocument\n */\n parseVastXml(vastXml, { isRootVAST = false }) {\n // check if is a valid VAST document\n if (\n !vastXml ||\n !vastXml.documentElement ||\n vastXml.documentElement.nodeName !== 'VAST'\n ) {\n throw new Error('Invalid VAST XMLDocument');\n }\n\n const ads = [];\n const childNodes = vastXml.documentElement.childNodes;\n\n // Fill the VASTResponse object with ads and errorURLTemplates\n for (const nodeKey in childNodes) {\n const node = childNodes[nodeKey];\n\n if (node.nodeName === 'Error') {\n const errorURLTemplate = parserUtils.parseNodeText(node);\n\n // Distinguish root VAST url templates from ad specific ones\n isRootVAST\n ? this.rootErrorURLTemplates.push(errorURLTemplate)\n : this.errorURLTemplates.push(errorURLTemplate);\n }\n\n if (node.nodeName === 'Ad') {\n const ad = parseAd(node);\n\n if (ad) {\n ads.push(ad);\n } else {\n // VAST version of response not supported.\n this.trackVastError(this.getErrorURLTemplates(), {\n ERRORCODE: 101\n });\n }\n }\n }\n\n return ads;\n }\n\n /**\n * Parses the given xml Object into an array of unwrapped ads.\n * Returns a Promise which resolves with the array or rejects with an error according to the result of the parsing.\n * @param {Object} vastXml - An object representing an xml document.\n * @param {Object} options - An optional Object of parameters to be used in the parsing process.\n * @emits VASTParser#VAST-resolving\n * @emits VASTParser#VAST-resolved\n * @return {Promise}\n */\n parse(\n vastXml,\n {\n resolveAll = true,\n wrapperSequence = null,\n originalUrl = null,\n wrapperDepth = 0,\n isRootVAST = false\n }\n ) {\n let ads = [];\n try {\n ads = this.parseVastXml(vastXml, { isRootVAST });\n } catch (e) {\n return Promise.reject(e);\n }\n\n const adsCount = ads.length;\n const lastAddedAd = ads[adsCount - 1];\n // if in child nodes we have only one ads\n // and wrapperSequence is defined\n // and this ads doesn't already have sequence\n if (\n adsCount === 1 &&\n wrapperSequence !== undefined &&\n wrapperSequence !== null &&\n lastAddedAd &&\n !lastAddedAd.sequence\n ) {\n lastAddedAd.sequence = wrapperSequence;\n }\n\n // Split the VAST in case we don't want to resolve everything at the first time\n if (resolveAll === false) {\n this.remainingAds = parserUtils.splitVAST(ads);\n // Remove the first element from the remaining ads array, since we're going to resolve that element\n ads = this.remainingAds.shift();\n }\n\n return this.resolveAds(ads, { wrapperDepth, originalUrl });\n }\n\n /**\n * Resolves an Array of ads, recursively calling itself with the remaining ads if a no ad\n * response is returned for the given array.\n * @param {Array} ads - An array of ads to resolve\n * @param {Object} options - An options Object containing resolving parameters\n * @return {Promise}\n */\n resolveAds(ads = [], { wrapperDepth, originalUrl }) {\n const resolveWrappersPromises = [];\n\n ads.forEach(ad => {\n const resolveWrappersPromise = this.resolveWrappers(\n ad,\n wrapperDepth,\n originalUrl\n );\n\n resolveWrappersPromises.push(resolveWrappersPromise);\n });\n\n return Promise.all(resolveWrappersPromises).then(unwrappedAds => {\n const resolvedAds = util.flatten(unwrappedAds);\n\n if (!resolvedAds && this.remainingAds.length > 0) {\n const remainingAdsToResolve = this.remainingAds.shift();\n\n return this.resolveAds(remainingAdsToResolve, {\n wrapperDepth,\n originalUrl\n });\n }\n\n return resolvedAds;\n });\n }\n\n /**\n * Resolves the wrappers for the given ad in a recursive way.\n * Returns a Promise which resolves with the unwrapped ad or rejects with an error.\n * @param {Ad} ad - An ad to be unwrapped.\n * @param {Number} wrapperDepth - The reached depth in the wrapper resolving chain.\n * @param {String} originalUrl - The original vast url.\n * @return {Promise}\n */\n resolveWrappers(ad, wrapperDepth, originalUrl) {\n return new Promise(resolve => {\n // Going one level deeper in the wrapper chain\n wrapperDepth++;\n // We already have a resolved VAST ad, no need to resolve wrapper\n if (!ad.nextWrapperURL) {\n delete ad.nextWrapperURL;\n return resolve(ad);\n }\n\n if (\n wrapperDepth >= this.maxWrapperDepth ||\n this.parentURLs.indexOf(ad.nextWrapperURL) !== -1\n ) {\n // Wrapper limit reached, as defined by the video player.\n // Too many Wrapper responses have been received with no InLine response.\n ad.errorCode = 302;\n delete ad.nextWrapperURL;\n return resolve(ad);\n }\n\n // Get full URL\n ad.nextWrapperURL = parserUtils.resolveVastAdTagURI(\n ad.nextWrapperURL,\n originalUrl\n );\n\n // sequence doesn't carry over in wrapper element\n const wrapperSequence = ad.sequence;\n originalUrl = ad.nextWrapperURL;\n\n this.fetchVAST(ad.nextWrapperURL, wrapperDepth, originalUrl)\n .then(xml => {\n return this.parse(xml, {\n originalUrl,\n wrapperSequence,\n wrapperDepth\n }).then(unwrappedAds => {\n delete ad.nextWrapperURL;\n if (unwrappedAds.length === 0) {\n // No ads returned by the wrappedResponse, discard current <Ad><Wrapper> creatives\n ad.creatives = [];\n return resolve(ad);\n }\n\n unwrappedAds.forEach(unwrappedAd => {\n if (unwrappedAd) {\n parserUtils.mergeWrapperAdData(unwrappedAd, ad);\n }\n });\n\n resolve(unwrappedAds);\n });\n })\n .catch(err => {\n // Timeout of VAST URI provided in Wrapper element, or of VAST URI provided in a subsequent Wrapper element.\n // (URI was either unavailable or reached a timeout as defined by the video player.)\n ad.errorCode = 301;\n ad.errorMessage = err.message;\n\n resolve(ad);\n });\n });\n }\n\n /**\n * Takes care of handling errors when the wrappers are resolved.\n * @param {VASTResponse} vastResponse - A resolved VASTResponse.\n */\n completeWrapperResolving(vastResponse) {\n // We've to wait for all <Ad> elements to be parsed before handling error so we can:\n // - Send computed extensions data\n // - Ping all <Error> URIs defined across VAST files\n\n // No Ad case - The parser never bump into an <Ad> element\n if (vastResponse.ads.length === 0) {\n this.trackVastError(vastResponse.errorURLTemplates, { ERRORCODE: 303 });\n } else {\n for (let index = vastResponse.ads.length - 1; index >= 0; index--) {\n // - Error encountred while parsing\n // - No Creative case - The parser has dealt with soma <Ad><Wrapper> or/and an <Ad><Inline> elements\n // but no creative was found\n const ad = vastResponse.ads[index];\n if (ad.errorCode || ad.creatives.length === 0) {\n this.trackVastError(\n ad.errorURLTemplates.concat(vastResponse.errorURLTemplates),\n { ERRORCODE: ad.errorCode || 303 },\n { ERRORMESSAGE: ad.errorMessage || '' },\n { extensions: ad.extensions },\n { system: ad.system }\n );\n vastResponse.ads.splice(index, 1);\n }\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/parser/vast_parser.js","export class CompanionAd {\n constructor() {\n this.id = null;\n this.width = 0;\n this.height = 0;\n this.type = null;\n this.staticResource = null;\n this.htmlResource = null;\n this.iframeResource = null;\n this.altText = null;\n this.companionClickThroughURLTemplate = null;\n this.companionClickTrackingURLTemplates = [];\n this.trackingEvents = {};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/companion_ad.js","import { Creative } from './creative';\n\nexport class CreativeLinear extends Creative {\n constructor(creativeAttributes = {}) {\n super(creativeAttributes);\n\n this.type = 'linear';\n this.duration = 0;\n this.skipDelay = null;\n this.mediaFiles = [];\n this.videoClickThroughURLTemplate = null;\n this.videoClickTrackingURLTemplates = [];\n this.videoCustomClickURLTemplates = [];\n this.adParameters = null;\n this.icons = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/creative/creative_linear.js","export class NonLinearAd {\n constructor() {\n this.id = null;\n this.width = 0;\n this.height = 0;\n this.expandedWidth = 0;\n this.expandedHeight = 0;\n this.scalable = true;\n this.maintainAspectRatio = true;\n this.minSuggestedDuration = 0;\n this.apiFramework = 'static';\n this.type = null;\n this.staticResource = null;\n this.htmlResource = null;\n this.iframeResource = null;\n this.nonlinearClickThroughURLTemplate = null;\n this.nonlinearClickTrackingURLTemplates = [];\n this.adParameters = null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/non_linear_ad.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/events/events.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//cdn.jwplayer.com/libraries/8DNY8ff0.js'\nconst SDK_GLOBAL = 'jwplayer'\n// TODO: figure out all cases\nconst MATCH_VIDEO_URL = /jwplayer/\nconst PLAYER_ID_PREFIX = 'jw-player-'\n\nexport class JWPlayer extends Component {\n static displayName = 'JWPlayer'\n static canPlay = url => MATCH_VIDEO_URL.test(url);\n static loopOnEnded = true\n\n callPlayer = callPlayer\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url, isReady) {\n const { onError } = this.props\n if (isReady) {\n this.player.setup({\n file: url\n })\n } else {\n getSDK(SDK_URL, SDK_GLOBAL).then(jwplayer => {\n this.player = jwplayer(this.playerID).setup({\n file: url\n })\n this.player.on('ready', this.props.onReady)\n this.player.on('play', this.props.onPlay)\n this.player.on('pause', this.props.onPause)\n this.player.on('error', onError)\n }, onError)\n }\n }\n handleUnmount () {\n this.callPlayer('remove')\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('stop')\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n getVolume () {\n return this.callPlayer('getVolume') / 100\n }\n getMuted () {\n return this.callPlayer('getMute')\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n mute = () => {\n this.callPlayer('setMute', true)\n }\n unmute = () => {\n this.callPlayer('setMute', false)\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentPosition')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div style={style} id={this.playerID} />\n )\n }\n}\n\nexport default createSinglePlayer(JWPlayer)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/JWPlayer.js","// TODO: ReactPlayer's listener logic is very shaky because if you change the function identity\n// it won't get cleaned up. This is an existing problem so we're not gonna fix it here.\nimport React, { Component } from 'react'\n\nimport { getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst PHENIX_SDK_URL = 'https://unpkg.com/phenix-web-sdk@2019.2.3/dist/phenix-web-sdk.min.js'\nconst PHENIX_SDK_GLOBAL = 'phenix-web-sdk'\n\n// TODO: Add optional auth data parameter at the end\nconst PHENIX_URL_REGEX = /^phenix:(.+?)\\|(.+?)(?:\\|(.+?))?$/i // i hate this so much\n\nfunction getPhenixSdk () {\n return getSDK(PHENIX_SDK_URL, PHENIX_SDK_GLOBAL)\n}\n\nfunction canPlay (url) {\n return PHENIX_URL_REGEX.test(url)\n}\n\nexport class PhenixPlayer extends Component {\n static displayName = 'PhenixPlayer'\n static canPlay = canPlay\n player = null\n channelExpress = null\n\n playerRef = (player) => {\n if (player === this.player) {\n return\n }\n if (this.player) {\n this.removeListeners()\n }\n this.player = player\n if (this.player) {\n this.addListeners()\n }\n }\n\n componentWillUnmount () {\n // TODO: If refs get called with null on unmount, no reason to do this\n if (this.player) {\n this.removeListeners()\n this.player = null\n }\n if (this.channelExpress) {\n this.channelExpress.dispose()\n this.channelExpress = null\n }\n }\n\n addListeners () {\n const { onReady, onPlay, onPause, onEnded, onVolumeChange, onError, playsinline, videoElementId } = this.props\n this.player.addEventListener('canplay', onReady)\n this.player.addEventListener('play', onPlay)\n this.player.addEventListener('pause', onPause)\n this.player.addEventListener('seeked', this.onSeek)\n this.player.addEventListener('ended', onEnded)\n this.player.addEventListener('error', onError)\n this.player.addEventListener('volumechange', onVolumeChange)\n // wow\n this.player.setAttribute('id', videoElementId)\n if (playsinline) {\n this.player.setAttribute('playsinline', '')\n this.player.setAttribute('webkit-playsinline', '')\n }\n }\n removeListeners () {\n const { onReady, onPlay, onPause, onEnded, onVolumeChange, onError } = this.props\n this.player.removeEventListener('canplay', onReady)\n this.player.removeEventListener('play', onPlay)\n this.player.removeEventListener('pause', onPause)\n this.player.removeEventListener('seeked', this.onSeek)\n this.player.removeEventListener('ended', onEnded)\n this.player.removeEventListener('error', onError)\n this.player.removeEventListener('volumechange', onVolumeChange)\n }\n\n onSeek = e => {\n this.props.onSeek(e.target.currentTime)\n }\n\n getPhenixBackendUri (url = this.props.url) {\n return PHENIX_URL_REGEX.exec(url)[1]\n }\n\n getPhenixChannelId (url = this.props.url) {\n return PHENIX_URL_REGEX.exec(url)[2]\n }\n\n getPhenixAuthenticationData (url = this.props.url) {\n const match = PHENIX_URL_REGEX.exec(url)[3]\n return match ? JSON.parse(match) : {}\n }\n\n load (url) {\n const backendUri = this.getPhenixBackendUri(url)\n const channelId = this.getPhenixChannelId(url)\n const authenticationData = this.getPhenixAuthenticationData(url)\n\n const joinChannelCallback = (err, response) => {\n const success = !err && response.status === 'ok'\n if (!success) {\n const error = err || new Error(`Response status: ${response.status}`)\n this.props.onError(error)\n }\n }\n\n const subscriberCallback = (err, response) => {\n const success = !err && ['ok', 'no-stream-playing'].includes(response.status)\n if (!success) {\n const error = err || new Error(`Response status: ${response.status}`)\n this.props.onError(error)\n }\n // otherwise, response.mediaStream.getStreamId() will be a thing\n }\n\n getPhenixSdk().then((phenix) => {\n // TODO: Does this check do anything?\n if (url !== this.props.url) {\n return\n }\n if (this.channelExpress) {\n this.channelExpress.dispose()\n this.channelExpress = null\n }\n this.channelExpress = new phenix.express.ChannelExpress({\n authenticationData,\n backendUri\n })\n this.channelExpress.joinChannel(\n {\n channelId,\n videoElement: this.player\n },\n joinChannelCallback,\n subscriberCallback\n )\n })\n }\n\n play () {\n const promise = this.player.play()\n if (promise) {\n promise.catch(this.props.onError)\n }\n }\n pause () {\n this.player.pause()\n }\n stop () {\n if (this.channelExpress) {\n this.channelExpress.dispose()\n this.channelExpress = null\n }\n }\n seekTo (seconds) {\n if (seconds === Infinity || this.getDuration() === Infinity) {\n return\n }\n this.player.currentTime = seconds\n }\n setVolume (fraction) {\n this.player.volume = fraction\n }\n mute = () => {\n this.player.muted = true\n }\n unmute = () => {\n this.player.muted = false\n }\n setPlaybackRate (rate) {\n this.player.playbackRate = rate\n }\n getDuration () {\n return this.player.duration\n }\n getCurrentTime () {\n return this.player.currentTime\n }\n getSecondsLoaded () {\n const { buffered } = this.player\n if (buffered.length === 0) {\n return 0\n }\n const end = buffered.end(buffered.length - 1)\n const duration = this.getDuration()\n if (end > duration) {\n return duration\n }\n return end\n }\n\n render () {\n const { playing, loop, controls, muted, width, height } = this.props\n const style = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n }\n return (\n <video\n ref={this.playerRef}\n style={style}\n preload='auto' // TODO\n autoPlay={playing} // TODO\n controls={controls} // TODO\n muted={muted}\n loop={loop}\n />\n )\n }\n}\n\nexport default createSinglePlayer(PhenixPlayer) // TODO: WTF does this even do?\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/PhenixPlayer.js","import React, { Component } from 'react'\n\nimport { propTypes, defaultProps, DEPRECATED_CONFIG_PROPS } from './props'\nimport { getConfig, omit, isEqual } from './utils'\nimport players from './players'\nimport Player from './Player'\nimport Preview from './Preview'\nimport { Iframe } from './players/Iframe'\nimport renderPreloadPlayers from './preload'\n\nconst SUPPORTED_PROPS = Object.keys(propTypes)\n\nlet customPlayers = []\n\nexport default class ReactPlayer extends Component {\n static addCustomPlayer = player => {\n customPlayers.push(player)\n }\n static removeCustomPlayers = () => {\n customPlayers = []\n }\n static displayName = 'ReactPlayer'\n static propTypes = propTypes\n static defaultProps = defaultProps\n static canPlay = url => {\n for (let Player of [ ...customPlayers, ...players ]) {\n if (Player.canPlay(url)) {\n return true\n }\n }\n return false\n }\n static canEnablePIP = url => {\n for (let Player of [ ...customPlayers, ...players ]) {\n if (Player.canEnablePIP && Player.canEnablePIP(url)) {\n return true\n }\n }\n return false\n }\n config = getConfig(this.props, defaultProps, true)\n state = {\n showPreview: !!this.props.light\n }\n componentDidMount () {\n if (this.props.progressFrequency) {\n const message = 'ReactPlayer: %cprogressFrequency%c is deprecated, please use %cprogressInterval%c instead'\n console.warn(message, 'font-weight: bold', '', 'font-weight: bold', '')\n }\n }\n shouldComponentUpdate (nextProps, nextState) {\n return !isEqual(this.props, nextProps) || !isEqual(this.state, nextState)\n }\n componentWillUpdate (nextProps) {\n this.config = getConfig(nextProps, defaultProps)\n if (!this.props.light && nextProps.light) {\n this.setState({ showPreview: true })\n }\n }\n onClickPreview = () => {\n this.setState({ showPreview: false })\n }\n getDuration = () => {\n if (!this.player) return null\n return this.player.getDuration()\n }\n getCurrentTime = () => {\n if (!this.player) return null\n return this.player.getCurrentTime()\n }\n getSecondsLoaded = () => {\n if (!this.player) return null\n return this.player.getSecondsLoaded()\n }\n getInternalPlayer = (key = 'player') => {\n if (!this.player) return null\n return this.player.getInternalPlayer(key)\n }\n seekTo = (fraction, type) => {\n if (!this.player) return null\n this.player.seekTo(fraction, type)\n }\n onReady = () => {\n this.props.onReady(this)\n }\n getActivePlayer (url) {\n for (let Player of [ ...customPlayers, ...players ]) {\n if (Player.canPlay(url)) {\n return Player\n }\n }\n // Fall back to FilePlayer if nothing else can play the URL\n return Iframe\n }\n wrapperRef = wrapper => {\n this.wrapper = wrapper\n }\n activePlayerRef = player => {\n this.player = player\n }\n renderActivePlayer (url, activePlayer) {\n if (!url) return null\n return (\n <Player\n {...this.props}\n key={activePlayer.displayName}\n ref={this.activePlayerRef}\n config={this.config}\n activePlayer={activePlayer}\n onReady={this.onReady}\n />\n )\n }\n sortPlayers (a, b) {\n // Retain player order to prevent weird iframe behaviour when switching players\n if (a && b) {\n return a.key < b.key ? -1 : 1\n }\n return 0\n }\n render () {\n const { url, controls, style, width, height, light, wrapper: Wrapper } = this.props\n const showPreview = this.state.showPreview && url\n const otherProps = omit(this.props, SUPPORTED_PROPS, DEPRECATED_CONFIG_PROPS)\n const activePlayer = this.getActivePlayer(url)\n const renderedActivePlayer = this.renderActivePlayer(url, activePlayer)\n const preloadPlayers = renderPreloadPlayers(url, controls, this.config)\n const players = [ renderedActivePlayer, ...preloadPlayers ].sort(this.sortPlayers)\n const preview = <Preview url={url} light={light} onClick={this.onClickPreview} />\n return (\n <Wrapper ref={this.wrapperRef} style={{ ...style, width, height }} {...otherProps}>\n {showPreview ? preview : players}\n </Wrapper>\n )\n }\n}\n\nexport { default as YouTube } from './players/YouTube'\nexport { default as SoundCloud } from './players/SoundCloud'\nexport { default as Vimeo } from './players/Vimeo'\nexport { default as Facebook } from './players/Facebook'\nexport { default as Streamable } from './players/Streamable'\nexport { default as FaceMask } from './players/FaceMask'\nexport { default as Wistia } from './players/Wistia'\nexport { default as Twitch } from './players/Twitch'\nexport { default as DailyMotion } from './players/DailyMotion'\nexport { default as UstreamLive } from './players/UstreamLive'\nexport { default as UstreamVideo } from './players/UstreamVideo'\nexport { default as Iframe } from './players/Iframe'\nexport { default as Mixcloud } from './players/Mixcloud'\nexport { default as FilePlayer } from './players/FilePlayer'\nexport { default as VAST } from './players/VAST'\nexport { default as JWPlayer } from './players/JWPlayer'\nexport { default as PhenixPlayer } from './players/PhenixPlayer'\n\n\n\n// WEBPACK FOOTER //\n// ./src/ReactPlayer.js","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/load-script/index.js","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.deepmerge = factory());\n}(this, (function () { 'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nreturn deepmerge_1;\n\n})));\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/deepmerge/dist/umd.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/prop-types/index.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/prop-types/factoryWithThrowingShims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/fbjs/lib/emptyFunction.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/fbjs/lib/invariant.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js","'use strict';\n\nvar utils = require('./utils');\nvar unique = utils.unique('vpaidIframe');\nvar VPAIDAdUnit = require('./VPAIDAdUnit');\n\nvar defaultTemplate = '<!DOCTYPE html>' +\n '<html lang=\"en\">' +\n '<head><meta charset=\"UTF-8\"></head>' +\n '<body style=\"margin:0;padding:0\"><div class=\"ad-element\"></div>' +\n '<script type=\"text/javascript\" src=\"{{iframeURL_JS}}\"></script>' +\n '<script type=\"text/javascript\">' +\n 'window.parent.postMessage(\\'{\"event\": \"ready\", \"id\": \"{{iframeID}}\"}\\', \\'{{origin}}\\');' +\n '</script>' +\n '</body>' +\n '</html>';\n\nvar AD_STOPPED = 'AdStopped';\n\n/**\n * This callback is displayed as global member. The callback use nodejs error-first callback style\n * @callback NodeStyleCallback\n * @param {string|null}\n * @param {undefined|object}\n */\n\n/**\n * VPAIDHTML5Client\n * @class\n *\n * @param {HTMLElement} el that will contain the iframe to load adUnit and a el to add to adUnit slot\n * @param {HTMLVideoElement} video default video element to be used by adUnit\n * @param {object} [templateConfig] template: html template to be used instead of the default, extraOptions: to be used when rendering the template\n * @param {object} [vpaidOptions] timeout: when loading adUnit\n */\nfunction VPAIDHTML5Client(el, video, templateConfig, vpaidOptions) {\n templateConfig = templateConfig || {};\n\n this._id = unique();\n this._destroyed = false;\n\n this._frameContainer = utils.createElementInEl(el, 'div');\n this._videoEl = video;\n this._vpaidOptions = vpaidOptions || {timeout: 10000};\n\n this._templateConfig = {\n template: templateConfig.template || defaultTemplate,\n extraOptions: templateConfig.extraOptions || {}\n };\n}\n\n/**\n * destroy\n *\n */\nVPAIDHTML5Client.prototype.destroy = function destroy() {\n if (this._destroyed) {\n return;\n }\n this._destroyed = true;\n $unloadPreviousAdUnit.call(this);\n};\n\n/**\n * isDestroyed\n *\n * @return {boolean}\n */\nVPAIDHTML5Client.prototype.isDestroyed = function isDestroyed() {\n return this._destroyed;\n};\n\n/**\n * loadAdUnit\n *\n * @param {string} adURL url of the js of the adUnit\n * @param {nodeStyleCallback} callback\n */\nVPAIDHTML5Client.prototype.loadAdUnit = function loadAdUnit(adURL, callback) {\n $throwIfDestroyed.call(this);\n $unloadPreviousAdUnit.call(this);\n var that = this;\n\n var frame = utils.createIframeWithContent(\n this._frameContainer,\n this._templateConfig.template,\n utils.extend({\n iframeURL_JS: adURL,\n iframeID: this.getID(),\n origin: getOrigin()\n }, this._templateConfig.extraOptions)\n );\n\n this._frame = frame;\n\n this._onLoad = utils.callbackTimeout(\n this._vpaidOptions.timeout,\n onLoad.bind(this),\n onTimeout.bind(this)\n );\n\n window.addEventListener('message', this._onLoad);\n\n function onLoad (e) {\n /*jshint validthis: false */\n //don't clear timeout\n if (e.origin !== getOrigin()) return;\n var result = JSON.parse(e.data);\n\n //don't clear timeout\n if (result.id !== that.getID()) return;\n\n var adUnit, error, createAd;\n if (!that._frame.contentWindow) {\n\n error = 'the iframe is not anymore in the DOM tree';\n\n } else {\n createAd = that._frame.contentWindow.getVPAIDAd;\n error = utils.validate(typeof createAd === 'function', 'the ad didn\\'t return a function to create an ad');\n }\n\n if (!error) {\n var adEl = that._frame.contentWindow.document.querySelector('.ad-element');\n adUnit = new VPAIDAdUnit(createAd(), adEl, that._videoEl, that._frame);\n adUnit.subscribe(AD_STOPPED, $adDestroyed.bind(that));\n error = utils.validate(adUnit.isValidVPAIDAd(), 'the add is not fully complaint with VPAID specification');\n }\n\n that._adUnit = adUnit;\n $destroyLoadListener.call(that);\n callback(error, error ? null : adUnit);\n\n //clear timeout\n return true;\n }\n\n function onTimeout() {\n callback('timeout', null);\n }\n};\n\n/**\n * unloadAdUnit\n *\n */\nVPAIDHTML5Client.prototype.unloadAdUnit = function unloadAdUnit() {\n $unloadPreviousAdUnit.call(this);\n};\n\n/**\n * getID will return the unique id\n *\n * @return {string}\n */\nVPAIDHTML5Client.prototype.getID = function () {\n return this._id;\n};\n\n\n/**\n * $removeEl\n *\n * @param {string} key\n */\nfunction $removeEl(key) {\n var el = this[key];\n if (el) {\n el.remove();\n delete this[key];\n }\n}\n\nfunction $adDestroyed() {\n $removeAdElements.call(this);\n delete this._adUnit;\n}\n\nfunction $unloadPreviousAdUnit() {\n $removeAdElements.call(this);\n $destroyAdUnit.call(this);\n}\n\nfunction $removeAdElements() {\n $removeEl.call(this, '_frame');\n $destroyLoadListener.call(this);\n}\n\n/**\n * $destroyLoadListener\n *\n */\nfunction $destroyLoadListener() {\n if (this._onLoad) {\n window.removeEventListener('message', this._onLoad);\n utils.clearCallbackTimeout(this._onLoad);\n delete this._onLoad;\n }\n}\n\n\nfunction $destroyAdUnit() {\n if (this._adUnit) {\n this._adUnit.stopAd();\n delete this._adUnit;\n }\n}\n\n/**\n * $throwIfDestroyed\n *\n */\nfunction $throwIfDestroyed() {\n if (this._destroyed) {\n throw new Error ('VPAIDHTML5Client already destroyed!');\n }\n}\n\nfunction getOrigin() {\n if( window.location.origin ) {\n return window.location.origin;\n }\n else {\n return window.location.protocol + \"//\" +\n window.location.hostname +\n (window.location.port ? ':' + window.location.port: '');\n }\n}\n\nmodule.exports = VPAIDHTML5Client;\n\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vpaid-html5-client/js/VPAIDHTML5Client.js","'use strict';\n\nvar IVPAIDAdUnit = require('./IVPAIDAdUnit');\nvar Subscriber = require('./subscriber');\nvar checkVPAIDInterface = IVPAIDAdUnit.checkVPAIDInterface;\nvar utils = require('./utils');\nvar METHODS = IVPAIDAdUnit.METHODS;\nvar ERROR = 'AdError';\nvar AD_CLICK = 'AdClickThru';\nvar FILTERED_EVENTS = IVPAIDAdUnit.EVENTS.filter(function (event) {\n return event != AD_CLICK;\n});\n\n/**\n * This callback is displayed as global member. The callback use nodejs error-first callback style\n * @callback NodeStyleCallback\n * @param {string|null}\n * @param {undefined|object}\n */\n\n\n/**\n * VPAIDAdUnit\n * @class\n *\n * @param VPAIDCreative\n * @param {HTMLElement} [el] this will be used in initAd environmentVars.slot if defined\n * @param {HTMLVideoElement} [video] this will be used in initAd environmentVars.videoSlot if defined\n */\nfunction VPAIDAdUnit(VPAIDCreative, el, video, iframe) {\n this._isValid = checkVPAIDInterface(VPAIDCreative);\n if (this._isValid) {\n this._creative = VPAIDCreative;\n this._el = el;\n this._videoEl = video;\n this._iframe = iframe;\n this._subscribers = new Subscriber();\n utils.setFullSizeStyle(el);\n $addEventsSubscribers.call(this);\n }\n}\n\nVPAIDAdUnit.prototype = Object.create(IVPAIDAdUnit.prototype);\n\n/**\n * isValidVPAIDAd will return if the VPAIDCreative passed in constructor is valid or not\n *\n * @return {boolean}\n */\nVPAIDAdUnit.prototype.isValidVPAIDAd = function isValidVPAIDAd() {\n return this._isValid;\n};\n\nIVPAIDAdUnit.METHODS.forEach(function(method) {\n //NOTE: this methods arguments order are implemented differently from the spec\n var ignores = [\n 'subscribe',\n 'unsubscribe',\n 'initAd'\n ];\n\n if (ignores.indexOf(method) !== -1) return;\n\n VPAIDAdUnit.prototype[method] = function () {\n var ariaty = IVPAIDAdUnit.prototype[method].length;\n // TODO avoid leaking arguments\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = Array.prototype.slice.call(arguments);\n var callback = (ariaty === args.length) ? args.pop() : undefined;\n\n setTimeout(function () {\n var result, error = null;\n try {\n result = this._creative[method].apply(this._creative, args);\n } catch(e) {\n error = e;\n }\n\n callOrTriggerEvent(callback, this._subscribers, error, result);\n }.bind(this), 0);\n };\n});\n\n\n/**\n * initAd concreate implementation\n *\n * @param {number} width\n * @param {number} height\n * @param {string} viewMode can be 'normal', 'thumbnail' or 'fullscreen'\n * @param {number} desiredBitrate indicates the desired bitrate in kbps\n * @param {object} [creativeData] used for additional initialization data\n * @param {object} [environmentVars] used for passing implementation-specific of js version, if el & video was used in constructor slot & videoSlot will be added to the object\n * @param {NodeStyleCallback} callback\n */\nVPAIDAdUnit.prototype.initAd = function initAd(width, height, viewMode, desiredBitrate, creativeData, environmentVars, callback) {\n creativeData = creativeData || {};\n environmentVars = utils.extend({\n slot: this._el,\n videoSlot: this._videoEl\n }, environmentVars || {});\n\n setTimeout(function () {\n var error;\n try {\n this._creative.initAd(width, height, viewMode, desiredBitrate, creativeData, environmentVars);\n } catch (e) {\n error = e;\n }\n\n callOrTriggerEvent(callback, this._subscribers, error);\n }.bind(this), 0);\n};\n\n/**\n * subscribe\n *\n * @param {string} event\n * @param {nodeStyleCallback} handler\n * @param {object} context\n */\nVPAIDAdUnit.prototype.subscribe = function subscribe(event, handler, context) {\n this._subscribers.subscribe(handler, event, context);\n};\n\n\n/**\n * unsubscribe\n *\n * @param {string} event\n * @param {nodeStyleCallback} handler\n */\nVPAIDAdUnit.prototype.unsubscribe = function unsubscribe(event, handler) {\n this._subscribers.unsubscribe(handler, event);\n};\n\n//alias\nVPAIDAdUnit.prototype.on = VPAIDAdUnit.prototype.subscribe;\nVPAIDAdUnit.prototype.off = VPAIDAdUnit.prototype.unsubscribe;\n\nIVPAIDAdUnit.GETTERS.forEach(function(getter) {\n VPAIDAdUnit.prototype[getter] = function (callback) {\n setTimeout(function () {\n\n var result, error = null;\n try {\n result = this._creative[getter]();\n } catch(e) {\n error = e;\n }\n\n callOrTriggerEvent(callback, this._subscribers, error, result);\n }.bind(this), 0);\n };\n});\n\n/**\n * setAdVolume\n *\n * @param volume\n * @param {nodeStyleCallback} callback\n */\nVPAIDAdUnit.prototype.setAdVolume = function setAdVolume(volume, callback) {\n setTimeout(function () {\n\n var result, error = null;\n try {\n this._creative.setAdVolume(volume);\n result = this._creative.getAdVolume();\n } catch(e) {\n error = e;\n }\n\n if (!error) {\n error = utils.validate(result === volume, 'failed to apply volume: ' + volume);\n }\n callOrTriggerEvent(callback, this._subscribers, error, result);\n }.bind(this), 0);\n};\n\nVPAIDAdUnit.prototype._destroy = function destroy() {\n this.stopAd();\n this._subscribers.unsubscribeAll();\n};\n\nfunction $addEventsSubscribers() {\n // some ads implement\n // so they only handle one subscriber\n // to handle this we create our one\n FILTERED_EVENTS.forEach(function (event) {\n this._creative.subscribe($trigger.bind(this, event), event);\n }.bind(this));\n\n // map the click event to be an object instead of depending of the order of the arguments\n // and to be consistent with the flash\n this._creative.subscribe($clickThruHook.bind(this), AD_CLICK);\n\n // because we are adding the element inside the iframe\n // the user is not able to click in the video\n if (this._videoEl) {\n var documentElement = this._iframe.contentDocument.documentElement;\n var videoEl = this._videoEl;\n documentElement.addEventListener('click', function(e) {\n if (e.target === documentElement) {\n videoEl.click();\n }\n });\n }\n}\n\nfunction $clickThruHook(url, id, playerHandles) {\n this._subscribers.triggerSync(AD_CLICK, {url: url, id: id, playerHandles: playerHandles});\n}\n\nfunction $trigger(event) {\n // TODO avoid leaking arguments\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n this._subscribers.trigger(event, Array.prototype.slice(arguments, 1));\n}\n\nfunction callOrTriggerEvent(callback, subscribers, error, result) {\n if (callback) {\n callback(error, result);\n } else if (error) {\n subscribers.trigger(ERROR, error);\n }\n}\n\nmodule.exports = VPAIDAdUnit;\n\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vpaid-html5-client/js/VPAIDAdUnit.js","'use strict';\n\nvar METHODS = [\n 'handshakeVersion',\n 'initAd',\n 'startAd',\n 'stopAd',\n 'skipAd', // VPAID 2.0 new method\n 'resizeAd',\n 'pauseAd',\n 'resumeAd',\n 'expandAd',\n 'collapseAd',\n 'subscribe',\n 'unsubscribe'\n];\n\nvar EVENTS = [\n 'AdLoaded',\n 'AdStarted',\n 'AdStopped',\n 'AdSkipped',\n 'AdSkippableStateChange', // VPAID 2.0 new event\n 'AdSizeChange', // VPAID 2.0 new event\n 'AdLinearChange',\n 'AdDurationChange', // VPAID 2.0 new event\n 'AdExpandedChange',\n 'AdRemainingTimeChange', // [Deprecated in 2.0] but will be still fired for backwards compatibility\n 'AdVolumeChange',\n 'AdImpression',\n 'AdVideoStart',\n 'AdVideoFirstQuartile',\n 'AdVideoMidpoint',\n 'AdVideoThirdQuartile',\n 'AdVideoComplete',\n 'AdClickThru',\n 'AdInteraction', // VPAID 2.0 new event\n 'AdUserAcceptInvitation',\n 'AdUserMinimize',\n 'AdUserClose',\n 'AdPaused',\n 'AdPlaying',\n 'AdLog',\n 'AdError'\n];\n\nvar GETTERS = [\n 'getAdLinear',\n 'getAdWidth', // VPAID 2.0 new getter\n 'getAdHeight', // VPAID 2.0 new getter\n 'getAdExpanded',\n 'getAdSkippableState', // VPAID 2.0 new getter\n 'getAdRemainingTime',\n 'getAdDuration', // VPAID 2.0 new getter\n 'getAdVolume',\n 'getAdCompanions', // VPAID 2.0 new getter\n 'getAdIcons' // VPAID 2.0 new getter\n];\n\nvar SETTERS = [\n 'setAdVolume'\n];\n\n\n/**\n * This callback is displayed as global member. The callback use nodejs error-first callback style\n * @callback NodeStyleCallback\n * @param {string|null}\n * @param {undefined|object}\n */\n\n\n/**\n * IVPAIDAdUnit\n *\n * @class\n *\n * @param {object} creative\n * @param {HTMLElement} el\n * @param {HTMLVideoElement} video\n */\nfunction IVPAIDAdUnit(creative, el, video) {}\n\n\n/**\n * handshakeVersion\n *\n * @param {string} VPAIDVersion\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.handshakeVersion = function (VPAIDVersion, callback) {};\n\n/**\n * initAd\n *\n * @param {number} width\n * @param {number} height\n * @param {string} viewMode can be 'normal', 'thumbnail' or 'fullscreen'\n * @param {number} desiredBitrate indicates the desired bitrate in kbps\n * @param {object} [creativeData] used for additional initialization data\n * @param {object} [environmentVars] used for passing implementation-specific of js version\n * @param {NodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.initAd = function(width, height, viewMode, desiredBitrate, creativeData, environmentVars, callback) {};\n\n/**\n * startAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.startAd = function(callback) {};\n\n/**\n * stopAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.stopAd = function(callback) {};\n\n/**\n * skipAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.skipAd = function(callback) {};\n\n/**\n * resizeAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.resizeAd = function(width, height, viewMode, callback) {};\n\n/**\n * pauseAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.pauseAd = function(callback) {};\n\n/**\n * resumeAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.resumeAd = function(callback) {};\n\n/**\n * expandAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.expandAd = function(callback) {};\n\n/**\n * collapseAd\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.collapseAd = function(callback) {};\n\n/**\n * subscribe\n *\n * @param {string} event\n * @param {nodeStyleCallback} handler\n * @param {object} context\n */\nIVPAIDAdUnit.prototype.subscribe = function(event, handler, context) {};\n\n/**\n * startAd\n *\n * @param {string} event\n * @param {function} handler\n */\nIVPAIDAdUnit.prototype.unsubscribe = function(event, handler) {};\n\n\n\n/**\n * getAdLinear\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdLinear = function(callback) {};\n\n/**\n * getAdWidth\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdWidth = function(callback) {};\n\n/**\n * getAdHeight\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdHeight = function(callback) {};\n\n/**\n * getAdExpanded\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdExpanded = function(callback) {};\n\n/**\n * getAdSkippableState\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdSkippableState = function(callback) {};\n\n/**\n * getAdRemainingTime\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdRemainingTime = function(callback) {};\n\n/**\n * getAdDuration\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdDuration = function(callback) {};\n\n/**\n * getAdVolume\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdVolume = function(callback) {};\n\n/**\n * getAdCompanions\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdCompanions = function(callback) {};\n\n/**\n * getAdIcons\n *\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.getAdIcons = function(callback) {};\n\n/**\n * setAdVolume\n *\n * @param {number} volume\n * @param {nodeStyleCallback} callback\n */\nIVPAIDAdUnit.prototype.setAdVolume = function(volume, callback) {};\n\naddStaticToInterface(IVPAIDAdUnit, 'METHODS', METHODS);\naddStaticToInterface(IVPAIDAdUnit, 'GETTERS', GETTERS);\naddStaticToInterface(IVPAIDAdUnit, 'SETTERS', SETTERS);\naddStaticToInterface(IVPAIDAdUnit, 'EVENTS', EVENTS);\n\n\nvar VPAID1_METHODS = METHODS.filter(function(method) {\n return ['skipAd'].indexOf(method) === -1;\n});\n\naddStaticToInterface(IVPAIDAdUnit, 'checkVPAIDInterface', function checkVPAIDInterface (creative) {\n var result = VPAID1_METHODS.every(function(key) {\n return typeof creative[key] === 'function';\n });\n return result;\n});\n\nmodule.exports = IVPAIDAdUnit;\n\nfunction addStaticToInterface(Interface, name, value) {\n Object.defineProperty(Interface, name, {\n writable: false,\n configurable: false,\n value: value\n });\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vpaid-html5-client/js/IVPAIDAdUnit.js","'use strict';\n\nfunction Subscriber() {\n this._subscribers = {};\n}\n\nSubscriber.prototype.subscribe = function subscribe(handler, eventName, context) {\n if (!this.isHandlerAttached(handler, eventName)) {\n this.get(eventName).push({handler: handler, context: context, eventName: eventName});\n }\n};\n\nSubscriber.prototype.unsubscribe = function unsubscribe(handler, eventName) {\n this._subscribers[eventName] = this.get(eventName).filter(function (subscriber) {\n return handler !== subscriber.handler;\n });\n};\n\nSubscriber.prototype.unsubscribeAll = function unsubscribeAll() {\n this._subscribers = {};\n};\n\nSubscriber.prototype.trigger = function(eventName, data) {\n var that = this;\n var subscribers = this.get(eventName)\n .concat(this.get('*'));\n\n subscribers.forEach(function (subscriber) {\n setTimeout(function () {\n if (that.isHandlerAttached(subscriber.handler, subscriber.eventName)) {\n subscriber.handler.call(subscriber.context, data);\n }\n }, 0);\n });\n};\n\nSubscriber.prototype.triggerSync = function(eventName, data) {\n var subscribers = this.get(eventName)\n .concat(this.get('*'));\n\n subscribers.forEach(function (subscriber) {\n subscriber.handler.call(subscriber.context, data);\n });\n};\n\nSubscriber.prototype.get = function get(eventName) {\n if (!this._subscribers[eventName]) {\n this._subscribers[eventName] = [];\n }\n return this._subscribers[eventName];\n};\n\nSubscriber.prototype.isHandlerAttached = function isHandlerAttached(handler, eventName) {\n return this.get(eventName).some(function(subscriber) {\n return handler === subscriber.handler;\n })\n};\n\nmodule.exports = Subscriber;\n\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vpaid-html5-client/js/subscriber.js","import { VASTParser } from './parser/vast_parser.js';\nimport { VASTClient } from './vast_client.js';\nimport { VASTTracker } from './vast_tracker.js';\n\nexport { VASTClient, VASTParser, VASTTracker };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/index.js","import { Ad } from '../ad';\nimport { AdExtension } from '../ad_extension';\nimport { AdExtensionChild } from '../ad_extension_child';\nimport { parseCreativeCompanion } from './creative_companion_parser';\nimport { parseCreativeLinear } from './creative_linear_parser';\nimport { parseCreativeNonLinear } from './creative_non_linear_parser';\nimport { parserUtils } from './parser_utils';\n\n/**\n * This module provides methods to parse a VAST Ad Element.\n */\n\n/**\n * Parses an Ad element (can either be a Wrapper or an InLine).\n * @param {Object} adElement - The VAST Ad element to parse.\n * @return {Ad}\n */\nexport function parseAd(adElement) {\n const childNodes = adElement.childNodes;\n\n for (const adTypeElementKey in childNodes) {\n const adTypeElement = childNodes[adTypeElementKey];\n\n if (['Wrapper', 'InLine'].indexOf(adTypeElement.nodeName) === -1) {\n continue;\n }\n\n parserUtils.copyNodeAttribute('id', adElement, adTypeElement);\n parserUtils.copyNodeAttribute('sequence', adElement, adTypeElement);\n\n if (adTypeElement.nodeName === 'Wrapper') {\n return parseWrapper(adTypeElement);\n } else if (adTypeElement.nodeName === 'InLine') {\n return parseInLine(adTypeElement);\n }\n }\n}\n\n/**\n * Parses an Inline element.\n * @param {Object} inLineElement - The VAST Inline element to parse.\n * @return {Ad}\n */\nfunction parseInLine(inLineElement) {\n const childNodes = inLineElement.childNodes;\n const ad = new Ad();\n ad.id = inLineElement.getAttribute('id') || null;\n ad.sequence = inLineElement.getAttribute('sequence') || null;\n\n for (const nodeKey in childNodes) {\n const node = childNodes[nodeKey];\n\n switch (node.nodeName) {\n case 'Error':\n ad.errorURLTemplates.push(parserUtils.parseNodeText(node));\n break;\n\n case 'Impression':\n ad.impressionURLTemplates.push(parserUtils.parseNodeText(node));\n break;\n\n case 'Creatives':\n parserUtils\n .childrenByName(node, 'Creative')\n .forEach(creativeElement => {\n const creativeAttributes = {\n id: creativeElement.getAttribute('id') || null,\n adId: parseCreativeAdIdAttribute(creativeElement),\n sequence: creativeElement.getAttribute('sequence') || null,\n apiFramework: creativeElement.getAttribute('apiFramework') || null\n };\n\n for (const creativeTypeElementKey in creativeElement.childNodes) {\n const creativeTypeElement =\n creativeElement.childNodes[creativeTypeElementKey];\n let parsedCreative;\n\n switch (creativeTypeElement.nodeName) {\n case 'Linear':\n parsedCreative = parseCreativeLinear(\n creativeTypeElement,\n creativeAttributes\n );\n if (parsedCreative) {\n ad.creatives.push(parsedCreative);\n }\n break;\n case 'NonLinearAds':\n parsedCreative = parseCreativeNonLinear(\n creativeTypeElement,\n creativeAttributes\n );\n if (parsedCreative) {\n ad.creatives.push(parsedCreative);\n }\n break;\n case 'CompanionAds':\n parsedCreative = parseCreativeCompanion(\n creativeTypeElement,\n creativeAttributes\n );\n if (parsedCreative) {\n ad.creatives.push(parsedCreative);\n }\n break;\n }\n }\n });\n break;\n\n case 'Extensions':\n parseExtensions(\n ad.extensions,\n parserUtils.childrenByName(node, 'Extension')\n );\n break;\n\n case 'AdSystem':\n ad.system = {\n value: parserUtils.parseNodeText(node),\n version: node.getAttribute('version') || null\n };\n break;\n\n case 'AdTitle':\n ad.title = parserUtils.parseNodeText(node);\n break;\n\n case 'Description':\n ad.description = parserUtils.parseNodeText(node);\n break;\n\n case 'Advertiser':\n ad.advertiser = parserUtils.parseNodeText(node);\n break;\n\n case 'Pricing':\n ad.pricing = {\n value: parserUtils.parseNodeText(node),\n model: node.getAttribute('model') || null,\n currency: node.getAttribute('currency') || null\n };\n break;\n\n case 'Survey':\n ad.survey = parserUtils.parseNodeText(node);\n break;\n }\n }\n\n return ad;\n}\n\n/**\n * Parses a Wrapper element without resolving the wrapped urls.\n * @param {Object} wrapperElement - The VAST Wrapper element to be parsed.\n * @return {Ad}\n */\nfunction parseWrapper(wrapperElement) {\n const ad = parseInLine(wrapperElement);\n let wrapperURLElement = parserUtils.childByName(\n wrapperElement,\n 'VASTAdTagURI'\n );\n\n if (wrapperURLElement) {\n ad.nextWrapperURL = parserUtils.parseNodeText(wrapperURLElement);\n } else {\n wrapperURLElement = parserUtils.childByName(wrapperElement, 'VASTAdTagURL');\n\n if (wrapperURLElement) {\n ad.nextWrapperURL = parserUtils.parseNodeText(\n parserUtils.childByName(wrapperURLElement, 'URL')\n );\n }\n }\n\n ad.creatives.forEach(wrapperCreativeElement => {\n if (['linear', 'nonlinear'].indexOf(wrapperCreativeElement.type) !== -1) {\n // TrackingEvents Linear / NonLinear\n if (wrapperCreativeElement.trackingEvents) {\n if (!ad.trackingEvents) {\n ad.trackingEvents = {};\n }\n if (!ad.trackingEvents[wrapperCreativeElement.type]) {\n ad.trackingEvents[wrapperCreativeElement.type] = {};\n }\n for (const eventName in wrapperCreativeElement.trackingEvents) {\n const urls = wrapperCreativeElement.trackingEvents[eventName];\n if (\n !Array.isArray(\n ad.trackingEvents[wrapperCreativeElement.type][eventName]\n )\n ) {\n ad.trackingEvents[wrapperCreativeElement.type][eventName] = [];\n }\n urls.forEach(url => {\n ad.trackingEvents[wrapperCreativeElement.type][eventName].push(url);\n });\n }\n }\n // ClickTracking\n if (wrapperCreativeElement.videoClickTrackingURLTemplates) {\n if (!Array.isArray(ad.videoClickTrackingURLTemplates)) {\n ad.videoClickTrackingURLTemplates = [];\n } // tmp property to save wrapper tracking URLs until they are merged\n wrapperCreativeElement.videoClickTrackingURLTemplates.forEach(item => {\n ad.videoClickTrackingURLTemplates.push(item);\n });\n }\n // ClickThrough\n if (wrapperCreativeElement.videoClickThroughURLTemplate) {\n ad.videoClickThroughURLTemplate =\n wrapperCreativeElement.videoClickThroughURLTemplate;\n }\n // CustomClick\n if (wrapperCreativeElement.videoCustomClickURLTemplates) {\n if (!Array.isArray(ad.videoCustomClickURLTemplates)) {\n ad.videoCustomClickURLTemplates = [];\n } // tmp property to save wrapper tracking URLs until they are merged\n wrapperCreativeElement.videoCustomClickURLTemplates.forEach(item => {\n ad.videoCustomClickURLTemplates.push(item);\n });\n }\n }\n });\n\n if (ad.nextWrapperURL) {\n return ad;\n }\n}\n\n/**\n * Parses an array of Extension elements.\n * @param {Array} collection - The array used to store the parsed extensions.\n * @param {Array} extensions - The array of extensions to parse.\n */\nfunction parseExtensions(collection, extensions) {\n extensions.forEach(extNode => {\n const ext = new AdExtension();\n const extNodeAttrs = extNode.attributes;\n const childNodes = extNode.childNodes;\n\n if (extNode.attributes) {\n for (const extNodeAttrKey in extNodeAttrs) {\n const extNodeAttr = extNodeAttrs[extNodeAttrKey];\n\n if (extNodeAttr.nodeName && extNodeAttr.nodeValue) {\n ext.attributes[extNodeAttr.nodeName] = extNodeAttr.nodeValue;\n }\n }\n }\n\n for (const childNodeKey in childNodes) {\n const childNode = childNodes[childNodeKey];\n const txt = parserUtils.parseNodeText(childNode);\n\n // ignore comments / empty value\n if (childNode.nodeName !== '#comment' && txt !== '') {\n const extChild = new AdExtensionChild();\n extChild.name = childNode.nodeName;\n extChild.value = txt;\n\n if (childNode.attributes) {\n const childNodeAttributes = childNode.attributes;\n\n for (const extChildNodeAttrKey in childNodeAttributes) {\n const extChildNodeAttr = childNodeAttributes[extChildNodeAttrKey];\n\n extChild.attributes[extChildNodeAttr.nodeName] =\n extChildNodeAttr.nodeValue;\n }\n }\n\n ext.children.push(extChild);\n }\n }\n\n collection.push(ext);\n });\n}\n\n/**\n * Parses the creative adId Attribute.\n * @param {any} creativeElement - The creative element to retrieve the adId from.\n * @return {String|null}\n */\nfunction parseCreativeAdIdAttribute(creativeElement) {\n return (\n creativeElement.getAttribute('AdID') || // VAST 2 spec\n creativeElement.getAttribute('adID') || // VAST 3 spec\n creativeElement.getAttribute('adId') || // VAST 4 spec\n null\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/parser/ad_parser.js","export class Ad {\n constructor() {\n this.id = null;\n this.sequence = null;\n this.system = null;\n this.title = null;\n this.description = null;\n this.advertiser = null;\n this.pricing = null;\n this.survey = null;\n this.errorURLTemplates = [];\n this.impressionURLTemplates = [];\n this.creatives = [];\n this.extensions = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/ad.js","export class AdExtension {\n constructor() {\n this.attributes = {};\n this.children = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/ad_extension.js","export class AdExtensionChild {\n constructor() {\n this.name = null;\n this.value = null;\n this.attributes = {};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/ad_extension_child.js","import { CompanionAd } from '../companion_ad';\nimport { CreativeCompanion } from '../creative/creative_companion';\nimport { parserUtils } from './parser_utils';\n\n/**\n * This module provides methods to parse a VAST CompanionAd Element.\n */\n\n/**\n * Parses a CompanionAd.\n * @param {Object} creativeElement - The VAST CompanionAd element to parse.\n * @param {Object} creativeAttributes - The attributes of the CompanionAd (optional).\n * @return {CreativeCompanion}\n */\nexport function parseCreativeCompanion(creativeElement, creativeAttributes) {\n const creative = new CreativeCompanion(creativeAttributes);\n\n parserUtils\n .childrenByName(creativeElement, 'Companion')\n .forEach(companionResource => {\n const companionAd = new CompanionAd();\n companionAd.id = companionResource.getAttribute('id') || null;\n companionAd.width = companionResource.getAttribute('width');\n companionAd.height = companionResource.getAttribute('height');\n companionAd.companionClickTrackingURLTemplates = [];\n\n parserUtils\n .childrenByName(companionResource, 'HTMLResource')\n .forEach(htmlElement => {\n companionAd.type =\n htmlElement.getAttribute('creativeType') || 'text/html';\n companionAd.htmlResource = parserUtils.parseNodeText(htmlElement);\n });\n\n parserUtils\n .childrenByName(companionResource, 'IFrameResource')\n .forEach(iframeElement => {\n companionAd.type = iframeElement.getAttribute('creativeType') || 0;\n companionAd.iframeResource = parserUtils.parseNodeText(iframeElement);\n });\n\n parserUtils\n .childrenByName(companionResource, 'StaticResource')\n .forEach(staticElement => {\n companionAd.type = staticElement.getAttribute('creativeType') || 0;\n\n parserUtils\n .childrenByName(companionResource, 'AltText')\n .forEach(child => {\n companionAd.altText = parserUtils.parseNodeText(child);\n });\n\n companionAd.staticResource = parserUtils.parseNodeText(staticElement);\n });\n\n parserUtils\n .childrenByName(companionResource, 'TrackingEvents')\n .forEach(trackingEventsElement => {\n parserUtils\n .childrenByName(trackingEventsElement, 'Tracking')\n .forEach(trackingElement => {\n const eventName = trackingElement.getAttribute('event');\n const trackingURLTemplate = parserUtils.parseNodeText(\n trackingElement\n );\n if (eventName && trackingURLTemplate) {\n if (!Array.isArray(companionAd.trackingEvents[eventName])) {\n companionAd.trackingEvents[eventName] = [];\n }\n companionAd.trackingEvents[eventName].push(trackingURLTemplate);\n }\n });\n });\n\n parserUtils\n .childrenByName(companionResource, 'CompanionClickTracking')\n .forEach(clickTrackingElement => {\n companionAd.companionClickTrackingURLTemplates.push(\n parserUtils.parseNodeText(clickTrackingElement)\n );\n });\n\n companionAd.companionClickThroughURLTemplate = parserUtils.parseNodeText(\n parserUtils.childByName(companionResource, 'CompanionClickThrough')\n );\n companionAd.companionClickTrackingURLTemplate = parserUtils.parseNodeText(\n parserUtils.childByName(companionResource, 'CompanionClickTracking')\n );\n creative.variations.push(companionAd);\n });\n\n return creative;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/parser/creative_companion_parser.js","import { Creative } from './creative';\n\nexport class CreativeCompanion extends Creative {\n constructor(creativeAttributes = {}) {\n super(creativeAttributes);\n\n this.type = 'companion';\n this.variations = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/creative/creative_companion.js","import { CreativeLinear } from '../creative/creative_linear';\nimport { Icon } from '../icon';\nimport { MediaFile } from '../media_file';\nimport { parserUtils } from './parser_utils';\n\n/**\n * This module provides methods to parse a VAST Linear Element.\n */\n\n/**\n * Parses a Linear element.\n * @param {Object} creativeElement - The VAST Linear element to parse.\n * @param {any} creativeAttributes - The attributes of the Linear (optional).\n * @return {CreativeLinear}\n */\nexport function parseCreativeLinear(creativeElement, creativeAttributes) {\n let offset;\n const creative = new CreativeLinear(creativeAttributes);\n\n creative.duration = parserUtils.parseDuration(\n parserUtils.parseNodeText(\n parserUtils.childByName(creativeElement, 'Duration')\n )\n );\n const skipOffset = creativeElement.getAttribute('skipoffset');\n\n if (typeof skipOffset === 'undefined' || skipOffset === null) {\n creative.skipDelay = null;\n } else if (\n skipOffset.charAt(skipOffset.length - 1) === '%' &&\n creative.duration !== -1\n ) {\n const percent = parseInt(skipOffset, 10);\n creative.skipDelay = creative.duration * (percent / 100);\n } else {\n creative.skipDelay = parserUtils.parseDuration(skipOffset);\n }\n\n const videoClicksElement = parserUtils.childByName(\n creativeElement,\n 'VideoClicks'\n );\n if (videoClicksElement) {\n creative.videoClickThroughURLTemplate = parserUtils.parseNodeText(\n parserUtils.childByName(videoClicksElement, 'ClickThrough')\n );\n\n parserUtils\n .childrenByName(videoClicksElement, 'ClickTracking')\n .forEach(clickTrackingElement => {\n creative.videoClickTrackingURLTemplates.push(\n parserUtils.parseNodeText(clickTrackingElement)\n );\n });\n\n parserUtils\n .childrenByName(videoClicksElement, 'CustomClick')\n .forEach(customClickElement => {\n creative.videoCustomClickURLTemplates.push(\n parserUtils.parseNodeText(customClickElement)\n );\n });\n }\n\n const adParamsElement = parserUtils.childByName(\n creativeElement,\n 'AdParameters'\n );\n if (adParamsElement) {\n creative.adParameters = parserUtils.parseNodeText(adParamsElement);\n }\n\n parserUtils\n .childrenByName(creativeElement, 'TrackingEvents')\n .forEach(trackingEventsElement => {\n parserUtils\n .childrenByName(trackingEventsElement, 'Tracking')\n .forEach(trackingElement => {\n let eventName = trackingElement.getAttribute('event');\n const trackingURLTemplate = parserUtils.parseNodeText(\n trackingElement\n );\n if (eventName && trackingURLTemplate) {\n if (eventName === 'progress') {\n offset = trackingElement.getAttribute('offset');\n if (!offset) {\n return;\n }\n if (offset.charAt(offset.length - 1) === '%') {\n eventName = `progress-${offset}`;\n } else {\n eventName = `progress-${Math.round(\n parserUtils.parseDuration(offset)\n )}`;\n }\n }\n\n if (!Array.isArray(creative.trackingEvents[eventName])) {\n creative.trackingEvents[eventName] = [];\n }\n creative.trackingEvents[eventName].push(trackingURLTemplate);\n }\n });\n });\n\n parserUtils\n .childrenByName(creativeElement, 'MediaFiles')\n .forEach(mediaFilesElement => {\n parserUtils\n .childrenByName(mediaFilesElement, 'MediaFile')\n .forEach(mediaFileElement => {\n const mediaFile = new MediaFile();\n mediaFile.id = mediaFileElement.getAttribute('id');\n mediaFile.fileURL = parserUtils.parseNodeText(mediaFileElement);\n mediaFile.deliveryType = mediaFileElement.getAttribute('delivery');\n mediaFile.codec = mediaFileElement.getAttribute('codec');\n mediaFile.mimeType = mediaFileElement.getAttribute('type');\n mediaFile.apiFramework = mediaFileElement.getAttribute(\n 'apiFramework'\n );\n mediaFile.bitrate = parseInt(\n mediaFileElement.getAttribute('bitrate') || 0\n );\n mediaFile.minBitrate = parseInt(\n mediaFileElement.getAttribute('minBitrate') || 0\n );\n mediaFile.maxBitrate = parseInt(\n mediaFileElement.getAttribute('maxBitrate') || 0\n );\n mediaFile.width = parseInt(\n mediaFileElement.getAttribute('width') || 0\n );\n mediaFile.height = parseInt(\n mediaFileElement.getAttribute('height') || 0\n );\n\n let scalable = mediaFileElement.getAttribute('scalable');\n if (scalable && typeof scalable === 'string') {\n scalable = scalable.toLowerCase();\n if (scalable === 'true') {\n mediaFile.scalable = true;\n } else if (scalable === 'false') {\n mediaFile.scalable = false;\n }\n }\n\n let maintainAspectRatio = mediaFileElement.getAttribute(\n 'maintainAspectRatio'\n );\n if (maintainAspectRatio && typeof maintainAspectRatio === 'string') {\n maintainAspectRatio = maintainAspectRatio.toLowerCase();\n if (maintainAspectRatio === 'true') {\n mediaFile.maintainAspectRatio = true;\n } else if (maintainAspectRatio === 'false') {\n mediaFile.maintainAspectRatio = false;\n }\n }\n\n creative.mediaFiles.push(mediaFile);\n });\n });\n\n const iconsElement = parserUtils.childByName(creativeElement, 'Icons');\n if (iconsElement) {\n parserUtils.childrenByName(iconsElement, 'Icon').forEach(iconElement => {\n const icon = new Icon();\n icon.program = iconElement.getAttribute('program');\n icon.height = parseInt(iconElement.getAttribute('height') || 0);\n icon.width = parseInt(iconElement.getAttribute('width') || 0);\n icon.xPosition = parseXPosition(iconElement.getAttribute('xPosition'));\n icon.yPosition = parseYPosition(iconElement.getAttribute('yPosition'));\n icon.apiFramework = iconElement.getAttribute('apiFramework');\n icon.offset = parserUtils.parseDuration(\n iconElement.getAttribute('offset')\n );\n icon.duration = parserUtils.parseDuration(\n iconElement.getAttribute('duration')\n );\n\n parserUtils\n .childrenByName(iconElement, 'HTMLResource')\n .forEach(htmlElement => {\n icon.type = htmlElement.getAttribute('creativeType') || 'text/html';\n icon.htmlResource = parserUtils.parseNodeText(htmlElement);\n });\n\n parserUtils\n .childrenByName(iconElement, 'IFrameResource')\n .forEach(iframeElement => {\n icon.type = iframeElement.getAttribute('creativeType') || 0;\n icon.iframeResource = parserUtils.parseNodeText(iframeElement);\n });\n\n parserUtils\n .childrenByName(iconElement, 'StaticResource')\n .forEach(staticElement => {\n icon.type = staticElement.getAttribute('creativeType') || 0;\n icon.staticResource = parserUtils.parseNodeText(staticElement);\n });\n\n const iconClicksElement = parserUtils.childByName(\n iconElement,\n 'IconClicks'\n );\n if (iconClicksElement) {\n icon.iconClickThroughURLTemplate = parserUtils.parseNodeText(\n parserUtils.childByName(iconClicksElement, 'IconClickThrough')\n );\n parserUtils\n .childrenByName(iconClicksElement, 'IconClickTracking')\n .forEach(iconClickTrackingElement => {\n icon.iconClickTrackingURLTemplates.push(\n parserUtils.parseNodeText(iconClickTrackingElement)\n );\n });\n }\n\n icon.iconViewTrackingURLTemplate = parserUtils.parseNodeText(\n parserUtils.childByName(iconElement, 'IconViewTracking')\n );\n\n creative.icons.push(icon);\n });\n }\n\n return creative;\n}\n\n/**\n * Parses an horizontal position into a String ('left' or 'right') or into a Number.\n * @param {String} xPosition - The x position to parse.\n * @return {String|Number}\n */\nfunction parseXPosition(xPosition) {\n if (['left', 'right'].indexOf(xPosition) !== -1) {\n return xPosition;\n }\n\n return parseInt(xPosition || 0);\n}\n\n/**\n * Parses an vertical position into a String ('top' or 'bottom') or into a Number.\n * @param {String} yPosition - The x position to parse.\n * @return {String|Number}\n */\nfunction parseYPosition(yPosition) {\n if (['top', 'bottom'].indexOf(yPosition) !== -1) {\n return yPosition;\n }\n\n return parseInt(yPosition || 0);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/parser/creative_linear_parser.js","export class Icon {\n constructor() {\n this.program = null;\n this.height = 0;\n this.width = 0;\n this.xPosition = 0;\n this.yPosition = 0;\n this.apiFramework = null;\n this.offset = null;\n this.duration = 0;\n this.type = null;\n this.staticResource = null;\n this.htmlResource = null;\n this.iframeResource = null;\n this.iconClickThroughURLTemplate = null;\n this.iconClickTrackingURLTemplates = [];\n this.iconViewTrackingURLTemplate = null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/icon.js","export class MediaFile {\n constructor() {\n this.id = null;\n this.fileURL = null;\n this.deliveryType = 'progressive';\n this.mimeType = null;\n this.codec = null;\n this.bitrate = 0;\n this.minBitrate = 0;\n this.maxBitrate = 0;\n this.width = 0;\n this.height = 0;\n this.apiFramework = null;\n this.scalable = null;\n this.maintainAspectRatio = null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/media_file.js","import { CreativeNonLinear } from '../creative/creative_non_linear';\nimport { NonLinearAd } from '../non_linear_ad';\nimport { parserUtils } from './parser_utils';\n\n/**\n * This module provides methods to parse a VAST NonLinear Element.\n */\n\n/**\n * Parses a NonLinear element.\n * @param {any} creativeElement - The VAST NonLinear element to parse.\n * @param {any} creativeAttributes - The attributes of the NonLinear (optional).\n * @return {CreativeNonLinear}\n */\nexport function parseCreativeNonLinear(creativeElement, creativeAttributes) {\n const creative = new CreativeNonLinear(creativeAttributes);\n\n parserUtils\n .childrenByName(creativeElement, 'TrackingEvents')\n .forEach(trackingEventsElement => {\n let eventName, trackingURLTemplate;\n parserUtils\n .childrenByName(trackingEventsElement, 'Tracking')\n .forEach(trackingElement => {\n eventName = trackingElement.getAttribute('event');\n trackingURLTemplate = parserUtils.parseNodeText(trackingElement);\n\n if (eventName && trackingURLTemplate) {\n if (!Array.isArray(creative.trackingEvents[eventName])) {\n creative.trackingEvents[eventName] = [];\n }\n creative.trackingEvents[eventName].push(trackingURLTemplate);\n }\n });\n });\n\n parserUtils\n .childrenByName(creativeElement, 'NonLinear')\n .forEach(nonlinearResource => {\n const nonlinearAd = new NonLinearAd();\n nonlinearAd.id = nonlinearResource.getAttribute('id') || null;\n nonlinearAd.width = nonlinearResource.getAttribute('width');\n nonlinearAd.height = nonlinearResource.getAttribute('height');\n nonlinearAd.expandedWidth = nonlinearResource.getAttribute(\n 'expandedWidth'\n );\n nonlinearAd.expandedHeight = nonlinearResource.getAttribute(\n 'expandedHeight'\n );\n nonlinearAd.scalable = parserUtils.parseBoolean(\n nonlinearResource.getAttribute('scalable')\n );\n nonlinearAd.maintainAspectRatio = parserUtils.parseBoolean(\n nonlinearResource.getAttribute('maintainAspectRatio')\n );\n nonlinearAd.minSuggestedDuration = parserUtils.parseDuration(\n nonlinearResource.getAttribute('minSuggestedDuration')\n );\n nonlinearAd.apiFramework = nonlinearResource.getAttribute('apiFramework');\n\n parserUtils\n .childrenByName(nonlinearResource, 'HTMLResource')\n .forEach(htmlElement => {\n nonlinearAd.type =\n htmlElement.getAttribute('creativeType') || 'text/html';\n nonlinearAd.htmlResource = parserUtils.parseNodeText(htmlElement);\n });\n\n parserUtils\n .childrenByName(nonlinearResource, 'IFrameResource')\n .forEach(iframeElement => {\n nonlinearAd.type = iframeElement.getAttribute('creativeType') || 0;\n nonlinearAd.iframeResource = parserUtils.parseNodeText(iframeElement);\n });\n\n parserUtils\n .childrenByName(nonlinearResource, 'StaticResource')\n .forEach(staticElement => {\n nonlinearAd.type = staticElement.getAttribute('creativeType') || 0;\n nonlinearAd.staticResource = parserUtils.parseNodeText(staticElement);\n });\n\n const adParamsElement = parserUtils.childByName(\n nonlinearResource,\n 'AdParameters'\n );\n if (adParamsElement) {\n nonlinearAd.adParameters = parserUtils.parseNodeText(adParamsElement);\n }\n\n nonlinearAd.nonlinearClickThroughURLTemplate = parserUtils.parseNodeText(\n parserUtils.childByName(nonlinearResource, 'NonLinearClickThrough')\n );\n parserUtils\n .childrenByName(nonlinearResource, 'NonLinearClickTracking')\n .forEach(clickTrackingElement => {\n nonlinearAd.nonlinearClickTrackingURLTemplates.push(\n parserUtils.parseNodeText(clickTrackingElement)\n );\n });\n\n creative.variations.push(nonlinearAd);\n });\n\n return creative;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/parser/creative_non_linear_parser.js","import { Creative } from './creative';\n\nexport class CreativeNonLinear extends Creative {\n constructor(creativeAttributes = {}) {\n super(creativeAttributes);\n\n this.type = 'nonlinear';\n this.variations = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/creative/creative_non_linear.js","import { flashURLHandler } from './urlhandlers/flash_url_handler';\nimport { nodeURLHandler } from './urlhandlers/mock_node_url_handler';\nimport { XHRURLHandler } from './urlhandlers/xhr_url_handler';\n\nfunction get(url, options, cb) {\n // Allow skip of the options param\n if (!cb) {\n if (typeof options === 'function') {\n cb = options;\n }\n options = {};\n }\n\n if (typeof window === 'undefined' || window === null) {\n return nodeURLHandler.get(url, options, cb);\n } else if (XHRURLHandler.supported()) {\n return XHRURLHandler.get(url, options, cb);\n } else if (flashURLHandler.supported()) {\n return flashURLHandler.get(url, options, cb);\n }\n return cb(\n new Error(\n 'Current context is not supported by any of the default URLHandlers. Please provide a custom URLHandler'\n )\n );\n}\n\nexport const urlHandler = {\n get\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/url_handler.js","function xdr() {\n let request;\n if (window.XDomainRequest) {\n // eslint-disable-next-line no-undef\n request = new XDomainRequest();\n }\n return request;\n}\n\nfunction supported() {\n return !!xdr();\n}\n\nfunction get(url, options, cb) {\n const xmlDocument =\n typeof window.ActiveXObject === 'function'\n ? new window.ActiveXObject('Microsoft.XMLDOM')\n : undefined;\n\n if (xmlDocument) {\n xmlDocument.async = false;\n } else {\n return cb(\n new Error('FlashURLHandler: Microsoft.XMLDOM format not supported')\n );\n }\n\n const request = xdr();\n request.open('GET', url);\n request.timeout = options.timeout || 0;\n request.withCredentials = options.withCredentials || false;\n request.send();\n request.onprogress = function() {};\n\n request.onload = function() {\n xmlDocument.loadXML(request.responseText);\n cb(null, xmlDocument);\n };\n}\n\nexport const flashURLHandler = {\n get,\n supported\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/urlhandlers/flash_url_handler.js","// This mock module is loaded in stead of the original NodeURLHandler module\n// when bundling the library for environments which are not node.\n// This allows us to avoid bundling useless node components and have a smaller build.\nfunction get(url, options, cb) {\n cb(\n new Error('Please bundle the library for node to use the node urlHandler')\n );\n}\n\nexport const nodeURLHandler = {\n get\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/urlhandlers/mock_node_url_handler.js","function xhr() {\n try {\n const request = new window.XMLHttpRequest();\n if ('withCredentials' in request) {\n // check CORS support\n return request;\n }\n return null;\n } catch (err) {\n return null;\n }\n}\n\nfunction supported() {\n return !!xhr();\n}\n\nfunction get(url, options, cb) {\n if (window.location.protocol === 'https:' && url.indexOf('http://') === 0) {\n return cb(new Error('XHRURLHandler: Cannot go from HTTPS to HTTP.'));\n }\n\n try {\n const request = xhr();\n\n request.open('GET', url);\n request.timeout = options.timeout || 0;\n request.withCredentials = options.withCredentials || false;\n request.overrideMimeType && request.overrideMimeType('text/xml');\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n cb(null, request.responseXML);\n } else {\n cb(new Error(`XHRURLHandler: ${request.statusText}`));\n }\n }\n };\n request.send();\n } catch (error) {\n cb(new Error('XHRURLHandler: Unexpected error'));\n }\n}\n\nexport const XHRURLHandler = {\n get,\n supported\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/urlhandlers/xhr_url_handler.js","export class VASTResponse {\n constructor() {\n this.ads = [];\n this.errorURLTemplates = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/vast_response.js","import { Storage } from './util/storage';\nimport { VASTParser } from './parser/vast_parser';\n\n/**\n * This class provides methods to fetch and parse a VAST document using VASTParser.\n * In addition it provides options to skip consecutive calls based on constraints.\n * @export\n * @class VASTClient\n */\nexport class VASTClient {\n /**\n * Creates an instance of VASTClient.\n * @param {Number} cappingFreeLunch - The number of first calls to skip.\n * @param {Number} cappingMinimumTimeInterval - The minimum time interval between two consecutive calls.\n * @param {Storage} customStorage - A custom storage to use instead of the default one.\n * @constructor\n */\n constructor(cappingFreeLunch, cappingMinimumTimeInterval, customStorage) {\n this.cappingFreeLunch = cappingFreeLunch || 0;\n this.cappingMinimumTimeInterval = cappingMinimumTimeInterval || 0;\n this.defaultOptions = {\n withCredentials: false,\n timeout: 0\n };\n this.vastParser = new VASTParser();\n this.storage = customStorage || new Storage();\n\n // Init values if not already set\n if (this.lastSuccessfulAd === undefined) {\n this.lastSuccessfulAd = 0;\n }\n\n if (this.totalCalls === undefined) {\n this.totalCalls = 0;\n }\n if (this.totalCallsTimeout === undefined) {\n this.totalCallsTimeout = 0;\n }\n }\n\n getParser() {\n return this.vastParser;\n }\n\n get lastSuccessfulAd() {\n return this.storage.getItem('vast-client-last-successful-ad');\n }\n\n set lastSuccessfulAd(value) {\n this.storage.setItem('vast-client-last-successful-ad', value);\n }\n\n get totalCalls() {\n return this.storage.getItem('vast-client-total-calls');\n }\n\n set totalCalls(value) {\n this.storage.setItem('vast-client-total-calls', value);\n }\n\n get totalCallsTimeout() {\n return this.storage.getItem('vast-client-total-calls-timeout');\n }\n\n set totalCallsTimeout(value) {\n this.storage.setItem('vast-client-total-calls-timeout', value);\n }\n\n /**\n * Returns a boolean indicating if there are more ads to resolve for the current parsing.\n * @return {Boolean}\n */\n hasRemainingAds() {\n return this.vastParser.remainingAds.length > 0;\n }\n\n /**\n * Resolves the next group of ads. If all is true resolves all the remaining ads.\n * @param {Boolean} all - If true all the remaining ads are resolved\n * @return {Promise}\n */\n getNextAds(all) {\n return this.vastParser.getRemainingAds(all);\n }\n\n /**\n * Gets a parsed VAST document for the given url, applying the skipping rules defined.\n * Returns a Promise which resolves with a fully parsed VASTResponse or rejects with an Error.\n * @param {String} url - The url to use to fecth the VAST document.\n * @param {Object} options - An optional Object of parameters to be applied in the process.\n * @return {Promise}\n */\n get(url, options = {}) {\n const now = Date.now();\n options = Object.assign(this.defaultOptions, options);\n\n // By default the client resolves only the first Ad or AdPod\n if (!options.hasOwnProperty('resolveAll')) {\n options.resolveAll = false;\n }\n\n // Check totalCallsTimeout (first call + 1 hour), if older than now,\n // reset totalCalls number, by this way the client will be eligible again\n // for freelunch capping\n if (this.totalCallsTimeout < now) {\n this.totalCalls = 1;\n this.totalCallsTimeout = now + 60 * 60 * 1000;\n } else {\n this.totalCalls++;\n }\n\n return new Promise((resolve, reject) => {\n if (this.cappingFreeLunch >= this.totalCalls) {\n return reject(\n new Error(\n `VAST call canceled – FreeLunch capping not reached yet ${\n this.totalCalls\n }/${this.cappingFreeLunch}`\n )\n );\n }\n\n const timeSinceLastCall = now - this.lastSuccessfulAd;\n\n // Check timeSinceLastCall to be a positive number. If not, this mean the\n // previous was made in the future. We reset lastSuccessfulAd value\n if (timeSinceLastCall < 0) {\n this.lastSuccessfulAd = 0;\n } else if (timeSinceLastCall < this.cappingMinimumTimeInterval) {\n return reject(\n new Error(\n `VAST call canceled – (${\n this.cappingMinimumTimeInterval\n })ms minimum interval reached`\n )\n );\n }\n\n this.vastParser\n .getAndParseVAST(url, options)\n .then(response => resolve(response))\n .catch(err => reject(err));\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/vast_client.js","let storage = null;\n\n/**\n * This Object represents a default storage to be used in case no other storage is available.\n * @constant\n * @type {Object}\n */\nconst DEFAULT_STORAGE = {\n data: {},\n length: 0,\n getItem(key) {\n return this.data[key];\n },\n setItem(key, value) {\n this.data[key] = value;\n this.length = Object.keys(this.data).length;\n },\n removeItem(key) {\n delete this.data[key];\n this.length = Object.keys(this.data).length;\n },\n clear() {\n this.data = {};\n this.length = 0;\n }\n};\n\n/**\n * This class provides an wrapper interface to the a key-value storage.\n * It uses localStorage, sessionStorage or a custom storage if none of the two is available.\n * @export\n * @class Storage\n */\nexport class Storage {\n /**\n * Creates an instance of Storage.\n * @constructor\n */\n constructor() {\n this.storage = this.initStorage();\n }\n\n /**\n * Provides a singleton instance of the wrapped storage.\n * @return {Object}\n */\n initStorage() {\n if (storage) {\n return storage;\n }\n\n try {\n storage =\n typeof window !== 'undefined' && window !== null\n ? window.localStorage || window.sessionStorage\n : null;\n } catch (storageError) {\n storage = null;\n }\n\n if (!storage || this.isStorageDisabled(storage)) {\n storage = DEFAULT_STORAGE;\n storage.clear();\n }\n\n return storage;\n }\n\n /**\n * Check if storage is disabled (like in certain cases with private browsing).\n * In Safari (Mac + iOS) when private browsing is ON, localStorage is read only\n * http://spin.atomicobject.com/2013/01/23/ios-private-browsing-localstorage/\n * @param {Object} testStorage - The storage to check.\n * @return {Boolean}\n */\n isStorageDisabled(testStorage) {\n const testValue = '__VASTStorage__';\n\n try {\n testStorage.setItem(testValue, testValue);\n if (testStorage.getItem(testValue) !== testValue) {\n testStorage.removeItem(testValue);\n return true;\n }\n } catch (e) {\n return true;\n }\n\n testStorage.removeItem(testValue);\n return false;\n }\n\n /**\n * Returns the value for the given key. If the key does not exist, null is returned.\n * @param {String} key - The key to retrieve the value.\n * @return {any}\n */\n getItem(key) {\n return this.storage.getItem(key);\n }\n\n /**\n * Adds or updates the value for the given key.\n * @param {String} key - The key to modify the value.\n * @param {any} value - The value to be associated with the key.\n * @return {any}\n */\n setItem(key, value) {\n return this.storage.setItem(key, value);\n }\n\n /**\n * Removes an item for the given key.\n * @param {String} key - The key to remove the value.\n * @return {any}\n */\n removeItem(key) {\n return this.storage.removeItem(key);\n }\n\n /**\n * Removes all the items from the storage.\n */\n clear() {\n return this.storage.clear();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/util/storage.js","import { CompanionAd } from './companion_ad';\nimport { CreativeLinear } from './creative/creative_linear';\nimport { EventEmitter } from 'events';\nimport { NonLinearAd } from './non_linear_ad';\nimport { util } from './util/util';\n\n/**\n * The default skip delay used in case a custom one is not provided\n * @constant\n * @type {Number}\n */\nconst DEFAULT_SKIP_DELAY = -1;\n\n/**\n * This class provides methods to track an ad execution.\n *\n * @export\n * @class VASTTracker\n * @extends EventEmitter\n */\nexport class VASTTracker extends EventEmitter {\n /**\n * Creates an instance of VASTTracker.\n *\n * @param {VASTClient} client - An instance of VASTClient that can be updated by the tracker. [optional]\n * @param {Ad} ad - The ad to track.\n * @param {Creative} creative - The creative to track.\n * @param {CompanionAd|NonLinearAd} [variation=null] - An optional variation of the creative.\n * @constructor\n */\n constructor(client, ad, creative, variation = null) {\n super();\n this.ad = ad;\n this.creative = creative;\n this.variation = variation;\n this.muted = false;\n this.impressed = false;\n this.skippable = false;\n this.trackingEvents = {};\n // We need to save the already triggered quartiles, in order to not trigger them again\n this._alreadyTriggeredQuartiles = {};\n // Tracker listeners should be notified with some events\n // no matter if there is a tracking URL or not\n this.emitAlwaysEvents = [\n 'creativeView',\n 'start',\n 'firstQuartile',\n 'midpoint',\n 'thirdQuartile',\n 'complete',\n 'resume',\n 'pause',\n 'rewind',\n 'skip',\n 'closeLinear',\n 'close'\n ];\n\n // Duplicate the creative's trackingEvents property so we can alter it\n for (const eventName in this.creative.trackingEvents) {\n const events = this.creative.trackingEvents[eventName];\n this.trackingEvents[eventName] = events.slice(0);\n }\n\n // Nonlinear and companion creatives provide some tracking information at a variation level\n // While linear creatives provided that at a creative level. That's why we need to\n // differentiate how we retrieve some tracking information.\n if (this.creative instanceof CreativeLinear) {\n this._initLinearTracking();\n } else {\n this._initVariationTracking();\n }\n\n // If the tracker is associated with a client we add a listener to the start event\n // to update the lastSuccessfulAd property.\n if (client) {\n this.on('start', () => {\n client.lastSuccessfulAd = Date.now();\n });\n }\n }\n\n /**\n * Init the custom tracking options for linear creatives.\n *\n * @return {void}\n */\n _initLinearTracking() {\n this.linear = true;\n this.skipDelay = this.creative.skipDelay;\n\n this.setDuration(this.creative.duration);\n\n this.clickThroughURLTemplate = this.creative.videoClickThroughURLTemplate;\n this.clickTrackingURLTemplates = this.creative.videoClickTrackingURLTemplates;\n }\n\n /**\n * Init the custom tracking options for nonlinear and companion creatives.\n * These options are provided in the variation Object.\n *\n * @return {void}\n */\n _initVariationTracking() {\n this.linear = false;\n this.skipDelay = DEFAULT_SKIP_DELAY;\n\n // If no variation has been provided there's nothing else to set\n if (!this.variation) {\n return;\n }\n\n // Duplicate the variation's trackingEvents property so we can alter it\n for (const eventName in this.variation.trackingEvents) {\n const events = this.variation.trackingEvents[eventName];\n\n // If for the given eventName we already had some trackingEvents provided by the creative\n // we want to keep both the creative trackingEvents and the variation ones\n if (this.trackingEvents[eventName]) {\n this.trackingEvents[eventName] = this.trackingEvents[eventName].concat(\n events.slice(0)\n );\n } else {\n this.trackingEvents[eventName] = events.slice(0);\n }\n }\n\n if (this.variation instanceof NonLinearAd) {\n this.clickThroughURLTemplate = this.variation.nonlinearClickThroughURLTemplate;\n this.clickTrackingURLTemplates = this.variation.nonlinearClickTrackingURLTemplates;\n this.setDuration(this.variation.minSuggestedDuration);\n } else if (this.variation instanceof CompanionAd) {\n this.clickThroughURLTemplate = this.variation.companionClickThroughURLTemplate;\n this.clickTrackingURLTemplates = this.variation.companionClickTrackingURLTemplates;\n }\n }\n\n /**\n * Sets the duration of the ad and updates the quartiles based on that.\n *\n * @param {Number} duration - The duration of the ad.\n */\n setDuration(duration) {\n this.assetDuration = duration;\n // beware of key names, theses are also used as event names\n this.quartiles = {\n firstQuartile: Math.round(25 * this.assetDuration) / 100,\n midpoint: Math.round(50 * this.assetDuration) / 100,\n thirdQuartile: Math.round(75 * this.assetDuration) / 100\n };\n }\n\n /**\n * Sets the duration of the ad and updates the quartiles based on that.\n * This is required for tracking time related events.\n *\n * @param {Number} progress - Current playback time in seconds.\n * @emits VASTTracker#start\n * @emits VASTTracker#skip-countdown\n * @emits VASTTracker#progress-[0-100]%\n * @emits VASTTracker#progress-[currentTime]\n * @emits VASTTracker#rewind\n * @emits VASTTracker#firstQuartile\n * @emits VASTTracker#midpoint\n * @emits VASTTracker#thirdQuartile\n */\n setProgress(progress) {\n const skipDelay = this.skipDelay || DEFAULT_SKIP_DELAY;\n\n if (skipDelay !== -1 && !this.skippable) {\n if (skipDelay > progress) {\n this.emit('skip-countdown', skipDelay - progress);\n } else {\n this.skippable = true;\n this.emit('skip-countdown', 0);\n }\n }\n\n if (this.assetDuration > 0) {\n const events = [];\n\n if (progress > 0) {\n const percent = Math.round((progress / this.assetDuration) * 100);\n\n events.push('start');\n events.push(`progress-${percent}%`);\n events.push(`progress-${Math.round(progress)}`);\n\n for (const quartile in this.quartiles) {\n if (\n this.isQuartileReached(quartile, this.quartiles[quartile], progress)\n ) {\n events.push(quartile);\n this._alreadyTriggeredQuartiles[quartile] = true;\n }\n }\n }\n\n events.forEach(eventName => {\n this.track(eventName, true);\n });\n\n if (progress < this.progress) {\n this.track('rewind');\n }\n }\n\n this.progress = progress;\n }\n\n /**\n * Checks if a quartile has been reached without have being triggered already.\n *\n * @param {String} quartile - Quartile name\n * @param {Number} time - Time offset, when this quartile is reached in seconds.\n * @param {Number} progress - Current progress of the ads in seconds.\n *\n * @return {Boolean}\n */\n isQuartileReached(quartile, time, progress) {\n let quartileReached = false;\n // if quartile time already reached and never triggered\n if (time <= progress && !this._alreadyTriggeredQuartiles[quartile]) {\n quartileReached = true;\n }\n return quartileReached;\n }\n\n /**\n * Updates the mute state and calls the mute/unmute tracking URLs.\n *\n * @param {Boolean} muted - Indicates if the video is muted or not.\n * @emits VASTTracker#mute\n * @emits VASTTracker#unmute\n */\n setMuted(muted) {\n if (this.muted !== muted) {\n this.track(muted ? 'mute' : 'unmute');\n }\n this.muted = muted;\n }\n\n /**\n * Update the pause state and call the resume/pause tracking URLs.\n *\n * @param {Boolean} paused - Indicates if the video is paused or not.\n * @emits VASTTracker#pause\n * @emits VASTTracker#resume\n */\n setPaused(paused) {\n if (this.paused !== paused) {\n this.track(paused ? 'pause' : 'resume');\n }\n this.paused = paused;\n }\n\n /**\n * Updates the fullscreen state and calls the fullscreen tracking URLs.\n *\n * @param {Boolean} fullscreen - Indicates if the video is in fulscreen mode or not.\n * @emits VASTTracker#fullscreen\n * @emits VASTTracker#exitFullscreen\n */\n setFullscreen(fullscreen) {\n if (this.fullscreen !== fullscreen) {\n this.track(fullscreen ? 'fullscreen' : 'exitFullscreen');\n }\n this.fullscreen = fullscreen;\n }\n\n /**\n * Updates the expand state and calls the expand/collapse tracking URLs.\n *\n * @param {Boolean} expanded - Indicates if the video is expanded or not.\n * @emits VASTTracker#expand\n * @emits VASTTracker#collapse\n */\n setExpand(expanded) {\n if (this.expanded !== expanded) {\n this.track(expanded ? 'expand' : 'collapse');\n }\n this.expanded = expanded;\n }\n\n /**\n * Must be called if you want to overwrite the <Linear> Skipoffset value.\n * This will init the skip countdown duration. Then, every time setProgress() is called,\n * it will decrease the countdown and emit a skip-countdown event with the remaining time.\n * Do not call this method if you want to keep the original Skipoffset value.\n *\n * @param {Number} duration - The time in seconds until the skip button is displayed.\n */\n setSkipDelay(duration) {\n if (typeof duration === 'number') {\n this.skipDelay = duration;\n }\n }\n\n /**\n * Tracks an impression (can be called only once).\n *\n * @emits VASTTracker#creativeView\n */\n trackImpression() {\n if (!this.impressed) {\n this.impressed = true;\n this.trackURLs(this.ad.impressionURLTemplates);\n this.track('creativeView');\n }\n }\n\n /**\n * Send a request to the URI provided by the VAST <Error> element.\n * If an [ERRORCODE] macro is included, it will be substitute with errorCode.\n *\n * @param {String} errorCode - Replaces [ERRORCODE] macro. [ERRORCODE] values are listed in the VAST specification.\n * @param {Boolean} [isCustomCode=false] - Flag to allow custom values on error code.\n */\n errorWithCode(errorCode, isCustomCode = false) {\n this.trackURLs(\n this.ad.errorURLTemplates,\n { ERRORCODE: errorCode },\n { isCustomCode }\n );\n }\n\n /**\n * Must be called when the user watched the linear creative until its end.\n * Calls the complete tracking URLs.\n *\n * @emits VASTTracker#complete\n */\n complete() {\n this.track('complete');\n }\n\n /**\n * Must be called when the player or the window is closed during the ad.\n * Calls the `closeLinear` (in VAST 3.0) and `close` tracking URLs.\n *\n * @emits VASTTracker#closeLinear\n * @emits VASTTracker#close\n */\n close() {\n this.track(this.linear ? 'closeLinear' : 'close');\n }\n\n /**\n * Must be called when the skip button is clicked. Calls the skip tracking URLs.\n *\n * @emits VASTTracker#skip\n */\n skip() {\n this.track('skip');\n }\n\n /**\n * Must be called when the user clicks on the creative.\n * It calls the tracking URLs and emits a 'clickthrough' event with the resolved\n * clickthrough URL when done.\n *\n * @param {String} [fallbackClickThroughURL=null] - an optional clickThroughURL template that could be used as a fallback\n * @emits VASTTracker#clickthrough\n */\n click(fallbackClickThroughURL = null) {\n if (\n this.clickTrackingURLTemplates &&\n this.clickTrackingURLTemplates.length\n ) {\n this.trackURLs(this.clickTrackingURLTemplates);\n }\n\n // Use the provided fallbackClickThroughURL as a fallback\n const clickThroughURLTemplate =\n this.clickThroughURLTemplate || fallbackClickThroughURL;\n\n if (clickThroughURLTemplate) {\n const variables = this.linear\n ? { CONTENTPLAYHEAD: this.progressFormatted() }\n : {};\n const clickThroughURL = util.resolveURLTemplates(\n [clickThroughURLTemplate],\n variables\n )[0];\n\n this.emit('clickthrough', clickThroughURL);\n }\n }\n\n /**\n * Calls the tracking URLs for the given eventName and emits the event.\n *\n * @param {String} eventName - The name of the event.\n * @param {Boolean} [once=false] - Boolean to define if the event has to be tracked only once.\n */\n track(eventName, once = false) {\n // closeLinear event was introduced in VAST 3.0\n // Fallback to vast 2.0 close event if necessary\n if (\n eventName === 'closeLinear' &&\n !this.trackingEvents[eventName] &&\n this.trackingEvents['close']\n ) {\n eventName = 'close';\n }\n\n const trackingURLTemplates = this.trackingEvents[eventName];\n const isAlwaysEmitEvent = this.emitAlwaysEvents.indexOf(eventName) > -1;\n\n if (trackingURLTemplates) {\n this.emit(eventName, '');\n this.trackURLs(trackingURLTemplates);\n } else if (isAlwaysEmitEvent) {\n this.emit(eventName, '');\n }\n\n if (once) {\n delete this.trackingEvents[eventName];\n if (isAlwaysEmitEvent) {\n this.emitAlwaysEvents.splice(\n this.emitAlwaysEvents.indexOf(eventName),\n 1\n );\n }\n }\n }\n\n /**\n * Calls the tracking urls templates with the given variables.\n *\n * @param {Array} URLTemplates - An array of tracking url templates.\n * @param {Object} [variables={}] - An optional Object of parameters to be used in the tracking calls.\n * @param {Object} [options={}] - An optional Object of options to be used in the tracking calls.\n */\n trackURLs(URLTemplates, variables = {}, options = {}) {\n if (this.linear) {\n if (\n this.creative &&\n this.creative.mediaFiles &&\n this.creative.mediaFiles[0] &&\n this.creative.mediaFiles[0].fileURL\n ) {\n variables['ASSETURI'] = this.creative.mediaFiles[0].fileURL;\n }\n variables['CONTENTPLAYHEAD'] = this.progressFormatted();\n }\n\n util.track(URLTemplates, variables, options);\n }\n\n /**\n * Formats time progress in a readable string.\n *\n * @return {String}\n */\n progressFormatted() {\n const seconds = parseInt(this.progress);\n let h = seconds / (60 * 60);\n if (h.length < 2) {\n h = `0${h}`;\n }\n let m = (seconds / 60) % 60;\n if (m.length < 2) {\n m = `0${m}`;\n }\n let s = seconds % 60;\n if (s.length < 2) {\n s = `0${m}`;\n }\n const ms = parseInt((this.progress - seconds) * 100);\n return `${h}:${m}:${s}.${ms}`;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/vast-client/src/vast_tracker.js","import { YouTube } from './YouTube'\nimport { SoundCloud } from './SoundCloud'\nimport { Vimeo } from './Vimeo'\nimport { Facebook } from './Facebook'\nimport { Streamable } from './Streamable'\nimport { FaceMask } from './FaceMask'\nimport { Wistia } from './Wistia'\nimport { Twitch } from './Twitch'\nimport { DailyMotion } from './DailyMotion'\nimport { UstreamLive } from './UstreamLive'\nimport { UstreamVideo } from './UstreamVideo'\nimport { Iframe } from './Iframe'\nimport { Mixcloud } from './Mixcloud'\nimport { FilePlayer } from './FilePlayer'\nimport { VAST } from './VAST'\nimport { JWPlayer } from './JWPlayer'\nimport { PhenixPlayer } from './PhenixPlayer'\n\nexport default [\n PhenixPlayer,\n YouTube,\n SoundCloud,\n Vimeo,\n Facebook,\n Streamable,\n FaceMask,\n Wistia,\n Twitch,\n DailyMotion,\n Mixcloud,\n UstreamLive,\n UstreamVideo,\n JWPlayer,\n VAST,\n FilePlayer,\n Iframe\n]\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/index.js","import React, { Component } from 'react'\n\nconst ICON_SIZE = '64px'\n\nexport default class Preview extends Component {\n state = {\n image: null\n }\n componentDidMount () {\n this.fetchImage(this.props)\n }\n componentWillReceiveProps (nextProps) {\n if (this.props.url !== nextProps.url) {\n this.fetchImage(nextProps)\n }\n }\n fetchImage ({ url, light }) {\n if (typeof light === 'string') {\n this.setState({ image: light })\n return\n }\n this.setState({ image: null })\n return window.fetch(`https://noembed.com/embed?url=${url}`)\n .then(response => response.json())\n .then(data => {\n if (data.thumbnail_url) {\n const image = data.thumbnail_url.replace('height=100', 'height=480')\n this.setState({ image })\n }\n })\n }\n render () {\n const { onClick } = this.props\n const { image } = this.state\n const flexCenter = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n const styles = {\n preview: {\n width: '100%',\n height: '100%',\n backgroundImage: image ? `url(${image})` : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n cursor: 'pointer',\n ...flexCenter\n },\n shadow: {\n background: 'radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)',\n borderRadius: ICON_SIZE,\n width: ICON_SIZE,\n height: ICON_SIZE,\n ...flexCenter\n },\n playIcon: {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n marginLeft: '7px'\n }\n }\n return (\n <div style={styles.preview} className='react-player__preview' onClick={onClick}>\n <div style={styles.shadow} className='react-player__shadow'>\n <div style={styles.playIcon} className='react-player__play-icon' />\n </div>\n </div>\n )\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Preview.js","import React from 'react'\n\nimport Player from './Player'\nimport { YouTube } from './players/YouTube'\nimport { SoundCloud } from './players/SoundCloud'\nimport { Vimeo } from './players/Vimeo'\nimport { DailyMotion } from './players/DailyMotion'\n\nconst PRELOAD_PLAYERS = [\n {\n Player: YouTube,\n configKey: 'youtube',\n url: 'https://www.youtube.com/watch?v=GlCmAC4MHek'\n },\n {\n Player: SoundCloud,\n configKey: 'soundcloud',\n url: 'https://soundcloud.com/seucheu/john-cage-433-8-bit-version'\n },\n {\n Player: Vimeo,\n configKey: 'vimeo',\n url: 'https://vimeo.com/300970506'\n },\n {\n Player: DailyMotion,\n configKey: 'dailymotion',\n url: 'http://www.dailymotion.com/video/xqdpyk'\n }\n]\n\nexport default function renderPreloadPlayers (url, controls, config) {\n const players = []\n\n for (let player of PRELOAD_PLAYERS) {\n if (!player.Player.canPlay(url) && config[player.configKey].preload) {\n players.push(\n <Player\n key={player.Player.displayName}\n activePlayer={player.Player}\n url={player.url}\n controls={controls}\n playing\n muted\n style={{ display: 'none' }}\n />\n )\n }\n }\n\n return players\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/preload.js"],"sourceRoot":""}
\No newline at end of file