/
index.js
53 lines (42 loc) · 1.72 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const cm = require("sdk/context-menu");
const preferences = require("sdk/simple-prefs");
const prefs = preferences.prefs;
const self = require("sdk/self");
const windows = require('sdk/window/utils').windows;
const loadSheet = require('sdk/stylesheet/utils').loadSheet;
const parseNumbers = require('./numberParser.js').parseNumbers;
const defaultSpeeds = "0.5, 1, 3, 5";
const defaultModifiers = "0.25, 1";
var menu = null;
function createMenu(){
if (menu){
menu.destroy();
}
let speeds = prefs.speeds;
speeds = parseNumbers(speeds, defaultSpeeds);
speeds = speeds.sort((a,b) => b-a);
speeds = speeds.map(x => cm.Item({ label: x.toString() + "X", data: x.toString() + "X" }));
let modifiers = prefs.modifiers;
modifiers = parseNumbers(modifiers, defaultModifiers);
modifiers = modifiers.sort((a,b) => b-a);
let positiveModifiers = modifiers.map(x => cm.Item({ label: x.toString() + "+", data: x.toString() }));
modifiers = modifiers.sort((a,b) => a-b);
let negativeModifiers = modifiers.map(x => cm.Item({ label: x.toString() + "-", data: '-' + x.toString() }));
let items = [].concat(speeds, cm.Separator(), positiveModifiers, negativeModifiers);
menu = cm.Menu({
label: "Playback Rate",
contentScriptFile: "./manipulator.js",
items: items,
onMessage: function (args) {
if(args.endsWith('X')) {
this.label = "Playback Rate: " + args;
}
else {
this.label = "Playback Rate";
}
}
});
}
windows('navigator:browser', {includePrivate:true}).forEach(window => loadSheet(window, self.data.url('faster-video-style.css')));
createMenu();
preferences.on("", createMenu);