// ==========================================================================
// Plyr controls
// ==========================================================================
import support from './support';
import utils from './utils';
import ui from './ui';
// Sniff out the browser
const browser = utils.getBrowser();
const controls = {
// Webkit polyfill for lower fill range
updateRangeFill(target) {
// WebKit only
if (!browser.isWebkit) {
return;
}
// Get range from event if event passed
const range = utils.is.event(target) ? target.target : target;
// Needs to be a valid
if (!utils.is.htmlElement(range) || range.getAttribute('type') !== 'range') {
return;
}
// Inject the stylesheet if needed
if (!utils.is.htmlElement(this.elements.styleSheet)) {
this.elements.styleSheet = utils.createElement('style');
this.elements.container.appendChild(this.elements.styleSheet);
}
const styleSheet = this.elements.styleSheet.sheet;
const percentage = range.value / range.max * 100;
const selector = `#${range.id}::-webkit-slider-runnable-track`;
const styles = `{ background-image: linear-gradient(to right, currentColor ${percentage}%, transparent ${percentage}%) }`;
// Find old rule if it exists
const index = Array.from(styleSheet.rules).findIndex(rule => rule.selectorText === selector);
// Remove old rule
if (index !== -1) {
styleSheet.deleteRule(index);
}
// Insert new one
styleSheet.insertRule([selector, styles].join(' '));
},
// Get icon URL
getIconUrl() {
return {
url: this.config.iconUrl,
absolute: this.config.iconUrl.indexOf('http') === 0 || (browser.isIE && !window.svg4everybody),
};
},
// Create