/**
* @archivo extender.js
* @módulo extender
* /
import _inherits from '@babel/runtime/helpers/inherits';
importar registro desde './utils/log.js';
let hasLogged = false;
/**
* Se usa para subclasificar una clase existente emulando la subclasificación ES usando el
* Palabra clave `extiende`.
*
* @función
* @obsoleto
* @ejemplo
* var MiComponente = videojs.extend(videojs.getComponent('Componente'), {
* miMetodoPersonalizado: function() {
* // Hacer cosas en mi método.
* }
* });
*
* @param {Función} superclase
* La clase a heredar de
*
* @param {Objeto} [subClassMethods={}]
* Métodos de la nueva clase
*
* @return {Función}
* La nueva clase con subClassMethods que heredó superClass.
* /
const extender = función (superClase, subClassMethods = {}) {
// Registrar una advertencia la primera vez que se llama a extender para notar que está en desuso
// Anteriormente estaba en desuso en nuestra documentación (guías, específicamente),
// pero nunca se desaprobó formalmente en el código.
si (! ha registrado) {
log.warn('videojs.extend está obsoleto a partir de Video.js 7.22.0 y se eliminará en Video.js 8.0.0');
haLogged = verdadero;
}
dejar subclase = función () {
superClass.apply(esto, argumentos);
};
dejar métodos = {};
if (tipo de subClassMethods === 'objeto') {
if (subClassMethods.constructor !== Object.prototype.constructor) {
subclase = subClassMethods.constructor;
}
métodos = subClassMethods;
} else if (tipo de subClassMethods === 'función') {
subclase = métodos de subclase;
}
_hereda(subclase, superclase);
// esto es necesario para la compatibilidad con versiones anteriores y la compatibilidad de nodos.
si (superclase) {
subclase.super_ = superclase;
}
// Ampliar el prototipo de subObj con funciones y otras propiedades de props
for (nombre constante en métodos) {
if (métodos.hasOwnProperty(nombre)) {
subClass.prototype[nombre] = métodos[nombre];
}
}
volver subclase;
};
exportar extensión predeterminada;