diff --git a/out/PiPer.safariextz b/out/PiPer.safariextz
index ab053b9..68d6f27 100644
Binary files a/out/PiPer.safariextz and b/out/PiPer.safariextz differ
diff --git a/src/scripts/main.js b/src/scripts/main.js
index d6cd43d..ce5759c 100644
--- a/src/scripts/main.js
+++ b/src/scripts/main.js
@@ -5,6 +5,7 @@
* buttonClassName: (string|undefined),
* buttonDidAppear: (function(): undefined|undefined),
* buttonElementType: (string|undefined),
+ * buttonHoverStyle: (string|undefined),
* buttonImage: (string|undefined),
* buttonInsertBefore: (function(Element): ?Node|undefined),
* buttonParent: function(): ?Element,
@@ -39,11 +40,17 @@ const addButton = function(/** Element */ parent) {
const image = document.createElement('img');
image.src = safari.extension.baseURI + 'images/' + (currentResource.buttonImage || 'default') + '.svg';
- image.style.cssText = 'width:100%;height:100%';
- if (currentResource.buttonScale) image.style.cssText += ';transform:scale(' + currentResource.buttonScale + ')';
-
+ image.style.width = image.style.height = '100%';
+ if (currentResource.buttonScale) image.style.transform = 'scale(' + currentResource.buttonScale + ')';
button.appendChild(image);
+ if (currentResource.buttonHoverStyle) {
+ const style = document.createElement('style');
+ const css = '#' + BUTTON_ID + ':hover{' + currentResource.buttonHoverStyle + '}';
+ style.appendChild(document.createTextNode(css));
+ button.appendChild(style);
+ }
+
button.addEventListener('click', function(event) {
event.preventDefault();
@@ -82,11 +89,7 @@ const buttonObserver = function() {
const resources = {
'amazon': {
- buttonDidAppear: function() {
- const style = document.createElement('style');
- style.appendChild(document.createTextNode('#' + BUTTON_ID + ':hover{opacity:1!important}'));
- document.getElementById(BUTTON_ID).appendChild(style);
- },
+ buttonHoverStyle: 'opacity:1!important',
buttonInsertBefore: function(/** Element */ parent) {
return parent.querySelector('.fullscreenButtonWrapper');
},
@@ -117,11 +120,7 @@ const resources = {
},
'curiositystream': {
- buttonDidAppear: function() {
- const style = document.createElement('style');
- style.appendChild(document.createTextNode('#' + BUTTON_ID + ':hover{opacity:1!important}'));
- document.getElementById(BUTTON_ID).appendChild(style);
- },
+ buttonHoverStyle: 'opacity:1!important',
buttonInsertBefore: function(/** Element */ parent) {
return parent.lastChild;
},
@@ -186,12 +185,14 @@ const resources = {
'metacafe': {
buttonElementType: 'div',
+ buttonInsertBefore: function(/** Element */ parent) {
+ return parent.lastChild;
+ },
buttonParent: function() {
const e = document.getElementById('player_place');
return e && e.querySelector('.tray');
},
- buttonScale: 0.9,
- buttonStyle: 'left:-2px',
+ buttonScale: 0.85,
videoElement: function() {
const e = document.getElementById('player_place');
return e && e.querySelector('video');
@@ -245,11 +246,7 @@ const resources = {
'plex': {
buttonClassName: 'btn-link',
- buttonDidAppear: function() {
- const style = document.createElement('style');
- style.appendChild(document.createTextNode('#' + BUTTON_ID + ':hover{opacity:1!important}'));
- document.getElementById(BUTTON_ID).appendChild(style);
- },
+ buttonHoverStyle: 'opacity:1!important',
buttonParent: function() {
const e = document.getElementById('plex');
return e && e.querySelector('.player-dropups-container.video-controls-right');
@@ -279,16 +276,20 @@ const resources = {
buttonClassName: 'player-button',
buttonDidAppear: function() {
const button = document.getElementById(BUTTON_ID);
- const style = document.createElement('style');
- const span = /** @type {HTMLElement} */ (document.createElement('span'));
- span.className = 'player-tip js-control-tip';
- span.style.cssText = 'margin-left:-14em';
- span.dataset['tip'] = button.title;
- style.appendChild(document.createTextNode('#' + BUTTON_ID + ' img:hover{filter:brightness(50%)sepia(1)hue-rotate(219deg)saturate(117%)brightness(112%)}'));
- button.appendChild(style);
- button.appendChild(span);
- button.title = '';
+ const neighbourTooltip = /** @type {HTMLElement} */ (button.nextSibling.querySelector('.player-tip'));
+ const /** string */ previousTitle = neighbourTooltip.dataset['tip'];
+ button.addEventListener('mouseover', function(e){
+ neighbourTooltip.dataset['tip'] = button.title;
+ neighbourTooltip.style.display = 'block';
+ button.title = '';
+ });
+ button.addEventListener('mouseout', function(e){
+ neighbourTooltip.style.display = '';
+ button.title = neighbourTooltip.dataset['tip'];
+ neighbourTooltip.dataset['tip'] = previousTitle;
+ });
},
+ buttonHoverStyle: 'filter:brightness(50%)sepia(1)hue-rotate(219deg)saturate(117%)brightness(112%)',
buttonInsertBefore: function(/** Element */ parent) {
return parent.querySelector('.player-button--fullscreen');
},
diff --git a/update.plist b/update.plist
index 6d213bd..5abd070 100644
--- a/update.plist
+++ b/update.plist
@@ -10,7 +10,7 @@
CFBundleShortVersionString
0.1.3
CFBundleVersion
- 21
+ 23
Developer Identifier
BQ6Q24MF9X
URL