(self["webpackChunk"] = self["webpackChunk"] || []).push([["js/zetv"],{

/***/ "../../lib/bundles/FrontofficeBundle/Resources/public/js/Course/zetv.js":
/*!******************************************************************************!*\
  !*** ../../lib/bundles/FrontofficeBundle/Resources/public/js/Course/zetv.js ***!
  \******************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js");
var _asyncToGenerator = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js");
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
ZETV = {
  constant: {
    assetVersion: 2
  },
  _sessionStart: null,
  _sessionData: null,
  _schedule: null,
  _playerLoaded: false,
  _playerContainer: 'replay-player',
  _lastScheduleFetchTs: null,
  // On refait le call de la liste des emission au bout de 60 secs pour ne pas générer de calls http inutiles
  _scheduleTTL: 60,
  init: function init(parameters) {
    var _this = this;
    var $menu = $('.tabs');

    // Charge le JS de jwplayer
    this.loadJWplayer();
    this._lastScheduleFetchTs = moment().unix();
    $menu.find('li').click(function () {
      return _this.updatePlayer(true);
    });
    $('.live-menu-toggle').click(function () {
      return _this.toggleLiveMenu();
    });

    // Durée max autorisée sans activité sur la fenêtre (activité = clic sur un onglet)
    this._sessionData = parameters.session;

    // Installe le limiteur de session
    setInterval(function () {
      return _this._checkSession();
    }, 1000);

    // Mémorise le programme de la journée
    this._schedule = this.parseSchedule(parameters.schedule);

    // Active la tab souhaitée en fonction des arguments passés en paramètre de l'url
    var searchString = window.location.search,
      params = {};
    searchString.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) {
      return params[key] = value;
    });
    var targetFlux = params.flux;
    if (!this._schedule[targetFlux]) {
      targetFlux = this._getFirstCourseFluxVideo();
    }
    this.getLiveTab().data('flux-video', targetFlux);
    this.updatePlayer(true);
    setInterval(function () {
      return _this._updateLiveTabTitle(_this._getCurrentEmission(_this.getLiveTabFluxVideo()));
    }, 120000);
  },
  loadJWplayer: function loadJWplayer() {
    var $head = $('head');
    if ($head.find('script[src~="jwplayer"]').length === 0) {
      // Déjà chargé ?
      $head.append('<script type="text/javascript" src="//media.zeturf.com/jwplayer/jwplayer.js"></script>');
      $head.append('<link rel="stylesheet" type="text/css" href="//media.zeturf.com/jwplayer/skins/seven.css" />');
    }
  },
  playVideo: function playVideo(idContainer, mediaFile, width, height) {
    var defaultType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
    this._playerContainer = idContainer;
    // Initialise le player, et envoie le premier (seul) fichier de la playlist.
    this._initPlayer([Object.assign({
      'title': 'replay',
      'file': mediaFile
    }, defaultType ? {
      'type': defaultType
    } : {})], 0, width, height);
  },
  resetSessionCounter: function resetSessionCounter() {
    this._sessionStart = new Date();
  },
  updatePlayer: function updatePlayer(init) {
    // Remet tout à 0
    $('.live, .novideo, .forbidden').hide();
    $('.live').find('iframe').attr('src', 'about:blank');
    var fluxVideo = this.getLiveTabFluxVideo(),
      currentEmission = this._getCurrentEmission(fluxVideo);

    // Met à jour le titre de l'onglet live
    this._updateLiveTabTitle(currentEmission);
    if (init) {
      this._stopReplay();
      if (this._sessionData.mode == 'forbidden') {
        // Accès interdit (géoip, perde des droits, etc.)
        $('.forbidden').show();
      } else if (currentEmission) {
        this.initInlineLivePlayer($('.live').show(), currentEmission.title, this._schedule[fluxVideo].streams, function (hasVideo) {
          if (!hasVideo) {
            $('.live').hide();
            $('.novideo').show();
          }
        });
      } else {
        // Pas de live
        $('.novideo').show();
      }
    }
    this.resetSessionCounter();
  },
  getLiveTab: function getLiveTab() {
    return $('.tabs li[data-tab="live"]');
  },
  getLiveTabFluxVideo: function getLiveTabFluxVideo() {
    return this.getLiveTab().data('flux-video');
  },
  toggleLiveMenu: function toggleLiveMenu() {
    var $liveMenu = $('.live-menu'),
      $iconMenu = $('.live-menu-toggle .icon-menu'),
      $iconClose = $('.live-menu-toggle .icon-close');
    if ($liveMenu.hasClass('hide')) {
      this.loadLiveMenu();
      $liveMenu.removeClass('hide');
      $iconMenu.addClass('hide');
      $iconClose.removeClass('hide');
    } else {
      $liveMenu.addClass('hide');
      $iconMenu.removeClass('hide');
      $iconClose.addClass('hide');
    }
  },
  loadLiveMenu: function loadLiveMenu() {
    var $liveMenuList = $('.live-menu ul');
    this.loadSchedule();
    $liveMenuList.html('');
    for (var fluxVideo in this._schedule) {
      var _this$_schedule$fluxV;
      if (((_this$_schedule$fluxV = this._schedule[fluxVideo].emissions) !== null && _this$_schedule$fluxV !== void 0 ? _this$_schedule$fluxV : []).length > 0) {
        var emission = this._schedule[fluxVideo].emissions[0];
        $liveMenuList.append($('<li data-flux-video="' + fluxVideo + '">' + emission.title + '</li>'));
      }
    }
    this.bindLiveMenuItemClick();
  },
  loadSchedule: function () {
    var _loadSchedule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
      var self, currentTs, tvScheduleUrl;
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            self = this;
            currentTs = moment().unix();
            _context.next = 4;
            return ZERouter.generate('zeturf_frontoffice_tv_schedule');
          case 4:
            tvScheduleUrl = _context.sent;
            if (tvScheduleUrl && currentTs - this._lastScheduleFetchTs > this._scheduleTTL) {
              this._lastScheduleFetchTs = currentTs;
              try {
                $.ajax(tvScheduleUrl, {
                  method: 'GET',
                  cache: false,
                  success: function success(data) {
                    self._schedule = self.parseSchedule(data);
                  },
                  error: function error() {
                    return console.error("Erreur lors du chargement de ".concat(tvScheduleUrl));
                  }
                });
              } catch (e) {
                JsLogger.logException(e);
              }
            }
          case 6:
          case "end":
            return _context.stop();
        }
      }, _callee, this);
    }));
    function loadSchedule() {
      return _loadSchedule.apply(this, arguments);
    }
    return loadSchedule;
  }(),
  parseSchedule: function parseSchedule(schedule) {
    var videoMap = {};
    var _iterator = _createForOfIteratorHelper(schedule),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var videoData = _step.value;
        videoMap[videoData.source_flux_video] = videoData;
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return videoMap;
  },
  bindLiveMenuItemClick: function bindLiveMenuItemClick() {
    var _this2 = this;
    var baseUrl = location.href.split('?')[0];
    $('.live-menu ul li').on('click', function (e) {
      var idFlux = $(e.currentTarget).data('flux-video');
      _this2.getLiveTab().data('flux-video', idFlux);
      _this2.updatePlayer(true);
      _this2.toggleLiveMenu();
      history.replaceState(null, '', "".concat(baseUrl, "?flux=").concat(idFlux));
    });
  },
  _initPlayer: function _initPlayer(playlist, playindex, width, height) {
    if (!this._playerLoaded) {
      this._playerLoaded = true;

      // Clé commerciale
      jwplayer.key = '4asTr+bl99a847/Rw4JU8d+Qb6Xe+YheDGsEMg==';
      jwplayer(this._playerContainer).setup({
        playlist: playlist,
        width: width || 'inherit',
        height: height || 'inherit',
        abouttext: 'ZEturf',
        aboutlink: 'http://www.zeturf.fr'
      });
    } else {
      jwplayer().load(playlist);
    }
    if (playindex !== undefined) {
      // Démarre au bon endroit de la playlist une fois que celle ci est chargée
      jwplayer().on('ready', function () {
        return jwplayer().playlistItem(playindex);
      });
    }
  },
  _stopReplay: function _stopReplay() {
    if (this._playerLoaded) {
      jwplayer().remove();
      this._playerLoaded = false;
    }
  },
  _checkSession: function _checkSession() {
    var sessionLength = (new Date() - this._sessionStart) / 1000;
    switch (this._sessionData.mode) {
      case 'guest':
        {
          // Invité (non connecté) : coupure au bout de 10 secondes
          if (sessionLength > 10) {
            this.updatePlayer(false);
            Modal.openModalHTML(ZEturf.text.video_popup_title, ZEturf.text.video_popup_guest_text, [], '');
          }
          break;
        }
      case 'limited':
        {
          // Connecté mais sans accès à la vidéo : coupure au bout de 10 secondes
          if (sessionLength > 10) {
            this.updatePlayer(false);
            Modal.openModalHTML(ZEturf.text.video_popup_title, ZEturf.text.video_popup_limited_text, [], '');
          }
          break;
        }
      case 'normal':
      default:
        {
          // Client normal : "vous êtes toujours là", et coupure si non réponse
          var maxLength = 3600,
            warnLength = 300;
          if (sessionLength > maxLength) {
            // Vous ne regardiez plus la vidéo alors on l'a coupée.
            Modal.close();
            this.updatePlayer(false);
            Modal.openModalHTML(ZEturf.text.video_popup_title, ZEturf.text.video_popup_vous_etes_parti, [Modal.buttons.close]);
          } else if (sessionLength > maxLength - warnLength) {
            // Vous êtes toujours là ?
            var timeLeft = Math.floor(0.5 + maxLength - sessionLength);
            var strTimer = Math.floor(0.5 + timeLeft / 60) + ':' + (timeLeft < 10 ? '0' : '') + timeLeft % 60;
            var messageWithDuration = ZEturf.text.video_popup_vous_etes_toujours_la.replace('%timer%', strTimer);
            if (Modal.modalContainer.css('visibility') !== 'visible') {
              Modal.openModalHTML(ZEturf.text.video_popup_title, messageWithDuration, [Modal.buttons.confirmStillWatchingVideo]);
            } else {
              Modal.modalContainer.find('#modal-success').html(messageWithDuration);
            }
          }
          break;
        }
    }
  },
  _getCurrentEmission: function _getCurrentEmission(fluxVideo) {
    if (Object.prototype.hasOwnProperty.call(this._schedule, fluxVideo)) {
      var _this$_schedule$fluxV2, _this$_schedule$fluxV3;
      var emissions = (_this$_schedule$fluxV2 = (_this$_schedule$fluxV3 = this._schedule[fluxVideo]) === null || _this$_schedule$fluxV3 === void 0 ? void 0 : _this$_schedule$fluxV3.emissions) !== null && _this$_schedule$fluxV2 !== void 0 ? _this$_schedule$fluxV2 : [];
      if (emissions.length > 0) {
        return emissions[0];
      }
    }
    return null;
  },
  _getFirstCourseFluxVideo: function _getFirstCourseFluxVideo() {
    var minStartDate = null;
    var firstCourseFluxVideo;
    for (var fluxVideo in this._schedule) {
      var scheduleData = this._schedule[fluxVideo];
      if (scheduleData.autoselect) {
        var currentStartDate = Date.parse(scheduleData.emissions[0].start);
        if (minStartDate == null || currentStartDate < minStartDate) {
          minStartDate = currentStartDate;
          firstCourseFluxVideo = fluxVideo;
        }
      }
    }
    return firstCourseFluxVideo;
  },
  _updateLiveTabTitle: function _updateLiveTabTitle(currentEmission) {
    this.loadSchedule();
    this.getLiveTab().html(currentEmission ? ZEturf.text.video_popup_en_direct + ': ' + currentEmission.title : 'Live');
  },
  _initInlineLivePlayerWithStreamCode: function _initInlineLivePlayerWithStreamCode($container, alpha2, sourceStreams, streamCode, callbackHasOrNotVideo) {
    // Le temps d'obtenir les droits
    if (ZEturf.constant.tld === ZEturf.constant.tlds.be && alpha2 && alpha2 === 'BE') {
      streamCode = 'zeturf';
    }

    // Récupère l'url de streaming en fonction de la localisation du client
    if (!sourceStreams || !(streamCode in sourceStreams)) {
      // Pas de vidéo
      $container.show().find('.no-stream').show();
      callbackHasOrNotVideo(false);
    } else {
      var $player = $container.find('iframe'),
        sourceUrl = sourceStreams[streamCode];

      // Certains navigateurs rechargent le contenu même quand on "change" l'url à l'identique
      // ce qui provoque un saut dans le contenu. Protégeons nous contre ça.
      if ($player.attr('src') !== sourceUrl) {
        var $containingElement = $player.parent();
        var $clonedIframe = $player.clone().attr('src', '');

        // On recrée l'iframe pour éviter les problèmes sur chrome
        $player.remove();

        // Vidéo !
        $player = $clonedIframe.appendTo($containingElement);
        $player.attr('src', sourceUrl);
      }
      $player.show();
      $container.show().find('.stream').show();
      callbackHasOrNotVideo(true);
    }
  },
  initInlineLivePlayer: function () {
    var _initInlineLivePlayer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2($container, alpha2, streamData, callbackHasOrNotVideo) {
      var _this3 = this,
        _arguments = arguments;
      var streamCode, apiVersion;
      return _regeneratorRuntime().wrap(function _callee2$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            // Qu'on ait toujours une fonction à appeler
            callbackHasOrNotVideo = callbackHasOrNotVideo || function () {};
            $container.show();

            // Le code est stocké en ztLocalStorage, "versionné"" pour pouvoir forcer une mise à jour
            // quand les règles géoip (ou autres) changent.
            streamCode = ztLocalStorage.getItem('com.zeturf.livestream');
            apiVersion = ztLocalStorage.getItem('com.zeturf.livestream.v');
            if (!(!streamCode || !apiVersion || apiVersion < this.constant.assetVersion)) {
              _context2.next = 19;
              break;
            }
            _context2.prev = 5;
            _context2.t0 = $;
            _context2.next = 9;
            return ZERouter.generate('zeturf_frontoffice_tv_apistreamcode');
          case 9:
            _context2.t1 = _context2.sent;
            _context2.t2 = {
              method: 'get',
              cache: false,
              success: function success(data) {
                var code = data.code || null;
                ztLocalStorage.setItem('com.zeturf.livestream', code);
                ztLocalStorage.setItem('com.zeturf.livestream.v', _this3.constant.assetVersion);
                _this3._initInlineLivePlayerWithStreamCode($container, alpha2, streamData, code, callbackHasOrNotVideo);
              },
              error: function error() {
                console.error('Erreur lors du chargement de ' + url, _arguments);
                _this3._initInlineLivePlayerWithStreamCode($container, alpha2, null, null, callbackHasOrNotVideo);
              }
            };
            _context2.t0.ajax.call(_context2.t0, _context2.t1, _context2.t2);
            _context2.next = 17;
            break;
          case 14:
            _context2.prev = 14;
            _context2.t3 = _context2["catch"](5);
            JsLogger.logException(_context2.t3);
          case 17:
            _context2.next = 20;
            break;
          case 19:
            this._initInlineLivePlayerWithStreamCode($container, alpha2, streamData, streamCode || null, callbackHasOrNotVideo);
          case 20:
          case "end":
            return _context2.stop();
        }
      }, _callee2, this, [[5, 14]]);
    }));
    function initInlineLivePlayer(_x, _x2, _x3, _x4) {
      return _initInlineLivePlayer.apply(this, arguments);
    }
    return initInlineLivePlayer;
  }()
};

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
  \*****************************************************************/
/***/ (function(module) {

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }
  if (info.done) {
    resolve(value);
  } else {
    Promise.resolve(value).then(_next, _throw);
  }
}
function _asyncToGenerator(fn) {
  return function () {
    var self = this,
      args = arguments;
    return new Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);
      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }
      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }
      _next(undefined);
    });
  };
}
module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;

/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/typeof.js":
/*!*******************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
  \*******************************************************/
/***/ (function(module) {

function _typeof(obj) {
  "@babel/helpers - typeof";

  return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
    return typeof obj;
  } : function (obj) {
    return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;

/***/ })

},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
/******/ var __webpack_exports__ = (__webpack_exec__("../../lib/bundles/FrontofficeBundle/Resources/public/js/Course/zetv.js"));
/******/ }
]);
//# sourceMappingURL=zetv.js.map