{"version":3,"sources":["../webpack/bootstrap","../external \"React\"","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/classnames/index.js","../external \"ReactDOM\"","../node_modules/regenerator-runtime/runtime.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","service/pws-media.service.ts","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","zype/ZypeTabsSkeleton.component.tsx","shared/Skeleton.component.tsx","zype/playerButtons.ts","zype/ZypePlayerSkeleton.component.tsx","zype/ZypePlayer.component.tsx","zype/ZypeNavBar.component.tsx","zype/ZypeVideo.component.tsx","helpers/string.ts","zype/ZypePagination.component.tsx","zype/ZypeTab.component.tsx","zype/ZypeTabs.component.tsx","zype/ZypeAd.component.tsx","zype/ZypeMedia.component.tsx","RushMediaApp.tsx","index.tsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","React","hasOwn","classNames","classes","arguments","length","arg","argType","push","Array","isArray","inner","apply","join","default","ReactDOM","runtime","Op","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","method","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","makeInvokeMethod","fn","obj","err","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","reject","invoke","result","__await","then","unwrapped","error","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","toString","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","e","_typeof","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","Super","NewTarget","_setPrototypeOf","_inherits","subClass","superClass","_arrayLikeToArray","arr","len","arr2","_unsupportedIterableToArray","minLen","from","test","_slicedToArray","_arr","_n","_d","_e","_s","_i","_defineProperty","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread2","source","getOwnPropertyDescriptors","defineProperties","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","doRequest","url","a","access_token","fetch","headers","Authorization","response","json","console","PwsMediaService","show","pws_host","token","baseUrl","doMediaRequest","manifest","slug","id","includeVideos","perPage","isOnAir","resume","config","query","entries","reduce","acc","val","_toConsumableArray","Skeleton","shape","pulse","width","height","size","skeletonClass","classnames","styles","className","style","data-name","videos","tabHeaders","idx","ZypeTabSkeleton","ZypeTabsSkeleton","forwardSvg","document","createElementNS","setAttribute","poly1","poly2","appendChild","rewindSvg","poly3","poly4","ZypePlayerSkeleton","ZypePlayer","intervalId","player","rewindButton","forwardButton","videoPlayerRef","loadPlayerScript","video","apiKey","isAudio","mediaService","getIsAudio","onAir","res","script","createElement","src","autoplay","body","getPlayerRef","setInterval","doGetPlayerRef","window","theoplayer","initPlayer","clearInterval","handlePresentationChange","setState","isFullScreen","isLoading","scrollToVideoPlayer","addEventListener","playNextVideo","initAdditionalButtons","v","presentationMode","Button","THEOplayer","videojs","getComponent","extend","tooltipSpan","toggleTooltip","classList","toggle","innerText","el","handleClick","currentTime","buildCSSClass","registerComponent","ui","getChild","addChild","warn","reFetchCurVideo","prevProps","current","scrollTo","left","top","offsetTop","behavior","playerClass","ref","display","title","description","ZypeNavBar","onChange","currentTarget","onSubmit","preventDefault","onSearch","placeholder","tabs","map","tab","onClick","setActiveTab","activeTab","ZypeVideoComponent","nextVideo","setCurrentVideo","alt","thumbnails","original","max","truncated","substr","Math","min","lastIndexOf","truncateString","ZypePagination","currentPage","totalPages","goToPrevPage","goToNextPage","isLoadingNext","disabled","ZypeTab","getOnAirVideo","hasLive","debug","firstPage","pages","curPage","getNextPage","doGetNextPage","getVideos","groupSlug","resp","pagination","getNextVideo","curPageVideos","nextPageVideos","isActiveTab","searchTabConfig","categories","ZypeTabs","searchTabActive","loadingSearchResults","searchTab","doSearch","ZypeAd","useEffect","gptadslots","googletag","cmd","gads","node","getElementsByTagName","parentNode","insertBefore","defineSlot","path","setTargeting","addService","pubads","enableSingleRequest","enableAsyncRendering","enableServices","ZypeMedia","loadVideo","initializeTabs","getVideoBySlug","isAuthenticated","subscriptionRequired","location","href","pushVideoToHistory","playerApiKey","curVideo","getConfig","loadingTabs","activeTabIdx","findIndex","curTabVideos","setNextVideo","getTabByCategories","find","some","history","pushState","pageSlug","episodeSlug","handleHistoryTravel","onpopstate","RushMediaApp","showSlug","pwsHost","cookie","includes","initialVideoResponse","authenticated","shortDescription","publishedAt","duration","viewVideoResponse","Component","rootElement","getElementById","data","getAttribute","JSON","parse","render","StrictMode"],"mappings":"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","file":"static/js/main.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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","module.exports = React;","module.exports = require(\"regenerator-runtime\");\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","module.exports = ReactDOM;","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import {\n ZypeOnAirStatusResponse,\n ZypeViewVideoResponse,\n ZypeListVideosResponse,\n ZypeConfigResponse,\n ZypeIsAudioResponse,\n} from \"../zype/ZypeMedia.types\";\n\nexport interface ListVideosConfig {\n categories?: { [category: string]: string };\n categoryValue?: string;\n categoryName?: string;\n startDate?: number;\n groupSlug?: string;\n perPage?: number;\n endDate?: number;\n query?: string;\n page?: number;\n}\n\nconst doRequest = async <T = any>(url: string, access_token: string | null = null) => {\n try {\n const response = await fetch(url, {\n ...(access_token && { headers: { Authorization: `Bearer ${access_token}` } }),\n });\n return await response.json() as T;\n } catch (e) {\n console.error(\"Error while fetching PWS API:\", e);\n }\n};\n\nexport class PwsMediaService {\n private token: string | null = null;\n private baseUrl: string;\n\n constructor(show: string, pws_host: string) {\n this.baseUrl = `//${pws_host}/media/${show}`;\n }\n\n set accessToken(token: string | null) {\n this.token = token;\n }\n\n getOnAirStatus() {\n return this.doMediaRequest<ZypeOnAirStatusResponse>(\"on-air-status\");\n }\n\n getOnAirVideo(manifest = false) {\n return this.doMediaRequest<ZypeViewVideoResponse>(`on-air?manifest=${manifest}`);\n }\n\n getVideoBySlug(slug: string) {\n if (slug === \"live\") {\n return this.doMediaRequest<ZypeViewVideoResponse>(`/on-air`);\n }\n return this.doMediaRequest<ZypeViewVideoResponse>(`videos/slug/${slug}`);\n }\n\n getVideoById(id: string) {\n if (id === \"live\") {\n return this.doMediaRequest<ZypeViewVideoResponse>(`/on-air`);\n }\n return this.doMediaRequest<ZypeViewVideoResponse>(`videos/${id}`);\n }\n\n getNextVideo(id: string) {\n return this.doMediaRequest<ZypeViewVideoResponse>(`next/${id}`);\n }\n\n getConfig(includeVideos = true, perPage = 12) {\n return this.doMediaRequest<ZypeConfigResponse>(\n `config?includeVideos=${includeVideos}&perPage=${perPage}`,\n );\n }\n\n getIsAudio(id: string, isOnAir: boolean) {\n return this.doMediaRequest<ZypeIsAudioResponse>(`is-audio/${id}?onAir=${isOnAir}`);\n }\n\n getVideos(resume: string | null = null, config: ListVideosConfig = {}) {\n if (resume) {\n return this.doMediaRequest<ZypeListVideosResponse>(`videos?resume=${resume}`);\n }\n\n let query = Object.entries(config).reduce((acc, [key, val]) => acc + `&${key}=${val}`, \"\");\n if (query) {\n query = `?${query.slice(1)}`;\n }\n\n return this.doMediaRequest<ZypeListVideosResponse>(`/videos/${query}`);\n }\n\n private doMediaRequest<T>(url: string) {\n return doRequest<T>(`${this.baseUrl}/${url}`, this.token);\n }\n}\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import * as React from \"react\";\nimport { Skeleton } from \"../shared/Skeleton.component\";\n\nconst videos: React.ReactElement<HTMLElement>[] = [];\nconst tabHeaders: React.ReactElement<HTMLElement>[] = [];\n\nfor (let idx = 0; idx < 12; idx++) {\n videos.push(\n <figure className=\"component-zype-video skeleton\" key={idx}>\n <div className=\"thumb-container\">\n <Skeleton pulse={true} type=\"image\" name=\"thumbnail\" shape=\"16x9\" />\n </div>\n <figcaption>\n <Skeleton pulse={true} type=\"text\" name=\"thumbnail\" size={5} />\n </figcaption>\n </figure>,\n );\n}\n\nfor (let idx = 0; idx < 4; idx++) {\n tabHeaders.push(\n <div className={`zype-tab-header ${idx === 0 ? \"active\" : \"\"}`} key={idx} style={{ width: \"14rem\" }}>\n <Skeleton pulse={true} type=\"text\" name=\"thumbnail\" size={5} />\n </div>,\n );\n}\n\nexport function ZypeTabSkeleton() {\n return (\n <div className=\"component-zype-tab active\">\n <div className=\"videos-container\">{videos}</div>\n </div>\n );\n}\n\nexport function ZypeTabsSkeleton() {\n return (\n <div className=\"component-zype-tabs\">\n <div className=\"component-zype-nav-bar\">\n <div />\n <div className=\"tab-headers-container\">{tabHeaders}</div>\n </div>\n\n <div className=\"tabs-container\">\n <ZypeTabSkeleton />\n </div>\n </div>\n );\n}\n","import classnames from \"classnames\";\nimport * as React from \"react\";\nimport \"./Skeleton.style.scss\";\n\ninterface SkeletonProps {\n type: \"image\" | \"text\";\n shape?: \"auto\" | \"circle\" | \"square\" | \"16x9\" | \"tall\";\n pulse?: boolean;\n width?: string;\n height?: string;\n size?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n name?: string;\n}\n\nexport const Skeleton = ({\n type,\n shape = \"auto\",\n pulse = false,\n width = \"\",\n height = \"\",\n size = 0,\n name = \"\",\n}: SkeletonProps) => {\n const skeletonClass = classnames(\n \"component-skeleton\",\n `type-${type}`,\n `shape-${shape}`,\n // this is ugly, but computed property names aren't supported with current packages =(\n [\n ...(type === \"text\" && size ? [`size-${size}`] : []),\n ...(pulse ? [\"with-pulse\"] : []),\n ],\n );\n\n if (shape === \"square\" || shape === \"circle\") {\n height = width;\n }\n const styles: React.CSSProperties = {};\n if (width) {\n styles.width = width;\n }\n if (height) {\n styles.height = height;\n }\n\n return (<div className={skeletonClass} style={styles} data-name={name || null} />);\n};\n","export const forwardSvg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\nforwardSvg.setAttribute(\"height\", \"16\");\nforwardSvg.setAttribute(\"width\", \"24\");\nforwardSvg.setAttribute(\"fill\", \"none\");\nforwardSvg.setAttribute(\"viewBox\", \"0 0 28 20\");\n\nconst poly1 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\nconst poly2 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\n\npoly1.setAttribute(\"points\", \"0,0 12,8 0,16\");\npoly2.setAttribute(\"points\", \"12,0 24,8 12,16\");\n\npoly1.setAttribute(\"fill\", \"#fff\");\npoly2.setAttribute(\"fill\", \"#fff\");\n\nforwardSvg.appendChild(poly1);\nforwardSvg.appendChild(poly2);\n\nexport const rewindSvg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\nrewindSvg.setAttribute(\"width\", \"24\");\nrewindSvg.setAttribute(\"height\", \"16\");\nrewindSvg.setAttribute(\"fill\", \"none\");\nrewindSvg.setAttribute(\"viewBox\", \"0 0 28 20\");\n\nconst poly3 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\nconst poly4 = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\n\npoly3.setAttribute(\"points\", \"0,8 12,0 12,16\");\npoly4.setAttribute(\"points\", \"12,8 24,0 24,16\");\n\npoly3.setAttribute(\"fill\", \"#fff\");\npoly4.setAttribute(\"fill\", \"#fff\");\n\nrewindSvg.appendChild(poly3);\nrewindSvg.appendChild(poly4);\n","import * as React from \"react\";\nimport { Skeleton } from \"../shared/Skeleton.component\";\n\nexport function ZypePlayerSkeleton() {\n return (\n <figure className=\"component-zype-player-skeleton\">\n <div className=\"player-container\">\n <Skeleton pulse={true} type=\"image\" name=\"main image\" shape=\"16x9\" />\n </div>\n <figcaption>\n <Skeleton pulse={true} type=\"text\" name=\"Title\" size={3} />\n </figcaption>\n </figure>\n );\n}\n","import * as React from \"react\";\nimport classnames from \"classnames\";\n\nimport { rewindSvg, forwardSvg } from \"./playerButtons\";\nimport { ZypePlayerSkeleton } from \"./ZypePlayerSkeleton.component\";\nimport { ZypeVideo } from \"./ZypeMedia.types\";\nimport { PwsMediaService } from \"../service/pws-media.service\";\n\ninterface ZypePlayerProps {\n reFetchCurVideo: () => void;\n playNextVideo: () => void;\n video: ZypeVideo | null;\n apiKey: string | null;\n mediaService: PwsMediaService;\n}\n\ninterface ZypePlayerState {\n isFullScreen: boolean;\n isLoading: boolean;\n}\n\ndeclare global {\n interface Window {\n theoplayer: any;\n THEOplayer: any;\n }\n}\n\nexport class ZypePlayer extends React.PureComponent<ZypePlayerProps, ZypePlayerState> {\n intervalId!: NodeJS.Timer;\n player: any = null;\n rewindButton: any;\n forwardButton: any;\n\n private videoPlayerRef: React.RefObject<HTMLDivElement>;\n\n constructor(props: ZypePlayerProps) {\n super(props);\n\n this.videoPlayerRef = React.createRef();\n\n this.state = {\n isFullScreen: false,\n isLoading: true,\n };\n }\n\n componentDidMount() {\n if (this.props.video && this.props.apiKey) {\n if (!this.props.video.id) {\n this.props.reFetchCurVideo();\n } else {\n this.loadPlayerScript(this.props.video, this.props.apiKey);\n }\n }\n }\n\n componentDidUpdate(prevProps: ZypePlayerProps) {\n if (\n (\n !prevProps.apiKey\n || !prevProps.video\n || !prevProps.video.id\n || (this.props.video && prevProps.video.id !== this.props.video.id)\n || (this.props.video?.isAudio !== prevProps.video.isAudio)\n )\n && this.props.video\n && this.props.apiKey\n ) {\n if (!this.props.video.id) {\n this.props.reFetchCurVideo();\n } else {\n this.loadPlayerScript(this.props.video, this.props.apiKey);\n }\n }\n }\n\n loadPlayerScript = async (video: ZypeVideo, apiKey: string) => {\n if (!video.id) {\n return console.error(\"Couldn't initialize player - id is unavailable\");\n }\n\n // Handle setting player to audio-only mode\n let isAudio = \"\";\n\n // that is already set on live videos\n if (typeof video.isAudio === \"boolean\") {\n if (video.isAudio) {\n isAudio = \"&audio=true\";\n }\n } else {\n const res = await this.props.mediaService.getIsAudio(video.id, video.onAir);\n if (res && res.isAudio) {\n isAudio = \"&audio=true\";\n }\n }\n\n const script = document.createElement(\"script\");\n script.src = `https://player.zype.com/embed/${video.id}.js`\n + `?api_key=${apiKey}&autoplay=${video.autoplay}&controls=true${isAudio}`;\n\n script.async = true;\n document.body.appendChild(script);\n\n this.getPlayerRef();\n }\n\n getPlayerRef = () => {\n this.intervalId = setInterval(this.doGetPlayerRef, 500);\n }\n\n doGetPlayerRef = () => {\n if (window.theoplayer) {\n this.player = window.theoplayer;\n this.initPlayer();\n clearInterval(this.intervalId);\n }\n }\n\n handlePresentationChange = (mode?: \"fullscreen\" | \"inline\") => {\n switch (mode) {\n case \"fullscreen\":\n this.setState({ isFullScreen: true });\n break;\n case \"inline\":\n this.setState({ isFullScreen: false });\n break;\n }\n }\n\n initPlayer = () => {\n this.setState({ isLoading: false });\n this.scrollToVideoPlayer();\n this.player.addEventListener(\"ended\", this.props.playNextVideo);\n this.initAdditionalButtons();\n\n this.player.addEventListener(\n \"presentationmodechange\",\n (v: any) => this.handlePresentationChange(v.presentationMode),\n );\n }\n\n initAdditionalButtons = () => {\n // not sure how reliable that is, so better try-catch\n try {\n // build buttons only on first player load\n if (!this.rewindButton || !this.forwardButton) {\n const Button = window.THEOplayer.videojs.getComponent(\"Button\");\n\n this.rewindButton = window.THEOplayer.videojs.extend(Button, {\n constructor() {\n Button.apply(this, arguments);\n\n const tooltipSpan = document.createElement(\"span\");\n tooltipSpan.className = \"theo-button-tooltip vjs-hidden\";\n tooltipSpan.innerText = \"-10 sec\";\n\n function toggleTooltip() {\n tooltipSpan.classList.toggle(\"vjs-hidden\");\n }\n\n this.el().addEventListener(\"mouseover\", toggleTooltip);\n this.el().addEventListener(\"mouseout\", toggleTooltip);\n\n this.el().appendChild(tooltipSpan);\n this.el().appendChild(rewindSvg);\n },\n handleClick: () => {\n this.player.currentTime -= 10;\n },\n buildCSSClass: () => \"vjs-button custom-player-button rewind\",\n });\n\n this.forwardButton = window.THEOplayer.videojs.extend(Button, {\n constructor() {\n Button.apply(this, arguments);\n\n const tooltipSpan = document.createElement(\"span\");\n tooltipSpan.className = \"theo-button-tooltip vjs-hidden\";\n tooltipSpan.innerText = \"+10 sec\";\n\n function toggleTooltip() {\n tooltipSpan.classList.toggle(\"vjs-hidden\");\n }\n\n this.el().addEventListener(\"mouseover\", toggleTooltip);\n this.el().addEventListener(\"mouseout\", toggleTooltip);\n\n this.el().appendChild(tooltipSpan);\n this.el().appendChild(forwardSvg);\n },\n handleClick: () => {\n this.player.currentTime += 10;\n },\n buildCSSClass: () => {\n return \"vjs-button custom-player-button forward\";\n },\n });\n }\n\n window.THEOplayer.videojs.registerComponent(\"RewindButton\", this.rewindButton);\n this.player.ui.getChild(\"controlBar\").addChild(\"RewindButton\", {});\n window.THEOplayer.videojs.registerComponent(\"ForwardButton\", this.forwardButton);\n this.player.ui.getChild(\"controlBar\").addChild(\"ForwardButton\", {});\n\n } catch (e) {\n console.warn(\"Error initializing additional player buttons\", e);\n }\n }\n\n scrollToVideoPlayer(): void {\n if (this.videoPlayerRef.current) {\n window.scrollTo({\n left: 0,\n top: this.videoPlayerRef.current.offsetTop,\n behavior: \"smooth\",\n });\n }\n }\n\n render() {\n const playerClass = classnames(\"component-zype-player\", {\n \"player-fullscreen\": this.state.isFullScreen,\n });\n\n return(\n <div className={playerClass} ref={this.videoPlayerRef}>\n {this.state.isLoading && <ZypePlayerSkeleton />}\n\n <figure style={{ display: this.state.isLoading ? \"none\" : \"block\" }}>\n <div className=\"player-container\">\n <div id=\"zype_player\" />\n </div>\n {\n this.props.video && (\n <figcaption>\n <div className=\"title\">{this.props.video.title}</div>\n <p>{this.props.video.description}</p>\n </figcaption>\n )\n }\n </figure>\n </div>\n );\n }\n}\n","import * as React from \"react\";\n\nimport { ZypeConfigTab } from \"./ZypeMedia.types\";\n\ninterface NavBarProps {\n setActiveTab: (idx: number) => void;\n onSearch: (query: string) => void;\n tabs: ZypeConfigTab[] | null;\n activeTab: number;\n}\n\ninterface NavBarState {\n query: string;\n}\n\nexport class ZypeNavBar extends React.Component<NavBarProps, NavBarState> {\n constructor(props: NavBarProps) {\n super(props);\n\n this.state = { query: \"\" };\n }\n\n onChange = (e: React.SyntheticEvent<HTMLInputElement>) => {\n this.setState({ query: e.currentTarget.value });\n }\n\n onSubmit = (e: React.SyntheticEvent<HTMLFormElement>) => {\n e.preventDefault();\n this.props.onSearch(this.state.query);\n }\n\n render() {\n return (\n <div className=\"component-zype-nav-bar\">\n <form onSubmit={this.onSubmit}>\n <input\n type=\"text\"\n value={this.state.query}\n onChange={this.onChange}\n placeholder=\"Search videos...\"\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <div className=\"tab-headers-container\">\n { this.props.tabs && this.props.tabs.map((tab, idx) => (\n <div\n onClick={() => this.props.setActiveTab(idx)}\n className={`zype-tab-header ${this.props.activeTab === idx ? \"active\" : \"\"}`}\n key={tab.title}\n >\n {tab.title}\n </div>\n ))}\n </div>\n </div>\n );\n }\n}\n","import * as React from \"react\";\n\nimport { truncateString } from \"../helpers/string\";\nimport { ZypeVideo } from \"./ZypeMedia.types\";\n\ninterface ZypeVideoProps {\n setCurrentVideo: (video: ZypeVideo, nextVideo: ZypeVideo | null, idx: number) => void;\n nextVideo: ZypeVideo | null;\n video: ZypeVideo;\n idx: number;\n}\n\nconst FALLBACK_THUMBNAIL = \"https://i.iheart.com/v3/re/new_assets/411c7846-6373-4de6-9c48-694c7692ceec\";\n\nexport function ZypeVideoComponent({ video, nextVideo, setCurrentVideo, idx }: ZypeVideoProps) {\n return (\n <figure className=\"component-zype-video\">\n <div className=\"thumb-container\" onClick={() => setCurrentVideo(video, nextVideo, idx)}>\n <img className=\"thumbnail\" alt={video.title} src={video.thumbnails[0] ? video.thumbnails[0].url : FALLBACK_THUMBNAIL} />\n </div>\n <figcaption>\n <div className=\"title\" onClick={() => setCurrentVideo(video, nextVideo, idx)}>\n {video.title}\n </div>\n <p className=\"description\">{truncateString(video.description, 55)}</p>\n </figcaption>\n </figure>\n );\n}","export const truncateString = (original: string, max: number) => {\n if (original.length < max) {\n return original;\n }\n\n let truncated = \"\";\n truncated = original.substr(0, max - 4);\n truncated = truncated.substr(0, Math.min(truncated.length, truncated.lastIndexOf(\" \")));\n return truncated + \" ...\";\n};\n","import * as React from \"react\";\n\ninterface ZypePaginationProps {\n goToPrevPage: () => void;\n goToNextPage: () => void;\n isLoadingNext: boolean;\n currentPage: number;\n totalPages: number;\n}\n\nexport function ZypePagination({\n currentPage,\n totalPages,\n goToPrevPage,\n goToNextPage,\n isLoadingNext,\n}: ZypePaginationProps) {\n return (\n <div className=\"component-zype-pagination\">\n <button onClick={goToPrevPage} disabled={currentPage <= 1}><</button>\n <span>Page {currentPage} of {totalPages}</span>\n <button onClick={goToNextPage} disabled={currentPage >= totalPages || isLoadingNext}>></button>\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { ZypeConfigTab, ZypeVideo, ZypeListVideosResponse } from \"./ZypeMedia.types\";\nimport { ZypeVideoComponent } from \"./ZypeVideo.component\";\nimport { ZypePagination } from \"./ZypePagination.component\";\nimport { PwsMediaService } from \"../service/pws-media.service\";\n\ninterface ZypeTabProps {\n setCurrentVideo: (video: ZypeVideo, nextVideo: ZypeVideo | null) => void;\n mediaService: PwsMediaService;\n isActiveTab: boolean;\n tab: ZypeConfigTab;\n}\n\ninterface ZypeVideoState {\n isLoadingNext: boolean;\n resume: string | null;\n pages: ZypeVideo[][];\n totalPages: number;\n curPage: number;\n}\n\nexport class ZypeTab extends React.Component<ZypeTabProps, ZypeVideoState> {\n constructor(props: ZypeTabProps) {\n super(props);\n\n this.state = {\n isLoadingNext: false,\n totalPages: 1,\n resume: null,\n curPage: 1,\n pages: [],\n };\n }\n\n componentDidMount() {\n const { tab } = this.props;\n if (tab.videos && tab.videos.length && tab.pagination) {\n this.setState({\n totalPages: tab.pagination.pages,\n pages: [tab.videos],\n }, this.getOnAirVideo);\n } else {\n this.getOnAirVideo();\n }\n\n if (tab.resume) {\n this.setState(\n { resume: tab.resume },\n () => this.getNextPage(),\n );\n } else if (tab.slug !== \"search\") {\n this.getNextPage();\n }\n }\n\n getOnAirVideo = async () => {\n if (!this.props.tab.hasLive) {\n return;\n }\n\n const res = await this.props.mediaService.getOnAirVideo();\n\n if (res && res.video) {\n // make sure audio (guest host) stream doesn't load onl Dittocam tab\n if (this.props.tab.slug === \"dittocam\" && res.video.isAudio) {\n console.debug(\"Skipped live stream on Dittocam tab - audio-only\");\n } else {\n // set stream to audio-only for audio tab\n if (this.props.tab.slug === \"audio\") {\n res.video.isAudio = true;\n }\n const firstPage = this.state.pages.length ? [res.video, ...this.state.pages[0]] : [res.video];\n this.setState({ pages: [firstPage, ...this.state.pages.slice(1)] });\n console.debug(\"Got live video\", res);\n }\n } else {\n console.debug(\"No live video available\");\n }\n }\n\n goToNextPage = () => {\n this.setState(\n { curPage: this.state.curPage + 1 },\n () => {\n if (this.state.resume) {\n this.getNextPage();\n }\n },\n );\n }\n\n goToPrevPage = () => {\n this.setState({ curPage: this.state.curPage - 1 });\n }\n\n getNextPage = async () => {\n if (!this.props.tab.videos || this.state.resume) {\n this.setState({ isLoadingNext: true }, this.doGetNextPage);\n } else {\n console.error(`Can't get next page for tab \"${this.props.tab.title}\". No resume`);\n }\n }\n\n doGetNextPage = async () => {\n let resp: ZypeListVideosResponse | undefined;\n\n if (!this.props.tab.videos) {\n\n resp = await this.props.mediaService.getVideos(null, { groupSlug: this.props.tab.slug });\n } else {\n resp = await this.props.mediaService.getVideos(this.state.resume);\n }\n\n if (resp) {\n this.setState({\n pages: [...this.state.pages, ...[resp.videos || []]],\n totalPages: resp.pagination.pages,\n resume: resp.resume,\n isLoadingNext: false,\n });\n } else {\n this.setState({ isLoadingNext: false });\n }\n }\n\n getNextVideo = (idx: number) => {\n const curPageVideos = this.state.pages[this.state.curPage - 1];\n const nextPageVideos = this.state.pages[this.state.curPage];\n\n if (curPageVideos && curPageVideos[idx + 1]) {\n return curPageVideos[idx + 1];\n }\n\n if (nextPageVideos && nextPageVideos[0]) {\n return nextPageVideos[0];\n }\n\n return null;\n }\n\n render() {\n const videos = this.state.pages[this.state.curPage - 1];\n\n return (\n <div className={`component-zype-tab ${this.props.isActiveTab ? \"active\" : \"\"}`}>\n <div className={`tab-header ${this.props.tab.slug === \"search\" ? \"with-title\" : \"\"}`}>\n {this.props.tab.slug === \"search\" && (<h3 className=\"tab-title\">{this.props.tab.title}</h3>)}\n\n <ZypePagination\n isLoadingNext={this.state.isLoadingNext}\n totalPages={this.state.totalPages}\n currentPage={this.state.curPage}\n goToNextPage={this.goToNextPage}\n goToPrevPage={this.goToPrevPage}\n />\n </div>\n <div className=\"videos-container\">\n {\n videos && videos.map((video, idx) => (\n <ZypeVideoComponent\n setCurrentVideo={this.props.setCurrentVideo}\n nextVideo={this.getNextVideo(idx)}\n key={video.slug}\n video={video}\n idx={idx}\n />\n ))\n }\n </div>\n </div>\n );\n }\n}\n","import * as React from \"react\";\n\nimport { ZypeTabSkeleton } from \"./ZypeTabsSkeleton.component\";\nimport { ZypeConfigTab, ZypeVideo } from \"./ZypeMedia.types\";\nimport { PwsMediaService } from \"../service/pws-media.service\";\nimport { ZypeNavBar } from \"./ZypeNavBar.component\";\nimport { ZypeTab } from \"./ZypeTab.component\";\n\ninterface ZypeTabsProps {\n setCurrentVideo: (video: ZypeVideo, nextVideo: ZypeVideo | null) => void;\n setActiveTab: (idx: number) => void;\n mediaService: PwsMediaService;\n tabs: ZypeConfigTab[] | null;\n loadingTabs: boolean;\n activeTab: number;\n}\n\ninterface ZypeTabsState {\n loadingSearchResults: boolean;\n searchTab: ZypeConfigTab;\n searchTabActive: boolean;\n}\n\nconst searchTabConfig: ZypeConfigTab = {\n categories: {},\n hasLive: false,\n title: \"Search results\",\n slug: \"search\",\n resume: null,\n};\n\nexport class ZypeTabs extends React.Component<ZypeTabsProps, ZypeTabsState> {\n constructor(props: ZypeTabsProps) {\n super(props);\n\n this.state = {\n loadingSearchResults: true,\n searchTab: searchTabConfig,\n searchTabActive: false,\n };\n }\n\n setActiveTab = (idx: number) => {\n if (this.state.searchTabActive) {\n this.setState({ searchTabActive: false }, () => this.props.setActiveTab(idx));\n } else {\n this.props.setActiveTab(idx);\n }\n }\n\n onSearch = async (query: string) => {\n if (!query) {\n return console.info(\"Can't search with empty query param\");\n }\n\n searchTabConfig.title = `Search results for \"${query}\":`;\n\n this.setState(\n {\n searchTabActive: true,\n loadingSearchResults: true,\n searchTab: searchTabConfig,\n },\n () => this.doSearch(query),\n );\n }\n\n doSearch = async (query: string) => {\n const res = await this.props.mediaService.getVideos(null, { query });\n\n if (res) {\n this.setState({\n searchTab: { ...searchTabConfig, ...res },\n loadingSearchResults: false,\n });\n } else {\n console.warn(\"Search failed!\");\n this.setState({ searchTabActive: false, loadingSearchResults: false });\n }\n }\n\n render() {\n return (\n <div className=\"component-zype-tabs\">\n <ZypeNavBar\n activeTab={this.state.searchTabActive ? -1 : this.props.activeTab}\n setActiveTab={this.setActiveTab}\n onSearch={this.onSearch}\n tabs={this.props.tabs}\n />\n <div className=\"tabs-container\">\n {this.props.tabs && this.props.tabs.map((tab, idx) => (\n <ZypeTab\n isActiveTab={!this.state.searchTabActive && this.props.activeTab === idx}\n setCurrentVideo={this.props.setCurrentVideo}\n mediaService={this.props.mediaService}\n key={tab.title}\n tab={tab}\n />\n ))}\n\n {/* Search */}\n {\n this.state.searchTabActive && this.state.loadingSearchResults\n ? <ZypeTabSkeleton />\n : (\n <ZypeTab\n isActiveTab={this.state.searchTabActive}\n setCurrentVideo={this.props.setCurrentVideo}\n mediaService={this.props.mediaService}\n tab={this.state.searchTab}\n />\n )\n }\n </div>\n </div>\n );\n }\n}\n","import React, { useEffect } from 'react';\n\ndeclare global {\n interface Window { googletag: any; gptadslots: any; }\n}\n\nexport interface ZypeAdProps {\n path: string;\n size: [number, number];\n id: string;\n} \n\nexport const ZypeAd = (props: ZypeAdProps) => {\n useEffect(() => {\n let gptadslots = window.gptadslots;\n let googletag = window.googletag || {};\n\n googletag.cmd = googletag.cmd || [];\n\n (function(){ var gads = document.createElement('script');\n gads.async = true; gads.type = 'text/javascript';\n gads.src = '//www.googletagservices.com/tag/js/gpt.js';\n var node = document.getElementsByTagName('script')[0];\n if(node && node.parentNode) {\n node.parentNode.insertBefore(gads, node);\n }\n })();\n \n googletag.cmd.push(function() {\n if(!gptadslots[4]) {\n // It should be already defined. If it isn't, do it here. If it is, then defining it twice breaks things\n gptadslots[4] = googletag.defineSlot(props.path, [props.size], props.id)\n .setTargeting('prnpage', ['videos'])\n .setTargeting('pos', ['top'])\n .addService(googletag.pubads());\n }\n \n googletag.pubads().enableSingleRequest();\n googletag.pubads().setTargeting('prntype', ['web'])\n .setTargeting('prngenre', ['conservative_talk']);\n googletag.pubads().enableAsyncRendering();\n googletag.enableServices();\n });\n });\n\n return (<div id={props.id} />);\n };\n","import * as React from \"react\";\n\nimport { ZypeConfigTab, ZypeVideo, ZypeCategory, ZypeViewVideoResponse } from \"./ZypeMedia.types\";\nimport { ZypeTabsSkeleton } from \"./ZypeTabsSkeleton.component\";\nimport { PwsMediaService } from \"../service/pws-media.service\";\nimport { ZypePlayer } from \"./ZypePlayer.component\";\nimport { ZypeTabs } from \"./ZypeTabs.component\";\nimport { ZypeAd } from \"./ZypeAd.component\";\n\nimport \"./ZypeMedia.style.scss\";\n\ninterface ZypeMediaProps {\n viewVideoResponse: ZypeViewVideoResponse;\n episodeSlug: string | null;\n groupSlug: string | null;\n mediaService: PwsMediaService;\n isAuthenticated: boolean;\n pageSlug: string;\n}\n\ninterface ZypeMediaState {\n tabs: ZypeConfigTab[] | null;\n playerApiKey: string | null;\n nextVideo: ZypeVideo | null;\n curVideo: ZypeVideo | null;\n loadingTabs: boolean;\n activeTab: number;\n}\n\nexport class ZypeMedia extends React.Component<ZypeMediaProps, ZypeMediaState> {\n constructor(props: ZypeMediaProps) {\n super(props);\n\n this.state = {\n playerApiKey: null,\n loadingTabs: true,\n nextVideo: null,\n curVideo: null,\n activeTab: 0,\n tabs: null,\n };\n }\n\n componentDidMount() {\n this.loadVideo(this.props.episodeSlug);\n this.handleHistoryTravel();\n }\n\n loadVideo = async (slug: string | null) => {\n if (!slug) {\n return this.initializeTabs();\n }\n\n let resp: ZypeViewVideoResponse | undefined = await this.props.mediaService.getVideoBySlug(slug);\n\n if (!resp || !resp.video) {\n return this.initializeTabs();\n }\n\n if (!this.props.isAuthenticated && resp.video.subscriptionRequired) {\n return window.location.href = '/wp-login.php?redirect_to=' + window.location;\n }\n\n this.pushVideoToHistory(resp.video, this.props.groupSlug);\n\n this.setState({ playerApiKey: resp.playerApiKey, curVideo: resp.video }, this.initializeTabs);\n }\n\n initializeTabs = async () => {\n const resp = await this.props.mediaService.getConfig();\n\n this.setState({ loadingTabs: false });\n\n if (resp) {\n const activeTabIdx = resp.tabs.findIndex(tab => tab.slug === this.props.groupSlug);\n\n let curTabVideos: ZypeVideo[] = [];\n\n if (activeTabIdx >= 0 && resp.tabs[activeTabIdx].videos) {\n curTabVideos = resp.tabs[activeTabIdx].videos!;\n } else if (resp.tabs[0] && resp.tabs[0].videos) {\n curTabVideos = resp.tabs[0].videos!;\n }\n\n this.setState({\n loadingTabs: false,\n tabs: resp.tabs,\n nextVideo: curTabVideos ? curTabVideos[0] : null,\n activeTab: activeTabIdx >= 0 ? activeTabIdx : 0,\n playerApiKey: resp.playerApiKey,\n });\n\n // fallback in case if wasn't able to load initial video id\n if (!this.state.curVideo && curTabVideos) {\n this.setCurrentVideo(curTabVideos[0]);\n }\n }\n }\n\n setActiveTab = (activeTab: number) => {\n this.setState({ activeTab });\n }\n\n setCurrentVideo = (curVideo: ZypeVideo | null, nextVideo: ZypeVideo | null = null) => {\n if (!curVideo) {\n return console.warn(\"Can't set curVideo to null\");\n }\n\n if (!this.props.isAuthenticated && curVideo.subscriptionRequired) {\n return window.location.href = '/wp-login.php?redirect_to=' + window.location;\n }\n\n this.pushVideoToHistory(curVideo);\n this.setState({ curVideo }, () => this.setNextVideo(nextVideo));\n }\n\n // needed if video was originally fetched while unauthenticated\n reFetchCurVideo = async () => {\n if (!this.state.curVideo) {\n return console.error(\"No current video to re-fetch\");\n }\n\n const res = await this.props.mediaService.getVideoBySlug(this.state.curVideo.slug);\n\n if (!this.props.isAuthenticated && res?.video.subscriptionRequired) {\n return window.location.href = '/wp-login.php?redirect_to=' + window.location;\n }\n\n if (res) {\n this.setState({ curVideo: res.video });\n }\n }\n\n getNextVideo = async () => {\n if (!this.state.curVideo) {\n console.warn(\"Can't get next video - current video is not set\");\n return null;\n }\n\n if (!this.state.curVideo.id) {\n console.warn(\"Can't get next video - current video doesn't have an id\");\n return null;\n }\n\n const res = await this.props.mediaService.getNextVideo(this.state.curVideo.id);\n\n if (res) {\n return res.video;\n } else {\n console.warn(\"No next video found\");\n return null;\n }\n }\n\n setNextVideo = async (nextVideo: ZypeVideo | null) => {\n if (nextVideo) {\n return this.setState({ nextVideo });\n }\n\n nextVideo = await this.getNextVideo();\n\n if (nextVideo) {\n this.setState({ nextVideo });\n }\n }\n\n playNextVideo = async () => {\n console.debug(\"Play next video\");\n if (this.state.nextVideo) {\n this.setCurrentVideo(this.state.nextVideo);\n } else {\n this.setCurrentVideo(await this.getNextVideo());\n }\n }\n\n getTabByCategories = (categories: ZypeCategory[]) =>\n this.state.tabs\n ? this.state.tabs.find(tab =>\n categories.some(c =>\n !!tab.categories[c.title]\n && c.value.some(v => tab.categories[c.title] === v),\n ),\n )\n : null\n\n pushVideoToHistory = (video: ZypeVideo, groupSlug?: string | null) => {\n if (!groupSlug) {\n const tab = this.getTabByCategories(video.categories);\n if (tab) {\n groupSlug = tab.slug;\n } else {\n groupSlug = this.state.tabs ? this.state.tabs[this.state.activeTab].slug : null;\n }\n }\n\n if (!groupSlug) {\n return console.debug(\"Can't add video to history - couldn't figure out the tab\");\n }\n\n window.history.pushState({ video }, video.title, `/${this.props.pageSlug}/${groupSlug}/${video.slug}/`);\n }\n\n handleHistoryTravel() {\n // handle user clicking back/forth in browser navigation\n window.onpopstate = (e: PopStateEvent) => {\n if (e.state && e.state.video) {\n this.setState({ curVideo: e.state.video, nextVideo: null });\n }\n };\n }\n\n render() {\n return(\n <div className=\"component-zype-media\">\n <ZypePlayer\n reFetchCurVideo={this.reFetchCurVideo}\n playNextVideo={this.playNextVideo}\n apiKey={this.state.playerApiKey}\n video={this.state.curVideo}\n mediaService={this.props.mediaService}\n />\n {\n this.state.loadingTabs\n ? <ZypeTabsSkeleton />\n : (\n <ZypeTabs\n setCurrentVideo={this.setCurrentVideo}\n loadingTabs={this.state.loadingTabs}\n setActiveTab={this.setActiveTab}\n mediaService={this.props.mediaService}\n activeTab={this.state.activeTab}\n tabs={this.state.tabs}\n />\n )\n }\n <section className=\"ads\">\n <ZypeAd\n path=\"/6663/prnd/prn-rush\"\n size={[300,250]}\n id=\"div-gpt-ad-Midrec_300x250_Top\"\n />\n </section>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { PwsMediaService } from \"./service/pws-media.service\";\nimport { ZypeMedia } from \"./zype/ZypeMedia.component\";\nimport { ZypeViewVideoResponse } from './zype/ZypeMedia.types';\n\nexport interface RushMediaProps {\n pwsHost: string;\n showSlug: string;\n groupSlug: string | null;\n episodeSlug: string | null;\n pageSlug: string;\n isAuthenticated: boolean;\n}\n\nexport interface RushMediaState {\n isAuthenticated: boolean;\n}\n\nexport default class RushMediaApp extends React.Component<RushMediaProps, RushMediaState> {\n private mediaService: PwsMediaService;\n\n constructor(props: RushMediaProps) {\n super(props);\n\n this.mediaService = new PwsMediaService(props.showSlug, props.pwsHost);\n\n this.state = {\n isAuthenticated: this.props.isAuthenticated || (document.cookie.includes('CTC_1') && document.cookie.includes('CTC_2') && document.cookie.includes('CTC_3'))\n }\n }\n\n render() {\n const initialVideoResponse: ZypeViewVideoResponse = {\n authenticated: this.props.isAuthenticated,\n playerApiKey: \"\",\n video: {\n id: null,\n title: \"\",\n slug: \"\",\n description: \"\",\n shortDescription: \"\",\n thumbnails: [],\n categories: [],\n publishedAt: \"\",\n subscriptionRequired: false,\n manifest: null,\n onAir: false,\n isAudio: false,\n duration: 0,\n autoplay: false,\n }\n }\n\n return (\n <ZypeMedia\n mediaService={this.mediaService}\n viewVideoResponse={initialVideoResponse}\n groupSlug={this.props.groupSlug}\n episodeSlug={this.props.episodeSlug}\n pageSlug={this.props.pageSlug}\n isAuthenticated={this.state.isAuthenticated}\n ></ZypeMedia>\n );\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport RushMediaApp from \"./RushMediaApp\";\n\nconst rootElement = document.getElementById(\"rush-media-app\");\n\nif (rootElement) {\n const data = rootElement.getAttribute('data-props') || \"{}\";\n const props = JSON.parse(data);\n\n ReactDOM.render(<React.StrictMode><RushMediaApp {...props} /></React.StrictMode>, rootElement);\n}\n"],"sourceRoot":""}