aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/js/plyr.js156
-rw-r--r--src/less/plyr.less15
-rw-r--r--src/sass/plyr.scss22
-rw-r--r--src/sprite/icon-captions-off.svg3
-rw-r--r--src/sprite/icon-captions-on.svg3
-rw-r--r--src/sprite/icon-enter-fullscreen.svg11
-rw-r--r--src/sprite/icon-exit-fullscreen.svg11
-rwxr-xr-xsrc/sprite/icon-fast-forward.svg1
-rw-r--r--src/sprite/icon-muted.svg3
-rw-r--r--src/sprite/icon-pause.svg3
-rwxr-xr-xsrc/sprite/icon-play.svg1
-rwxr-xr-xsrc/sprite/icon-restart.svg5
-rw-r--r--src/sprite/icon-rewind.svg3
-rwxr-xr-xsrc/sprite/icon-volume.svg1
14 files changed, 157 insertions, 81 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js
index afa9b6b8..8204ada6 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -37,7 +37,10 @@
seekTime: 10,
volume: 5,
click: true,
- tooltips: false,
+ tooltips: {
+ controls: false,
+ seek: true
+ },
displayDuration: true,
iconPrefix: 'icon',
selectors: {
@@ -165,9 +168,16 @@
'</progress>',
'<progress class="plyr__progress--buffer" max="100" value="0">',
'<span>0</span>% ' + config.i18n.buffered,
- '</progress>',
- '</div>',
- '<span class="plyr__controls--left">'];
+ '</progress>'];
+
+ // Seek tooltip
+ if (config.tooltips.seek) {
+ html.push('<span class="plyr__tooltip">0:00</span>');
+ }
+
+ // Close progress
+ html.push('</div>',
+ '<span class="plyr__controls--left">');
// Restart button
if (_inArray(config.controls, 'restart')) {
@@ -736,7 +746,8 @@
// Player instance
function Plyr(container) {
var plyr = this;
- plyr.container = container;
+ plyr.container = container,
+ plyr.timers = {};
// Captions functions
// Seek the manual caption time and update UI
@@ -979,6 +990,9 @@
plyr.progress.played.bar = _getElement(config.selectors.progress.played);
plyr.progress.played.text = plyr.progress.played.bar && plyr.progress.played.bar.getElementsByTagName('span')[0];
+ // Seek tooltip
+ plyr.progress.tooltip = plyr.progress.container && plyr.progress.container.querySelector('.' + config.classes.tooltip);
+
// Volume
plyr.volume = _getElement(config.selectors.buttons.volume);
@@ -1749,39 +1763,10 @@
// Set button state
_toggleState(plyr.buttons.fullscreen, plyr.isFullscreen);
- // Toggle controls visibility based on mouse movement and location
- var hoverTimer, isMouseOver = false;
-
- // Show the player controls
- function _showControls() {
- // Set shown class
- _toggleClass(plyr.container, config.classes.hover, true);
-
- // Clear timer every movement
- window.clearTimeout(hoverTimer);
-
- // If the mouse is not over the controls, set a timeout to hide them
- if (!isMouseOver) {
- hoverTimer = window.setTimeout(function() {
- _toggleClass(plyr.container, config.classes.hover, false);
- }, 2000);
- }
- }
-
- // Check mouse is over the controls
- function _setMouseOver (event) {
- isMouseOver = (event.type === 'mouseenter');
- }
-
+ // Hide on entering full screen
if (config.fullscreen.hideControls) {
- // Hide on entering full screen
- _toggleClass(plyr.controls, config.classes.hover, false);
-
- // Keep an eye on the mouse location in relation to controls
- _toggleListener(plyr.controls, 'mouseenter mouseleave', _setMouseOver, plyr.isFullscreen);
-
- // Show the controls on mouse move
- _toggleListener(plyr.container, 'mousemove', _showControls, plyr.isFullscreen);
+ //_toggleClass(plyr.controls, config.classes.hover, false);
+ _showControls(true);
}
// Trigger an event
@@ -1931,10 +1916,10 @@
var loading = (event.type === 'waiting');
// Clear timer
- clearTimeout(plyr.loadingTimer);
+ clearTimeout(plyr.timers.loading);
// Timer to prevent flicker when seeking
- plyr.loadingTimer = setTimeout(function() {
+ plyr.timers.loading = setTimeout(function() {
_toggleClass(plyr.container, config.classes.loading, loading);
}, (loading ? 250 : 0));
}
@@ -2041,6 +2026,9 @@
if (plyr.duration) {
_updateTimeDisplay(duration, plyr.duration);
}
+
+ // Update the tooltip (if visible)
+ _updateSeekTooltip();
}
// Handle time change event
@@ -2057,6 +2045,73 @@
_updateProgress(event);
}
+ // Update hover tooltip for seeking
+ function _updateSeekTooltip(event) {
+ // Bail if setting not true
+ if (!config.tooltips.seek) {
+ return;
+ }
+
+ // Calculate percentage
+ var clientRect = plyr.progress.container.getBoundingClientRect(),
+ percent = 0,
+ visible = config.classes.tooltip + '--visible';
+
+ // Determine percentage, if already visible
+ if (!event) {
+ if(_hasClass(plyr.progress.tooltip, visible)) {
+ percent = plyr.progress.tooltip.style.left.replace('%', '');
+ }
+ else {
+ return;
+ }
+ }
+ else {
+ percent = ((100 / clientRect.width) * (event.pageX - clientRect.left));
+ }
+
+ // Set bounds
+ if (percent < 0) {
+ percent = 0;
+ }
+ else if (percent > 100) {
+ percent = 100;
+ }
+
+ // Display the time a click would seek to
+ _updateTimeDisplay(((plyr.media.duration / 100) * percent), plyr.progress.tooltip);
+
+ // Set position
+ plyr.progress.tooltip.style.left = percent + "%";
+
+ // Show/hide the tooltip
+ // If the event is a moues in/out and percentage is inside bounds
+ if(_inArray(['mouseenter', 'mouseleave'], event.type)) {
+ _toggleClass(plyr.progress.tooltip, visible, (event.type === 'mouseenter'));
+ }
+ }
+
+ // Show the player controls in fullscreen mode
+ function _showControls(force) {
+ // We're only worried about fullscreen
+ if (!plyr.isFullscreen) {
+ return;
+ }
+
+ // Set shown class
+ _toggleClass(plyr.container, config.classes.hover, true);
+
+ // Clear timer every movement
+ window.clearTimeout(plyr.timers.hover);
+
+ // If the mouse is not over the controls, set a timeout to hide them
+ plyr.timers.hover = window.setTimeout(function() {
+ if (!plyr.controls.mouseover || (force === true)) {
+ _toggleClass(plyr.container, config.classes.hover, false);
+ }
+ }, 2000);
+ }
+
// Add common function to retrieve media source
function _source(source) {
// If not null or undefined, parse it
@@ -2327,6 +2382,19 @@
// Captions
_on(plyr.buttons.captions, 'click', _toggleCaptions);
+
+ // Seek tooltip
+ _on(plyr.progress.container, 'mouseenter mouseleave mousemove', _updateSeekTooltip);
+
+ // Toggle controls visibility based on mouse movement and location
+ var hoverTimer, isMouseOver = false;
+
+ if (config.fullscreen.hideControls) {
+ // Keep an eye on the mouse location in relation to controls
+ _on(plyr.controls, 'mouseenter mouseleave', function() {
+ plyr.controls.mouseover = (event.type === 'mouseenter');
+ });
+ }
}
// Listen for media events
@@ -2364,8 +2432,8 @@
_on(plyr.media, 'waiting canplay seeked', _checkLoading);
// Click video
- if (plyr.type === 'video' && config.click) {
- _on(plyr.videoContainer, 'click', function() {
+ if (config.click) {
+ _on(plyr.media, 'click', function() {
if (plyr.media.paused) {
_play();
}
@@ -2379,6 +2447,12 @@
});
}
+ // Listen for mouse move to show controls
+ if (config.fullscreen.hideControls) {
+ // Show the controls on mouse move
+ _on(plyr.media, 'mousemove', _showControls);
+ }
+
// Proxy events to container
_on(plyr.media, config.events.join(' '), function(event) {
_triggerEvent(plyr.container, event.type);
diff --git a/src/less/plyr.less b/src/less/plyr.less
index c3240242..8a8364e7 100644
--- a/src/less/plyr.less
+++ b/src/less/plyr.less
@@ -178,6 +178,7 @@
height: 100%;
border: 0;
user-select: none;
+ pointer-events: none; // To allow mouse events to be captured
}
// Vimeo hack
@@ -322,6 +323,7 @@
// Tooltips
&__tooltip {
+ visibility: hidden;
position: absolute;
z-index: 2;
bottom: 100%;
@@ -337,9 +339,9 @@
line-height: 1.5;
font-weight: 600;
- transform: translate(-50%, (@plyr-tooltip-padding * 3)) scale(.8);
+ transform: translate(-50%, 10px) scale(.8);
transform-origin: 50% 100%;
- transition: transform .2s .1s ease, opacity .2s .1s ease;
+ transition: transform .2s .1s ease, opacity .2s .1s ease, visibility .3s ease;
// Arrows
&::after,
@@ -371,7 +373,9 @@
}
}
button:hover .plyr__tooltip,
- button.tab-focus:focus .plyr__tooltip {
+ button.tab-focus:focus .plyr__tooltip,
+ &__tooltip--visible {
+ visibility: visible;
opacity: 1;
transform: translate(-50%, 0) scale(1);
}
@@ -484,6 +488,11 @@
border: 0;
}
}
+
+ // Seek tooltip to show time
+ .plyr__tooltip {
+ left: 0;
+ }
}
// Loading state
diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss
index a94aeaf5..36c157e4 100644
--- a/src/sass/plyr.scss
+++ b/src/sass/plyr.scss
@@ -46,7 +46,7 @@ $plyr-control-color-hover: null !default;
// Tooltips
$plyr-tooltip-bg: $plyr-controls-bg !default;
-$plyr-tooltip-border-color: transparentize(@gray-dark, .1) !default;
+$plyr-tooltip-border-color: transparentize($plyr-gray-dark, .1) !default;
$plyr-tooltip-border-width: 1px;
$plyr-tooltip-shadow: 0 0 5px $plyr-tooltip-border-color, 0 0 0 $plyr-tooltip-border-width $plyr-tooltip-border-color;
$plyr-tooltip-color: $plyr-control-color !default;
@@ -59,7 +59,7 @@ $plyr-progress-bg: transparentize($plyr-gray, .2) !default;
$plyr-progress-playing-bg: $plyr-blue !default;
$plyr-progress-buffered-bg: transparentize($plyr-gray, .25) !default;
$plyr-progress-loading-size: 40px !default;
-$plyr-progress-loading-bg: transparentize(#000, .15); !default;
+$plyr-progress-loading-bg: transparentize(#000, .15) !default;
// Volume
$plyr-volume-track-height: 6px !default;
@@ -178,6 +178,8 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la
width: 100%;
height: 100%;
border: 0;
+ user-select: none;
+ pointer-events: none; // To allow mouse events to be captured
}
// Vimeo hack
@@ -322,6 +324,7 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la
// Tooltips
&__tooltip {
+ visibility: hidden;
position: absolute;
z-index: 2;
bottom: 100%;
@@ -337,9 +340,9 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la
line-height: 1.5;
font-weight: 600;
- transform: translate(-50%, ($plyr-tooltip-padding * 3)) scale(.8);
+ transform: translate(-50%, 10px) scale(.8);
transform-origin: 50% 100%;
- transition: transform .2s .1s ease, opacity .2s .1s ease;
+ transition: transform .2s .1s ease, opacity .2s .1s ease, visibility .3s ease;
// Arrows
&::after,
@@ -371,7 +374,9 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la
}
}
button:hover .plyr__tooltip,
- button.tab-focus:focus .plyr__tooltip {
+ button.tab-focus:focus .plyr__tooltip,
+ &__tooltip--visible {
+ visibility: visible;
opacity: 1;
transform: translate(-50%, 0) scale(1);
}
@@ -387,7 +392,7 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la
// Playback progress
// <progress> element
- &-progress {
+ &__progress {
position: absolute;
bottom: 100%;
left: 0;
@@ -484,6 +489,11 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la
border: 0;
}
}
+
+ // Seek tooltip to show time
+ .plyr__tooltip {
+ left: 0;
+ }
}
// Loading state
diff --git a/src/sprite/icon-captions-off.svg b/src/sprite/icon-captions-off.svg
index d9c2c444..788e4de4 100644
--- a/src/sprite/icon-captions-off.svg
+++ b/src/sprite/icon-captions-off.svg
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
- <title>Captions Off</title>
<g>
<path d="M1,2 C0.448,2 0,2.448 0,3 L0,15 C0,15.552 0.448,16 1,16 L17,16 C17.552,16 18,15.552 18,15 L18,3 C18,2.448 17.552,2 17,2 L1,2 Z M2,14 L2,4 L16,4 L16,14 L2,14 L2,14 Z"></path>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/src/sprite/icon-captions-on.svg b/src/sprite/icon-captions-on.svg
index 9053a31c..c02dfcb1 100644
--- a/src/sprite/icon-captions-on.svg
+++ b/src/sprite/icon-captions-on.svg
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Captions On</title>
<g>
<path d="M1,2 C0.448,2 0,2.448 0,3 L0,15 C0,15.552 0.448,16 1,16 L17,16 C17.552,16 18,15.552 18,15 L18,3 C18,2.448 17.552,2 17,2 L1,2 Z M2,14 L2,4 L16,4 L16,14 L2,14 L2,14 Z"></path>
<rect x="3" y="11" width="3" height="2"></rect>
<rect x="12" y="11" width="3" height="2"></rect>
<rect x="7" y="11" width="4" height="2"></rect>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/src/sprite/icon-enter-fullscreen.svg b/src/sprite/icon-enter-fullscreen.svg
index 200e44e0..e8d1ab1a 100644
--- a/src/sprite/icon-enter-fullscreen.svg
+++ b/src/sprite/icon-enter-fullscreen.svg
@@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Enter Fullscreen</title>
- <g>
- <g transform="translate(9.000000, 9.000000) rotate(-180.000000) translate(-9.000000, -9.000000) translate(0.000000, 2.000000)">
- <path d="M7.69999981,6.30000001 C7.00064659,5.62264405 6.3,6.3 6.3,6.3 L2,10.6 L2,6 L0,6 L0,13 C0,13.6 0.4,14 1,14 L8,14 L8,12 L3.4,12 L7.7,7.7 C7.7,7.7 8.39935303,6.97735597 7.69999981,6.30000001 Z"></path>
- <path d="M11,14 L11,12 L16,12 L16,2 L2,2 L2,3 L0,3 L0,1 C0,0.4 0.4,0 1,0 L17,0 C17.6,0 18,0.4 18,1 L18,13 C18,13.6 17.6,14 17,14 L11,14 Z"></path>
- </g>
+ <g transform="translate(9.000000, 9.000000) rotate(-180.000000) translate(-9.000000, -9.000000) translate(0.000000, 2.000000)">
+ <path d="M7.69999981,6.30000001 C7.00064659,5.62264405 6.3,6.3 6.3,6.3 L2,10.6 L2,6 L0,6 L0,13 C0,13.6 0.4,14 1,14 L8,14 L8,12 L3.4,12 L7.7,7.7 C7.7,7.7 8.39935303,6.97735597 7.69999981,6.30000001 Z"></path>
+ <path d="M11,14 L11,12 L16,12 L16,2 L2,2 L2,3 L0,3 L0,1 C0,0.4 0.4,0 1,0 L17,0 C17.6,0 18,0.4 18,1 L18,13 C18,13.6 17.6,14 17,14 L11,14 Z"></path>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/src/sprite/icon-exit-fullscreen.svg b/src/sprite/icon-exit-fullscreen.svg
index 3c6f31e7..0fdd6b45 100644
--- a/src/sprite/icon-exit-fullscreen.svg
+++ b/src/sprite/icon-exit-fullscreen.svg
@@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Exit Fullscreen</title>
- <g>
- <g transform="translate(0.000000, 2.000000)">
- <path d="M7.69999981,6.30000001 C7.00064659,5.62264405 6.3,6.3 6.3,6.3 L2,10.6 L2,6 L0,6 L0,13 C0,13.6 0.4,14 1,14 L8,14 L8,12 L3.4,12 L7.7,7.7 C7.7,7.7 8.39935303,6.97735597 7.69999981,6.30000001 Z"></path>
- <path d="M11,14 L11,12 L16,12 L16,2 L2,2 L2,3 L0,3 L0,1 C0,0.4 0.4,0 1,0 L17,0 C17.6,0 18,0.4 18,1 L18,13 C18,13.6 17.6,14 17,14 L11,14 Z"></path>
- </g>
+ <g transform="translate(0.000000, 2.000000)">
+ <path d="M7.69999981,6.30000001 C7.00064659,5.62264405 6.3,6.3 6.3,6.3 L2,10.6 L2,6 L0,6 L0,13 C0,13.6 0.4,14 1,14 L8,14 L8,12 L3.4,12 L7.7,7.7 C7.7,7.7 8.39935303,6.97735597 7.69999981,6.30000001 Z"></path>
+ <path d="M11,14 L11,12 L16,12 L16,2 L2,2 L2,3 L0,3 L0,1 C0,0.4 0.4,0 1,0 L17,0 C17.6,0 18,0.4 18,1 L18,13 C18,13.6 17.6,14 17,14 L11,14 Z"></path>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/src/sprite/icon-fast-forward.svg b/src/sprite/icon-fast-forward.svg
index 71d5d138..1cc67199 100755
--- a/src/sprite/icon-fast-forward.svg
+++ b/src/sprite/icon-fast-forward.svg
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Fast Forward</title>
<path d="M17.569 8.246l-10.569-6.246c-0.552 0-1 0.448-1 1v1.954l-5-2.954c-0.552 0-1 0.448-1 1v12c0 0.552 0.448 1 1 1l5-2.955v1.955c0 0.552 0.448 1 1 1l10.569-6.246c0.267-0.158 0.431-0.444 0.431-0.754s-0.164-0.597-0.431-0.754zM6 10.722l-4 2.364v-8.172l4 2.364v3.444zM8 13.086v-8.172l6.915 4.086-6.915 4.086z"></path>
</svg>
diff --git a/src/sprite/icon-muted.svg b/src/sprite/icon-muted.svg
index 6d017d02..8a0014f1 100644
--- a/src/sprite/icon-muted.svg
+++ b/src/sprite/icon-muted.svg
@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Muted</title>
<g transform="translate(0.000000, 2.000000)">
<path d="M9.214,0 C9.103,0 8.989,0.032 8.88,0.101 L4.832,2.911 C4.749,2.969 4.65,3 4.549,3 L0.996,3 C0.446,3 1.33226763e-15,3.448 1.33226763e-15,4 L1.33226763e-15,10 C1.33226763e-15,10.552 0.446,11 0.996,11 L4.549,11 C4.651,11 4.749,11.031 4.832,11.089 L8.88,13.899 C8.989,13.968 9.103,14 9.214,14 C9.606,14 9.961,13.6 9.961,13.051 L9.961,0.95 C9.961,0.4 9.606,0.001 9.214,0.001 L9.214,0 Z M7.969,10.834 L5.582,9.177 C5.416,9.062 5.218,8.999 5.016,8.999 L2.491,8.999 C2.216,8.999 1.993,8.775 1.993,8.499 L1.993,5.499 C1.993,5.223 2.216,4.999 2.491,4.999 L5.016,4.999 C5.218,4.999 5.416,4.937 5.582,4.821 L7.969,3.164 L7.969,10.833 L7.969,10.834 Z"></path>
<path d="M14.934,6.799 C14.848,5.051 13.42,3.808 12.427,3.15 C11.957,2.838 11.333,3.028 11.102,3.558 L11.064,3.644 C10.876,4.075 11.019,4.583 11.4,4.838 C12.106,5.311 12.986,6.085 13.024,6.903 C13.056,7.579 12.471,8.371 11.361,9.173 C10.963,9.461 10.832,10.012 11.076,10.448 L11.118,10.523 C11.384,10.998 11.984,11.147 12.418,10.835 C14.158,9.584 15.004,8.229 14.934,6.798 L14.934,6.799 Z"></path>
<path d="M17.934,6.799 C17.848,5.051 16.42,3.808 15.427,3.15 C14.957,2.838 14.333,3.028 14.102,3.558 L14.064,3.644 C13.876,4.075 14.019,4.583 14.4,4.838 C15.106,5.311 15.986,6.085 16.024,6.903 C16.056,7.579 15.471,8.371 14.361,9.173 C13.963,9.461 13.832,10.012 14.076,10.448 L14.118,10.523 C14.384,10.998 14.984,11.147 15.418,10.835 C17.158,9.584 18.004,8.229 17.934,6.798 L17.934,6.799 Z" transform="translate(15.945467, 6.999165) rotate(-180.000000) translate(-15.945467, -6.999165) "></path>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/src/sprite/icon-pause.svg b/src/sprite/icon-pause.svg
index b4ba82e2..7fb41105 100644
--- a/src/sprite/icon-pause.svg
+++ b/src/sprite/icon-pause.svg
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Pause</title>
<g transform="translate(2.000000, 2.000000)">
<path d="M0,2 L0,12 C5.24848613e-17,14 2,14 2,14 L4,14 C4,14 6,14 6,12 C6,11.786438 6,11.572876 6,11 L6,2 C6,3.17446247e-09 4,0 4,0 L2,0 C2,0 0,0 0,2 Z M2,2 L4,2 L4,12 L2,12 L2,2 Z"></path>
<path d="M8,2 L8,12 C8,14 10,14 10,14 L12,14 C12,14 14,14 14,12 C14,11.786438 14,11.572876 14,11 L14,2 C14,3.17446247e-09 12,0 12,0 L10,0 C10,0 8,0 8,2 Z M10,2 L12,2 L12,12 L10,12 L10,2 Z"></path>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/src/sprite/icon-play.svg b/src/sprite/icon-play.svg
index f564b80f..056b9f79 100755
--- a/src/sprite/icon-play.svg
+++ b/src/sprite/icon-play.svg
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Play</title>
<path d="M5 4.914l6.915 4.086-6.915 4.086v-8.172zM4 2c-0.552 0-1 0.448-1 1v12c0 0.552 0.448 1 1 1l10.569-6.246c0.267-0.158 0.431-0.444 0.431-0.754s-0.164-0.597-0.431-0.754l-10.569-6.246z"></path>
</svg>
diff --git a/src/sprite/icon-restart.svg b/src/sprite/icon-restart.svg
index 6cf89d8d..2a889021 100755
--- a/src/sprite/icon-restart.svg
+++ b/src/sprite/icon-restart.svg
@@ -1,8 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<svg viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<path d="M7.7,1.2l0.7,6.4l2.1-2.1c1.9,1.9,1.9,5.1,0,7C9.6,13.5,8.3,14,7,14c-1.3,0-2.6-0.5-3.5-1.5
c-1.9-1.9-1.9-5.1,0-7c0.6-0.6,1.4-1.1,2.3-1.3L5.2,2.3C4,2.6,2.9,3.2,2,4.1c-2.7,2.7-2.7,7.1,0,9.9c1.3,1.3,3.1,2,4.9,2
c1.9,0,3.6-0.7,4.9-2c2.7-2.7,2.7-7.1,0-9.9l2.2-2.2L7.7,1.2z"/>
diff --git a/src/sprite/icon-rewind.svg b/src/sprite/icon-rewind.svg
index b7beaa34..661df0fd 100644
--- a/src/sprite/icon-rewind.svg
+++ b/src/sprite/icon-rewind.svg
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg viewBox="0 0 18 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
- <title>Rewind</title>
<path d="M17.569,9.246 L7,3 C6.448,3 6,3.448 6,4 L6,5.954 L1,3 C0.448,3 0,3.448 0,4 L0,16 C0,16.552 0.448,17 1,17 L6,14.045 L6,16 C6,16.552 6.448,17 7,17 L17.569,10.754 C17.836,10.596 18,10.31 18,10 C18,9.69 17.836,9.403 17.569,9.246 L17.569,9.246 Z M6,11.722 L2,14.086 L2,5.914 L6,8.278 L6,11.722 L6,11.722 Z M8,14.086 L8,5.914 L14.915,10 L8,14.086 L8,14.086 Z" transform="translate(9.000000, 10.000000) rotate(-180.000000) translate(-9.000000, -10.000000) "></path>
-</svg> \ No newline at end of file
+</svg>
diff --git a/src/sprite/icon-volume.svg b/src/sprite/icon-volume.svg
index 27d6d809..9de20690 100755
--- a/src/sprite/icon-volume.svg
+++ b/src/sprite/icon-volume.svg
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <title>Volume</title>
<path d="M10.214 2c-0.111 0-0.225 0.032-0.334 0.101l-4.048 2.81c-0.083 0.058-0.182 0.089-0.283 0.089h-3.553c-0.55 0-0.996 0.448-0.996 1v6c0 0.552 0.446 1 0.996 1h3.553c0.102 0 0.2 0.031 0.283 0.089l4.048 2.81c0.109 0.069 0.223 0.101 0.334 0.101 0.392 0 0.747-0.4 0.747-0.949v-12.101c0-0.55-0.355-0.949-0.747-0.949zM8.969 12.834l-2.387-1.657c-0.166-0.115-0.364-0.178-0.566-0.178h-2.525c-0.275 0-0.498-0.224-0.498-0.5v-3c0-0.276 0.223-0.5 0.498-0.5h2.525c0.202 0 0.4-0.062 0.566-0.178l2.387-1.657v7.669z"></path>
<path d="M16.934 8.799c-0.086-1.748-1.514-2.991-2.507-3.649-0.47-0.312-1.094-0.122-1.325 0.408l-0.038 0.086c-0.188 0.431-0.045 0.939 0.336 1.194 0.706 0.473 1.586 1.247 1.624 2.065 0.032 0.676-0.553 1.468-1.663 2.27-0.398 0.288-0.529 0.839-0.285 1.275l0.042 0.075c0.266 0.475 0.866 0.624 1.3 0.312 1.74-1.251 2.586-2.606 2.516-4.037z"></path>
</svg>