├── safari.sh
├── src.safariextension
├── Icon-64.png
├── Info.plist
├── Settings.plist
├── background.html
├── chrome.js
├── common.js
└── data
│ ├── error.svg
│ ├── inject
│ ├── chrome.js
│ ├── index.css
│ └── index.js
│ └── loader.gif
├── src
├── common.js
├── data
│ ├── error.svg
│ ├── icons
│ │ ├── 128.png
│ │ ├── 16.png
│ │ ├── 256.png
│ │ ├── 32.png
│ │ ├── 48.png
│ │ └── 64.png
│ ├── inject
│ │ ├── index.css
│ │ └── index.js
│ ├── loader.gif
│ └── options
│ │ ├── index.html
│ │ └── index.js
└── manifest.json
└── test
└── index.html
/safari.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cp src/common.js src.safariextension/common.js
4 | cp src/data/inject/index.js src.safariextension/data/inject/index.js
5 |
--------------------------------------------------------------------------------
/src.safariextension/Icon-64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/schomery/youtube-hover/88212b8ce263f5c7f91e71f06a16784cbee457b5/src.safariextension/Icon-64.png
--------------------------------------------------------------------------------
/src.safariextension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
YouTube player width (in pixels) | 28 |29 | |
Draw a strike-through over YouTube links after preview | 32 |33 | |
Add previewed links to the browser history | 36 |37 | |
Turn off the light while playing | 40 |41 | |
Player positioning mode | 44 |45 | 49 | | 50 |
Scroll to player in the "relative" mode | 53 |54 | |
Use smooth scrolling | 57 |58 | |
Player offset in the "relative" mode | 60 |61 | x 62 | | 63 |
Player offset in the "center" mode | 66 |67 | x 68 | | 69 |
Display the player if mouse is over a link for (in milliseconds) | 72 |73 | |
Display the preview panel on youtube.com as well | 76 |77 | |
81 | 82 |
83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/data/options/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function restore() { 4 | // Use default value color = 'red' and likesColor = true. 5 | chrome.storage.local.get({ 6 | 'relative-x': 0, 7 | 'relative-y': 0, 8 | 'center-x': 0, 9 | 'center-y': 0, 10 | 'delay': 1000, 11 | 'width': 500, 12 | 'mode': 0, 13 | 'strike': true, 14 | 'history': true, 15 | 'scroll': true, 16 | 'smooth': true, 17 | 'dark': false, 18 | 'youtube': false 19 | }, prefs => { 20 | document.getElementById('relative-x').value = prefs['relative-x']; 21 | document.getElementById('relative-y').value = prefs['relative-y']; 22 | document.getElementById('center-x').value = prefs['center-x']; 23 | document.getElementById('center-y').value = prefs['center-y']; 24 | document.getElementById('delay').value = prefs.delay; 25 | document.getElementById('width').value = prefs.width; 26 | document.getElementById('mode').selectedIndex = prefs.mode; 27 | document.getElementById('strike').checked = prefs.strike; 28 | document.getElementById('history').checked = prefs.history; 29 | document.getElementById('scroll').checked = prefs.scroll; 30 | document.getElementById('smooth').checked = prefs.smooth; 31 | document.getElementById('dark').checked = prefs.dark; 32 | document.getElementById('youtube').checked = prefs.youtube; 33 | }); 34 | } 35 | 36 | function save() { 37 | const rx = document.getElementById('relative-x').value; 38 | const ry = document.getElementById('relative-y').value; 39 | const cx = document.getElementById('center-x').value; 40 | const cy = document.getElementById('center-y').value; 41 | const delay = document.getElementById('delay').value; 42 | const width = document.getElementById('width').value; 43 | const mode = document.getElementById('mode').selectedIndex; 44 | const strike = document.getElementById('strike').checked; 45 | const history = document.getElementById('history').checked; 46 | const scroll = document.getElementById('scroll').checked; 47 | const smooth = document.getElementById('smooth').checked; 48 | const dark = document.getElementById('dark').checked; 49 | const youtube = document.getElementById('youtube').checked; 50 | 51 | chrome.storage.local.set({ 52 | 'relative-x': Number(rx), 53 | 'relative-y': Number(ry), 54 | 'center-x': Number(cx), 55 | 'center-y': Number(cy), 56 | 'width': Number(width), 57 | 'delay': Number(delay), 58 | 'mode': mode, 59 | 'strike': strike, 60 | 'history': history, 61 | 'scroll': scroll, 62 | 'smooth': smooth, 63 | 'dark': dark, 64 | 'youtube': youtube 65 | }, () => { 66 | const status = document.getElementById('status'); 67 | status.textContent = 'Options saved.'; 68 | restore(); 69 | setTimeout(() => status.textContent = '', 750); 70 | }); 71 | } 72 | 73 | document.addEventListener('DOMContentLoaded', restore); 74 | document.getElementById('save').addEventListener('click', save); 75 | -------------------------------------------------------------------------------- /src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "YouTube™ on Hover Preview", 3 | "short_name": "ihvyoutube", 4 | "description": "View YouTube while hovering mouse over a YouTube link on any website", 5 | "author": "Jeremy Schomery", 6 | "version": "0.1.9", 7 | "manifest_version": 2, 8 | "permissions": [ 9 | "storage", 10 | "tabs", 11 | "history", 12 | "*://www.youtube.com/*" 13 | ], 14 | "background": { 15 | "persistent": false, 16 | "scripts": [ 17 | "common.js" 18 | ] 19 | }, 20 | "content_scripts": [{ 21 | "matches": ["