From 65c23c54921a8d17e1362045d3e3ac113ad34db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20La=C3=ADn?= Date: Mon, 19 Aug 2024 18:00:22 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(browser):=20surfi?= =?UTF-8?q?ng-keys=20extension=20modified?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .config/browser/extensions/surfingkeys.js | 544 ++++++++-------------- 1 file changed, 204 insertions(+), 340 deletions(-) diff --git a/.config/browser/extensions/surfingkeys.js b/.config/browser/extensions/surfingkeys.js index 66584d10..3f75ff33 100644 --- a/.config/browser/extensions/surfingkeys.js +++ b/.config/browser/extensions/surfingkeys.js @@ -1,340 +1,204 @@ -// Compatibility Prefix -const { - Clipboard, - Front, - Hints, - Normal, - RUNTIME, - Visual, - aceVimMap, - addSearchAlias, - cmap, - getClickableElements, - imap, - imapkey, - iunmap, - map, - mapkey, - readText, - removeSearchAlias, - tabOpenLink, - unmap, - unmapAllExcept, - vmapkey, - vunmap, -} = api; - -// toggle fullscreen, mainly because of YouTube -mapkey("F", "Fullscreen", function () { - if (window.fullScreen) { - document.exitFullscreen(); - } else { - document.documentElement.requestFullscreen(); - } -}); - -// Copy URL -map("yu", "ya"); - -// Buffers/Tabs -map("b", "T"); - -map("", "t"); - -// History Back/Forward -map("H", "S"); -map("L", "D"); - -// Next/Prev Page -map("K", "[["); -map("J", "]]"); - -// Scroll Page Down/Up -mapkey("", "Scroll down", () => { - Normal.scroll("pageDown"); -}); -mapkey("", "Scroll up", () => { - Normal.scroll("pageUp"); -}); - -// --- Tabs --- -// Tab Delete/Undo -mapkey("d", "#3Close current tab", () => { - RUNTIME("closeTab"); -}); -mapkey("u", "#3Restore closed tab", () => { - RUNTIME("openLast"); -}); - -// Move Tab Left/Right w/ one press -map(">", ">>"); -map("<", "<<"); - -// Tab Next/Prev -map("", "R"); -map("", "E"); - -// only keep E, R and T from Surfingkeys for gmail.com and twitter.com -api.unmapAllExcept( - ["f", "d", "t", "r", ""], - /matt-startpage.vercel.app/, -); - -api.unmapAllExcept(["f", "d", "t", "r"], /youtube.com/); -// settings.lurkingPattern = /matt-startpage.vercel.app/; - -// set theme -Hints.style( - "border: solid 2px #6e738d; color:#8aadf4; font-size: 12px; font-weight: bold; background: initial; background-color: #1e2030;", -); -Hints.style( - "border: solid 2px #6e738d !important; padding: 1px !important; color: #939ab7 !important; background: #181926 !important;", - "text", -); -Visual.style("marks", "background-color: #ed8796;"); -Visual.style("cursor", "background-color: #8aadf4;"); - -// ---- Search Engines ----- -removeSearchAlias("b", "s"); - -addSearchAlias("b", "brave", "https://search.brave.com/search?q=", "s"); - -settings.defaultSearchEngine = "b"; - -settings.theme = ` -/* Edit these variables for easy theme making */ -:root { - /* Font */ - --font: 'JetBrainsMono Nerd Font'; - --font-size: 13px; - --font-weight: bold; - - --fg: #cad3f5; - --bg: #24273a; - --bg-dark: #1e2030; - --border: #6e738d; - --main-fg: #cad3f5; - --accent-fg: #b7bdf8; - --info-fg: #ed8796; - --select: #494d64; -} - -/* ---------- Generic ---------- */ -.sk_theme { -background: var(--bg); -color: var(--fg); - background-color: var(--bg); - border-color: var(--border); - font-family: var(--font); - font-size: var(--font-size); - font-weight: var(--font-weight); -} - -input { - font-family: var(--font); - font-weight: var(--font-weight); -} - -.sk_theme tbody { - color: var(--fg); -} - -.sk_theme input { - color: var(--fg); -} - -/* Hints */ -#sk_hints .begin { - color: var(--accent-fg) !important; -} - -#sk_tabs .sk_tab { - background: var(--bg-dark); - border: 1px solid var(--border); -} - -#sk_tabs .sk_tab_title { - color: var(--fg); -} - -#sk_tabs .sk_tab_url { - color: var(--main-fg); -} - -#sk_tabs .sk_tab_hint { - background: var(--bg); - border: 1px solid var(--border); - color: var(--accent-fg); -} - -.sk_theme #sk_frame { - background: var(--bg); - opacity: 0.2; - color: var(--accent-fg); -} - -/* ---------- Omnibar ---------- */ -/* Uncomment this and use settings.omnibarPosition = 'bottom' for Pentadactyl/Tridactyl style bottom bar */ -/* .sk_theme#sk_omnibar { - width: 100%; - left: 0; -} */ - -.sk_theme .title { - color: var(--accent-fg); -} - -.sk_theme .url { - color: var(--main-fg); -} - -.sk_theme .annotation { - color: var(--accent-fg); -} - -.sk_theme .omnibar_highlight { - color: var(--accent-fg); -} - -.sk_theme .omnibar_timestamp { - color: var(--info-fg); -} - -.sk_theme .omnibar_visitcount { - color: var(--accent-fg); -} - -.sk_theme #sk_omnibarSearchResult ul li:nth-child(odd) { - background: var(--bg-dark); -} - -.sk_theme #sk_omnibarSearchResult ul li.focused { - background: var(--border); -} - -.sk_theme #sk_omnibarSearchArea { - border-top-color: var(--border); - border-bottom-color: var(--border); -} - -.sk_theme #sk_omnibarSearchArea input, -.sk_theme #sk_omnibarSearchArea span { - font-size: var(--font-size); -} - -.sk_theme .separator { - color: var(--accent-fg); -} - -/* ---------- Popup Notification Banner ---------- */ -#sk_banner { - font-family: var(--font); - font-size: var(--font-size); - font-weight: var(--font-weight); - background: var(--bg); - border-color: var(--border); - color: var(--fg); - opacity: 0.9; -} - -/* ---------- Popup Keys ---------- */ -#sk_keystroke { - background-color: var(--bg); -} - -.sk_theme kbd .candidates { - color: var(--info-fg); -} - -.sk_theme span.annotation { - color: var(--accent-fg); -} - -/* ---------- Popup Translation Bubble ---------- */ -#sk_bubble { - background-color: var(--bg) !important; - color: var(--fg) !important; - border-color: var(--border) !important; -} - -#sk_bubble * { - color: var(--fg) !important; -} - -#sk_bubble div.sk_arrow div:nth-of-type(1) { - border-top-color: var(--border) !important; - border-bottom-color: var(--border) !important; -} - -#sk_bubble div.sk_arrow div:nth-of-type(2) { - border-top-color: var(--bg) !important; - border-bottom-color: var(--bg) !important; -} - -/* ---------- Search ---------- */ -#sk_status, -#sk_find { - font-size: var(--font-size); - border-color: var(--border); -} - -.sk_theme kbd { - background: var(--bg-dark); - border-color: var(--border); - box-shadow: none; - color: var(--fg); -} - -.sk_theme .feature_name span { - color: var(--main-fg); -} - -/* ---------- ACE Editor ---------- */ -#sk_editor { - background: var(--bg-dark) !important; - height: 50% !important; - /* Remove this to restore the default editor size */ -} - -.ace_dialog-bottom { - border-top: 1px solid var(--bg) !important; -} - -.ace-chrome .ace_print-margin, -.ace_gutter, -.ace_gutter-cell, -.ace_dialog { - background: var(--bg) !important; -} - -.ace-chrome { - color: var(--fg) !important; -} - -.ace_gutter, -.ace_dialog { - color: var(--fg) !important; -} - -.ace_cursor { - color: var(--fg) !important; -} - -.normal-mode .ace_cursor { - background-color: var(--fg) !important; - border: var(--fg) !important; - opacity: 0.7 !important; -} - -.ace_marker-layer .ace_selection { - background: var(--select) !important; -} - -.ace_editor, -.ace_dialog span, -.ace_dialog input { - font-family: var(--font); - font-size: var(--font-size); - font-weight: var(--font-weight); -} -`; +(()=>{var e={856:function(e){e.exports=function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,a){return t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},t(e,a)}function a(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function n(e,r,o){return n=a()?Reflect.construct:function(e,a,n){var r=[null];r.push.apply(r,a);var o=new(Function.bind.apply(e,r));return n&&t(o,n.prototype),o},n.apply(null,arguments)}function r(e){return o(e)||i(e)||s(e)||l()}function o(e){if(Array.isArray(e))return c(e)}function i(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function s(e,t){if(e){if("string"==typeof e)return c(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?c(e,t):void 0}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a1?a-1:0),r=1;r/gm),K=f(/\${[\w\W]*}/gm),Z=f(/^data-[\-\w.\u00B7-\uFFFF]/),X=f(/^aria-[\-\w]+$/),Q=f(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ee=f(/^(?:\w+script|data):/i),te=f(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ae=f(/^html$/i),ne=function(){return"undefined"==typeof window?null:window},re=function(t,a){if("object"!==e(t)||"function"!=typeof t.createPolicy)return null;var n=null,r="data-tt-policy-suffix";a.currentScript&&a.currentScript.hasAttribute(r)&&(n=a.currentScript.getAttribute(r));var o="dompurify"+(n?"#"+n:"");try{return t.createPolicy(o,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function oe(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ne(),a=function(e){return oe(e)};if(a.version="2.4.1",a.removed=[],!t||!t.document||9!==t.document.nodeType)return a.isSupported=!1,a;var n=t.document,o=t.document,i=t.DocumentFragment,s=t.HTMLTemplateElement,c=t.Node,l=t.Element,p=t.NodeFilter,d=t.NamedNodeMap,u=void 0===d?t.NamedNodeMap||t.MozNamedAttrMap:d,m=t.HTMLFormElement,h=t.DOMParser,f=t.trustedTypes,b=l.prototype,w=D(b,"cloneNode"),k=D(b,"nextSibling"),y=D(b,"childNodes"),R=D(b,"parentNode");if("function"==typeof s){var A=o.createElement("template");A.content&&A.content.ownerDocument&&(o=A.content.ownerDocument)}var ie=re(f,n),se=ie?ie.createHTML(""):"",ce=o,le=ce.implementation,pe=ce.createNodeIterator,de=ce.createDocumentFragment,ue=ce.getElementsByTagName,me=n.importNode,he={};try{he=I(o).documentMode?o.documentMode:{}}catch(e){}var ge={};a.isSupported="function"==typeof R&&le&&void 0!==le.createHTMLDocument&&9!==he;var fe,be,we=W,ke=Y,ye=K,ve=Z,xe=X,Se=ee,_e=te,$e=Q,Te=null,Le=q({},[].concat(r(P),r(U),r(H),r(j),r(F))),Oe=null,Ce=q({},[].concat(r(V),r(B),r(G),r(J))),Ee=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ne=null,Re=null,Ae=!0,qe=!0,Ie=!1,De=!1,Pe=!1,Ue=!1,He=!1,Me=!1,je=!1,ze=!1,Fe=!0,Ve=!1,Be="user-content-",Ge=!0,Je=!1,We={},Ye=null,Ke=q({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ze=null,Xe=q({},["audio","video","img","source","image","track"]),Qe=null,et=q({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),tt="http://www.w3.org/1998/Math/MathML",at="http://www.w3.org/2000/svg",nt="http://www.w3.org/1999/xhtml",rt=nt,ot=!1,it=null,st=q({},[tt,at,nt],$),ct=["application/xhtml+xml","text/html"],lt="text/html",pt=null,dt=o.createElement("form"),ut=function(e){return e instanceof RegExp||e instanceof Function},mt=function(t){pt&&pt===t||(t&&"object"===e(t)||(t={}),t=I(t),fe=fe=-1===ct.indexOf(t.PARSER_MEDIA_TYPE)?lt:t.PARSER_MEDIA_TYPE,be="application/xhtml+xml"===fe?$:_,Te="ALLOWED_TAGS"in t?q({},t.ALLOWED_TAGS,be):Le,Oe="ALLOWED_ATTR"in t?q({},t.ALLOWED_ATTR,be):Ce,it="ALLOWED_NAMESPACES"in t?q({},t.ALLOWED_NAMESPACES,$):st,Qe="ADD_URI_SAFE_ATTR"in t?q(I(et),t.ADD_URI_SAFE_ATTR,be):et,Ze="ADD_DATA_URI_TAGS"in t?q(I(Xe),t.ADD_DATA_URI_TAGS,be):Xe,Ye="FORBID_CONTENTS"in t?q({},t.FORBID_CONTENTS,be):Ke,Ne="FORBID_TAGS"in t?q({},t.FORBID_TAGS,be):{},Re="FORBID_ATTR"in t?q({},t.FORBID_ATTR,be):{},We="USE_PROFILES"in t&&t.USE_PROFILES,Ae=!1!==t.ALLOW_ARIA_ATTR,qe=!1!==t.ALLOW_DATA_ATTR,Ie=t.ALLOW_UNKNOWN_PROTOCOLS||!1,De=t.SAFE_FOR_TEMPLATES||!1,Pe=t.WHOLE_DOCUMENT||!1,Me=t.RETURN_DOM||!1,je=t.RETURN_DOM_FRAGMENT||!1,ze=t.RETURN_TRUSTED_TYPE||!1,He=t.FORCE_BODY||!1,Fe=!1!==t.SANITIZE_DOM,Ve=t.SANITIZE_NAMED_PROPS||!1,Ge=!1!==t.KEEP_CONTENT,Je=t.IN_PLACE||!1,$e=t.ALLOWED_URI_REGEXP||$e,rt=t.NAMESPACE||nt,t.CUSTOM_ELEMENT_HANDLING&&ut(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ee.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ut(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ee.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ee.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),De&&(qe=!1),je&&(Me=!0),We&&(Te=q({},r(F)),Oe=[],!0===We.html&&(q(Te,P),q(Oe,V)),!0===We.svg&&(q(Te,U),q(Oe,B),q(Oe,J)),!0===We.svgFilters&&(q(Te,H),q(Oe,B),q(Oe,J)),!0===We.mathMl&&(q(Te,j),q(Oe,G),q(Oe,J))),t.ADD_TAGS&&(Te===Le&&(Te=I(Te)),q(Te,t.ADD_TAGS,be)),t.ADD_ATTR&&(Oe===Ce&&(Oe=I(Oe)),q(Oe,t.ADD_ATTR,be)),t.ADD_URI_SAFE_ATTR&&q(Qe,t.ADD_URI_SAFE_ATTR,be),t.FORBID_CONTENTS&&(Ye===Ke&&(Ye=I(Ye)),q(Ye,t.FORBID_CONTENTS,be)),Ge&&(Te["#text"]=!0),Pe&&q(Te,["html","head","body"]),Te.table&&(q(Te,["tbody"]),delete Ne.tbody),g&&g(t),pt=t)},ht=q({},["mi","mo","mn","ms","mtext"]),gt=q({},["foreignobject","desc","title","annotation-xml"]),ft=q({},["title","style","font","a","script"]),bt=q({},U);q(bt,H),q(bt,M);var wt=q({},j);q(wt,z);var kt=function(e){var t=R(e);t&&t.tagName||(t={namespaceURI:rt,tagName:"template"});var a=_(e.tagName),n=_(t.tagName);return!!it[e.namespaceURI]&&(e.namespaceURI===at?t.namespaceURI===nt?"svg"===a:t.namespaceURI===tt?"svg"===a&&("annotation-xml"===n||ht[n]):Boolean(bt[a]):e.namespaceURI===tt?t.namespaceURI===nt?"math"===a:t.namespaceURI===at?"math"===a&>[n]:Boolean(wt[a]):e.namespaceURI===nt?!(t.namespaceURI===at&&!gt[n])&&!(t.namespaceURI===tt&&!ht[n])&&!wt[a]&&(ft[a]||!bt[a]):!("application/xhtml+xml"!==fe||!it[e.namespaceURI]))},yt=function(e){S(a.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=se}catch(t){e.remove()}}},vt=function(e,t){try{S(a.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){S(a.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Oe[e])if(Me||je)try{yt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},xt=function(e){var t,a;if(He)e=""+e;else{var n=T(e,/^[\r\n\t ]+/);a=n&&n[0]}"application/xhtml+xml"===fe&&rt===nt&&(e=''+e+"");var r=ie?ie.createHTML(e):e;if(rt===nt)try{t=(new h).parseFromString(r,fe)}catch(e){}if(!t||!t.documentElement){t=le.createDocument(rt,"template",null);try{t.documentElement.innerHTML=ot?"":r}catch(e){}}var i=t.body||t.documentElement;return e&&a&&i.insertBefore(o.createTextNode(a),i.childNodes[0]||null),rt===nt?ue.call(t,Pe?"html":"body")[0]:Pe?t.documentElement:i},St=function(e){return pe.call(e.ownerDocument||e,e,p.SHOW_ELEMENT|p.SHOW_COMMENT|p.SHOW_TEXT,null,!1)},_t=function(e){return e instanceof m&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof u)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},$t=function(t){return"object"===e(c)?t instanceof c:t&&"object"===e(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},Tt=function(e,t,n){ge[e]&&v(ge[e],(function(e){e.call(a,t,n,pt)}))},Lt=function(e){var t;if(Tt("beforeSanitizeElements",e,null),_t(e))return yt(e),!0;if(E(/[\u0080-\uFFFF]/,e.nodeName))return yt(e),!0;var n=be(e.nodeName);if(Tt("uponSanitizeElement",e,{tagName:n,allowedTags:Te}),e.hasChildNodes()&&!$t(e.firstElementChild)&&(!$t(e.content)||!$t(e.content.firstElementChild))&&E(/<[/\w]/g,e.innerHTML)&&E(/<[/\w]/g,e.textContent))return yt(e),!0;if("select"===n&&E(/