videojs-flash-lazy.min.js.map 58 KB
Newer Older
1
{"version":3,"sources":["../src/videojs-flash-lazy.js"],"names":["global","factory","exports","module","require","define","amd","videojsFlash","videojs","hasOwnProperty","commonjsGlobal","globalThis","window","self","win","window_1","classCallCheck","instance","Constructor","TypeError","inherits","subClass","superClass","prototype","Object","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","possibleConstructorReturn","call","ReferenceError","Tech","getComponent","Dom","dom","Url","url","createTimeRange","mergeOptions","navigator","Flash","_Tech","options","ready","_this","source","setSource","startTime","load","play","currentTime","onReady","onEvent","onError","on","lastSeekTarget_","createEl","options_","swf","objId","techId","flashVars","readyFunction","eventProxyFunction","errorEventProxyFunction","autoplay","preload","loop","muted","params","wmode","bgcolor","attributes","id","name","el_","embed","tech","ended","setCurrentTime","vjs_play","pause","vjs_pause","src","_src","currentSrc","setSrc","_this2","getAbsoluteURL","vjs_src","setTimeout","seeking","time","seekable","length","start","end","trigger","vjs_setProperty","vjs_getProperty","currentSource_","duration","readyState","NaN","vjs_load","poster","setPoster","buffered","ranges","supportsFullScreen","enterFullScreen","getVideoPlaybackQuality","videoPlaybackQuality","performance","now","creationTime","timing","navigationStart","Date","_readWrite","_readOnly","_api","_createSetter","attr","attrUpper","charAt","toUpperCase","slice","val","_createGetter","i","_i","isSupported","browser","IS_CHROME","IS_ANDROID","IS_IOS","IS_SAFARI","IS_EDGE","version","withSourceHandlers","nativeSourceHandler","canPlayType","type","formats","canHandleSource","guessMimeType","ext","getFileExtension","replace","toLowerCase","handleSource","dispose","registerSourceHandler","currSwf","el","$","checkReady","triggerReady","swfID","eventName","args","Array","arguments","err","error","origin","version$$1","ActiveXObject","GetVariable","match","e","mimeTypes","enabledPlugin","plugins","description","split","code","getEmbedCode","obj","innerHTML","childNodes","flashVarsString","paramsString","attrsString","getOwnPropertyNames","forEach","key","movie","flashvars","allowScriptAccess","allowNetworking","data","width","height","streamingFormats","streamFromParts","connection","stream","streamToParts","parts","connEnd","search","streamBegin","lastIndexOf","substring","isStreamingType","srcType","RTMP_RE","isStreamingSrc","test","rtmpSourceHandler","can","srcParts","setRtmpConnection","setRtmpStream","getTech","log","warn","registerTech","VERSION"],"mappings":"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","sourcesContent":["/**\n * videojs-flash\n * @version 2.2.1\n * @copyright 2020 Brightcove, Inc.\n * @license Apache-2.0\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('video.js')) :\n\ttypeof define === 'function' && define.amd ? define(['media_videojs/video-lazy'], factory) :\n\t(global.videojsFlash = factory(global.videojs));\n}(this, (function (videojs) { 'use strict';\n\nvideojs = videojs && videojs.hasOwnProperty('default') ? videojs['default'] : videojs;\n\nvar version = \"5.4.2\";\n\nvar version$1 = \"2.2.1\";\n\n/**\n * @file flash-rtmp.js\n * @module flash-rtmp\n */\n\n/**\n * Add RTMP properties to the {@link Flash} Tech.\n *\n * @param {Flash} Flash\n *        The flash tech class.\n *\n * @mixin FlashRtmpDecorator\n *\n * @return {Flash}\n *         The flash tech with RTMP properties added.\n */\nfunction FlashRtmpDecorator(Flash) {\n  Flash.streamingFormats = {\n    'rtmp/mp4': 'MP4',\n    'rtmp/flv': 'FLV'\n  };\n\n  /**\n   * Join connection and stream with an ampersand.\n   *\n   * @param {string} connection\n   *        The connection string.\n   *\n   * @param {string} stream\n   *        The stream string.\n   *\n   * @return {string}\n   *         The connection and stream joined with an `&` character\n   */\n  Flash.streamFromParts = function (connection, stream) {\n    return connection + '&' + stream;\n  };\n\n  /**\n   * The flash parts object that contains connection and stream info.\n   *\n   * @typedef {Object} Flash~PartsObject\n   *\n   * @property {string} connection\n   *           The connection string of a source, defaults to an empty string.\n   *\n   * @property {string} stream\n   *           The stream string of the source, defaults to an empty string.\n   */\n\n  /**\n   * Convert a source url into a stream and connection parts.\n   *\n   * @param {string} src\n   *        the source url\n   *\n   * @return {Flash~PartsObject}\n   *         The parts object that contains a connection and a stream\n   */\n  Flash.streamToParts = function (src) {\n    var parts = {\n      connection: '',\n      stream: ''\n    };\n\n    if (!src) {\n      return parts;\n    }\n\n    // Look for the normal URL separator we expect, '&'.\n    // If found, we split the URL into two pieces around the\n    // first '&'.\n    var connEnd = src.search(/&(?![\\w-]+=)/);\n    var streamBegin = void 0;\n\n    if (connEnd !== -1) {\n      streamBegin = connEnd + 1;\n    } else {\n      // If there's not a '&', we use the last '/' as the delimiter.\n      connEnd = streamBegin = src.lastIndexOf('/') + 1;\n      if (connEnd === 0) {\n        // really, there's not a '/'?\n        connEnd = streamBegin = src.length;\n      }\n    }\n\n    parts.connection = src.substring(0, connEnd);\n    parts.stream = src.substring(streamBegin, src.length);\n\n    return parts;\n  };\n\n  /**\n   * Check if the source type is a streaming type.\n   *\n   * @param {string} srcType\n   *        The mime type to check.\n   *\n   * @return {boolean}\n   *          - True if the source type is a streaming type.\n   *          - False if the source type is not a streaming type.\n   */\n  Flash.isStreamingType = function (srcType) {\n    return srcType in Flash.streamingFormats;\n  };\n\n  // RTMP has four variations, any string starting\n  // with one of these protocols should be valid\n\n  /**\n   * Regular expression used to check if the source is an rtmp source.\n   *\n   * @property {RegExp} Flash.RTMP_RE\n   */\n  Flash.RTMP_RE = /^rtmp[set]?:\\/\\//i;\n\n  /**\n   * Check if the source itself is a streaming type.\n   *\n   * @param {string} src\n   *        The url to the source.\n   *\n   * @return {boolean}\n   *          - True if the source url indicates that the source is streaming.\n   *          - False if the shource url indicates that the source url is not streaming.\n   */\n  Flash.isStreamingSrc = function (src) {\n    return Flash.RTMP_RE.test(src);\n  };\n\n  /**\n   * A source handler for RTMP urls\n   * @type {Object}\n   */\n  Flash.rtmpSourceHandler = {};\n\n  /**\n   * Check if Flash can play the given mime type.\n   *\n   * @param {string} type\n   *        The mime type to check\n   *\n   * @return {string}\n   *         'maybe', or '' (empty string)\n   */\n  Flash.rtmpSourceHandler.canPlayType = function (type) {\n    if (Flash.isStreamingType(type)) {\n      return 'maybe';\n    }\n\n    return '';\n  };\n\n  /**\n   * Check if Flash can handle the source natively\n   *\n   * @param {Object} source\n   *        The source object\n   *\n   * @param {Object} [options]\n   *        The options passed to the tech\n   *\n   * @return {string}\n   *         'maybe', or '' (empty string)\n   */\n  Flash.rtmpSourceHandler.canHandleSource = function (source, options) {\n    var can = Flash.rtmpSourceHandler.canPlayType(source.type);\n\n    if (can) {\n      return can;\n    }\n\n    if (Flash.isStreamingSrc(source.src)) {\n      return 'maybe';\n    }\n\n    return '';\n  };\n\n  /**\n   * Pass the source to the flash object.\n   *\n   * @param {Object} source\n   *        The source object\n   *\n   * @param {Flash} tech\n   *        The instance of the Flash tech\n   *\n   * @param {Object} [options]\n   *        The options to pass to the source\n   */\n  Flash.rtmpSourceHandler.handleSource = function (source, tech, options) {\n    var srcParts = Flash.streamToParts(source.src);\n\n    tech.setRtmpConnection(srcParts.connection);\n    tech.setRtmpStream(srcParts.stream);\n  };\n\n  // Register the native source handler\n  Flash.registerSourceHandler(Flash.rtmpSourceHandler);\n\n  return Flash;\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar win;\n\nif (typeof window !== \"undefined\") {\n    win = window;\n} else if (typeof commonjsGlobal !== \"undefined\") {\n    win = commonjsGlobal;\n} else if (typeof self !== \"undefined\"){\n    win = self;\n} else {\n    win = {};\n}\n\nvar window_1 = win;\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/**\n * @file flash.js\n * VideoJS-SWF - Custom Flash Player with HTML5-ish API\n * https://github.com/zencoder/video-js-swf\n * Not using setupTriggers. Using global onEvent func to distribute events\n */\n\nvar Tech = videojs.getComponent('Tech');\nvar Dom = videojs.dom;\nvar Url = videojs.url;\nvar createTimeRange = videojs.createTimeRange;\nvar mergeOptions = videojs.mergeOptions;\n\nvar navigator = window_1 && window_1.navigator || {};\n\n/**\n * Flash Media Controller - Wrapper for Flash Media API\n *\n * @mixes FlashRtmpDecorator\n * @mixes Tech~SouceHandlerAdditions\n * @extends Tech\n */\n\nvar Flash = function (_Tech) {\n  inherits(Flash, _Tech);\n\n  /**\n  * Create an instance of this Tech.\n  *\n  * @param {Object} [options]\n  *        The key/value store of player options.\n  *\n  * @param {Component~ReadyCallback} ready\n  *        Callback function to call when the `Flash` Tech is ready.\n  */\n  function Flash(options, ready) {\n    classCallCheck(this, Flash);\n\n    // Set the source when ready\n    var _this = possibleConstructorReturn(this, _Tech.call(this, options, ready));\n\n    if (options.source) {\n      _this.ready(function () {\n        this.setSource(options.source);\n      }, true);\n    }\n\n    // Having issues with Flash reloading on certain page actions\n    // (hide/resize/fullscreen) in certain browsers\n    // This allows resetting the playhead when we catch the reload\n    if (options.startTime) {\n      _this.ready(function () {\n        this.load();\n        this.play();\n        this.currentTime(options.startTime);\n      }, true);\n    }\n\n    // Add global window functions that the swf expects\n    // A 4.x workflow we weren't able to solve for in 5.0\n    // because of the need to hard code these functions\n    // into the swf for security reasons\n    window_1.videojs = window_1.videojs || {};\n    window_1.videojs.Flash = window_1.videojs.Flash || {};\n    window_1.videojs.Flash.onReady = Flash.onReady;\n    window_1.videojs.Flash.onEvent = Flash.onEvent;\n    window_1.videojs.Flash.onError = Flash.onError;\n\n    _this.on('seeked', function () {\n      this.lastSeekTarget_ = undefined;\n    });\n\n    return _this;\n  }\n\n  /**\n   * Create the `Flash` Tech's DOM element.\n   *\n   * @return {Element}\n   *         The element that gets created.\n   */\n\n\n  Flash.prototype.createEl = function createEl() {\n    var options = this.options_;\n\n    // If video.js is hosted locally you should also set the location\n    // for the hosted swf, which should be relative to the page (not video.js)\n    // Otherwise this adds a CDN url.\n    // The CDN also auto-adds a swf URL for that specific version.\n    if (!options.swf) {\n      options.swf = 'https://vjs.zencdn.net/swf/' + version + '/video-js.swf';\n    }\n\n    // Generate ID for swf object\n    var objId = options.techId;\n\n    // Merge default flashvars with ones passed in to init\n    var flashVars = mergeOptions({\n\n      // SWF Callback Functions\n      readyFunction: 'videojs.Flash.onReady',\n      eventProxyFunction: 'videojs.Flash.onEvent',\n      errorEventProxyFunction: 'videojs.Flash.onError',\n\n      // Player Settings\n      autoplay: options.autoplay,\n      preload: options.preload,\n      loop: options.loop,\n      muted: options.muted\n\n    }, options.flashVars);\n\n    // Merge default parames with ones passed in\n    var params = mergeOptions({\n      // Opaque is needed to overlay controls, but can affect playback performance\n      wmode: 'opaque',\n      // Using bgcolor prevents a white flash when the object is loading\n      bgcolor: '#000000'\n    }, options.params);\n\n    // Merge default attributes with ones passed in\n    var attributes = mergeOptions({\n      // Both ID and Name needed or swf to identify itself\n      id: objId,\n      name: objId,\n      'class': 'vjs-tech'\n    }, options.attributes);\n\n    this.el_ = Flash.embed(options.swf, flashVars, params, attributes);\n    this.el_.tech = this;\n\n    return this.el_;\n  };\n\n  /**\n   * Called by {@link Player#play} to play using the `Flash` `Tech`.\n   */\n\n\n  Flash.prototype.play = function play() {\n    if (this.ended()) {\n      this.setCurrentTime(0);\n    }\n    this.el_.vjs_play();\n  };\n\n  /**\n   * Called by {@link Player#pause} to pause using the `Flash` `Tech`.\n   */\n\n\n  Flash.prototype.pause = function pause() {\n    this.el_.vjs_pause();\n  };\n\n  /**\n   * A getter/setter for the `Flash` Tech's source object.\n   * > Note: Please use {@link Flash#setSource}\n   *\n   * @param {Tech~SourceObject} [src]\n   *        The source object you want to set on the `Flash` techs.\n   *\n   * @return {Tech~SourceObject|undefined}\n   *         - The current source object when a source is not passed in.\n   *         - undefined when setting\n   *\n   * @deprecated Since version 5.\n   */\n\n\n  Flash.prototype.src = function src(_src) {\n    if (_src === undefined) {\n      return this.currentSrc();\n    }\n\n    // Setting src through `src` not `setSrc` will be deprecated\n    return this.setSrc(_src);\n  };\n\n  /**\n   * A getter/setter for the `Flash` Tech's source object.\n   *\n   * @param {Tech~SourceObject} [src]\n   *        The source object you want to set on the `Flash` techs.\n   */\n\n\n  Flash.prototype.setSrc = function setSrc(src) {\n    var _this2 = this;\n\n    // Make sure source URL is absolute.\n    src = Url.getAbsoluteURL(src);\n    this.el_.vjs_src(src);\n\n    // Currently the SWF doesn't autoplay if you load a source later.\n    // e.g. Load player w/ no source, wait 2s, set src.\n    if (this.autoplay()) {\n      this.setTimeout(function () {\n        return _this2.play();\n      }, 0);\n    }\n  };\n\n  /**\n   * Indicates whether the media is currently seeking to a new position or not.\n   *\n   * @return {boolean}\n   *         - True if seeking to a new position\n   *         - False otherwise\n   */\n\n\n  Flash.prototype.seeking = function seeking() {\n    return this.lastSeekTarget_ !== undefined;\n  };\n\n  /**\n   * Returns the current time in seconds that the media is at in playback.\n   *\n   * @param {number} time\n   *        Current playtime of the media in seconds.\n   */\n\n\n  Flash.prototype.setCurrentTime = function setCurrentTime(time) {\n    var seekable = this.seekable();\n\n    if (seekable.length) {\n      // clamp to the current seekable range\n      time = time > seekable.start(0) ? time : seekable.start(0);\n      time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n      this.lastSeekTarget_ = time;\n      this.trigger('seeking');\n      this.el_.vjs_setProperty('currentTime', time);\n      _Tech.prototype.setCurrentTime.call(this);\n    }\n  };\n\n  /**\n   * Get the current playback time in seconds\n   *\n   * @return {number}\n   *         The current time of playback in seconds.\n   */\n\n\n  Flash.prototype.currentTime = function currentTime() {\n    // when seeking make the reported time keep up with the requested time\n    // by reading the time we're seeking to\n    if (this.seeking()) {\n      return this.lastSeekTarget_ || 0;\n    }\n    return this.el_.vjs_getProperty('currentTime');\n  };\n\n  /**\n   * Get the current source\n   *\n   * @method currentSrc\n   * @return {Tech~SourceObject}\n   *         The current source\n   */\n\n\n  Flash.prototype.currentSrc = function currentSrc() {\n    if (this.currentSource_) {\n      return this.currentSource_.src;\n    }\n    return this.el_.vjs_getProperty('currentSrc');\n  };\n\n  /**\n   * Get the total duration of the current media.\n   *\n   * @return {number}\n   8          The total duration of the current media.\n   */\n\n\n  Flash.prototype.duration = function duration() {\n    if (this.readyState() === 0) {\n      return NaN;\n    }\n    var duration = this.el_.vjs_getProperty('duration');\n\n    return duration >= 0 ? duration : Infinity;\n  };\n\n  /**\n   * Load media into Tech.\n   */\n\n\n  Flash.prototype.load = function load() {\n    this.el_.vjs_load();\n  };\n\n  /**\n   * Get the poster image that was set on the tech.\n   */\n\n\n  Flash.prototype.poster = function poster() {\n    this.el_.vjs_getProperty('poster');\n  };\n\n  /**\n   * Poster images are not handled by the Flash tech so make this is a no-op.\n   */\n\n\n  Flash.prototype.setPoster = function setPoster() {};\n\n  /**\n   * Determine the time ranges that can be seeked to in the media.\n   *\n   * @return {TimeRange}\n   *         Returns the time ranges that can be seeked to.\n   */\n\n\n  Flash.prototype.seekable = function seekable() {\n    var duration = this.duration();\n\n    if (duration === 0) {\n      return createTimeRange();\n    }\n    return createTimeRange(0, duration);\n  };\n\n  /**\n   * Get and create a `TimeRange` object for buffering.\n   *\n   * @return {TimeRange}\n   *         The time range object that was created.\n   */\n\n\n  Flash.prototype.buffered = function buffered() {\n    var ranges = this.el_.vjs_getProperty('buffered');\n\n    if (ranges.length === 0) {\n      return createTimeRange();\n    }\n    return createTimeRange(ranges[0][0], ranges[0][1]);\n  };\n\n  /**\n   * Get fullscreen support -\n   *\n   * Flash does not allow fullscreen through javascript\n   * so this always returns false.\n   *\n   * @return {boolean}\n   *         The Flash tech does not support fullscreen, so it will always return false.\n   */\n\n\n  Flash.prototype.supportsFullScreen = function supportsFullScreen() {\n    // Flash does not allow fullscreen through javascript\n    return false;\n  };\n\n  /**\n   * Flash does not allow fullscreen through javascript\n   * so this always returns false.\n   *\n   * @return {boolean}\n   *         The Flash tech does not support fullscreen, so it will always return false.\n   */\n\n\n  Flash.prototype.enterFullScreen = function enterFullScreen() {\n    return false;\n  };\n\n  /**\n   * Gets available media playback quality metrics as specified by the W3C's Media\n   * Playback Quality API.\n   *\n   * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n   *\n   * @return {Object}\n   *         An object with supported media playback quality metrics\n   */\n\n\n  Flash.prototype.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n    var videoPlaybackQuality = this.el_.vjs_getProperty('getVideoPlaybackQuality');\n\n    if (window_1.performance && typeof window_1.performance.now === 'function') {\n      videoPlaybackQuality.creationTime = window_1.performance.now();\n    } else if (window_1.performance && window_1.performance.timing && typeof window_1.performance.timing.navigationStart === 'number') {\n      videoPlaybackQuality.creationTime = window_1.Date.now() - window_1.performance.timing.navigationStart;\n    }\n\n    return videoPlaybackQuality;\n  };\n\n  return Flash;\n}(Tech);\n\n// Create setters and getters for attributes\n\n\nvar _readWrite = ['rtmpConnection', 'rtmpStream', 'preload', 'defaultPlaybackRate', 'playbackRate', 'autoplay', 'loop', 'controls', 'volume', 'muted', 'defaultMuted'];\nvar _readOnly = ['networkState', 'readyState', 'initialTime', 'startOffsetTime', 'paused', 'ended', 'videoWidth', 'videoHeight'];\nvar _api = Flash.prototype;\n\n/**\n * Create setters for the swf on the element\n *\n * @param {string} attr\n *        The name of the parameter\n *\n * @private\n */\nfunction _createSetter(attr) {\n  var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n\n  _api['set' + attrUpper] = function (val) {\n    return this.el_.vjs_setProperty(attr, val);\n  };\n}\n\n/**\n * Create getters for the swf on the element\n *\n * @param {string} attr\n *        The name of the parameter\n *\n * @private\n */\nfunction _createGetter(attr) {\n  _api[attr] = function () {\n    return this.el_.vjs_getProperty(attr);\n  };\n}\n\n// Create getter and setters for all read/write attributes\nfor (var i = 0; i < _readWrite.length; i++) {\n  _createGetter(_readWrite[i]);\n  _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (var _i = 0; _i < _readOnly.length; _i++) {\n  _createGetter(_readOnly[_i]);\n}\n\n/** ------------------------------ Getters ------------------------------ **/\n/**\n * Get the value of `rtmpConnection` from the swf.\n *\n * @method Flash#rtmpConnection\n * @return {string}\n *         The current value of `rtmpConnection` on the swf.\n */\n\n/**\n * Get the value of `rtmpStream` from the swf.\n *\n * @method Flash#rtmpStream\n * @return {string}\n *         The current value of `rtmpStream` on the swf.\n */\n\n/**\n * Get the value of `preload` from the swf. `preload` indicates\n * what should download before the media is interacted with. It can have the following\n * values:\n * - none: nothing should be downloaded\n * - metadata: poster and the first few frames of the media may be downloaded to get\n *   media dimensions and other metadata\n * - auto: allow the media and metadata for the media to be downloaded before\n *    interaction\n *\n * @method Flash#preload\n * @return {string}\n *         The value of `preload` from the swf. Will be 'none', 'metadata',\n *         or 'auto'.\n */\n\n/**\n * Get the value of `defaultPlaybackRate` from the swf.\n *\n * @method Flash#defaultPlaybackRate\n * @return {number}\n *         The current value of `defaultPlaybackRate` on the swf.\n */\n\n/**\n * Get the value of `playbackRate` from the swf. `playbackRate` indicates\n * the rate at which the media is currently playing back. Examples:\n *   - if playbackRate is set to 2, media will play twice as fast.\n *   - if playbackRate is set to 0.5, media will play half as fast.\n *\n * @method Flash#playbackRate\n * @return {number}\n *         The value of `playbackRate` from the swf. A number indicating\n *         the current playback speed of the media, where 1 is normal speed.\n */\n\n/**\n * Get the value of `autoplay` from the swf. `autoplay` indicates\n * that the media should start to play as soon as the page is ready.\n *\n * @method Flash#autoplay\n * @return {boolean}\n *         - The value of `autoplay` from the swf.\n *         - True indicates that the media ashould start as soon as the page loads.\n *         - False indicates that the media should not start as soon as the page loads.\n */\n\n/**\n * Get the value of `loop` from the swf. `loop` indicates\n * that the media should return to the start of the media and continue playing once\n * it reaches the end.\n *\n * @method Flash#loop\n * @return {boolean}\n *         - The value of `loop` from the swf.\n *         - True indicates that playback should seek back to start once\n *           the end of a media is reached.\n *         - False indicates that playback should not loop back to the start when the\n *           end of the media is reached.\n */\n\n/**\n * Get the value of `mediaGroup` from the swf.\n *\n * @method Flash#mediaGroup\n * @return {string}\n *         The current value of `mediaGroup` on the swf.\n */\n\n/**\n * Get the value of `controller` from the swf.\n *\n * @method Flash#controller\n * @return {string}\n *         The current value of `controller` on the swf.\n */\n\n/**\n * Get the value of `controls` from the swf. `controls` indicates\n * whether the native flash controls should be shown or hidden.\n *\n * @method Flash#controls\n * @return {boolean}\n *         - The value of `controls` from the swf.\n *         - True indicates that native controls should be showing.\n *         - False indicates that native controls should be hidden.\n */\n\n/**\n * Get the value of the `volume` from the swf. `volume` indicates the current\n * audio level as a percentage in decimal form. This means that 1 is 100%, 0.5 is 50%, and\n * so on.\n *\n * @method Flash#volume\n * @return {number}\n *         The volume percent as a decimal. Value will be between 0-1.\n */\n\n/**\n * Get the value of the `muted` from the swf. `muted` indicates the current\n * audio level should be silent.\n *\n * @method Flash#muted\n * @return {boolean}\n *         - True if the audio should be set to silent\n *         - False otherwise\n */\n\n/**\n * Get the value of `defaultMuted` from the swf. `defaultMuted` indicates\n * whether the media should start muted or not. Only changes the default state of the\n * media. `muted` and `defaultMuted` can have different values. `muted` indicates the\n * current state.\n *\n * @method Flash#defaultMuted\n * @return {boolean}\n *         - The value of `defaultMuted` from the swf.\n *         - True indicates that the media should start muted.\n *         - False indicates that the media should not start muted.\n */\n\n/**\n * Get the value of `networkState` from the swf. `networkState` indicates\n * the current network state. It returns an enumeration from the following list:\n * - 0: NETWORK_EMPTY\n * - 1: NEWORK_IDLE\n * - 2: NETWORK_LOADING\n * - 3: NETWORK_NO_SOURCE\n *\n * @method Flash#networkState\n * @return {number}\n *         The value of `networkState` from the swf. This will be a number\n *         from the list in the description.\n */\n\n/**\n * Get the value of `readyState` from the swf. `readyState` indicates\n * the current state of the media element. It returns an enumeration from the\n * following list:\n * - 0: HAVE_NOTHING\n * - 1: HAVE_METADATA\n * - 2: HAVE_CURRENT_DATA\n * - 3: HAVE_FUTURE_DATA\n * - 4: HAVE_ENOUGH_DATA\n *\n * @method Flash#readyState\n * @return {number}\n *         The value of `readyState` from the swf. This will be a number\n *         from the list in the description.\n */\n\n/**\n * Get the value of `readyState` from the swf. `readyState` indicates\n * the current state of the media element. It returns an enumeration from the\n * following list:\n * - 0: HAVE_NOTHING\n * - 1: HAVE_METADATA\n * - 2: HAVE_CURRENT_DATA\n * - 3: HAVE_FUTURE_DATA\n * - 4: HAVE_ENOUGH_DATA\n *\n * @method Flash#readyState\n * @return {number}\n *         The value of `readyState` from the swf. This will be a number\n *         from the list in the description.\n */\n\n/**\n * Get the value of `initialTime` from the swf.\n *\n * @method Flash#initialTime\n * @return {number}\n *         The `initialTime` proprety on the swf.\n */\n\n/**\n * Get the value of `startOffsetTime` from the swf.\n *\n * @method Flash#startOffsetTime\n * @return {number}\n *         The `startOffsetTime` proprety on the swf.\n */\n\n/**\n * Get the value of `paused` from the swf. `paused` indicates whether the swf\n * is current paused or not.\n *\n * @method Flash#paused\n * @return {boolean}\n *         The value of `paused` from the swf.\n */\n\n/**\n * Get the value of `ended` from the swf. `ended` indicates whether\n * the media has reached the end or not.\n *\n * @method Flash#ended\n * @return {boolean}\n *         - True indicates that the media has ended.\n *         - False indicates that the media has not ended.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-ended}\n */\n\n/**\n * Get the value of `videoWidth` from the swf. `videoWidth` indicates\n * the current width of the media in css pixels.\n *\n * @method Flash#videoWidth\n * @return {number}\n *         The value of `videoWidth` from the swf. This will be a number\n *         in css pixels.\n */\n\n/**\n * Get the value of `videoHeight` from the swf. `videoHeigth` indicates\n * the current height of the media in css pixels.\n *\n * @method Flassh.prototype.videoHeight\n * @return {number}\n *         The value of `videoHeight` from the swf. This will be a number\n *         in css pixels.\n */\n/** ------------------------------ Setters ------------------------------ **/\n\n/**\n * Set the value of `rtmpConnection` on the swf.\n *\n * @method Flash#setRtmpConnection\n * @param {string} rtmpConnection\n *        New value to set the `rtmpConnection` property to.\n */\n\n/**\n * Set the value of `rtmpStream` on the swf.\n *\n * @method Flash#setRtmpStream\n * @param {string} rtmpStream\n *        New value to set the `rtmpStream` property to.\n */\n\n/**\n * Set the value of `preload` on the swf. `preload` indicates\n * what should download before the media is interacted with. It can have the following\n * values:\n * - none: nothing should be downloaded\n * - metadata: poster and the first few frames of the media may be downloaded to get\n *   media dimensions and other metadata\n * - auto: allow the media and metadata for the media to be downloaded before\n *    interaction\n *\n * @method Flash#setPreload\n * @param {string} preload\n *        The value of `preload` to set on the swf. Should be 'none', 'metadata',\n *        or 'auto'.\n */\n\n/**\n * Set the value of `defaultPlaybackRate` on the swf.\n *\n * @method Flash#setDefaultPlaybackRate\n * @param {number} defaultPlaybackRate\n *        New value to set the `defaultPlaybackRate` property to.\n */\n\n/**\n * Set the value of `playbackRate` on the swf. `playbackRate` indicates\n * the rate at which the media is currently playing back. Examples:\n *   - if playbackRate is set to 2, media will play twice as fast.\n *   - if playbackRate is set to 0.5, media will play half as fast.\n *\n * @method Flash#setPlaybackRate\n * @param {number} playbackRate\n *        New value of `playbackRate` on the swf. A number indicating\n *        the current playback speed of the media, where 1 is normal speed.\n */\n\n/**\n * Set the value of `autoplay` on the swf. `autoplay` indicates\n * that the media should start to play as soon as the page is ready.\n *\n * @method Flash#setAutoplay\n * @param {boolean} autoplay\n *        - The value of `autoplay` from the swf.\n *        - True indicates that the media ashould start as soon as the page loads.\n *        - False indicates that the media should not start as soon as the page loads.\n */\n\n/**\n * Set the value of `loop` on the swf. `loop` indicates\n * that the media should return to the start of the media and continue playing once\n * it reaches the end.\n *\n * @method Flash#setLoop\n * @param {boolean} loop\n *        - True indicates that playback should seek back to start once\n *          the end of a media is reached.\n *        - False indicates that playback should not loop back to the start when the\n *          end of the media is reached.\n */\n\n/**\n * Set the value of `mediaGroup` on the swf.\n *\n * @method Flash#setMediaGroup\n * @param {string} mediaGroup\n *        New value of `mediaGroup` to set on the swf.\n */\n\n/**\n * Set the value of `controller` on the swf.\n *\n * @method Flash#setController\n * @param {string} controller\n *        New value the current value of `controller` on the swf.\n */\n\n/**\n * Get the value of `controls` from the swf. `controls` indicates\n * whether the native flash controls should be shown or hidden.\n *\n * @method Flash#controls\n * @return {boolean}\n *         - The value of `controls` from the swf.\n *         - True indicates that native controls should be showing.\n *         - False indicates that native controls should be hidden.\n */\n\n/**\n * Set the value of the `volume` on the swf. `volume` indicates the current\n * audio level as a percentage in decimal form. This means that 1 is 100%, 0.5 is 50%, and\n * so on.\n *\n * @method Flash#setVolume\n * @param {number} percentAsDecimal\n *         The volume percent as a decimal. Value will be between 0-1.\n */\n\n/**\n * Set the value of the `muted` on the swf. `muted` indicates that the current\n * audio level should be silent.\n *\n * @method Flash#setMuted\n * @param {boolean} muted\n *         - True if the audio should be set to silent\n *         - False otherwise\n */\n\n/**\n * Set the value of `defaultMuted` on the swf. `defaultMuted` indicates\n * whether the media should start muted or not. Only changes the default state of the\n * media. `muted` and `defaultMuted` can have different values. `muted` indicates the\n * current state.\n *\n * @method Flash#setDefaultMuted\n * @param {boolean} defaultMuted\n *         - True indicates that the media should start muted.\n *         - False indicates that the media should not start muted.\n */\n\n/* Flash Support Testing -------------------------------------------------------- */\n\n/**\n * Check if the Flash tech is currently supported.\n *\n * @return {boolean}\n *          - True for Chrome and Safari Desktop and Microsoft Edge and if flash tech is supported\n *          - False otherwise\n */\nFlash.isSupported = function () {\n  // for Chrome Desktop and Safari Desktop\n  if (videojs.browser.IS_CHROME && (!videojs.browser.IS_ANDROID || !videojs.browser.IS_IOS) || videojs.browser.IS_SAFARI && !videojs.browser.IS_IOS || videojs.browser.IS_EDGE) {\n    return true;\n  }\n  // for other browsers\n  return Flash.version()[0] >= 10;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * Native source handler for flash,  simply passes the source to the swf element.\n *\n * @property {Tech~SourceObject} source\n *           The source object\n *\n * @property {Flash} tech\n *           The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/**\n * Check if the Flash can play the given mime type.\n *\n * @param {string} type\n *        The mimetype to check\n *\n * @return {string}\n *         'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canPlayType = function (type) {\n  if (type in Flash.formats) {\n    return 'maybe';\n  }\n\n  return '';\n};\n\n/**\n * Check if the media element can handle a source natively.\n *\n * @param {Tech~SourceObject} source\n *         The source object\n *\n * @param {Object} [options]\n *         Options to be passed to the tech.\n *\n * @return {string}\n *         'maybe', or '' (empty string).\n */\nFlash.nativeSourceHandler.canHandleSource = function (source, options) {\n  var type = void 0;\n\n  /**\n   * Guess the mime type of a file if it does not have one\n   *\n   * @param {Tech~SourceObject} src\n   *        The source object to guess the mime type for\n   *\n   * @return {string}\n   *         The mime type that was guessed\n   */\n  function guessMimeType(src) {\n    var ext = Url.getFileExtension(src);\n\n    if (ext) {\n      return 'video/' + ext;\n    }\n    return '';\n  }\n\n  if (!source.type) {\n    type = guessMimeType(source.src);\n  } else {\n    // Strip code information from the type because we don't get that specific\n    type = source.type.replace(/;.*/, '').toLowerCase();\n  }\n\n  return Flash.nativeSourceHandler.canPlayType(type);\n};\n\n/**\n * Pass the source to the swf.\n *\n * @param {Tech~SourceObject} source\n *        The source object\n *\n * @param {Flash} tech\n *        The instance of the Flash tech\n *\n * @param {Object} [options]\n *        The options to pass to the source\n */\nFlash.nativeSourceHandler.handleSource = function (source, tech, options) {\n  tech.setSrc(source.src);\n};\n\n/**\n * noop for native source handler dispose, as cleanup will happen automatically.\n */\nFlash.nativeSourceHandler.dispose = function () {};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\n/**\n * Flash supported mime types.\n *\n * @constant {Object}\n */\nFlash.formats = {\n  'video/flv': 'FLV',\n  'video/x-flv': 'FLV',\n  'video/mp4': 'MP4',\n  'video/m4v': 'MP4'\n};\n\n/**\n * Called when the the swf is \"ready\", and makes sure that the swf is really\n * ready using {@link Flash#checkReady}\n *\n * @param {Object} currSwf\n *        The current swf object\n */\nFlash.onReady = function (currSwf) {\n  var el = Dom.$('#' + currSwf);\n  var tech = el && el.tech;\n\n  // if there is no el then the tech has been disposed\n  // and the tech element was removed from the player div\n  if (tech && tech.el()) {\n    // check that the flash object is really ready\n    Flash.checkReady(tech);\n  }\n};\n\n/**\n * The SWF isn't always ready when it says it is. Sometimes the API functions still\n * need to be added to the object. If it's not ready, we set a timeout to check again\n * shortly.\n *\n * @param {Flash} tech\n *        The instance of the flash tech to check.\n */\nFlash.checkReady = function (tech) {\n  // stop worrying if the tech has been disposed\n  if (!tech.el()) {\n    return;\n  }\n\n  // check if API property exists\n  if (tech.el().vjs_getProperty) {\n    // tell tech it's ready\n    tech.triggerReady();\n  } else {\n    // wait longer\n    this.setTimeout(function () {\n      Flash.checkReady(tech);\n    }, 50);\n  }\n};\n\n/**\n * Trigger events from the swf on the Flash Tech.\n *\n * @param {number} swfID\n *        The id of the swf that had the event\n *\n * @param {string} eventName\n *        The name of the event to trigger\n */\nFlash.onEvent = function (swfID, eventName) {\n  var tech = Dom.$('#' + swfID).tech;\n  var args = Array.prototype.slice.call(arguments, 2);\n\n  // dispatch Flash events asynchronously for two reasons:\n  // - Flash swallows any exceptions generated by javascript it\n  //   invokes\n  // - Flash is suspended until the javascript returns which may cause\n  //   playback performance issues\n  tech.setTimeout(function () {\n    tech.trigger(eventName, args);\n  }, 1);\n};\n\n/**\n * Log errors from the swf on the Flash tech.\n *\n * @param {number} swfID\n *        The id of the swf that had an error.\n *\n * @param {string} err\n *        The error to set on the Flash Tech.\n *\n * @return {MediaError|undefined}\n *          - Returns a MediaError when err is 'srcnotfound'\n *          - Returns undefined otherwise.\n */\nFlash.onError = function (swfID, err) {\n  var tech = Dom.$('#' + swfID).tech;\n\n  // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n  if (err === 'srcnotfound') {\n    return tech.error(4);\n  }\n\n  // trigger a custom error\n  if (typeof err === 'string') {\n    tech.error('FLASH: ' + err);\n  } else {\n    err.origin = 'flash';\n    tech.error(err);\n  }\n};\n\n/**\n * Get the current version of Flash that is in use on the page.\n *\n * @return {Array}\n *          an array of versions that are available.\n */\nFlash.version = function () {\n  var version$$1 = '0,0,0';\n\n  // IE\n  try {\n    version$$1 = new window_1.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n    // other browsers\n  } catch (e) {\n    try {\n      if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {\n        version$$1 = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n      }\n    } catch (err) {\n      // satisfy linter\n    }\n  }\n  return version$$1.split(',');\n};\n\n/**\n * Only use for non-iframe embeds.\n *\n * @param {Object} swf\n *        The videojs-swf object.\n *\n * @param {Object} flashVars\n *        Names and values to use as flash option variables.\n *\n * @param {Object} params\n *        Style parameters to set on the object.\n *\n * @param {Object} attributes\n *        Attributes to set on the element.\n *\n * @return {Element}\n *          The embeded Flash DOM element.\n */\nFlash.embed = function (swf, flashVars, params, attributes) {\n  var code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n  // Get element by embedding code and retrieving created element\n  var obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n  return obj;\n};\n\n/**\n * Only use for non-iframe embeds.\n *\n * @param {Object} swf\n *        The videojs-swf object.\n *\n * @param {Object} flashVars\n *        Names and values to use as flash option variables.\n *\n * @param {Object} params\n *        Style parameters to set on the object.\n *\n * @param {Object} attributes\n *        Attributes to set on the element.\n *\n * @return {Element}\n *          The embeded Flash DOM element.\n */\nFlash.getEmbedCode = function (swf, flashVars, params, attributes) {\n  var objTag = '<object type=\"application/x-shockwave-flash\" ';\n  var flashVarsString = '';\n  var paramsString = '';\n  var attrsString = '';\n\n  // Convert flash vars to string\n  if (flashVars) {\n    Object.getOwnPropertyNames(flashVars).forEach(function (key) {\n      flashVarsString += key + '=' + flashVars[key] + '&amp;';\n    });\n  }\n\n  // Add swf, flashVars, and other default params\n  params = mergeOptions({\n    movie: swf,\n    flashvars: flashVarsString,\n    // Required to talk to swf\n    allowScriptAccess: 'always',\n    // All should be default, but having security issues.\n    allowNetworking: 'all'\n  }, params);\n\n  // Create param tags string\n  Object.getOwnPropertyNames(params).forEach(function (key) {\n    paramsString += '<param name=\"' + key + '\" value=\"' + params[key] + '\" />';\n  });\n\n  attributes = mergeOptions({\n    // Add swf to attributes (need both for IE and Others to work)\n    data: swf,\n\n    // Default to 100% width/height\n    width: '100%',\n    height: '100%'\n\n  }, attributes);\n\n  // Create Attributes string\n  Object.getOwnPropertyNames(attributes).forEach(function (key) {\n    attrsString += key + '=\"' + attributes[key] + '\" ';\n  });\n\n  return '' + objTag + attrsString + '>' + paramsString + '</object>';\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nif (Tech.getTech('Flash')) {\n  videojs.log.warn('Not using videojs-flash as it appears to already be registered');\n  videojs.log.warn('videojs-flash should only be used with video.js@6 and above');\n} else {\n  videojs.registerTech('Flash', Flash);\n}\n\nFlash.VERSION = version$1;\n\nreturn Flash;\n\n})));\n"],"file":"videojs-flash-lazy.min.js"}