From aba5a9dc0e421a9f8a6098847fe3927f565c3241 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 7 May 2017 19:03:48 +1000 Subject: Utils object, work on Vimeo captions --- src/js/plyr.js | 1255 ++++++++++++++++++++++++++-------------------------- src/less/plyr.less | 4 - 2 files changed, 638 insertions(+), 621 deletions(-) (limited to 'src') diff --git a/src/js/plyr.js b/src/js/plyr.js index fd823bbc..6e2ec27f 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -309,7 +309,7 @@ return input !== null && typeof(input) === 'object' && input.constructor === Object; }, array: function(input) { - return input !== null && typeof(input) === 'object' && input.constructor === Array; + return input !== null && Array.isArray(input); }, number: function(input) { return input !== null && (typeof(input) === 'number' && !isNaN(input - 0) || (typeof input === 'object' && input.constructor === Number)); @@ -346,470 +346,473 @@ } }; - // Credits: http://paypal.github.io/accessible-html5-video-player/ - // Unfortunately, due to mixed support, UA sniffing is required - function getBrowser() { - var ua = navigator.userAgent; - var name = navigator.appName; - var fullVersion = '' + parseFloat(navigator.appVersion); - var majorVersion = parseInt(navigator.appVersion, 10); - var nameOffset; - var verOffset; - var ix; - var isIE = false; - var isFirefox = false; - var isChrome = false; - var isSafari = false; - - if ((navigator.appVersion.indexOf('Windows NT') !== -1) && (navigator.appVersion.indexOf('rv:11') !== -1)) { - // MSIE 11 - isIE = true; - name = 'IE'; - fullVersion = '11'; - } else if ((verOffset = ua.indexOf('MSIE')) !== -1) { - // MSIE - isIE = true; - name = 'IE'; - fullVersion = ua.substring(verOffset + 5); - } else if ((verOffset = ua.indexOf('Chrome')) !== -1) { - // Chrome - isChrome = true; - name = 'Chrome'; - fullVersion = ua.substring(verOffset + 7); - } else if ((verOffset = ua.indexOf('Safari')) !== -1) { - // Safari - isSafari = true; - name = 'Safari'; - fullVersion = ua.substring(verOffset + 7); - - if ((verOffset = ua.indexOf('Version')) !== -1) { + var utils = { + // Credits: http://paypal.github.io/accessible-html5-video-player/ + // Unfortunately, due to mixed support, UA sniffing is required + getBrowser: function() { + var ua = navigator.userAgent; + var name = navigator.appName; + var fullVersion = '' + parseFloat(navigator.appVersion); + var majorVersion = parseInt(navigator.appVersion, 10); + var nameOffset; + var verOffset; + var ix; + var isIE = false; + var isFirefox = false; + var isChrome = false; + var isSafari = false; + + if ((navigator.appVersion.indexOf('Windows NT') !== -1) && (navigator.appVersion.indexOf('rv:11') !== -1)) { + // MSIE 11 + isIE = true; + name = 'IE'; + fullVersion = '11'; + } else if ((verOffset = ua.indexOf('MSIE')) !== -1) { + // MSIE + isIE = true; + name = 'IE'; + fullVersion = ua.substring(verOffset + 5); + } else if ((verOffset = ua.indexOf('Chrome')) !== -1) { + // Chrome + isChrome = true; + name = 'Chrome'; + fullVersion = ua.substring(verOffset + 7); + } else if ((verOffset = ua.indexOf('Safari')) !== -1) { + // Safari + isSafari = true; + name = 'Safari'; + fullVersion = ua.substring(verOffset + 7); + + if ((verOffset = ua.indexOf('Version')) !== -1) { + fullVersion = ua.substring(verOffset + 8); + } + } else if ((verOffset = ua.indexOf('Firefox')) !== -1) { + // Firefox + isFirefox = true; + name = 'Firefox'; fullVersion = ua.substring(verOffset + 8); + } else if ((nameOffset = ua.lastIndexOf(' ') + 1) < (verOffset = ua.lastIndexOf('/'))) { + // In most other browsers, 'name/version' is at the end of userAgent + name = ua.substring(nameOffset, verOffset); + fullVersion = ua.substring(verOffset + 1); + + if (name.toLowerCase() === name.toUpperCase()) { + name = navigator.appName; + } } - } else if ((verOffset = ua.indexOf('Firefox')) !== -1) { - // Firefox - isFirefox = true; - name = 'Firefox'; - fullVersion = ua.substring(verOffset + 8); - } else if ((nameOffset = ua.lastIndexOf(' ') + 1) < (verOffset = ua.lastIndexOf('/'))) { - // In most other browsers, 'name/version' is at the end of userAgent - name = ua.substring(nameOffset, verOffset); - fullVersion = ua.substring(verOffset + 1); - if (name.toLowerCase() === name.toUpperCase()) { - name = navigator.appName; + // Trim the fullVersion string at semicolon/space if present + if ((ix = fullVersion.indexOf(';')) !== -1) { + fullVersion = fullVersion.substring(0, ix); + } + if ((ix = fullVersion.indexOf(' ')) !== -1) { + fullVersion = fullVersion.substring(0, ix); } - } - // Trim the fullVersion string at semicolon/space if present - if ((ix = fullVersion.indexOf(';')) !== -1) { - fullVersion = fullVersion.substring(0, ix); - } - if ((ix = fullVersion.indexOf(' ')) !== -1) { - fullVersion = fullVersion.substring(0, ix); - } + // Get major version + majorVersion = parseInt('' + fullVersion, 10); + if (isNaN(majorVersion)) { + fullVersion = '' + parseFloat(navigator.appVersion); + majorVersion = parseInt(navigator.appVersion, 10); + } - // Get major version - majorVersion = parseInt('' + fullVersion, 10); - if (isNaN(majorVersion)) { - fullVersion = '' + parseFloat(navigator.appVersion); - majorVersion = parseInt(navigator.appVersion, 10); - } + // Return data + return { + name: name, + version: majorVersion, + isIE: isIE, + isFirefox: isFirefox, + isChrome: isChrome, + isSafari: isSafari, + isIos: /(iPad|iPhone|iPod)/g.test(navigator.platform), + isTouch: 'ontouchstart' in document.documentElement + }; + }, - // Return data - return { - name: name, - version: majorVersion, - isIE: isIE, - isFirefox: isFirefox, - isChrome: isChrome, - isSafari: isSafari, - isIos: /(iPad|iPhone|iPod)/g.test(navigator.platform), - isTouch: 'ontouchstart' in document.documentElement - }; - } + // Inject a script + injectScript: function(url) { + // Check script is not already referenced + if (document.querySelectorAll('script[src="' + url + '"]').length) { + return; + } - // Inject a script - function injectScript(url) { - // Check script is not already referenced - if (document.querySelectorAll('script[src="' + url + '"]').length) { - return; - } + var tag = document.createElement('script'); + tag.src = url; - var tag = document.createElement('script'); - tag.src = url; + var firstScriptTag = document.getElementsByTagName('script')[0]; + firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); + }, - var firstScriptTag = document.getElementsByTagName('script')[0]; - firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); - } + // Determine if we're in an iframe + inFrame: function() { + try { + return window.self !== window.top; + } catch (e) { + return true; + } + }, - // Determine if we're in an iframe - function inFrame() { - try { - return window.self !== window.top; - } catch (e) { - return true; - } - } + // Element exists in an array + inArray: function(haystack, needle) { + return is.array(haystack) && haystack.indexOf(needle) !== -1; + }, - // Element exists in an array - function inArray(haystack, needle) { - return Array.prototype.indexOf && (haystack.indexOf(needle) !== -1); - } + // Replace all + replaceAll: function(string, find, replace) { + return string.replace(new RegExp(find.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g, '\\$1'), 'g'), replace); + }, - // Replace all - function replaceAll(string, find, replace) { - return string.replace(new RegExp(find.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g, '\\$1'), 'g'), replace); - } + // Wrap an element + wrap: function(elements, wrapper) { + // Convert `elements` to an array, if necessary. + if (!elements.length) { + elements = [elements]; + } - // Wrap an element - function wrap(elements, wrapper) { - // Convert `elements` to an array, if necessary. - if (!elements.length) { - elements = [elements]; - } + // Loops backwards to prevent having to clone the wrapper on the + // first element (see `child` below). + for (var i = elements.length - 1; i >= 0; i--) { + var child = (i > 0) ? wrapper.cloneNode(true) : wrapper; + var element = elements[i]; - // Loops backwards to prevent having to clone the wrapper on the - // first element (see `child` below). - for (var i = elements.length - 1; i >= 0; i--) { - var child = (i > 0) ? wrapper.cloneNode(true) : wrapper; - var element = elements[i]; - - // Cache the current parent and sibling. - var parent = element.parentNode; - var sibling = element.nextSibling; - - // Wrap the element (is automatically removed from its current - // parent). - child.appendChild(element); - - // If the element had a sibling, insert the wrapper before - // the sibling to maintain the HTML structure; otherwise, just - // append it to the parent. - if (sibling) { - parent.insertBefore(child, sibling); - } else { - parent.appendChild(child); + // Cache the current parent and sibling. + var parent = element.parentNode; + var sibling = element.nextSibling; + + // Wrap the element (is automatically removed from its current + // parent). + child.appendChild(element); + + // If the element had a sibling, insert the wrapper before + // the sibling to maintain the HTML structure; otherwise, just + // append it to the parent. + if (sibling) { + parent.insertBefore(child, sibling); + } else { + parent.appendChild(child); + } + + return child; } + }, - return child; - } - } + // Remove an element + removeElement: function(element) { + if (!is.htmlElement(element)) { + return; + } - // Remove an element - function remove(element) { - if (!element) { - return; - } - element.parentNode.removeChild(element); - } + element.parentNode.removeChild(element); + }, - // Prepend child - function prependChild(parent, element) { - parent.insertBefore(element, parent.firstChild); - } + // Prepend child + prependChild: function(parent, element) { + parent.insertBefore(element, parent.firstChild); + }, - // Set attributes - function setAttributes(element, attributes) { - for (var key in attributes) { - element.setAttribute(key, attributes[key]); - } - } + // Set attributes + setAttributes: function(element, attributes) { + for (var key in attributes) { + element.setAttribute(key, attributes[key]); + } + }, - // Get an attribute object from a string selector - function getAttributesFromSelector(selector, existingAttributes) { - // For example: - // '.test' to { class: 'test' } - // '#test' to { id: 'test' } - // '[data-test="test"]' to { 'data-test': 'test' } + // Get an attribute object from a string selector + getAttributesFromSelector: function(selector, existingAttributes) { + // For example: + // '.test' to { class: 'test' } + // '#test' to { id: 'test' } + // '[data-test="test"]' to { 'data-test': 'test' } - if (!is.string(selector) || is.empty(selector)) { - return {}; - } + if (!is.string(selector) || is.empty(selector)) { + return {}; + } - var attributes = {}; + var attributes = {}; - selector.split(',').forEach(function(selector) { - // Remove whitespace - selector = selector.trim(); + selector.split(',').forEach(function(selector) { + // Remove whitespace + selector = selector.trim(); - // Get the first character - var start = selector.charAt(0); + // Get the first character + var start = selector.charAt(0); - switch (start) { - case '.': - // Classname selector - var className = selector.replace('.', ''); + switch (start) { + case '.': + // Classname selector + var className = selector.replace('.', ''); - // Add to existing classname - if (is.object(existingAttributes) && is.string(existingAttributes.class)) { - existingAttributes.class += ' ' + className; - } + // Add to existing classname + if (is.object(existingAttributes) && is.string(existingAttributes.class)) { + existingAttributes.class += ' ' + className; + } - attributes.class = className; - break; + attributes.class = className; + break; - case '#': - // ID selector - attributes.id = selector.replace('#', ''); - break; + case '#': + // ID selector + attributes.id = selector.replace('#', ''); + break; - case '[': - // Strip the [] - selector = selector.replace(/[\[\]]/g, ''); + case '[': + // Strip the [] + selector = selector.replace(/[\[\]]/g, ''); - // Get the parts if - var parts = selector.split('='); - var key = parts[0]; + // Get the parts if + var parts = selector.split('='); + var key = parts[0]; - // Get the value if provided - var value = parts.length > 1 ? parts[1].replace(/[\"\']/g, '') : ''; + // Get the value if provided + var value = parts.length > 1 ? parts[1].replace(/[\"\']/g, '') : ''; - // Attribute selector - attributes[key] = value; + // Attribute selector + attributes[key] = value; - break; - } - }); + break; + } + }); - return attributes; - } + return attributes; + }, - // Create a DocumentFragment - function createElement(type, attributes, text) { - // Create a new - var element = document.createElement(type); + // Create a DocumentFragment + createElement: function(type, attributes, text) { + // Create a new + var element = document.createElement(type); - // Set all passed attributes - if (is.object(attributes)) { - setAttributes(element, attributes); - } + // Set all passed attributes + if (is.object(attributes)) { + utils.setAttributes(element, attributes); + } - // Add text node - if (is.string(text)) { - element.textContent = text; - } + // Add text node + if (is.string(text)) { + element.textContent = text; + } - // Return built element - return element; - } + // Return built element + return element; + }, - // Insert a DocumentFragment - function insertElement(type, parent, attributes, text) { - // Create a new - var element = createElement(type, attributes, text); + // Insert a DocumentFragment + insertElement: function(type, parent, attributes, text) { + // Create a new + var element = utils.createElement(type, attributes, text); - // Inject the new element - prependChild(parent, element); - } + // Inject the new element + utils.prependChild(parent, element); + }, - // Remove all child elements - function emptyElement(element) { - var length = element.childNodes.length; - while (length--) { - element.removeChild(element.lastChild); - } - } + // Remove all child elements + emptyElement: function(element) { + var length = element.childNodes.length; + while (length--) { + element.removeChild(element.lastChild); + } + }, - // Toggle class on an element - function toggleClass(element, className, state) { - if (element) { - if (element.classList) { - element.classList[state ? 'add' : 'remove'](className); - } else { - var name = (' ' + element.className + ' ').replace(/\s+/g, ' ').replace(' ' + className + ' ', ''); - element.className = name + (state ? ' ' + className : ''); + // Toggle class on an element + toggleClass: function(element, className, state) { + if (element) { + if (element.classList) { + element.classList[state ? 'add' : 'remove'](className); + } else { + var name = (' ' + element.className + ' ').replace(/\s+/g, ' ').replace(' ' + className + ' ', ''); + element.className = name + (state ? ' ' + className : ''); + } } - } - } + }, - // Has class name - function hasClass(element, className) { - if (element) { - if (element.classList) { - return element.classList.contains(className); - } else { - return new RegExp('(\\s|^)' + className + '(\\s|$)').test(element.className); + // Has class name + hasClass: function(element, className) { + if (element) { + if (element.classList) { + return element.classList.contains(className); + } else { + return new RegExp('(\\s|^)' + className + '(\\s|$)').test(element.className); + } } - } - return false; - } + return false; + }, - // Element matches selector - function matches(element, selector) { - var prototype = Element.prototype; + // Element matches selector + matches: function(element, selector) { + var prototype = Element.prototype; - var matches = prototype.matches || - prototype.webkitMatchesSelector || - prototype.mozMatchesSelector || - prototype.msMatchesSelector || - function(s) { - return [].indexOf.call(document.querySelectorAll(s), this) !== -1; - }; + var matches = prototype.matches || + prototype.webkitMatchesSelector || + prototype.mozMatchesSelector || + prototype.msMatchesSelector || + function(s) { + return [].indexOf.call(document.querySelectorAll(s), this) !== -1; + }; - return matches.call(element, selector); - } + return matches.call(element, selector); + }, - // Get the focused element - function getFocusElement() { - var focused = document.activeElement; + // Get the focused element + getFocusElement: function() { + var focused = document.activeElement; - if (!focused || focused === document.body) { - focused = null; - } else { - focused = document.querySelector(':focus'); - } + if (!focused || focused === document.body) { + focused = null; + } else { + focused = document.querySelector(':focus'); + } - return focused; - } + return focused; + }, - // Bind along with custom handler - function proxy(element, eventName, customListener, defaultListener, useCapture) { - on(element, eventName, function(event) { - if (customListener) { - customListener.apply(element, [event]); - } - defaultListener.apply(element, [event]); - }, useCapture); - } + // Bind along with custom handler + proxy: function(element, eventName, customListener, defaultListener, useCapture) { + utils.on(element, eventName, function(event) { + if (customListener) { + customListener.apply(element, [event]); + } + defaultListener.apply(element, [event]); + }, useCapture); + }, - // Toggle event listener - function toggleListener(elements, events, callback, toggle, useCapture) { - var eventList = events.split(' '); + // Toggle event listener + toggleListener: function(elements, events, callback, toggle, useCapture) { + var eventList = events.split(' '); - // Whether the listener is a capturing listener or not - // Default to false - if (!is.boolean(useCapture)) { - useCapture = false; - } + // Whether the listener is a capturing listener or not + // Default to false + if (!is.boolean(useCapture)) { + useCapture = false; + } - // If a nodelist is passed, call itself on each node - if (elements instanceof NodeList) { - for (var x = 0; x < elements.length; x++) { - if (elements[x] instanceof Node) { - toggleListener(elements[x], arguments[1], arguments[2], arguments[3]); + // If a nodelist is passed, call itself on each node + if (elements instanceof NodeList) { + for (var x = 0; x < elements.length; x++) { + if (elements[x] instanceof Node) { + utils.toggleListener(elements[x], arguments[1], arguments[2], arguments[3]); + } } + return; } - return; - } - // If a single node is passed, bind the event listener - for (var i = 0; i < eventList.length; i++) { - elements[toggle ? 'addEventListener' : 'removeEventListener'](eventList[i], callback, useCapture); - } - } + // If a single node is passed, bind the event listener + for (var i = 0; i < eventList.length; i++) { + elements[toggle ? 'addEventListener' : 'removeEventListener'](eventList[i], callback, useCapture); + } + }, - // Bind event handler - function on(element, events, callback, useCapture) { - if (!is.undefined(element)) { - toggleListener(element, events, callback, true, useCapture); - } - } + // Bind event handler + on: function(element, events, callback, useCapture) { + if (!is.undefined(element)) { + utils.toggleListener(element, events, callback, true, useCapture); + } + }, - // Unbind event handler - function off(element, events, callback, useCapture) { - if (!is.undefined(element)) { - toggleListener(element, events, callback, false, useCapture); - } - } + // Unbind event handler + off: function(element, events, callback, useCapture) { + if (!is.undefined(element)) { + utils.toggleListener(element, events, callback, false, useCapture); + } + }, - // Trigger event - function event(element, type, bubbles, properties) { - // Bail if no element - if (!element || !type) { - return; - } + // Trigger event + event: function(element, type, bubbles, properties) { + // Bail if no element + if (!element || !type) { + return; + } - // Default bubbles to false - if (!is.boolean(bubbles)) { - bubbles = false; - } + // Default bubbles to false + if (!is.boolean(bubbles)) { + bubbles = false; + } - // Create and dispatch the event - var event = new CustomEvent(type, { - bubbles: bubbles, - detail: properties - }); + // Create and dispatch the event + var event = new CustomEvent(type, { + bubbles: bubbles, + detail: properties + }); - // Dispatch the event - element.dispatchEvent(event); - } + // Dispatch the event + element.dispatchEvent(event); + }, - // Toggle aria-pressed state on a toggle button - // http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles - function toggleState(target, state) { - // Bail if no target - if (!target) { - return; - } + // Toggle aria-pressed state on a toggle button + // http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles + toggleState: function(target, state) { + // Bail if no target + if (!target) { + return; + } - // Get state - state = (is.boolean(state) ? state : !target.getAttribute('aria-pressed')); + // Get state + state = (is.boolean(state) ? state : !target.getAttribute('aria-pressed')); - // Set the attribute on target - target.setAttribute('aria-pressed', state); + // Set the attribute on target + target.setAttribute('aria-pressed', state); - return state; - } + return state; + }, - // Get percentage - function getPercentage(current, max) { - if (current === 0 || max === 0 || isNaN(current) || isNaN(max)) { - return 0; - } - return ((current / max) * 100).toFixed(2); - } + // Get percentage + getPercentage: function(current, max) { + if (current === 0 || max === 0 || isNaN(current) || isNaN(max)) { + return 0; + } + return ((current / max) * 100).toFixed(2); + }, - // Deep extend/merge destination object with N more objects - // http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/ - // Removed call to arguments.callee (used explicit function name instead) - function extend() { - // Get arguments - var objects = arguments; + // Deep extend/merge destination object with N more objects + // http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/ + // Removed call to arguments.callee (used explicit function name instead) + extend: function() { + // Get arguments + var objects = arguments; - // Bail if nothing to merge - if (!objects.length) { - return; - } + // Bail if nothing to merge + if (!objects.length) { + return; + } - // Return first if specified but nothing to merge - if (objects.length === 1) { - return objects[0]; - } + // Return first if specified but nothing to merge + if (objects.length === 1) { + return objects[0]; + } - // First object is the destination - var destination = Array.prototype.shift.call(objects); - if (!is.object(destination)) { - destination = {}; - } + // First object is the destination + var destination = Array.prototype.shift.call(objects); + if (!is.object(destination)) { + destination = {}; + } - var length = objects.length; + var length = objects.length; - // Loop through all objects to merge - for (var i = 0; i < length; i++) { - var source = objects[i]; + // Loop through all objects to merge + for (var i = 0; i < length; i++) { + var source = objects[i]; - if (!is.object(source)) { - source = {}; - } + if (!is.object(source)) { + source = {}; + } - for (var property in source) { - if (source[property] && source[property].constructor && source[property].constructor === Object) { - destination[property] = destination[property] || {}; - extend(destination[property], source[property]); - } else { - destination[property] = source[property]; + for (var property in source) { + if (source[property] && source[property].constructor && source[property].constructor === Object) { + destination[property] = destination[property] || {}; + utils.extend(destination[property], source[property]); + } else { + destination[property] = source[property]; + } } } - } - return destination; - } + return destination; + }, - // Parse YouTube ID from url - function parseYouTubeId(url) { - var regex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; - return url.match(regex) ? RegExp.$2 : url; - } + // Parse YouTube ID from url + parseYouTubeId: function(url) { + var regex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; + return url.match(regex) ? RegExp.$2 : url; + } + }; // Fullscreen API var fullscreen = (function() { @@ -866,9 +869,6 @@ if (!is.htmlElement(element)) { element = document.body; } - - console.log(prefix); - return (prefix === '') ? element.requestFullScreen() : element[prefix + (prefix === 'ms' ? 'RequestFullscreen' : 'RequestFullScreen')](); }, cancelFullScreen: function() { @@ -922,7 +922,7 @@ // Picture-in-picture support // Safari only currently pip: (function() { - return is.function(createElement('video').webkitSetPresentationMode); + return is.function(utils.createElement('video').webkitSetPresentationMode); })(), // Airplay support @@ -1028,7 +1028,7 @@ // Trigger events, with plyr instance passed function trigger(element, type, bubbles, properties) { - event(element, type, bubbles, extend({}, properties, { + utils.event(element, type, bubbles, utils.extend({}, properties, { plyr: api })); } @@ -1043,6 +1043,16 @@ return getElements(selector)[0]; } + function removeElement(element) { + // Remove reference from player.elements cache + if (is.string(element)) { + utils.removeElement(player.elements[element]); + player.elements[element] = null; + } else { + utils.removeElement(element); + } + } + // Trap focus inside container function focusTrap() { var tabbables = getElements('input:not([disabled]), button:not([disabled])'); @@ -1065,18 +1075,18 @@ } // Bind the handler - on(player.elements.container, 'keydown', checkFocus); + utils.on(player.elements.container, 'keydown', checkFocus); } // Add elements to HTML5 media (source, tracks, etc) function insertElements(type, attributes) { if (is.string(attributes)) { - insertElement(type, player.elements.media, { + utils.insertElement(type, player.elements.media, { src: attributes }); } else if (is.array(attributes)) { attributes.forEach(function(attribute) { - insertElement(type, player.elements.media, attribute); + utils.insertElement(type, player.elements.media, attribute); }); } } @@ -1097,7 +1107,7 @@ // Create var icon = document.createElementNS(namespace, 'svg'); - setAttributes(icon, extend(attributes, { + utils.setAttributes(icon, utils.extend(attributes, { role: 'presentation' })); @@ -1125,18 +1135,18 @@ break; } - return createElement('span', { + return utils.createElement('span', { class: config.classes.hidden }, text); } // Create a badge function createBadge(text) { - var badge = createElement('span', { + var badge = utils.createElement('span', { class: config.classes.menu.value }); - badge.appendChild(createElement('span', { + badge.appendChild(utils.createElement('span', { class: config.classes.menu.badge }, text)); @@ -1145,7 +1155,7 @@ // Create a
for styling - // container: wrap(media, document.createElement('div')), + // container: utils.wrap(media, document.createElement('div')), // Could be a container or the media itself target: target, // This should be the