From fa5d0ad3162151cb2ecd1737f42d81e18068db5e Mon Sep 17 00:00:00 2001 From: Albin Larsson Date: Thu, 14 Jun 2018 15:58:35 +0200 Subject: [PATCH] Move toggleCaption internals to captions object --- src/js/captions.js | 24 +++++++++++++++++++++++- src/js/plyr.js | 22 ++-------------------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/js/captions.js b/src/js/captions.js index 6682d6f0..24962387 100644 --- a/src/js/captions.js +++ b/src/js/captions.js @@ -7,7 +7,7 @@ import controls from './controls'; import i18n from './i18n'; import support from './support'; import browser from './utils/browser'; -import { createElement, emptyElement, getAttributesFromSelector, insertAfter, removeElement, toggleClass } from './utils/elements'; +import { createElement, emptyElement, getAttributesFromSelector, insertAfter, removeElement, toggleClass, toggleState } from './utils/elements'; import { on, triggerEvent } from './utils/events'; import fetch from './utils/fetch'; import is from './utils/is'; @@ -128,6 +128,28 @@ const captions = { } }, + toggle(input) { + // If there's no full support + if (!this.supported.ui) { + return; + } + + // If the method is called without parameter, toggle based on current value + const active = is.boolean(input) ? input : !this.elements.container.classList.contains(this.config.classNames.captions.active); + + // Toggle state + toggleState(this.elements.buttons.captions, active); + + // Add class hook + toggleClass(this.elements.container, this.config.classNames.captions.active, active); + + // Update state and trigger event + if (active !== this.captions.active) { + this.captions.active = active; + triggerEvent.call(this, this.media, this.captions.active ? 'captionsenabled' : 'captionsdisabled'); + } + }, + set(index, setLanguage = true, show = true) { const tracks = captions.getTracks.call(this); diff --git a/src/js/plyr.js b/src/js/plyr.js index 543291e7..4b9697ce 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -19,7 +19,7 @@ import Storage from './storage'; import support from './support'; import ui from './ui'; import { closest } from './utils/arrays'; -import { createElement, hasClass, removeElement, replaceElement, toggleClass, toggleState, wrap } from './utils/elements'; +import { createElement, hasClass, removeElement, replaceElement, toggleClass, wrap } from './utils/elements'; import { off, on, once, triggerEvent, unbindListeners } from './utils/events'; import is from './utils/is'; import loadSprite from './utils/loadSprite'; @@ -833,25 +833,7 @@ class Plyr { * @param {boolean} input - Whether to enable captions */ toggleCaptions(input) { - // If there's no full support - if (!this.supported.ui) { - return; - } - - // If the method is called without parameter, toggle based on current value - const active = is.boolean(input) ? input : !this.elements.container.classList.contains(this.config.classNames.captions.active); - - // Toggle state - toggleState(this.elements.buttons.captions, active); - - // Add class hook - toggleClass(this.elements.container, this.config.classNames.captions.active, active); - - // Update state and trigger event - if (active !== this.captions.active) { - this.captions.active = active; - triggerEvent.call(this, this.media, this.captions.active ? 'captionsenabled' : 'captionsdisabled'); - } + captions.toggle.call(this, input); } /**