{"version":3,"file":"index-CdkDQ8fe.js","sources":["../../../app/javascript/src/shoppe/services/EventTracker/index.ts","../../../app/javascript/src/shoppe/services/JWPlayer/services/getJWPlayer/index.ts","../../../app/javascript/src/shoppe/services/JWPlayer/services/events/index.ts","../../../app/javascript/src/shoppe/hooks/useJWContext/index.tsx","../../../app/javascript/src/shoppe/elements/JWCustomElem/index.tsx","../../../node_modules/react-jw-player/dist/create-event-handlers/on-ad-play.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-before-play.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-full-screen.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-mute.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-play.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-time.js","../../../node_modules/react-jw-player/dist/create-event-handlers/on-video-load.js","../../../node_modules/react-jw-player/dist/create-event-handlers/index.js","../../../node_modules/react-jw-player/dist/helpers/get-curried-on-load.js","../../../node_modules/react-jw-player/dist/helpers/get-player-opts.js","../../../node_modules/react-jw-player/dist/helpers/get-event-name-from-prop.js","../../../node_modules/react-jw-player/dist/helpers/initialize.js","../../../node_modules/react-jw-player/dist/helpers/install-player-script.js","../../../node_modules/react-jw-player/dist/helpers/remove-jw-player-instance.js","../../../node_modules/react-jw-player/dist/helpers/set-jw-player-defaults.js","../../../node_modules/react-jw-player/dist/default-props.js","../../../node_modules/react-jw-player/dist/player-prop-types.js","../../../node_modules/react-jw-player/dist/react-jw-player.js","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/CustomJWPlayer/index.tsx","../../../app/javascript/src/shoppe/elements/JWSelector/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/NextControl/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/ReplayControl/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/elements/SkipControl/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/elements/Player/index.tsx","../../../app/javascript/src/shoppe/elements/JWPlayer/index.tsx"],"sourcesContent":["import snakecaseKeys from 'snakecase-keys';\nimport ahoyTrack from 'src/explore/services/ahoy';\n\nexport enum IEvent {\n CLICK = 'Click',\n VIDEO_CHANGED = 'Video Changed',\n VIDEO_PLAYED = 'Video Played',\n VIDEO_STOPPED = 'Video Stopped',\n VIDEO_WATCHED = 'Video Watched',\n}\n\nfunction createTracker>(\n name: IEvent,\n options: { snakeCase?: boolean } = { snakeCase: true }\n) {\n return ( properties: T ) => {\n ahoyTrack( name, options.snakeCase ? snakecaseKeys( properties, { deep: true }) : properties );\n };\n}\n\nexport default {\n createTracker,\n};\n","export const getJWPlayer = ( id: string ) => {\n const player = window.jwplayer && window.jwplayer( id );\n\n if ( !player || !player.id ) return null;\n\n return player;\n};\n","import EventTracker, { IEvent } from '../../../EventTracker';\nimport { getJWPlayer } from '../getJWPlayer';\n\nexport enum IEventSource {\n AUTOPLAY = 'autoplay',\n INTERACTION = 'player-interaction',\n MUTE = 'mute',\n NEXT_CARD = 'next-card',\n REPLAY = 'replay',\n SEARCH_CARD = 'search-card',\n SKIP = 'skip',\n VIDEO_CARD = 'video-card',\n}\n\nexport type IEventData = {\n merchantId?: number;\n numRewatched?: number;\n playlistId?: number;\n productId?: number;\n ref?: string;\n type?: 'clip' | 'full video';\n videoId: number;\n};\n\nconst changed = (\n source: IEventSource,\n {\n prev = {},\n next = {},\n }: {\n prev: Partial;\n next: Partial;\n },\n data: Partial = {}\n) => {\n EventTracker.createTracker( IEvent.VIDEO_CHANGED )({\n source,\n prevPlaylistId: prev.playlistId,\n prevVideoId: prev.videoId,\n prevMerchantId: prev.merchantId,\n prevProductId: prev.productId,\n nextPlaylistId: next.playlistId,\n nextVideoId: next.videoId,\n nextMerchantId: next.merchantId,\n nextProductId: next.productId,\n ...data,\n });\n};\n\nconst click = (\n element: any,\n playerId: string,\n source: IEventSource,\n data: Partial = {}\n) => {\n const player = getJWPlayer( playerId );\n\n if ( player ) {\n const videoPosition = `${Math.round(\n ( player.getPosition() / player.getDuration() || 0 ) * 100\n )}%`;\n\n EventTracker.createTracker( IEvent.CLICK )({\n class: element?.className,\n href: window.location.href,\n page: window.location.pathname,\n source,\n tag: element?.type,\n text: element?.textContent,\n videoPosition,\n ...data,\n });\n }\n};\n\nconst played = ( playerId: string, source: IEventSource, data: Partial = {}) => {\n const player = getJWPlayer( playerId );\n\n if ( player ) {\n const videoCurrentTime = player.getPosition();\n const videoDuration = player.getDuration();\n const videoPosition = `${Math.round(( videoCurrentTime / videoDuration || 0 ) * 100 )}%`;\n\n EventTracker.createTracker( IEvent.VIDEO_PLAYED )({\n source,\n videoCurrentTime,\n videoDuration,\n videoPosition,\n ...data,\n });\n }\n};\n\nconst watched = (\n playerId: string,\n position: number,\n source: IEventSource,\n data: Partial = {}\n) => {\n const player = getJWPlayer( playerId );\n\n if ( player ) {\n const videoCurrentTime = player.getPosition();\n const videoDuration = player.getDuration();\n const videoPosition = `${position}%`;\n\n EventTracker.createTracker( IEvent.VIDEO_WATCHED )({\n source,\n videoCurrentTime,\n videoDuration,\n videoPosition,\n ...data,\n });\n }\n};\n\nconst stopped = ( playerId: string, source: IEventSource, data: Partial = {}) => {\n const player = getJWPlayer( playerId );\n\n if ( player ) {\n const videoCurrentTime = player.getPosition();\n const videoDuration = player.getDuration();\n const videoPosition = `${Math.round(( videoCurrentTime / videoDuration || 0 ) * 100 )}%`;\n\n EventTracker.createTracker( IEvent.VIDEO_STOPPED )({\n source,\n videoCurrentTime,\n videoDuration,\n videoPosition,\n ...data,\n });\n }\n};\n\nexport const track = {\n changed,\n click,\n played,\n stopped,\n watched,\n};\n","import React, { useCallback, useState } from 'react';\n\nimport { getJWPlayer, track, IEventSource } from 'src/shoppe/services/JWPlayer';\n\ninterface IState {\n isReady: boolean;\n isVolumeSet: boolean;\n isComplete: boolean;\n outroCountdown: number | null;\n outroLength: number | null;\n source: IEventSource;\n}\n\ntype IUpdateContextFunc = ( value: Partial | (( prev: IState ) => IState )) => void;\n\nexport interface IContext extends IState {\n isOutro: boolean;\n playerId: string;\n track: typeof track;\n getPlayer: () => null | any;\n updateContext: IUpdateContextFunc;\n}\n\nexport const INITIAL_STATE: IState = {\n isComplete: false,\n isVolumeSet: false,\n isReady: false,\n outroCountdown: null,\n outroLength: null,\n source: IEventSource.AUTOPLAY,\n};\n\nconst INITIAL_CONTEXT: IContext = {\n ...INITIAL_STATE,\n isOutro: false,\n playerId: undefined,\n track,\n getPlayer: () => null,\n updateContext: () => null,\n};\n\nexport const JWContext = React.createContext( null );\n\nexport const JWProvider: React.FC<{ playerId: string }> = ({ playerId, children }) => {\n const [ state, setState ] = useState( INITIAL_STATE );\n\n const getPlayer = useCallback(() => getJWPlayer( playerId ), [ playerId ]);\n\n const isOutro = state.outroCountdown !== null && state.outroCountdown < state.outroLength;\n\n const updateContext: IUpdateContextFunc = useCallback(( val ) => {\n if ( typeof val === 'function' ) return setState( val );\n\n return setState(( prev ) => ({\n ...prev,\n ...val,\n }));\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useJWContext = () => {\n const context = React.useContext( JWContext );\n\n if ( context === undefined ) {\n throw new Error( 'useJWContext can only be used inside JWProvider' );\n }\n\n return context;\n};\n","/* eslint-disable consistent-return */\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { useJWContext, JWContext } from 'src/shoppe/hooks/useJWContext';\n\n/**\n * Used to insert new elements into the DOM within the context of a JWPlayer\n */\nexport const JWCustomElem: React.FC<{\n className?: string;\n id: string;\n insertAfterSelector?: string;\n children: React.ReactElement;\n}> = ({ className = '', id, insertAfterSelector = '.jw-hidden-accessibility', children }) => {\n const [ prevCustomElement, setPrevCustomElement ] = React.useState( null );\n const [ prevCustomElementId, setPrevCustomElementId ] = React.useState( null );\n\n const ctx = useJWContext();\n\n React.useEffect(() => {\n if ( !ctx.isReady ) return;\n\n let customElement = prevCustomElement;\n\n if ( prevCustomElementId !== id ) {\n // cleanup if id changed\n if ( customElement ) {\n ReactDOM.unmountComponentAtNode( customElement );\n customElement?.remove();\n }\n\n customElement = document.createElement( 'div' );\n customElement.className = className;\n customElement.id = id;\n\n setPrevCustomElementId( id );\n setPrevCustomElement( customElement );\n\n document\n .querySelector( `#${ctx.playerId} ${insertAfterSelector}` )\n ?.insertAdjacentElement( 'afterend', customElement );\n }\n\n if ( children && customElement ) {\n // share the same context of the parent provider\n ReactDOM.render(\n {children},\n customElement\n );\n }\n }, [ id, ctx, children ]);\n\n return null;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onAdPlay(event) {\n if (!this.state.adHasPlayed) {\n this.props.onAdPlay(event);\n this.setState({\n adHasPlayed: true\n });\n } else {\n this.props.onAdResume(event);\n }\n}\n\nexports.default = onAdPlay;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onBeforePlay(event, player) {\n var currentVideo = player.getPlaylistItem();\n\n if (!this.state.hasPlayed && !this.state.adHasPlayed && typeof this.props.generatePrerollUrl === 'function') {\n player.playAd(this.props.generatePrerollUrl(currentVideo));\n }\n}\n\nexports.default = onBeforePlay;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onFullScreen(event) {\n if (event.fullscreen) {\n this.props.onEnterFullScreen(event);\n } else {\n this.props.onExitFullScreen(event);\n }\n}\n\nexports.default = onFullScreen;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onMute(event) {\n if (event.mute) {\n this.props.onMute(event);\n } else {\n this.props.onUnmute(event);\n }\n}\n\nexports.default = onMute;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onPlay(event) {\n if (event.playReason === 'autostart') {\n this.setState({\n hasPlayed: true\n });\n this.props.onAutoStart(event);\n } else if (this.state.hasPlayed && (event.oldstate === 'buffering' || event.oldstate === 'paused')) {\n this.props.onResume(event);\n } else {\n this.props.onPlay(event);\n this.setState({\n hasPlayed: true\n });\n }\n}\n\nexports.default = onPlay;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onTime(event) {\n var hasFired = this.state.hasFired;\n var position = event.position,\n duration = event.duration;\n\n var hasChanged = false;\n\n this.props.onTime(event);\n\n if (!hasFired.threeSeconds && position > 3) {\n this.props.onThreeSeconds();\n hasFired.threeSeconds = true;\n hasChanged = true;\n }\n\n if (!hasFired.tenSeconds && position > 10) {\n this.props.onTenSeconds();\n hasFired.tenSeconds = true;\n hasChanged = true;\n }\n\n if (!hasFired.thirtySeconds && position > 30) {\n this.props.onThirtySeconds();\n hasFired.thirtySeconds = true;\n hasChanged = true;\n }\n\n if (!hasFired.twentyFivePercent && position / duration * 100 > 25) {\n this.props.onTwentyFivePercent();\n hasFired.twentyFivePercent = true;\n hasChanged = true;\n }\n\n if (!hasFired.fiftyPercent && position / duration * 100 > 50) {\n this.props.onFiftyPercent();\n hasFired.fiftyPercent = true;\n hasChanged = true;\n }\n\n if (!hasFired.seventyFivePercent && position / duration * 100 > 75) {\n this.props.onSeventyFivePercent();\n hasFired.seventyFivePercent = true;\n hasChanged = true;\n }\n\n if (!hasFired.ninetyFivePercent && position / duration * 100 > 95) {\n this.props.onNinetyFivePercent();\n hasFired.ninetyFivePercent = true;\n hasChanged = true;\n }\n\n if (hasChanged) {\n this.setState({\n hasFired: hasFired\n });\n }\n}\n\nexports.default = onTime;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onVideoLoad(event) {\n this.setState({\n hasFired: {}\n });\n this.props.onVideoLoad(event);\n}\n\nexports.default = onVideoLoad;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _onAdPlay = require('./on-ad-play');\n\nvar _onAdPlay2 = _interopRequireDefault(_onAdPlay);\n\nvar _onBeforePlay = require('./on-before-play');\n\nvar _onBeforePlay2 = _interopRequireDefault(_onBeforePlay);\n\nvar _onFullScreen = require('./on-full-screen');\n\nvar _onFullScreen2 = _interopRequireDefault(_onFullScreen);\n\nvar _onMute = require('./on-mute');\n\nvar _onMute2 = _interopRequireDefault(_onMute);\n\nvar _onPlay = require('./on-play');\n\nvar _onPlay2 = _interopRequireDefault(_onPlay);\n\nvar _onTime = require('./on-time');\n\nvar _onTime2 = _interopRequireDefault(_onTime);\n\nvar _onVideoLoad = require('./on-video-load');\n\nvar _onVideoLoad2 = _interopRequireDefault(_onVideoLoad);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createEventHandlers(component) {\n return {\n onAdPlay: _onAdPlay2.default.bind(component),\n onBeforePlay: _onBeforePlay2.default.bind(component),\n onFullScreen: _onFullScreen2.default.bind(component),\n onMute: _onMute2.default.bind(component),\n onPlay: _onPlay2.default.bind(component),\n onTime: _onTime2.default.bind(component),\n onVideoLoad: _onVideoLoad2.default.bind(component)\n };\n}\n\nexports.default = createEventHandlers;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction getCurriedOnLoad(existingScript, callback) {\n var previousOnload = existingScript.onload || function () {};\n var curriedOnLoad = function curriedOnLoad() {\n previousOnload();\n callback();\n };\n\n return curriedOnLoad;\n}\n\nexports.default = getCurriedOnLoad;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction getPlayerOpts(opts) {\n var aspectRatio = opts.aspectRatio,\n _opts$customProps = opts.customProps,\n customProps = _opts$customProps === undefined ? {} : _opts$customProps,\n file = opts.file,\n generatePrerollUrl = opts.generatePrerollUrl,\n image = opts.image,\n isAutoPlay = opts.isAutoPlay,\n isMuted = opts.isMuted,\n licenseKey = opts.licenseKey,\n playlist = opts.playlist;\n\n\n var hasAdvertising = !!generatePrerollUrl;\n\n var playerOpts = {};\n\n if (licenseKey) {\n playerOpts.key = licenseKey;\n }\n\n if (playlist) {\n playerOpts.playlist = playlist;\n } else if (file) {\n playerOpts.file = file;\n }\n\n if (aspectRatio && aspectRatio !== 'inherit') {\n playerOpts.aspectratio = aspectRatio;\n }\n\n if (hasAdvertising) {\n playerOpts.advertising = {\n client: 'googima',\n admessage: 'Ad — xxs left',\n autoplayadsmuted: true\n };\n }\n\n if (typeof isAutoPlay !== 'undefined') {\n playerOpts.autostart = !!isAutoPlay;\n }\n\n if (typeof isMuted !== 'undefined') {\n playerOpts.mute = !!isMuted;\n }\n\n if (image) {\n playerOpts.image = image;\n }\n\n return _extends(playerOpts, customProps);\n}\n\nexports.default = getPlayerOpts;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }\n\nvar getEventNameFromProp = function getEventNameFromProp(prop) {\n var beginsWithOn = prop.slice(0, 2) === 'on';\n\n if (beginsWithOn) {\n var eventName = prop.slice(2);\n\n var _eventName = _toArray(eventName),\n firstLetter = _eventName[0],\n rest = _eventName.slice(1);\n\n return '' + firstLetter.toLowerCase() + rest.join('');\n }\n\n return null;\n};\n\nexports.default = getEventNameFromProp;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getEventNameFromProp = require('./get-event-name-from-prop');\n\nvar _getEventNameFromProp2 = _interopRequireDefault(_getEventNameFromProp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initialize(_ref) {\n var component = _ref.component,\n player = _ref.player,\n playerOpts = _ref.playerOpts;\n\n function _onBeforePlay(event) {\n component.eventHandlers.onBeforePlay(event, player);\n }\n\n player.setup(playerOpts);\n\n var eventsToInitialize = {};\n\n Object.keys(component.props).forEach(function (prop) {\n var eventName = (0, _getEventNameFromProp2.default)(prop);\n\n if (eventName) {\n eventsToInitialize[eventName] = component.props[prop];\n }\n });\n\n eventsToInitialize.adPlay = component.eventHandlers.onAdPlay;\n eventsToInitialize.beforeComplete = component.props.onOneHundredPercent;\n eventsToInitialize.beforePlay = _onBeforePlay;\n eventsToInitialize.fullscreen = component.eventHandlers.onFullScreen;\n eventsToInitialize.mute = component.eventHandlers.onMute;\n eventsToInitialize.play = component.eventHandlers.onPlay;\n eventsToInitialize.playlistItem = component.eventHandlers.onVideoLoad;\n eventsToInitialize.time = component.eventHandlers.onTime;\n\n Object.keys(eventsToInitialize).forEach(function (event) {\n player.on(event, eventsToInitialize[event]);\n });\n}\n\nexports.default = initialize;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction installPlayerScript(_ref) {\n var context = _ref.context,\n onLoadCallback = _ref.onLoadCallback,\n scriptSrc = _ref.scriptSrc,\n uniqueScriptId = _ref.uniqueScriptId;\n\n var jwPlayerScript = context.createElement('script');\n jwPlayerScript.id = uniqueScriptId;\n jwPlayerScript.src = scriptSrc;\n jwPlayerScript.onload = onLoadCallback;\n\n context.head.appendChild(jwPlayerScript);\n}\n\nexports.default = installPlayerScript;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction removeJWPlayerInstance(playerId, context) {\n var player = context.jwplayer && context.jwplayer(playerId);\n\n if (player) {\n player.remove();\n }\n}\n\nexports.default = removeJWPlayerInstance;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-param-reassign */\n\nvar setJWPlayerDefaults = function setJWPlayerDefaults(_ref) {\n var context = _ref.context,\n playerId = _ref.playerId;\n\n var playerConfigs = context.__JW_PLAYER_CONFIGS__ = context.__JW_PLAYER_CONFIGS__ || {};\n var existingConfig = playerConfigs[playerId];\n\n if (existingConfig) {\n context.jwplayer.defaults = existingConfig;\n } else {\n playerConfigs[playerId] = context.jwplayer.defaults;\n }\n};\n\nexports.default = setJWPlayerDefaults;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar noOp = function noOp() {};\n\nvar defaultProps = {\n aspectRatio: 'inherit',\n file: '',\n isAutoPlay: undefined,\n isMuted: undefined,\n onAdPlay: noOp,\n onAdResume: noOp,\n onAdSkipped: noOp,\n onAdComplete: noOp,\n onEnterFullScreen: noOp,\n onExitFullScreen: noOp,\n onMute: noOp,\n onUnmute: noOp,\n onAutoStart: noOp,\n onResume: noOp,\n onPlay: noOp,\n onClose: noOp,\n onReady: noOp,\n onError: noOp,\n onAdPause: noOp,\n onPause: noOp,\n onVideoLoad: noOp,\n onOneHundredPercent: noOp,\n onThreeSeconds: noOp,\n onTenSeconds: noOp,\n onThirtySeconds: noOp,\n onTwentyFivePercent: noOp,\n onFiftyPercent: noOp,\n onSeventyFivePercent: noOp,\n onNinetyFivePercent: noOp,\n onTime: noOp,\n onBuffer: noOp,\n onBufferChange: noOp,\n playlist: '',\n useMultiplePlayerScripts: false\n};\n\nexports.default = defaultProps;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar propTypes = {\n aspectRatio: _propTypes2.default.oneOf(['inherit', '1:1', '16:9']),\n className: _propTypes2.default.string,\n customProps: _propTypes2.default.object,\n file: _propTypes2.default.string,\n generatePrerollUrl: _propTypes2.default.func,\n image: _propTypes2.default.string,\n isAutoPlay: _propTypes2.default.bool,\n isMuted: _propTypes2.default.bool,\n licenseKey: _propTypes2.default.string,\n onAdPause: _propTypes2.default.func,\n onAdPlay: _propTypes2.default.func,\n onAdResume: _propTypes2.default.func,\n onAdSkipped: _propTypes2.default.func,\n onAdComplete: _propTypes2.default.func,\n onAutoStart: _propTypes2.default.func,\n onEnterFullScreen: _propTypes2.default.func,\n onError: _propTypes2.default.func,\n onExitFullScreen: _propTypes2.default.func,\n onFiftyPercent: _propTypes2.default.func,\n onMute: _propTypes2.default.func,\n onNinetyFivePercent: _propTypes2.default.func,\n onOneHundredPercent: _propTypes2.default.func,\n onPause: _propTypes2.default.func,\n onPlay: _propTypes2.default.func,\n onReady: _propTypes2.default.func,\n onResume: _propTypes2.default.func,\n onSeventyFivePercent: _propTypes2.default.func,\n onTenSeconds: _propTypes2.default.func,\n onThirtySeconds: _propTypes2.default.func,\n onThreeSeconds: _propTypes2.default.func,\n onTwentyFivePercent: _propTypes2.default.func,\n onUnmute: _propTypes2.default.func,\n onVideoLoad: _propTypes2.default.func,\n onBuffer: _propTypes2.default.func,\n onBufferChange: _propTypes2.default.func,\n playerId: _propTypes2.default.string.isRequired,\n playerScript: _propTypes2.default.string.isRequired,\n playlist: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array]),\n useMultiplePlayerScripts: _propTypes2.default.bool\n};\n\nexports.default = propTypes;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactFastCompare = require('react-fast-compare');\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _createEventHandlers = require('./create-event-handlers');\n\nvar _createEventHandlers2 = _interopRequireDefault(_createEventHandlers);\n\nvar _getCurriedOnLoad = require('./helpers/get-curried-on-load');\n\nvar _getCurriedOnLoad2 = _interopRequireDefault(_getCurriedOnLoad);\n\nvar _getPlayerOpts = require('./helpers/get-player-opts');\n\nvar _getPlayerOpts2 = _interopRequireDefault(_getPlayerOpts);\n\nvar _initialize2 = require('./helpers/initialize');\n\nvar _initialize3 = _interopRequireDefault(_initialize2);\n\nvar _installPlayerScript = require('./helpers/install-player-script');\n\nvar _installPlayerScript2 = _interopRequireDefault(_installPlayerScript);\n\nvar _removeJwPlayerInstance = require('./helpers/remove-jw-player-instance');\n\nvar _removeJwPlayerInstance2 = _interopRequireDefault(_removeJwPlayerInstance);\n\nvar _setJwPlayerDefaults = require('./helpers/set-jw-player-defaults');\n\nvar _setJwPlayerDefaults2 = _interopRequireDefault(_setJwPlayerDefaults);\n\nvar _defaultProps = require('./default-props');\n\nvar _defaultProps2 = _interopRequireDefault(_defaultProps);\n\nvar _playerPropTypes = require('./player-prop-types');\n\nvar _playerPropTypes2 = _interopRequireDefault(_playerPropTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar displayName = 'ReactJWPlayer';\n\nvar ReactJWPlayer = function (_Component) {\n _inherits(ReactJWPlayer, _Component);\n\n function ReactJWPlayer(props) {\n _classCallCheck(this, ReactJWPlayer);\n\n var _this = _possibleConstructorReturn(this, (ReactJWPlayer.__proto__ || Object.getPrototypeOf(ReactJWPlayer)).call(this, props));\n\n _this.state = {\n adHasPlayed: false,\n hasPlayed: false,\n hasFired: {}\n };\n _this.eventHandlers = (0, _createEventHandlers2.default)(_this);\n _this.uniqueScriptId = 'jw-player-script';\n\n if (props.useMultiplePlayerScripts) {\n _this.uniqueScriptId += '-' + props.playerId;\n }\n\n _this.videoRef = null;\n _this._initialize = _this._initialize.bind(_this);\n _this._setVideoRef = _this._setVideoRef.bind(_this);\n return _this;\n }\n\n _createClass(ReactJWPlayer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var isJWPlayerScriptLoaded = !!window.jwplayer;\n var existingScript = document.getElementById(this.uniqueScriptId);\n var isUsingMultiplePlayerScripts = this.props.useMultiplePlayerScripts;\n\n if (!isUsingMultiplePlayerScripts && isJWPlayerScriptLoaded) {\n this._initialize();\n return;\n }\n\n if (isUsingMultiplePlayerScripts && existingScript) {\n this._initialize();\n return;\n }\n\n if (!existingScript) {\n (0, _installPlayerScript2.default)({\n context: document,\n onLoadCallback: this._initialize,\n scriptSrc: this.props.playerScript,\n uniqueScriptId: this.uniqueScriptId\n });\n } else {\n existingScript.onload = (0, _getCurriedOnLoad2.default)(existingScript, this._initialize);\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var hasFileChanged = this.props.file !== nextProps.file;\n var hasPlaylistChanged = !(0, _reactFastCompare2.default)(this.props.playlist, nextProps.playlist);\n\n return hasFileChanged || hasPlaylistChanged;\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (window.jwplayer && window.jwplayer(this.videoRef)) {\n this._initialize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n (0, _removeJwPlayerInstance2.default)(this.videoRef, window);\n }\n }, {\n key: '_initialize',\n value: function _initialize() {\n var _props = this.props,\n playerId = _props.playerId,\n useMultiplePlayerScripts = _props.useMultiplePlayerScripts;\n\n\n if (useMultiplePlayerScripts) {\n (0, _setJwPlayerDefaults2.default)({ context: window, playerId: playerId });\n }\n\n var component = this;\n var player = window.jwplayer(this.videoRef);\n if (!player) {\n // this player ref may have been destroyed already\n return;\n }\n\n var playerOpts = (0, _getPlayerOpts2.default)(this.props);\n\n (0, _initialize3.default)({ component: component, player: player, playerOpts: playerOpts });\n }\n }, {\n key: '_setVideoRef',\n value: function _setVideoRef(element) {\n this.videoRef = element;\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n { className: this.props.className },\n _react2.default.createElement('div', { id: this.props.playerId, ref: this._setVideoRef })\n );\n }\n }]);\n\n return ReactJWPlayer;\n}(_react.Component);\n\nReactJWPlayer.defaultProps = _defaultProps2.default;\nReactJWPlayer.displayName = displayName;\nReactJWPlayer.propTypes = _playerPropTypes2.default;\nexports.default = ReactJWPlayer;","import ReactJWPlayer from 'react-jw-player';\nimport PropTypes from 'prop-types';\n\nimport { getJWPlayer } from 'src/shoppe/services/JWPlayer';\n\n// We want to override the componentDidUpdate method in ReactJWPlayer to prevent\n// reinitializing the video player\n// https://github.com/micnews/react-jw-player/blob/v1.19.0/src/react-jw-player.jsx#L7\nexport class CustomJWPlayer extends ReactJWPlayer {\n componentDidUpdate() {\n getJWPlayer( this.props.playerId )?.load( this.props.file || this.props.playlist );\n }\n}\n\nexport type CustomJWPlayerProps = React.ComponentProps;\n\n// @ts-ignore change proptypes for aspect ratio to support the full set\nCustomJWPlayer.propTypes = {\n // @ts-ignore\n ...ReactJWPlayer.propTypes,\n aspectRatio: PropTypes.string,\n};\n","import * as React from 'react';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\n/**\n * Used to select and alter preexitising JW player dom elements\n */\nexport const JWSelector: React.FC<{\n className?: string;\n insertBefore?: string;\n resetEventHandlers?: boolean;\n selector: string;\n style?: Partial;\n onClick?: () => void;\n}> = ({ className, insertBefore, resetEventHandlers, selector, style, onClick }) => {\n const { isReady, playerId } = useJWContext();\n\n React.useEffect(() => {\n if ( isReady ) {\n const elem = document.querySelector( `#${playerId} ${selector}` ) as HTMLDivElement;\n const adjacent = document.querySelector( `#${playerId} ${insertBefore || selector}` );\n\n if ( elem && adjacent ) {\n const insertElem = resetEventHandlers ? ( elem.cloneNode( true ) as HTMLDivElement ) : elem;\n const created = adjacent.insertAdjacentElement( 'beforebegin', insertElem ) as HTMLDivElement;\n\n if ( resetEventHandlers ) {\n elem.remove();\n }\n\n if ( className ) created.classList.add( ...className.split( ' ' ));\n if ( onClick ) created.addEventListener( 'click', onClick );\n\n Object.keys( style || {}).forEach(( key: any ) => {\n created.style[key] = style[key];\n });\n }\n }\n }, [ className, isReady, style, onClick ]);\n\n return null;\n};\n","import * as React from 'react';\n\nimport { JWSelector } from 'src/shoppe/elements/JWSelector';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\n\nexport const NextControl = ({ onNext }: { onNext: () => void }) => {\n const { updateContext } = useJWContext();\n\n const handleClick = React.useCallback(() => {\n updateContext({ source: IEventSource.INTERACTION });\n onNext();\n }, [ onNext ]);\n\n if ( !onNext ) return null;\n\n return (\n :last-child\"\n resetEventHandlers\n selector=\".jw-icon-inline.jw-icon-next\"\n onClick={handleClick}\n />\n );\n};\n","import React from 'react';\n\nimport { JWSelector } from 'src/shoppe/elements/JWSelector';\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\n\nexport const ReplayControl = () => {\n const { isComplete, source, updateContext } = useJWContext();\n\n const handleClick = React.useCallback(() => {\n // the display icon can be a reset, pause, play, or loading\"\n // to ennsure this is a replay interaction only set if the video is complete\n updateContext({\n source: isComplete ? IEventSource.REPLAY : source,\n });\n }, [ isComplete, source ]);\n\n return ;\n};\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from 'react';\nimport cls from 'classnames';\n\nimport { JWCustomElem } from 'src/shoppe/elements/JWCustomElem';\nimport { IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { useJWContext } from 'src/shoppe/hooks/useJWContext';\nimport { SvgUse } from 'src/shoppe/elements/SvgUse';\n\ninterface SkipControlProps {\n id: string;\n className?: string;\n insertAfterSelector: string;\n tooltip?: boolean;\n}\n\nexport const SkipControl = ({ id, className, insertAfterSelector, tooltip }: SkipControlProps ) => {\n const { getPlayer, isComplete, updateContext } = useJWContext();\n\n const [ tipClass, setTipClass ] = useState( null );\n\n const handleClick = () => {\n if ( !isComplete ) {\n updateContext({\n source: IEventSource.SKIP,\n });\n getPlayer()?.seek( getPlayer().getPosition() + 10 );\n }\n };\n\n const handleMouseEnter = () => {\n setTipClass( 'jw-open' );\n };\n\n const handleMouseLeave = () => {\n setTipClass( null );\n };\n\n return (\n \n \n {/* dummy svg that gets set with css */}\n \n\n {tooltip && (\n
\n
Skip 10 Seconds
\n
\n )}\n \n
\n );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { IEventData, IEventSource } from 'src/shoppe/services/JWPlayer';\nimport { useJWContext, INITIAL_STATE } from 'src/shoppe/hooks/useJWContext';\n\nimport { CustomJWPlayer, CustomJWPlayerProps } from './elements/CustomJWPlayer';\nimport { NextControl } from './elements/NextControl';\nimport { ReplayControl } from './elements/ReplayControl';\nimport { SkipControl } from './elements/SkipControl';\n\nimport styles from './index.module.sass';\n\nexport interface Props extends Omit {\n customProps?: any;\n eventData?: IEventData;\n outroCountdown?: number;\n outroLength?: number;\n onNext?: () => void;\n}\n\nexport const Player = ({\n className,\n customProps = {},\n eventData,\n outroCountdown,\n outroLength,\n onAutoStart,\n onNext,\n onPlay,\n onReady,\n onResume,\n onTime,\n onTwentyFivePercent,\n onFiftyPercent,\n onSeventyFivePercent,\n onOneHundredPercent,\n ...props\n}: Props ) => {\n const { getPlayer, isVolumeSet, playerId, track, updateContext } = useJWContext();\n\n const [ source, setSource ] = React.useState( null );\n\n // on unmount reset context\n React.useEffect(\n () => () => {\n updateContext({ ...INITIAL_STATE, isVolumeSet });\n },\n []\n );\n\n const [ , setPrevEventData ] = React.useState>( eventData );\n\n /**\n * CHANGE HANDLER\n */\n React.useEffect(() => {\n setPrevEventData(( prev ) => {\n // ensure there is a previous video to ensure this doesn't run on mount\n if ( prev && eventData && prev.videoId !== eventData.videoId ) {\n updateContext(( ctx ) => {\n track.changed(\n ctx.source,\n {\n prev,\n next: eventData,\n },\n { ref: prev?.ref }\n );\n return ctx;\n });\n }\n\n return eventData;\n });\n }, [ eventData?.videoId ]);\n\n /**\n * SETUP HANDLER\n * most browsers won't autoplay video if they are not muted\n * mute the player on initial load to allow autoplay\n */\n const handleReady = ( event: { setupTime: number; type: string; viewable: number }) => {\n if ( props.isAutoPlay && !( isVolumeSet || props.isMuted === false )) getPlayer()?.setMute( true );\n if ( onReady ) onReady( event );\n\n updateContext({ isReady: true });\n };\n\n /**\n * OUTRO LENGTH COUNTDOWN\n */\n React.useEffect(() => {\n updateContext({\n outroCountdown,\n outroLength,\n });\n }, [ outroCountdown, outroLength, updateContext ]);\n\n /**\n * PLAY HANDLERS\n */\n const createPlayHandler = ( interaction: IEventSource, callback?: Function ) => ( e: any ) => {\n if ( callback ) callback( e );\n\n updateContext(( ctx ) => {\n if ( eventData ) {\n track.played( playerId, interaction, eventData );\n setSource( interaction );\n }\n\n return {\n ...ctx,\n isComplete: false,\n source: interaction,\n };\n });\n };\n const handleAutoplay = createPlayHandler( IEventSource.AUTOPLAY, onAutoStart );\n const handlePlay = createPlayHandler( IEventSource.INTERACTION, onPlay );\n const handleResume = createPlayHandler( IEventSource.INTERACTION, onResume );\n\n /**\n * WATCH HANDLERS\n */\n const createWatchHandler = ( position: number, callback?: Function ) => ( e: any ) => {\n if ( callback ) callback( e );\n if ( eventData ) track.watched( playerId, position, source, eventData );\n };\n const handleTwentyFivePercent = createWatchHandler( 25, onTwentyFivePercent );\n const handleFiftyPercent = createWatchHandler( 50, onFiftyPercent );\n const handleSeventyFivePercent = createWatchHandler( 75, onSeventyFivePercent );\n const handleOneHundredPercent = createWatchHandler( 100, onOneHundredPercent );\n\n /**\n * COMPLETION HANDLERS\n */\n const createCompleteHandler = ( callback?: Function ) => ( e: any ) => {\n if ( callback ) callback( e );\n\n updateContext(( ctx ) => {\n // It's better for us to compare down to the tenth of a second so that we don't\n // miss any callbacks\n const complete = Math.floor( e.currentTime * 10 ) === Math.floor( e.duration * 10 );\n let interaction: IEventSource = ctx.source;\n let remainingTime = ctx.outroCountdown;\n\n if ( complete && onNext ) {\n onNext();\n interaction = IEventSource.AUTOPLAY;\n remainingTime = null;\n }\n\n return {\n ...ctx,\n isComplete: complete,\n source: interaction,\n outroCountdown: remainingTime,\n };\n });\n };\n const handleTime = createCompleteHandler( onTime );\n\n const handleChangeVolume = () => {\n updateContext({ isVolumeSet: true });\n };\n\n return (\n <>\n \n {/* shows on mobile over player, matches classname from native rewind button */}\n \n\n {/* shows on desktop in controls, matches classname from native rewind button */}\n \n\n \n \n \n );\n};\n","import React from 'react';\n\nimport { JWProvider, JWContext } from 'src/shoppe/hooks/useJWContext';\nimport { Props, Player } from './elements/Player';\n\n// wrapper around the player to ensure it always has a Provider\nexport const JWPlayer: React.FC = ({ children, ...props }) => {\n const context = React.useContext( JWContext );\n\n let elem = (\n <>\n \n {children}\n \n );\n\n // if we detect that this JWPlayer already has context use that one\n // else we need to make sure that this instance of the player has context\n if ( !context ) {\n elem = {elem};\n }\n\n return elem;\n};\n"],"names":["IEvent","createTracker","name","options","properties","ahoyTrack","snakecaseKeys","EventTracker","getJWPlayer","id","player","IEventSource","changed","source","prev","next","data","click","element","playerId","videoPosition","played","videoCurrentTime","videoDuration","watched","position","stopped","track","INITIAL_STATE","INITIAL_CONTEXT","JWContext","React","JWProvider","children","state","setState","useState","getPlayer","useCallback","isOutro","updateContext","val","useJWContext","context","JWCustomElem","className","insertAfterSelector","prevCustomElement","setPrevCustomElement","React.useState","prevCustomElementId","setPrevCustomElementId","ctx","React.useEffect","customElement","ReactDOM","_a","onAdPlay_1","onAdPlay","event","onBeforePlay_1","onBeforePlay","currentVideo","onFullScreen_1","onFullScreen","onMute_1","onMute","onPlay_1","onPlay","onTime_1","onTime","hasFired","duration","hasChanged","onVideoLoad_1","onVideoLoad","createEventHandlers_1","_onAdPlay","require$$0","_onAdPlay2","_interopRequireDefault","_onBeforePlay","require$$1","_onBeforePlay2","_onFullScreen","require$$2","_onFullScreen2","_onMute","require$$3","_onMute2","_onPlay","require$$4","_onPlay2","_onTime","require$$5","_onTime2","_onVideoLoad","require$$6","_onVideoLoad2","obj","createEventHandlers","component","getCurriedOnLoad_1","getCurriedOnLoad","existingScript","callback","previousOnload","curriedOnLoad","getPlayerOpts_1","_extends","target","i","key","getPlayerOpts","opts","aspectRatio","_opts$customProps","customProps","file","generatePrerollUrl","image","isAutoPlay","isMuted","licenseKey","playlist","hasAdvertising","playerOpts","getEventNameFromProp_1","_toArray","arr","getEventNameFromProp","prop","beginsWithOn","eventName","_eventName","firstLetter","rest","initialize_1","_getEventNameFromProp","_getEventNameFromProp2","initialize","_ref","eventsToInitialize","installPlayerScript_1","installPlayerScript","onLoadCallback","scriptSrc","uniqueScriptId","jwPlayerScript","removeJwPlayerInstance","removeJWPlayerInstance","setJwPlayerDefaults","setJWPlayerDefaults","playerConfigs","existingConfig","defaultProps_1","noOp","defaultProps","playerPropTypes","_propTypes","_propTypes2","propTypes","reactJwPlayer","_createClass","defineProperties","props","descriptor","Constructor","protoProps","staticProps","_react","_react2","_reactFastCompare","_reactFastCompare2","_createEventHandlers","_createEventHandlers2","_getCurriedOnLoad","_getCurriedOnLoad2","_getPlayerOpts","_getPlayerOpts2","_initialize2","_initialize3","_installPlayerScript","_installPlayerScript2","_removeJwPlayerInstance","require$$7","_removeJwPlayerInstance2","_setJwPlayerDefaults","require$$8","_setJwPlayerDefaults2","_defaultProps","require$$9","_defaultProps2","_playerPropTypes","require$$10","_playerPropTypes2","_classCallCheck","instance","_possibleConstructorReturn","self","call","_inherits","subClass","superClass","displayName","ReactJWPlayer","_Component","_this","isJWPlayerScriptLoaded","isUsingMultiplePlayerScripts","nextProps","hasFileChanged","hasPlaylistChanged","_props","useMultiplePlayerScripts","_default","CustomJWPlayer","PropTypes","JWSelector","insertBefore","resetEventHandlers","selector","style","onClick","isReady","elem","adjacent","insertElem","created","NextControl","onNext","handleClick","React.useCallback","React.createElement","ReplayControl","isComplete","SkipControl","tooltip","tipClass","setTipClass","handleMouseEnter","handleMouseLeave","SvgUse","cls","Player","eventData","outroCountdown","outroLength","onAutoStart","onReady","onResume","onTwentyFivePercent","onFiftyPercent","onSeventyFivePercent","onOneHundredPercent","isVolumeSet","setSource","setPrevEventData","handleReady","createPlayHandler","interaction","e","handleAutoplay","handlePlay","handleResume","createWatchHandler","handleTwentyFivePercent","handleFiftyPercent","handleSeventyFivePercent","handleOneHundredPercent","handleTime","complete","remainingTime","handleChangeVolume","styles","JWPlayer"],"mappings":"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","x_google_ignoreList":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]}