summaryrefslogtreecommitdiff
path: root/javascript/videojs/src/js/video.js
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/videojs/src/js/video.js')
-rw-r--r--javascript/videojs/src/js/video.js627
1 files changed, 0 insertions, 627 deletions
diff --git a/javascript/videojs/src/js/video.js b/javascript/videojs/src/js/video.js
deleted file mode 100644
index 6153305..0000000
--- a/javascript/videojs/src/js/video.js
+++ /dev/null
@@ -1,627 +0,0 @@
-/**
- * @file video.js
- * @module videojs
- */
-/**
- * @typedef { string } version
- */
-import {version} from '../../package.json';
-import window from 'global/window';
-import {
- hooks_,
- hooks,
- hook,
- hookOnce,
- removeHook
-} from './utils/hooks';
-import * as setup from './setup';
-import * as stylesheet from './utils/stylesheet.js';
-import Component from './component';
-import EventTarget from './event-target';
-import * as Events from './utils/events.js';
-import Player from './player';
-import Plugin from './plugin';
-import * as Fn from './utils/fn.js';
-import * as Num from './utils/num.js';
-import * as Str from './utils/str.js';
-import TrackList from './tracks/track-list.js';
-import TextTrack from './tracks/text-track.js';
-import TextTrackList from './tracks/text-track-list.js';
-import AudioTrack from './tracks/audio-track.js';
-import AudioTrackList from './tracks/audio-track-list.js';
-import VideoTrack from './tracks/video-track.js';
-import VideoTrackList from './tracks/video-track-list.js';
-import { deprecateForMajor } from './utils/deprecate';
-import * as Time from './utils/time.js';
-import log, { createLogger } from './utils/log.js';
-import * as Dom from './utils/dom.js';
-import * as browser from './utils/browser.js';
-import * as Url from './utils/url.js';
-import * as Obj from './utils/obj';
-import VjsErrors from './consts/errors';
-import xhr from '@videojs/xhr';
-
-// Include the built-in techs
-import Tech from './tech/tech.js';
-import { use as middlewareUse, TERMINATOR } from './tech/middleware.js';
-
-/** @import { PlayerReadyCallback } from './player' */
-
-/**
- * Normalize an `id` value by trimming off a leading `#`
- *
- * @private
- * @param {string} id
- * A string, maybe with a leading `#`.
- *
- * @return {string}
- * The string, without any leading `#`.
- */
-const normalizeId = (id) => id.indexOf('#') === 0 ? id.slice(1) : id;
-
-/**
- * The `videojs()` function doubles as the main function for users to create a
- * {@link Player} instance as well as the main library namespace.
- *
- * It can also be used as a getter for a pre-existing {@link Player} instance.
- * However, we _strongly_ recommend using `videojs.getPlayer()` for this
- * purpose because it avoids any potential for unintended initialization.
- *
- * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)
- * of our JSDoc template, we cannot properly document this as both a function
- * and a namespace, so its function signature is documented here.
- *
- * #### Arguments
- * ##### id
- * string|Element, **required**
- *
- * Video element or video element ID.
- *
- * ##### options
- * Object, optional
- *
- * Options object for providing settings.
- * See: [Options Guide](https://docs.videojs.com/tutorial-options.html).
- *
- * ##### ready
- * {@link Component~ReadyCallback}, optional
- *
- * A function to be called when the {@link Player} and {@link Tech} are ready.
- *
- * #### Return Value
- *
- * The `videojs()` function returns a {@link Player} instance.
- *
- * @namespace
- *
- * @borrows AudioTrack as AudioTrack
- * @borrows Component.getComponent as getComponent
- * @borrows module:events.on as on
- * @borrows module:events.one as one
- * @borrows module:events.off as off
- * @borrows module:events.trigger as trigger
- * @borrows EventTarget as EventTarget
- * @borrows module:middleware.use as use
- * @borrows Player.players as players
- * @borrows Plugin.registerPlugin as registerPlugin
- * @borrows Plugin.deregisterPlugin as deregisterPlugin
- * @borrows Plugin.getPlugins as getPlugins
- * @borrows Plugin.getPlugin as getPlugin
- * @borrows Plugin.getPluginVersion as getPluginVersion
- * @borrows Tech.getTech as getTech
- * @borrows Tech.registerTech as registerTech
- * @borrows TextTrack as TextTrack
- * @borrows VideoTrack as VideoTrack
- *
- * @param {string|Element} id
- * Video element or video element ID.
- *
- * @param {Object} [options]
- * Options object for providing settings.
- * See: [Options Guide](https://docs.videojs.com/tutorial-options.html).
- *
- * @param {PlayerReadyCallback} [ready]
- * A function to be called when the {@link Player} and {@link Tech} are
- * ready.
- *
- * @return {Player}
- * The `videojs()` function returns a {@link Player|Player} instance.
- */
-function videojs(id, options, ready) {
- let player = videojs.getPlayer(id);
-
- if (player) {
- if (options) {
- log.warn(`Player "${id}" is already initialised. Options will not be applied.`);
- }
- if (ready) {
- player.ready(ready);
- }
- return player;
- }
-
- const el = (typeof id === 'string') ? Dom.$('#' + normalizeId(id)) : id;
-
- if (!Dom.isEl(el)) {
- throw new TypeError('The element or ID supplied is not valid. (videojs)');
- }
-
- // document.body.contains(el) will only check if el is contained within that one document.
- // This causes problems for elements in iframes.
- // Instead, use the element's ownerDocument instead of the global document.
- // This will make sure that the element is indeed in the dom of that document.
- // Additionally, check that the document in question has a default view.
- // If the document is no longer attached to the dom, the defaultView of the document will be null.
- // If element is inside Shadow DOM (e.g. is part of a Custom element), ownerDocument.body
- // always returns false. Instead, use the Shadow DOM root.
- const inShadowDom = 'getRootNode' in el ? el.getRootNode() instanceof window.ShadowRoot : false;
- const rootNode = inShadowDom ? el.getRootNode() : el.ownerDocument.body;
-
- if (!el.ownerDocument.defaultView || !rootNode.contains(el)) {
- log.warn('The element supplied is not included in the DOM');
- }
-
- options = options || {};
-
- // Store a copy of the el before modification, if it is to be restored in destroy()
- // If div ingest, store the parent div
- if (options.restoreEl === true) {
- options.restoreEl = (el.parentNode && el.parentNode.hasAttribute && el.parentNode.hasAttribute('data-vjs-player') ? el.parentNode : el).cloneNode(true);
- }
-
- hooks('beforesetup').forEach((hookFunction) => {
- const opts = hookFunction(el, Obj.merge(options));
-
- if (!Obj.isObject(opts) || Array.isArray(opts)) {
- log.error('please return an object in beforesetup hooks');
- return;
- }
-
- options = Obj.merge(options, opts);
- });
-
- // We get the current "Player" component here in case an integration has
- // replaced it with a custom player.
- const PlayerComponent = Component.getComponent('Player');
-
- player = new PlayerComponent(el, options, ready);
-
- hooks('setup').forEach((hookFunction) => hookFunction(player));
-
- return player;
-}
-
-videojs.hooks_ = hooks_;
-videojs.hooks = hooks;
-videojs.hook = hook;
-videojs.hookOnce = hookOnce;
-videojs.removeHook = removeHook;
-
-// Add default styles
-if (window.VIDEOJS_NO_DYNAMIC_STYLE !== true && Dom.isReal()) {
- let style = Dom.$('.vjs-styles-defaults');
-
- if (!style) {
- style = stylesheet.createStyleElement('vjs-styles-defaults');
- const head = Dom.$('head');
-
- if (head) {
- head.insertBefore(style, head.firstChild);
- }
- stylesheet.setTextContent(style, `
- .video-js {
- width: 300px;
- height: 150px;
- }
-
- .vjs-fluid:not(.vjs-audio-only-mode) {
- padding-top: 56.25%
- }
- `);
- }
-}
-
-// Run Auto-load players
-// You have to wait at least once in case this script is loaded after your
-// video in the DOM (weird behavior only with minified version)
-setup.autoSetupTimeout(1, videojs);
-
-/**
- * Current Video.js version. Follows [semantic versioning](https://semver.org/).
- *
- * @type {string}
- */
-videojs.VERSION = version;
-
-/**
- * The global options object. These are the settings that take effect
- * if no overrides are specified when the player is created.
- *
- * @type {Object}
- */
-videojs.options = Player.prototype.options_;
-
-/**
- * Get an object with the currently created players, keyed by player ID
- *
- * @return {Object}
- * The created players
- */
-videojs.getPlayers = () => Player.players;
-
-/**
- * Get a single player based on an ID or DOM element.
- *
- * This is useful if you want to check if an element or ID has an associated
- * Video.js player, but not create one if it doesn't.
- *
- * @param {string|Element} id
- * An HTML element - `<video>`, `<audio>`, or `<video-js>` -
- * or a string matching the `id` of such an element.
- *
- * @return {Player|undefined}
- * A player instance or `undefined` if there is no player instance
- * matching the argument.
- */
-videojs.getPlayer = (id) => {
- const players = Player.players;
- let tag;
-
- if (typeof id === 'string') {
- const nId = normalizeId(id);
- const player = players[nId];
-
- if (player) {
- return player;
- }
-
- tag = Dom.$('#' + nId);
- } else {
- tag = id;
- }
-
- if (Dom.isEl(tag)) {
- const {player, playerId} = tag;
-
- // Element may have a `player` property referring to an already created
- // player instance. If so, return that.
- if (player || players[playerId]) {
- return player || players[playerId];
- }
- }
-};
-
-/**
- * Returns an array of all current players.
- *
- * @return {Array}
- * An array of all players. The array will be in the order that
- * `Object.keys` provides, which could potentially vary between
- * JavaScript engines.
- *
- */
-videojs.getAllPlayers = () =>
-
- // Disposed players leave a key with a `null` value, so we need to make sure
- // we filter those out.
- Object.keys(Player.players).map(k => Player.players[k]).filter(Boolean);
-
-videojs.players = Player.players;
-videojs.getComponent = Component.getComponent;
-
-/**
- * Register a component so it can referred to by name. Used when adding to other
- * components, either through addChild `component.addChild('myComponent')` or through
- * default children options `{ children: ['myComponent'] }`.
- *
- * > NOTE: You could also just initialize the component before adding.
- * `component.addChild(new MyComponent());`
- *
- * @param {string} name
- * The class name of the component
- *
- * @param {typeof Component} comp
- * The component class
- *
- * @return {typeof Component}
- * The newly registered component
- */
-videojs.registerComponent = (name, comp) => {
- if (Tech.isTech(comp)) {
- log.warn(`The ${name} tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)`);
- }
-
- return Component.registerComponent.call(Component, name, comp);
-};
-
-videojs.getTech = Tech.getTech;
-videojs.registerTech = Tech.registerTech;
-videojs.use = middlewareUse;
-
-/**
- * An object that can be returned by a middleware to signify
- * that the middleware is being terminated.
- *
- * @type {object}
- * @property {object} middleware.TERMINATOR
- */
-Object.defineProperty(videojs, 'middleware', {
- value: {},
- writeable: false,
- enumerable: true
-});
-
-Object.defineProperty(videojs.middleware, 'TERMINATOR', {
- value: TERMINATOR,
- writeable: false,
- enumerable: true
-});
-
-/**
- * A reference to the {@link module:browser|browser utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:browser|browser}
- */
-videojs.browser = browser;
-
-/**
- * A reference to the {@link module:obj|obj utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:obj|obj}
- */
-videojs.obj = Obj;
-
-/**
- * Deprecated reference to the {@link module:obj.merge|merge function}
- *
- * @type {Function}
- * @see {@link module:obj.merge|merge}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.obj.merge instead.
- */
-videojs.mergeOptions = deprecateForMajor(9, 'videojs.mergeOptions', 'videojs.obj.merge', Obj.merge);
-
-/**
- * Deprecated reference to the {@link module:obj.defineLazyProperty|defineLazyProperty function}
- *
- * @type {Function}
- * @see {@link module:obj.defineLazyProperty|defineLazyProperty}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.obj.defineLazyProperty instead.
- */
-videojs.defineLazyProperty = deprecateForMajor(9, 'videojs.defineLazyProperty', 'videojs.obj.defineLazyProperty', Obj.defineLazyProperty);
-
-/**
- * Deprecated reference to the {@link module:fn.bind_|fn.bind_ function}
- *
- * @type {Function}
- * @see {@link module:fn.bind_|fn.bind_}
- * @deprecated Deprecated and will be removed in 9.0. Please use native Function.prototype.bind instead.
- */
-videojs.bind = deprecateForMajor(9, 'videojs.bind', 'native Function.prototype.bind', Fn.bind_);
-
-videojs.registerPlugin = Plugin.registerPlugin;
-videojs.deregisterPlugin = Plugin.deregisterPlugin;
-
-/**
- * Deprecated method to register a plugin with Video.js
- *
- * @deprecated Deprecated and will be removed in 9.0. Use videojs.registerPlugin() instead.
- *
- * @param {string} name
- * The plugin name
-*
- * @param {typeof Plugin|Function} plugin
- * The plugin sub-class or function
- *
- * @return {typeof Plugin|Function}
- */
-videojs.plugin = (name, plugin) => {
- log.warn('videojs.plugin() is deprecated; use videojs.registerPlugin() instead');
- return Plugin.registerPlugin(name, plugin);
-};
-
-videojs.getPlugins = Plugin.getPlugins;
-videojs.getPlugin = Plugin.getPlugin;
-videojs.getPluginVersion = Plugin.getPluginVersion;
-
-/**
- * Adding languages so that they're available to all players.
- * Example: `videojs.addLanguage('es', { 'Hello': 'Hola' });`
- *
- * @param {string} code
- * The language code or dictionary property
- *
- * @param {Object} data
- * The data values to be translated
- *
- * @return {Object}
- * The resulting language dictionary object
- */
-videojs.addLanguage = function(code, data) {
- code = ('' + code).toLowerCase();
-
- videojs.options.languages = Obj.merge(
- videojs.options.languages,
- {[code]: data}
- );
-
- return videojs.options.languages[code];
-};
-
-/**
- * A reference to the {@link module:log|log utility module} as an object.
- *
- * @type {Function}
- * @see {@link module:log|log}
- */
-videojs.log = log;
-videojs.createLogger = createLogger;
-
-/**
- * A reference to the {@link module:time|time utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:time|time}
- */
-videojs.time = Time;
-
-/**
- * Deprecated reference to the {@link module:time.createTimeRanges|createTimeRanges function}
- *
- * @type {Function}
- * @see {@link module:time.createTimeRanges|createTimeRanges}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.time.createTimeRanges instead.
- */
-videojs.createTimeRange = deprecateForMajor(9, 'videojs.createTimeRange', 'videojs.time.createTimeRanges', Time.createTimeRanges);
-
-/**
- * Deprecated reference to the {@link module:time.createTimeRanges|createTimeRanges function}
- *
- * @type {Function}
- * @see {@link module:time.createTimeRanges|createTimeRanges}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.time.createTimeRanges instead.
- */
-videojs.createTimeRanges = deprecateForMajor(9, 'videojs.createTimeRanges', 'videojs.time.createTimeRanges', Time.createTimeRanges);
-
-/**
- * Deprecated reference to the {@link module:time.formatTime|formatTime function}
- *
- * @type {Function}
- * @see {@link module:time.formatTime|formatTime}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.time.format instead.
- */
-videojs.formatTime = deprecateForMajor(9, 'videojs.formatTime', 'videojs.time.formatTime', Time.formatTime);
-
-/**
- * Deprecated reference to the {@link module:time.setFormatTime|setFormatTime function}
- *
- * @type {Function}
- * @see {@link module:time.setFormatTime|setFormatTime}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.time.setFormat instead.
- */
-videojs.setFormatTime = deprecateForMajor(9, 'videojs.setFormatTime', 'videojs.time.setFormatTime', Time.setFormatTime);
-
-/**
- * Deprecated reference to the {@link module:time.resetFormatTime|resetFormatTime function}
- *
- * @type {Function}
- * @see {@link module:time.resetFormatTime|resetFormatTime}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.time.resetFormat instead.
- */
-videojs.resetFormatTime = deprecateForMajor(9, 'videojs.resetFormatTime', 'videojs.time.resetFormatTime', Time.resetFormatTime);
-
-/**
- * Deprecated reference to the {@link module:url.parseUrl|Url.parseUrl function}
- *
- * @type {Function}
- * @see {@link module:url.parseUrl|parseUrl}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.url.parseUrl instead.
- */
-videojs.parseUrl = deprecateForMajor(9, 'videojs.parseUrl', 'videojs.url.parseUrl', Url.parseUrl);
-
-/**
- * Deprecated reference to the {@link module:url.isCrossOrigin|Url.isCrossOrigin function}
- *
- * @type {Function}
- * @see {@link module:url.isCrossOrigin|isCrossOrigin}
- * @deprecated Deprecated and will be removed in 9.0. Please use videojs.url.isCrossOrigin instead.
- */
-videojs.isCrossOrigin = deprecateForMajor(9, 'videojs.isCrossOrigin', 'videojs.url.isCrossOrigin', Url.isCrossOrigin);
-
-videojs.EventTarget = EventTarget;
-
-videojs.any = Events.any;
-videojs.on = Events.on;
-videojs.one = Events.one;
-videojs.off = Events.off;
-videojs.trigger = Events.trigger;
-
-/**
- * A cross-browser XMLHttpRequest wrapper.
- *
- * @function
- * @param {Object} options
- * Settings for the request.
- *
- * @return {XMLHttpRequest|XDomainRequest}
- * The request object.
- *
- * @see https://github.com/Raynos/xhr
- */
-videojs.xhr = xhr;
-
-videojs.TrackList = TrackList;
-videojs.TextTrack = TextTrack;
-videojs.TextTrackList = TextTrackList;
-videojs.AudioTrack = AudioTrack;
-videojs.AudioTrackList = AudioTrackList;
-videojs.VideoTrack = VideoTrack;
-videojs.VideoTrackList = VideoTrackList;
-
-[
- 'isEl',
- 'isTextNode',
- 'createEl',
- 'hasClass',
- 'addClass',
- 'removeClass',
- 'toggleClass',
- 'setAttributes',
- 'getAttributes',
- 'emptyEl',
- 'appendContent',
- 'insertContent'
-].forEach(k => {
- videojs[k] = function() {
- log.warn(`videojs.${k}() is deprecated; use videojs.dom.${k}() instead`);
- return Dom[k].apply(null, arguments);
- };
-});
-
-videojs.computedStyle = deprecateForMajor(9, 'videojs.computedStyle', 'videojs.dom.computedStyle', Dom.computedStyle);
-
-/**
- * A reference to the {@link module:dom|DOM utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:dom|dom}
- */
-videojs.dom = Dom;
-
-/**
- * A reference to the {@link module:fn|fn utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:fn|fn}
- */
-videojs.fn = Fn;
-
-/**
- * A reference to the {@link module:num|num utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:num|num}
- */
-videojs.num = Num;
-
-/**
- * A reference to the {@link module:str|str utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:str|str}
- */
-videojs.str = Str;
-
-/**
- * A reference to the {@link module:url|URL utility module} as an object.
- *
- * @type {Object}
- * @see {@link module:url|url}
- */
-videojs.url = Url;
-
-// The list of possible error types to occur in video.js
-videojs.Error = VjsErrors;
-
-export default videojs;