pause-media.js
1 var pauseMedia=function(){"use strict";var te=Object.defineProperty;var ne=(w,b,v)=>b in w?te(w,b,{enumerable:!0,configurable:!0,writable:!0,value:v}):w[b]=v;var y=(w,b,v)=>ne(w,typeof b!="symbol"?b+"":b,v);function w(i){return i}var b=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function v(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var q={exports:{}};(function(i,e){(function(s,n){n(i)})(typeof globalThis<"u"?globalThis:typeof self<"u"?self:b,function(s){if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)s.exports=globalThis.browser;else{const n="The message port closed before a response was received.",l=m=>{const c={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(Object.keys(c).length===0)throw new Error("api-metadata.json has not been included in browser-polyfill");class p extends WeakMap{constructor(t,o=void 0){super(o),this.createItem=t}get(t){return this.has(t)||this.set(t,this.createItem(t)),super.get(t)}}const Q=r=>r&&typeof r=="object"&&typeof r.then=="function",O=(r,t)=>(...o)=>{m.runtime.lastError?r.reject(new Error(m.runtime.lastError.message)):t.singleCallbackArg||o.length<=1&&t.singleCallbackArg!==!1?r.resolve(o[0]):r.resolve(o)},_=r=>r==1?"argument":"arguments",X=(r,t)=>function(g,...u){if(u.length<t.minArgs)throw new Error(`Expected at least ${t.minArgs} ${_(t.minArgs)} for ${r}(), got ${u.length}`);if(u.length>t.maxArgs)throw new Error(`Expected at most ${t.maxArgs} ${_(t.maxArgs)} for ${r}(), got ${u.length}`);return new Promise((d,x)=>{if(t.fallbackToNoCallback)try{g[r](...u,O({resolve:d,reject:x},t))}catch(a){console.warn(`${r} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,a),g[r](...u),t.fallbackToNoCallback=!1,t.noCallback=!0,d()}else t.noCallback?(g[r](...u),d()):g[r](...u,O({resolve:d,reject:x},t))})},B=(r,t,o)=>new Proxy(t,{apply(g,u,d){return o.call(u,r,...d)}});let I=Function.call.bind(Object.prototype.hasOwnProperty);const N=(r,t={},o={})=>{let g=Object.create(null),u={has(x,a){return a in r||a in g},get(x,a,h){if(a in g)return g[a];if(!(a in r))return;let A=r[a];if(typeof A=="function")if(typeof t[a]=="function")A=B(r,r[a],t[a]);else if(I(o,a)){let E=X(a,o[a]);A=B(r,r[a],E)}else A=A.bind(r);else if(typeof A=="object"&&A!==null&&(I(t,a)||I(o,a)))A=N(A,t[a],o[a]);else if(I(o,"*"))A=N(A,t[a],o["*"]);else return Object.defineProperty(g,a,{configurable:!0,enumerable:!0,get(){return r[a]},set(E){r[a]=E}}),A;return g[a]=A,A},set(x,a,h,A){return a in g?g[a]=h:r[a]=h,!0},defineProperty(x,a,h){return Reflect.defineProperty(g,a,h)},deleteProperty(x,a){return Reflect.deleteProperty(g,a)}},d=Object.create(r);return new Proxy(d,u)},$=r=>({addListener(t,o,...g){t.addListener(r.get(o),...g)},hasListener(t,o){return t.hasListener(r.get(o))},removeListener(t,o){t.removeListener(r.get(o))}}),ee=new p(r=>typeof r!="function"?r:function(o){const g=N(o,{},{getContent:{minArgs:0,maxArgs:0}});r(g)}),U=new p(r=>typeof r!="function"?r:function(o,g,u){let d=!1,x,a=new Promise(k=>{x=function(f){d=!0,k(f)}}),h;try{h=r(o,g,x)}catch(k){h=Promise.reject(k)}const A=h!==!0&&Q(h);if(h!==!0&&!A&&!d)return!1;const E=k=>{k.then(f=>{u(f)},f=>{let j;f&&(f instanceof Error||typeof f.message=="string")?j=f.message:j="An unexpected error occurred",u({__mozWebExtensionPolyfillReject__:!0,message:j})}).catch(f=>{console.error("Failed to send onMessage rejected reply",f)})};return E(A?h:a),!0}),se=({reject:r,resolve:t},o)=>{m.runtime.lastError?m.runtime.lastError.message===n?t():r(new Error(m.runtime.lastError.message)):o&&o.__mozWebExtensionPolyfillReject__?r(new Error(o.message)):t(o)},D=(r,t,o,...g)=>{if(g.length<t.minArgs)throw new Error(`Expected at least ${t.minArgs} ${_(t.minArgs)} for ${r}(), got ${g.length}`);if(g.length>t.maxArgs)throw new Error(`Expected at most ${t.maxArgs} ${_(t.maxArgs)} for ${r}(), got ${g.length}`);return new Promise((u,d)=>{const x=se.bind(null,{resolve:u,reject:d});g.push(x),o.sendMessage(...g)})},re={devtools:{network:{onRequestFinished:$(ee)}},runtime:{onMessage:$(U),onMessageExternal:$(U),sendMessage:D.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:D.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},L={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return c.privacy={network:{"*":L},services:{"*":L},websites:{"*":L}},N(m,re,c)};s.exports=l(chrome)}})})(q);var W=q.exports;const S=v(W),V={matches:["*://*.youtube.com/*","*://youtube.com/*","*://*.music.youtube.com/*","*://*.invidious.io/*","*://*.invidious.snopyta.org/*","*://yewtu.be/*","*://invidio.us/*","*://inv.riverside.rocks/*","*://invidious.kavin.rocks/*","*://*.vimeo.com/*","*://*.spotify.com/*","*://*.soundcloud.com/*","*://*.bandcamp.com/*","*://*.pandora.com/*"],runAt:"document_idle",main(){S.runtime.onMessage.addListener((i,e,s)=>{if(i.type==="PAUSE_MEDIA"){let n=0;if(document.querySelectorAll("video").forEach(c=>{try{c.paused||(c.pause(),n++)}catch{}}),document.querySelectorAll("audio").forEach(c=>{try{c.paused||(c.pause(),n++)}catch{}}),window.location.hostname.includes("youtube.com")){const c=document.querySelector("#movie_player")||document.querySelector(".html5-video-player");if(c){c.focus();const p=new KeyboardEvent("keydown",{key:"k",code:"KeyK",keyCode:75,which:75,bubbles:!0,cancelable:!0});c.dispatchEvent(p),n++}}return s({paused:n}),!0}})}};function C(i,...e){}const H={debug:(...i)=>C(console.debug,...i),log:(...i)=>C(console.log,...i),warn:(...i)=>C(console.warn,...i),error:(...i)=>C(console.error,...i)},M=class M extends Event{constructor(e,s){super(M.EVENT_NAME,{}),this.newUrl=e,this.oldUrl=s}};y(M,"EVENT_NAME",K("wxt:locationchange"));let F=M;function K(i){var e;return`${(e=S==null?void 0:S.runtime)==null?void 0:e.id}:pause-media:${i}`}function G(i){let e,s;return{run(){e==null&&(s=new URL(location.href),e=i.setInterval(()=>{let n=new URL(location.href);n.href!==s.href&&(window.dispatchEvent(new F(n,s)),s=n)},1e3))}}}const T=class T{constructor(e,s){y(this,"isTopFrame",window.self===window.top);y(this,"abortController");y(this,"locationWatcher",G(this));y(this,"receivedMessageIds",new Set);this.contentScriptName=e,this.options=s,this.abortController=new AbortController,this.isTopFrame?(this.listenForNewerScripts({ignoreFirstEvent:!0}),this.stopOldScripts()):this.listenForNewerScripts()}get signal(){return this.abortController.signal}abort(e){return this.abortController.abort(e)}get isInvalid(){return S.runtime.id==null&&this.notifyInvalidated(),this.signal.aborted}get isValid(){return!this.isInvalid}onInvalidated(e){return this.signal.addEventListener("abort",e),()=>this.signal.removeEventListener("abort",e)}block(){return new Promise(()=>{})}setInterval(e,s){const n=setInterval(()=>{this.isValid&&e()},s);return this.onInvalidated(()=>clearInterval(n)),n}setTimeout(e,s){const n=setTimeout(()=>{this.isValid&&e()},s);return this.onInvalidated(()=>clearTimeout(n)),n}requestAnimationFrame(e){const s=requestAnimationFrame((...n)=>{this.isValid&&e(...n)});return this.onInvalidated(()=>cancelAnimationFrame(s)),s}requestIdleCallback(e,s){const n=requestIdleCallback((...l)=>{this.signal.aborted||e(...l)},s);return this.onInvalidated(()=>cancelIdleCallback(n)),n}addEventListener(e,s,n,l){var m;s==="wxt:locationchange"&&this.isValid&&this.locationWatcher.run(),(m=e.addEventListener)==null||m.call(e,s.startsWith("wxt:")?K(s):s,n,{...l,signal:this.signal})}notifyInvalidated(){this.abort("Content script context invalidated"),H.debug(`Content script "${this.contentScriptName}" context invalidated`)}stopOldScripts(){window.postMessage({type:T.SCRIPT_STARTED_MESSAGE_TYPE,contentScriptName:this.contentScriptName,messageId:Math.random().toString(36).slice(2)},"*")}verifyScriptStartedEvent(e){var m,c,p;const s=((m=e.data)==null?void 0:m.type)===T.SCRIPT_STARTED_MESSAGE_TYPE,n=((c=e.data)==null?void 0:c.contentScriptName)===this.contentScriptName,l=!this.receivedMessageIds.has((p=e.data)==null?void 0:p.messageId);return s&&n&&l}listenForNewerScripts(e){let s=!0;const n=l=>{if(this.verifyScriptStartedEvent(l)){this.receivedMessageIds.add(l.data.messageId);const m=s;if(s=!1,m&&(e!=null&&e.ignoreFirstEvent))return;this.notifyInvalidated()}};addEventListener("message",n),this.onInvalidated(()=>removeEventListener("message",n))}};y(T,"SCRIPT_STARTED_MESSAGE_TYPE",K("wxt:content-script-started"));let R=T;const z=Symbol("null");let Z=0;class Y extends Map{constructor(){super(),this._objectHashes=new WeakMap,this._symbolHashes=new Map,this._publicKeys=new Map;const[e]=arguments;if(e!=null){if(typeof e[Symbol.iterator]!="function")throw new TypeError(typeof e+" is not iterable (cannot read property Symbol(Symbol.iterator))");for(const[s,n]of e)this.set(s,n)}}_getPublicKeys(e,s=!1){if(!Array.isArray(e))throw new TypeError("The keys parameter must be an array");const n=this._getPrivateKey(e,s);let l;return n&&this._publicKeys.has(n)?l=this._publicKeys.get(n):s&&(l=[...e],this._publicKeys.set(n,l)),{privateKey:n,publicKey:l}}_getPrivateKey(e,s=!1){const n=[];for(let l of e){l===null&&(l=z);const m=typeof l=="object"||typeof l=="function"?"_objectHashes":typeof l=="symbol"?"_symbolHashes":!1;if(!m)n.push(l);else if(this[m].has(l))n.push(this[m].get(l));else if(s){const c=`@@mkm-ref-${Z++}@@`;this[m].set(l,c),n.push(c)}else return!1}return JSON.stringify(n)}set(e,s){const{publicKey:n}=this._getPublicKeys(e,!0);return super.set(n,s)}get(e){const{publicKey:s}=this._getPublicKeys(e);return super.get(s)}has(e){const{publicKey:s}=this._getPublicKeys(e);return super.has(s)}delete(e){const{publicKey:s,privateKey:n}=this._getPublicKeys(e);return!!(s&&super.delete(s)&&this._publicKeys.delete(n))}clear(){super.clear(),this._symbolHashes.clear(),this._publicKeys.clear()}get[Symbol.toStringTag](){return"ManyKeysMap"}get size(){return super.size}}new Y;function ae(){}function P(i,...e){}const J={debug:(...i)=>P(console.debug,...i),log:(...i)=>P(console.log,...i),warn:(...i)=>P(console.warn,...i),error:(...i)=>P(console.error,...i)};return(async()=>{try{const{main:i,...e}=V,s=new R("pause-media",e);return await i(s)}catch(i){throw J.error('The content script "pause-media" crashed on startup!',i),i}})()}(); 2 pauseMedia;