{"mappings":"A,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,Q,S,C,C,C,E,E,S,E,Q,G,E,Q,C,Q,S,C,C,C,E,I,E,E,SEIA,SAAS,gBAAA,CAAiB,SAAS,OAAA,CAAQ,AAAC,IAC1C,EAAK,gBAAA,CAAiB,QAAS,KAGxB,UAAU,SAAA,EAEf,AAAA,CAAA,EAAA,EAAA,OAAM,AAAN,EAAQ,UAAU,SAAA,CAAU,SAAA,CAAW,EAAqB,SAA5D,EACF,EACF,E,G,E,Q,C,Q,S,C,C,C,E,O,c,C,E,O,C,U,C,I,W,O,C,E,I,K,E,W,C,E,a,C,C,GCVA,IAAM,EAAQ,QAAQ,KAAA,CAAM,IAAA,CAAK,SAG1B,SAAS,EAAY,CAAa,EACvC,EAAE,IAAA,CAAK,KAAa,GAAG,KAAA,CAAM,EAC/B,C,G,E,Q,C,Q,S,C,C,C,ECPA,SAAS,gBAAA,CAAiB,QAAQ,OAAA,CAAQ,AAAC,IACpC,EAAK,YAAA,CAAa,gBAEvB,AAGK,SAAoB,CAAqB,CAAE,CAAiB,EACjE,IAAM,EAAU,EAAK,YAAA,CAAa,gBAAkB,eAEhD,EAAW,CAAA,EAGT,EAAO,KACX,EAAW,CAAA,EACX,EAAK,SAAA,CAAY,mBACnB,EACA,IAEA,IAAM,EAAS,KACb,EAAW,CAAA,EACX,IAAM,EAAO,SAAS,aAAA,CAAc,QACpC,EAAK,MAAA,CAAO,GACZ,EAAK,gBAAA,CAAiB,QAAS,AAAC,IAC9B,EAAI,cAAJ,GAIK,UAAU,SAAA,EAEf,UAAU,SAAA,CAAU,SAAA,CAAU,GAAS,IAAA,CAAK,KAAO,GAAG,KAAA,CAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,SACjF,GACA,EAAK,KAAA,CAAM,UAAA,CAAa,MAExB,EAAK,SAAA,CAAY,GACjB,EAAK,MAAA,CAAO,EACd,EAEA,EAAK,gBAAA,CAAiB,QAAS,AAAC,IAC9B,EAAI,cAAJ,GAEK,IACL,IACA,WAAW,EAvCsB,KAwCnC,EACF,EAzCY,EAAyB,EACrC,E,G,E","sources":["","src/entry/User/index.ts","src/lib/copy/index.ts","src/lib/discard.ts","src/lib/reveal/index.ts"],"sourcesContent":["function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequireafa4\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequireafa4\"] = parcelRequire;\n}\nparcelRequire.register(\"aS58T\", function(module, exports) {\nparcelRequire(\"jpAna\");\nparcelRequire(\"8rDt9\");\n\n});\nparcelRequire.register(\"jpAna\", function(module, exports) {\n\n\nvar $24DUY = parcelRequire(\"24DUY\");\ndocument.querySelectorAll(\".copy\").forEach((elem)=>{\n elem.addEventListener(\"click\", ()=>{\n // Check if the clipboard api is supported\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!navigator.clipboard) return;\n (0, $24DUY.discard)(navigator.clipboard.writeText(elem.innerText));\n });\n});\n\n});\nparcelRequire.register(\"24DUY\", function(module, exports) {\n\n$parcel$export(module.exports, \"discard\", function () { return $98f5a1a913bcd35b$export$584af591d945b55a; });\nconst $98f5a1a913bcd35b$var$error = console.error.bind(console);\nfunction $98f5a1a913bcd35b$export$584af591d945b55a(p) {\n p.then(()=>{}).catch($98f5a1a913bcd35b$var$error);\n}\nfunction $98f5a1a913bcd35b$export$7603b7d5ef1ac1a7(m, worker) {\n $98f5a1a913bcd35b$export$584af591d945b55a(m.runExclusive(worker));\n}\n\n});\n\n\nparcelRequire.register(\"8rDt9\", function(module, exports) {\ndocument.querySelectorAll(\"span\").forEach((elem)=>{\n if (!elem.hasAttribute(\"data-reveal\")) return;\n $b2abed9af550e40c$export$7365a963a6092e93(elem, 10000);\n});\nfunction $b2abed9af550e40c$export$7365a963a6092e93(span, hideDelay) {\n const content = span.getAttribute(\"data-reveal\") ?? \"(no content)\";\n let isHidden = true;\n // handler to hide the element\n const hide = ()=>{\n isHidden = true;\n span.innerText = \"(click to reveal)\";\n };\n hide();\n const reveal = ()=>{\n isHidden = false;\n const code = document.createElement(\"code\");\n code.append(content);\n code.addEventListener(\"click\", (evt)=>{\n evt.preventDefault();\n // Check if the clipboard api is supported\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!navigator.clipboard) return;\n navigator.clipboard.writeText(content).then(()=>{}).catch(console.error.bind(console));\n });\n code.style.userSelect = \"all\";\n span.innerHTML = \"\";\n span.append(code);\n };\n span.addEventListener(\"click\", (evt)=>{\n evt.preventDefault();\n if (!isHidden) return;\n reveal();\n setTimeout(hide, hideDelay) // hide again after 1 second\n ;\n });\n}\n\n});\n\n\n\nparcelRequire(\"aS58T\");\n\n//# sourceMappingURL=User.67ac1e81.js.map\n","import '~/src/lib/copy'\nimport '~/src/lib/reveal'\n","import './index.css'\n\nimport { discard } from '~/src/lib/discard'\n\ndocument.querySelectorAll('.copy').forEach((elem: Element) => {\n elem.addEventListener('click', () => {\n // Check if the clipboard api is supported\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!navigator.clipboard) return\n\n discard(navigator.clipboard.writeText((elem as HTMLElement).innerText))\n })\n})\n","import { Mutex, MutexInterface } from 'async-mutex'\n\nconst error = console.error.bind(console)\n\n/** discard discards the result of a promise, or logs an error if it occurs */\nexport function discard (p: Promise): void {\n p.then((): void => {}).catch(error)\n}\n\n/** runs worker exclusively on m, and discards the resulting promise */\nexport function runMutexExclusive (m: Mutex, worker: MutexInterface.Worker): void {\n discard(m.runExclusive(worker))\n}\n","document.querySelectorAll('span').forEach((elem: Element) => {\n if (!elem.hasAttribute('data-reveal')) return\n\n addReveal(elem as HTMLSpanElement, 10000)\n})\n\nexport function addReveal (span: HTMLSpanElement, hideDelay: number): void {\n const content = span.getAttribute('data-reveal') ?? '(no content)'\n\n let isHidden = true\n\n // handler to hide the element\n const hide = (): void => {\n isHidden = true\n span.innerText = '(click to reveal)'\n }\n hide()\n\n const reveal = (): void => {\n isHidden = false\n const code = document.createElement('code')\n code.append(content)\n code.addEventListener('click', (evt) => {\n evt.preventDefault()\n\n // Check if the clipboard api is supported\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!navigator.clipboard) return\n\n navigator.clipboard.writeText(content).then(() => {}).catch(console.error.bind(console))\n })\n code.style.userSelect = 'all'\n\n span.innerHTML = ''\n span.append(code)\n }\n\n span.addEventListener('click', (evt) => {\n evt.preventDefault()\n\n if (!isHidden) return\n reveal()\n setTimeout(hide, hideDelay) // hide again after 1 second\n })\n}\n"],"names":["$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$24DUY","document","querySelectorAll","forEach","elem","addEventListener","navigator","clipboard","discard","writeText","innerText","Object","defineProperty","get","$98f5a1a913bcd35b$export$584af591d945b55a","set","s","enumerable","configurable","$98f5a1a913bcd35b$var$error","console","error","bind","p","then","catch","hasAttribute","$b2abed9af550e40c$export$7365a963a6092e93","span","hideDelay","content","getAttribute","isHidden","hide","reveal","createElement","append","evt","preventDefault","style","userSelect","innerHTML","setTimeout"],"version":3,"file":"User.67ac1e81.js.map","sourceRoot":"../"}