Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ES6 Classes #1993

Closed
wants to merge 2 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Cleaned up super method calls and some other minor style issues
heff committed Apr 11, 2015

Verified

This commit was signed with the committer’s verified signature. The key has expired.
juliusknorr Julius Knorr
commit 52ac7e5cd309b23748ce240bafae1eaadd787eb9
2 changes: 1 addition & 1 deletion src/js/big-play-button.js
Original file line number Diff line number Diff line change
@@ -27,4 +27,4 @@ class BigPlayButton extends Button {
}

Button.registerComponent('BigPlayButton', BigPlayButton);
export default BigPlayButton;
export default BigPlayButton;
14 changes: 7 additions & 7 deletions src/js/button.js
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ import document from 'global/document';
*/
class Button extends Component {

constructor(player, options){
constructor(player, options) {
super(player, options);

this.emitTapEvents();
@@ -34,7 +34,7 @@ class Button extends Component {
tabIndex: 0
}, props);

let el = Component.prototype.createEl.call(this, type, props);
let el = super.createEl(type, props);

// if innerHTML hasn't been overridden (bigPlayButton), add content elements
if (!props.innerHTML) {
@@ -56,19 +56,19 @@ class Button extends Component {

buildCSSClass() {
// TODO: Change vjs-control to vjs-button?
return 'vjs-control ' + Component.prototype.buildCSSClass.call(this);
return 'vjs-control ' + super.buildCSSClass();
}

// Click - Override with specific functionality for button
onClick(){}
onClick() {}

// Focus - Add keyboard functionality to element
onFocus(){
onFocus() {
Events.on(document, 'keydown', Lib.bind(this, this.onKeyPress));
}

// KeyPress (document level) - Trigger click when keys are pressed
onKeyPress(event){
onKeyPress(event) {
// Check for space bar (32) or enter (13) keys
if (event.which == 32 || event.which == 13) {
event.preventDefault();
@@ -77,7 +77,7 @@ class Button extends Component {
}

// Blur - Remove keyboard triggers
onBlur(){
onBlur() {
Events.off(document, 'keydown', Lib.bind(this, this.onKeyPress));
}

30 changes: 14 additions & 16 deletions src/js/component.js
Original file line number Diff line number Diff line change
@@ -3,7 +3,6 @@
*
*/

// import CoreObject from './core-object.js';
import * as Lib from './lib.js';
import * as VjsUtil from './util.js';
import * as Events from './events.js';
@@ -67,8 +66,8 @@ class Component {
this.name_ = options['name'] || null;

// Create element if one wasn't provided in options
if (options['el']) {
this.el_ = options['el'];
if (options.el) {
this.el_ = options.el;
} else if (options.createEl !== false) {
this.el_ = this.createEl();
}
@@ -306,7 +305,9 @@ class Component {
* @suppress {accessControls|checkRegExp|checkTypes|checkVars|const|constantProperty|deprecated|duplicate|es5Strict|fileoverviewTags|globalThis|invalidCasts|missingProperties|nonStandardJsDocs|strictModuleDepCheck|undefinedNames|undefinedVars|unknownDefines|uselessCode|visibility}
*/
addChild(child, options){
let component, componentName;
let component;
let componentName;

// If child is a string, create nt with options
if (typeof child === 'string') {
let componentName = child;
@@ -352,8 +353,8 @@ class Component {

// Add the UI object's element to the container div (box)
// Having an element is not required
if (typeof component['el'] === 'function' && component['el']()) {
this.contentEl().appendChild(component['el']());
if (typeof component.el === 'function' && component.el()) {
this.contentEl().appendChild(component.el());
}

// Return so it can stored on parent object if desired.
@@ -373,7 +374,7 @@ class Component {

if (!component || !this.children_) return;

var childFound = false;
let childFound = false;
for (var i = this.children_.length - 1; i >= 0; i--) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be a let

if (this.children_[i] === component) {
childFound = true;
@@ -427,14 +428,13 @@ class Component {
* });
*
*/
initChildren(){
let parent = this;
let parentOptions = parent.options();
let children = parentOptions['children'];
initChildren() {
let children = this.options_.children;

let handleAdd;
if (children) {
handleAdd = function(name, opts){
let parent = this;
let parentOptions = parent.options();
let handleAdd = function(name, opts){
// Allow options for children to be set at the parent options
// e.g. videojs(id, { controlBar: false });
// instead of videojs(id, { children: { controlBar: false });
@@ -686,9 +686,7 @@ class Component {
if (this.isReady_) {
fn.call(this);
} else {
if (this.readyQueue_ === undefined) {
this.readyQueue_ = [];
}
this.readyQueue_ = this.readyQueue_ || [];
this.readyQueue_.push(fn);
}
}
4 changes: 2 additions & 2 deletions src/js/control-bar/duration-display.js
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ class DurationDisplay extends Component {
}

createEl() {
let el = Component.prototype.createEl.call(this, 'div', {
let el = super.createEl('div', {
className: 'vjs-duration vjs-time-controls vjs-control'
});

@@ -45,4 +45,4 @@ class DurationDisplay extends Component {
}

Component.registerComponent('DurationDisplay', DurationDisplay);
export default DurationDisplay;
export default DurationDisplay;
2 changes: 1 addition & 1 deletion src/js/control-bar/fullscreen-toggle.js
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ import Button from '../button';
class FullscreenToggle extends Button {

buildCSSClass() {
return 'vjs-fullscreen-control ' + Button.prototype.buildCSSClass.call(this);
return 'vjs-fullscreen-control ' + super.buildCSSClass();
}

onClick() {
14 changes: 5 additions & 9 deletions src/js/control-bar/mute-toggle.js
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@ class MuteToggle extends Button {
}

createEl() {
return Button.prototype.createEl.call(this, 'div', {
return super.createEl('div', {
className: 'vjs-mute-control vjs-control',
innerHTML: '<div><span class="vjs-control-text">' + this.localize('Mute') + '</span></div>'
});
@@ -56,14 +56,10 @@ class MuteToggle extends Button {
// Don't rewrite the button text if the actual text doesn't change.
// This causes unnecessary and confusing information for screen reader users.
// This check is needed because this function gets called every time the volume level is changed.
if(this.player_.muted()){
if(this.el_.children[0].children[0].innerHTML!=this.localize('Unmute')){
this.el_.children[0].children[0].innerHTML = this.localize('Unmute'); // change the button text to "Unmute"
}
} else {
if(this.el_.children[0].children[0].innerHTML!=this.localize('Mute')){
this.el_.children[0].children[0].innerHTML = this.localize('Mute'); // change the button text to "Mute"
}
let toMute = this.player_.muted() ? 'Unmute' : 'Mute';
let localizedMute = this.localize(toMute);
if (this.el_.children[0].children[0].innerHTML !== localizedMute) {
this.el_.children[0].children[0].innerHTML = localizedMute;
}

/* TODO improve muted icon classes */
2 changes: 1 addition & 1 deletion src/js/control-bar/play-toggle.js
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ class PlayToggle extends Button {
}

buildCSSClass() {
return 'vjs-play-control ' + Button.prototype.buildCSSClass.call(this);
return 'vjs-play-control ' + super.buildCSSClass();
}

// OnClick - Toggle between play and pause
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ class PlaybackRateMenuButton extends MenuButton {
}

createEl() {
let el = MenuButton.prototype.createEl.call(this);
let el = super.createEl();

this.labelEl_ = Lib.createEl('div', {
className: 'vjs-playback-rate-value',
4 changes: 2 additions & 2 deletions src/js/control-bar/progress-control/seek-bar.js
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ class SeekBar extends Slider {
}

createEl() {
return Slider.prototype.createEl.call(this, 'div', {
return super.createEl('div', {
className: 'vjs-progress-holder',
'aria-label': 'video progress bar'
});
@@ -90,4 +90,4 @@ SeekBar.prototype.options_ = {
SeekBar.prototype.playerEvent = 'timeupdate';

Slider.registerComponent('SeekBar', SeekBar);
export default SeekBar;
export default SeekBar;
4 changes: 2 additions & 2 deletions src/js/control-bar/remaining-time-display.js
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ class RemainingTimeDisplay extends Component {
}

createEl() {
let el = Component.prototype.createEl.call(this, 'div', {
let el = super.createEl('div', {
className: 'vjs-remaining-time vjs-time-controls vjs-control'
});

@@ -43,4 +43,4 @@ class RemainingTimeDisplay extends Component {
}

Component.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);
export default RemainingTimeDisplay;
export default RemainingTimeDisplay;
4 changes: 2 additions & 2 deletions src/js/control-bar/text-track-controls/captions-button.js
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ class CaptionsButton extends TextTrackButton {

update() {
let threshold = 2;
TextTrackButton.prototype.update.call(this);
super.update();

// if native, then threshold is 1 because no settings button
if (this.player().tech && this.player().tech['featuresNativeTextTracks']) {
@@ -46,4 +46,4 @@ CaptionsButton.prototype.buttonText = 'Captions';
CaptionsButton.prototype.className = 'vjs-captions-button';

TextTrackButton.registerComponent('CaptionsButton', CaptionsButton);
export default CaptionsButton;
export default CaptionsButton;
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ class ChaptersTrackMenuItem extends MenuItem {
}

onClick() {
MenuItem.prototype.onClick.call(this);
super.onClick();
this.player_.currentTime(this.cue.startTime);
this.update(this.cue.startTime);
}
@@ -38,4 +38,4 @@ class ChaptersTrackMenuItem extends MenuItem {
}

MenuItem.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);
export default ChaptersTrackMenuItem;
export default ChaptersTrackMenuItem;
4 changes: 2 additions & 2 deletions src/js/control-bar/volume-control/volume-bar.js
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ class VolumeBar extends Slider {
}

createEl() {
return Slider.prototype.createEl.call(this, 'div', {
return super.createEl('div', {
className: 'vjs-volume-bar',
'aria-label': 'volume level'
});
@@ -71,4 +71,4 @@ VolumeBar.prototype.options_ = {
VolumeBar.prototype.playerEvent = 'volumechange';

Slider.registerComponent('VolumeBar', VolumeBar);
export default VolumeBar;
export default VolumeBar;
2 changes: 1 addition & 1 deletion src/js/control-bar/volume-control/volume-control.js
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@ class VolumeControl extends Component {
}

createEl() {
return Component.prototype.createEl.call(this, 'div', {
return super.createEl('div', {
className: 'vjs-volume-control vjs-control'
});
}
2 changes: 1 addition & 1 deletion src/js/control-bar/volume-menu-button.js
Original file line number Diff line number Diff line change
@@ -48,7 +48,7 @@ class VolumeMenuButton extends MenuButton {

onClick() {
MuteToggle.prototype.onClick.call(this);
MenuButton.prototype.onClick.call(this);
super.onClick();
}

createEl() {
2 changes: 1 addition & 1 deletion src/js/poster-image.js
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@ class PosterImage extends Button {
*/
dispose() {
this.player().off('posterchange', this.update);
Button.prototype.dispose.call(this);
super.dispose();
}

/**
10 changes: 5 additions & 5 deletions src/js/tech/html5.js
Original file line number Diff line number Diff line change
@@ -88,7 +88,7 @@ class Html5 extends Tech {

dispose() {
Html5.disposeMediaElement(this.el_);
Tech.prototype.dispose.call(this);
super.dispose();
}

createEl() {
@@ -349,22 +349,22 @@ class Html5 extends Tech {

textTracks() {
if (!this['featuresNativeTextTracks']) {
return Tech.prototype.textTracks.call(this);
return super.textTracks();
}

return this.el_.textTracks;
}
addTextTrack(kind, label, language) {
if (!this['featuresNativeTextTracks']) {
return Tech.prototype.addTextTrack.call(this, kind, label, language);
return super.addTextTrack(kind, label, language);
}

return this.el_.addTextTrack(kind, label, language);
}

addRemoteTextTrack(options) {
if (!this['featuresNativeTextTracks']) {
return Tech.prototype.addRemoteTextTrack.call(this, options);
return super.addRemoteTextTrack(options);
}

var track = document.createElement('track');
@@ -416,7 +416,7 @@ class Html5 extends Tech {

removeRemoteTextTrack(track) {
if (!this['featuresNativeTextTracks']) {
return Tech.prototype.removeRemoteTextTrack.call(this, track);
return super.removeRemoteTextTrack(track);
}

var tracks, i;
4 changes: 2 additions & 2 deletions src/js/tech/tech.js
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ class Tech extends Component {
if (options['nativeCaptions'] === false || options['nativeTextTracks'] === false) {
this['featuresNativeTextTracks'] = false;
}

if (!this['featuresNativeTextTracks']) {
this.emulateTextTracks();
}
@@ -262,7 +262,7 @@ class Tech extends Component {

if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }

Component.prototype.dispose.call(this);
super.dispose();
}

setCurrentTime() {
2 changes: 1 addition & 1 deletion src/js/tracks/text-track-display.js
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ class TextTrackDisplay extends Component {
}

createEl() {
return Component.prototype.createEl.call(this, 'div', {
return super.createEl('div', {
className: 'vjs-text-track-display'
});
}
Loading