/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/bookmarklet@3.0.0/bookmarklet.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const version=[3,0,0],md5=require("md5"),Terser=require("terser"),str=1,list=2,bool=3,metadata={types:{string:1,list:2,boolean:3},keys:{name:1,version:1,description:1,repository:1,author:1,email:1,url:1,license:1,script:2,style:2}};function quoteEscape(e){return e.replace('"','\\"').replace("'","\\'")}function extractOptions(e){let t={};for(;;){let n=e.match(/^(\![^\s]+)\s+/);if(!n)break;{e=e.substring(n.index+n[0].length);let a=n[1].substring(1).split("=");t[a[0]]=void 0===a[1]||_fuzzyParse(a[1])}}return{path:e,opts:t}}const _fuzzyParse=e=>{try{return JSON.parse(e)}catch(t){return e}};function loadScript(e,t,n){n=!!n;let a=`bookmarklet__script_${md5(t).substring(0,7)}`;return`\n        function callback(){\n          ${e}\n        }\n\n        if (!${n} || !document.getElementById("${a}")) {\n          var s = document.createElement("script");\n          if (s.addEventListener) {\n            s.addEventListener("load", callback, false)\n          } else if (s.readyState) {\n            s.onreadystatechange = callback\n          }\n          if (${n}) {\n            s.id = "${a}";\n          }\n          s.src = "${quoteEscape(t)}";\n          document.body.appendChild(s);\n        } else {\n          callback();\n        }\n    `}function loadStyle(e,t,n){n=!!n;let a=`bookmarklet__style_${md5(t).substring(0,7)}`;return`${e}\n        if (!${n} || !document.getElementById("${a}")) {\n          var link = document.createElement("link");\n          if (${n}) {\n            link.id = "${a}";\n          }\n          link.rel="stylesheet";\n          link.href = "${quoteEscape(t)}";\n          document.body.appendChild(link);\n        }\n    `}async function minify(e){return(await Terser.minify(e)).code}async function convert(e,t){e=await minify(e);let n="";if(t.script&&(t.script=t.script.reverse(),t.script.forEach((t=>{let{path:n,opts:a}=extractOptions(t);e=loadScript(e,n,a.loadOnce)})),e=await minify(e)),t.style){t.style.forEach((e=>{let{path:t,opts:a}=extractOptions(e);n=loadStyle(n,t,a.loadOnce)}));const a=await minify(n);e=a+e}return e=`(function(){${e}})()`,`javascript:${encodeURIComponent(e)}`}function parseFile(e){let t=!1,n="==/Bookmarklet==",a=/^(\s*\/\/\s*)/,r=metadata.keys,o=metadata.types,i={},s=[],l=[];return e.match(/[^\r\n]+/g).forEach((function(e,c,d){if(a.test(e)){let s=e.replace(a,"").trim(),l=s.toLowerCase().replace(/\s+/g,"");if(t)if(l==n.toLowerCase())t=!1;else{let e=s.match(/^@([^\s]+)\s+(.*)$/);if(e){let t=e[1],n=e[2];t?r[t]==o.list?(i[t]=i[t]||[],i[t].push(n)):r[t]==o.boolean?i[t]="true"==n.toLowerCase():i[t]=n:warn(`ignoring invalid metadata option: '${t}'`)}}else l=="==Bookmarklet==".toLowerCase()&&(t=!0)}else s.push(e);t&&c+1==d.length&&l.push(`missing metdata block closing '${n}'`)})),{code:s.join("\n"),options:i,errors:l.length?l:null}}function makeDemo(e,t){const n=(t=t||{}).name||"Bookmarklet";return`<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset="utf-8">\n    <meta name="viewport" content="width=device-width, initial-scale=1.0">\n    <style>\n      html,body,div { margin: 0; padding: 0; font: normal 16px/24px Helvetica Neue, Helvetica, sans-serif; color: #333; }\n      #main { max-width: 630px; margin: 3em auto; }\n      .bookmarklet { display: inline-block; padding: .5em 1em; color: #fff; background: #50dcf3; border-radius: 4px; text-decoration: none; }\n      a { color: #50dcf3; }\n      .dim { color: #999; }\n    </style>\n  </head>\n  <body>\n    <div id="main">\n      <h1>${n}</h1>\n      <p>\n        Drag this button to your bookmarks bar to save it as a bookmarklet:\n      </p>\n      <p>\n        <a class="bookmarklet" href="${e}">${n}</a>\n      </p>\n      ${t.repo?`<p>See source at <a href="${t.repo}">${t.repo}</a></p>`:""}\n      <p class="dim">This page was created with the <a href="https://github.com/mrcoles/bookmarklet">bookmarklet</a> npm library.</p>\n    </div>\n  </body>\n</html>\n`}Object.assign(exports,{version:version,convert:convert,parseFile:parseFile,makeDemo:makeDemo,metadata:metadata});
//# sourceMappingURL=/sm/e61a91d0c1d41cd9ad5d008e0bd453c7b11df3934af0f335e6912b96d92d0f00.map