3 function addClass(v,c) {
\r
4 for(let i=0,l=v.length,cl; i<l; i++) {
\r
5 cl = v[i].classList; cl.add(c);
\r
6 //console.log("[UltraWide] addClass",c,v[i]);
\r
9 function remClass(v,c) {
\r
10 for(let i=0,l=v.length,cl; i<l; i++) {
\r
11 cl = v[i].classList; if(cl.contains(c)) {
\r
12 cl.remove(c); //console.log("[UltraWide] remClass",c,v[i]);
\r
17 UltraWide.prototype.update = function() {
\r
18 //Calculate scale factor:
\r
19 if(this.mode == 3 || this.mode == 4) this.scale = 1.33; //Force Modes
\r
20 else if(screen.width / screen.height > 1.8) this.scale = screen.width / 1920; //If UltraWide
\r
21 else this.scale = 1; //Default
\r
24 this.styles.innerHTML = ".extraClassAspect { -webkit-transform:scaleX("+this.scale+")!important; }\
\r
25 .extraClassCrop { -webkit-transform:scale("+this.scale+")!important; }";
\r
28 const fs = document.webkitIsFullScreen, v = document.getElementsByTagName('video');
\r
29 //console.log("[UltraWide] Page Update", this.mode, this.scale, fs);
\r
30 if(v.length) switch(this.mode) {
\r
32 remClass(v,'extraClassAspect');
\r
33 remClass(v,'extraClassCrop');
\r
34 break; case 1: //Aspect
\r
35 if(fs && this.scale > 1) {
\r
36 addClass(v,'extraClassAspect');
\r
37 remClass(v,'extraClassCrop');
\r
39 remClass(v,'extraClassAspect');
\r
40 remClass(v,'extraClassCrop');
\r
42 break; case 2: //Crop
\r
43 if(fs && this.scale > 1) {
\r
44 addClass(v,'extraClassCrop');
\r
45 remClass(v,'extraClassAspect');
\r
47 remClass(v,'extraClassAspect');
\r
48 remClass(v,'extraClassCrop');
\r
50 break; case 3: //Force Crop
\r
51 addClass(v,'extraClassCrop');
\r
52 remClass(v,'extraClassAspect');
\r
53 break; case 4: //Force Aspect
\r
54 addClass(v,'extraClassAspect');
\r
55 remClass(v,'extraClassCrop');
\r
59 //Update every 12s in fullscreen mode:
\r
60 if(fs && this.mode && v.length) {
\r
61 if(this.timer != null) clearTimeout(this.timer);
\r
62 this.timer = setTimeout(function() { this.timer = null; this.update(); }.bind(this), 12000);
\r
66 function UltraWide() {
\r
68 document.addEventListener('fullscreenchange', function(e) {
\r
71 document.addEventListener('keydown', function(e) {
\r
72 if(e.ctrlKey && e.altKey && e.key == 'c') {
\r
73 if(++this.mode > 2) this.mode = 0;
\r
74 //console.log("[UltraWide] Detected CTRL+ALT+C","Mode "+this.mode);
\r
75 chrome.storage.local.set({'extensionMode':this.mode}, function(){});
\r
78 this.styles = document.createElement('style');
\r
79 document.head.appendChild(this.styles);
\r
83 if(!document.head) return;
\r
84 const ultrawide = new UltraWide();
\r
85 chrome.storage.local.get('extensionMode', function(status) {
\r
86 ultrawide.mode = status.extensionMode;
\r
87 if(status.extensionMode != 0) ultrawide.update();
\r
89 chrome.storage.onChanged.addListener(function(changes) {
\r
90 ultrawide.mode = changes.extensionMode.newValue;
\r
93 console.info("UltraWide Extension Loaded!");
\r
98 if(document.readyState == 'complete') onLoad();
\r
99 else window.addEventListener('load', onLoad);