1
0

single-file-infobar.js 8.3 KB

1
  1. !function(){"use strict";const n="single-file-infobar",o="\n.infobar,\n.infobar .infobar-icon,\n.infobar .infobar-link-icon {\n min-inline-size: 28px;\n min-block-size: 28px;\n box-sizing: border-box;\n}\n\n.infobar,\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n opacity: 0.7;\n transition: opacity 250ms;\n}\n\n.infobar:hover,\n.infobar .infobar-close-icon:hover,\n.infobar .infobar-link-icon:hover {\n opacity: 1;\n}\n\n.infobar,\n.infobar-content {\n display: flex;\n}\n\n.infobar {\n position: fixed;\n max-height: calc(100% - 32px);\n top: 16px;\n right: 16px;\n margin-inline-start: 16px;\n margin-block-end: 16px;\n color: #2d2d2d;\n background-color: #737373;\n border: 2px solid;\n border-color: #eee;\n border-radius: 16px;\n z-index: 2147483647;\n animation-name: flash;\n animation-duration: .5s;\n animation-timing-function: cubic-bezier(0.39, 0.58, 0.57, 1);\n animation-delay: 1s;\n animation-iteration-count: 2;\n}\n\n.infobar:valid, .infobar:not(:focus-within):not(.infobar-focus) .infobar-content {\n display: none;\n}\n\n.infobar:focus-within, .infobar.infobar-focus {\n background-color: #f9f9f9;\n border-color: #878787;\n border-radius: 8px;\n opacity: 1;\n transition-property: opacity, background-color, border-color, border-radius, color;\n}\n\n.infobar-content {\n border: 2px solid;\n border-color: #f9f9f9;\n border-radius: 6px;\n background-color: #f9f9f9;\n overflow: auto;\n}\n\n.infobar-content span {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 14px;\n line-height: 18px;\n word-break: break-word;\n white-space: pre-wrap;\n margin-inline: 4px;\n margin-block: 4px;\n padding-inline: 24px;\n}\n\n.infobar .infobar-icon,\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n cursor: pointer;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n position: fixed;\n align-self: flex-start;\n}\n\n.infobar .infobar-icon {\n position: absolute;\n min-inline-size: 24px;\n min-block-size: 24px;\n}\n\n@keyframes flash {\n 0%, 100% {\n\tbackground-color: #737373;\n }\n 50% {\n\tbackground-color: #dd6a00;\n }\n}\n\n.infobar:focus-within .infobar-icon, .infobar.infobar-focus .infobar-icon {\n z-index: -1;\n background-image: none;\n margin: 4px;\n}\n\n.infobar .infobar-close-icon {\n min-inline-size: 22px;\n min-block-size: 22px;\n}\n\n.infobar .infobar-icon {\n background-color: transparent;\n background-size: 70%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHADIRLMaOHwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAPUExURQAAAIqKioyNjY2OjvDw8L2y1DEAAAABdFJOUwBA5thmAAAAAWJLR0QB/wIt3gAAAGNJREFUSMdjYCAJsLi4OBCQx6/CBQwIGIDPCBcXAkYQUsACU+AwlBVQHg6Eg5pgZBGOboIJZugDFwRwoJECJCUOhJI1wZwzqmBUwagCuipgIqTABG9h7YIKaKGAURAFEF/6AQAO4HqSoDP8bgAAAABJRU5ErkJggg==);\n}\n\n.infobar .infobar-link-icon {\n right: 20px;\n background-size: 60%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8H+DhhoQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJJJREFUOI3t070NRCEMA2CnYAOyDyPwpHj/Va7hJ3FzV7zy3ET5JIwoAF6Jk4wzAJAkzxAYG9YRTgB+24wBgKmfrGAKTcEfAY4KRlRoIeBTgKOCERVaCPgU4Khge2GqKOBTgKOCERVaAEC/4PNcnyoSWHpjqkhwKxbcig0Q6AorXYF/+A6eIYD1lVbwG/jdA6/kA2THRAURVubcAAAAAElFTkSuQmCC);\n}\n\n.infobar .infobar-close-icon {\n appearance: none;\n background-size: 80%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8VC4EQ6QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJtJREFUOI3NkrsBgCAMRLFwBPdxBArcfxXFkO8rbKWAAJfHJ9faf9vuYX/749T5NmShm3bEwbe2SxeuM4+2oxDL1cDoKtVUjRy+tH78Cv2CS+wIiQNC1AEhk4AQeUTMWUJMfUJMSEJMSEY8kIx4IONroaYAimNxsXp1PA7PxwfVL8QnowwoVC0lig07wDDVUjAdbAnjwtow/z/bDW7eI4M2KruJAAAAAElFTkSuQmCC);\n}\n";function e(e,i,a){if(!e.querySelector(n)){let a;i.infobarContent?a=i.infobarContent.replace(/\\n/g,"\n").replace(/\\t/g,"\t"):i.saveDate&&(a=i.saveDate),a=a||"No info";const t="BODY"==e.body.tagName?e.body:e.documentElement,r=function(n,o,e){const i=n.createElement(o);return e.appendChild(i),Array.from(getComputedStyle(i)).forEach((n=>i.style.setProperty(n,"initial","important"))),i}(e,n,t);let A;A=r.attachShadow({mode:"open"});const c=e.createElement("div"),l=e.createElement("style");l.textContent=o.replace(/ {2}/g,"").replace(/\n/g,"").replace(/: /g,":").replace(/, /g,","),c.appendChild(l);const s=e.createElement("form");s.classList.add("infobar"),i.openInfobar&&s.classList.add("infobar-focus"),c.appendChild(s);const d=e.createElement("span");d.tabIndex=-1,d.classList.add("infobar-icon"),s.appendChild(d);const b=e.createElement("span");b.tabIndex=-1,b.classList.add("infobar-content");const f=e.createElement("input");f.type="checkbox",f.required=!0,f.classList.add("infobar-close-icon"),f.title="Close",b.appendChild(f);const p=e.createElement("span");p.textContent=a,b.appendChild(p);const g=e.createElement("a");g.classList.add("infobar-link-icon"),g.target="_blank",g.rel="noopener noreferrer",g.title="Open source URL: "+i.saveUrl,g.href=i.saveUrl,b.appendChild(g),s.appendChild(b),A.appendChild(c)}}(n=>{const o=n.browser,i=n.MutationObserver;async function a(){let n={displayInfobar:!0};const i=function(n){const o=n.evaluate("//comment()",n,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);let e=o&&o.singleNodeValue;if(e&&e.nodeType==Node.COMMENT_NODE&&e.textContent.includes("SingleFile")){const n=e.textContent.split("\n"),[,,o,...i]=n,a=o.match(/^ url: (.*) ?$/),t=a&&a[1];if(t){let n,o;if(i.length&&(o=i[0].split("saved date: ")[1],o&&i.shift(),i.length>1)){let o=i[0].split("info: ")[1].trim();for(let n=1;n<i.length-1;n++)o+="\n"+i[n].trim();n=o.trim()}return{saveUrl:t,infobarContent:n,saveDate:o}}}}(document);if(i&&i.saveUrl){if(o&&o.runtime&&o.runtime.sendMessage)try{n=await o.runtime.sendMessage({method:"tabs.getOptions",url:i.saveUrl})}catch(n){}n.displayInfobar&&(i.openInfobar=n.openInfobar,e(document,i),function(n,{saveUrl:o,infobarContent:e,saveDate:i}){if(o){const a=n.querySelector("single-file-infobar").shadowRoot;a.querySelector(".infobar-content span").textContent=e||i;const t=a.querySelector(".infobar-content .infobar-link-icon");t.href=o,t.title="Open source URL: "+o}}(document,i))}}!function o(){n.window==n.top&&("loading"==document.readyState?document.addEventListener("DOMContentLoaded",a,!1):a(),document.addEventListener("single-file-display-infobar",a,!1),new i(o).observe(document,{childList:!0}));n.singlefile&&(n.singlefile.infobar={displayIcon:a})}()})("object"==typeof globalThis?globalThis:window)}();