From 46efe4f03d497fb310f42603ffbb397c90daf503 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" Date: Sat, 29 Oct 2022 09:24:11 +0000 Subject: [PATCH] Bundle embedded web app --- static/web/404.html | 4 ++-- static/web/404/index.html | 4 ++-- .../_buildManifest.js | 0 .../_ssgManifest.js | 0 .../{7741.177818bb3887216e.js => 7741.a2213dab74705161.js} | 2 +- ...ebpack-ba55635df5a6d469.js => webpack-4444859824d7ed70.js} | 2 +- static/web/admin/access-tokens/index.html | 2 +- static/web/admin/actions/index.html | 2 +- static/web/admin/chat/messages/index.html | 2 +- static/web/admin/chat/users/index.html | 2 +- static/web/admin/config-chat/index.html | 2 +- static/web/admin/config-federation/index.html | 2 +- static/web/admin/config-notify/index.html | 2 +- static/web/admin/config-public-details/index.html | 2 +- static/web/admin/config-server-details/index.html | 2 +- static/web/admin/config-social-items/index.html | 2 +- static/web/admin/config-storage/index.html | 2 +- static/web/admin/config-video/index.html | 2 +- static/web/admin/federation/actions/index.html | 2 +- static/web/admin/federation/followers/index.html | 2 +- static/web/admin/hardware-info/index.html | 2 +- static/web/admin/help/index.html | 2 +- static/web/admin/index.html | 2 +- static/web/admin/logs/index.html | 2 +- static/web/admin/stream-health/index.html | 2 +- static/web/admin/upgrade/index.html | 2 +- static/web/admin/viewer-info/index.html | 2 +- static/web/admin/webhooks/index.html | 2 +- static/web/embed/chat/readonly/index.html | 2 +- static/web/embed/chat/readwrite/index.html | 2 +- static/web/embed/video/index.html | 2 +- static/web/index.html | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) rename static/web/_next/static/{AyeSV3w-5qOJzHTl_3OHh => MlHB20wfpf8W8eq2stmz2}/_buildManifest.js (100%) rename static/web/_next/static/{AyeSV3w-5qOJzHTl_3OHh => MlHB20wfpf8W8eq2stmz2}/_ssgManifest.js (100%) rename static/web/_next/static/chunks/{7741.177818bb3887216e.js => 7741.a2213dab74705161.js} (51%) rename static/web/_next/static/chunks/{webpack-ba55635df5a6d469.js => webpack-4444859824d7ed70.js} (99%) diff --git a/static/web/404.html b/static/web/404.html index 741135656..938979992 100644 --- a/static/web/404.html +++ b/static/web/404.html @@ -1,4 +1,4 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file + }

404

This page could not be found.

\ No newline at end of file diff --git a/static/web/404/index.html b/static/web/404/index.html index 741135656..938979992 100644 --- a/static/web/404/index.html +++ b/static/web/404/index.html @@ -1,4 +1,4 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file + }

404

This page could not be found.

\ No newline at end of file diff --git a/static/web/_next/static/AyeSV3w-5qOJzHTl_3OHh/_buildManifest.js b/static/web/_next/static/MlHB20wfpf8W8eq2stmz2/_buildManifest.js similarity index 100% rename from static/web/_next/static/AyeSV3w-5qOJzHTl_3OHh/_buildManifest.js rename to static/web/_next/static/MlHB20wfpf8W8eq2stmz2/_buildManifest.js diff --git a/static/web/_next/static/AyeSV3w-5qOJzHTl_3OHh/_ssgManifest.js b/static/web/_next/static/MlHB20wfpf8W8eq2stmz2/_ssgManifest.js similarity index 100% rename from static/web/_next/static/AyeSV3w-5qOJzHTl_3OHh/_ssgManifest.js rename to static/web/_next/static/MlHB20wfpf8W8eq2stmz2/_ssgManifest.js diff --git a/static/web/_next/static/chunks/7741.177818bb3887216e.js b/static/web/_next/static/chunks/7741.a2213dab74705161.js similarity index 51% rename from static/web/_next/static/chunks/7741.177818bb3887216e.js rename to static/web/_next/static/chunks/7741.a2213dab74705161.js index 6ec1ed0bf..fab3774b3 100644 --- a/static/web/_next/static/chunks/7741.177818bb3887216e.js +++ b/static/web/_next/static/chunks/7741.a2213dab74705161.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7741],{57741:function(e,t,o){o.d(t,{wU:function(){return Ct}});var s=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)},i=(e,t,o)=>(s(e,t,"read from private field"),o?o.call(e):t.get(e)),r=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},a=(e,t,o,i)=>(s(e,t,"write to private field"),i?i.call(e,o):t.set(e,o),o),n=(e,t,o)=>(s(e,t,"access private method"),o);async function c(e,t={}){const{local:o=!1,version:s="latest",cdnUrl:i,...r}=t,a=function(e,t,o){let s=`https://cdn.jsdelivr.net/npm/emojibase-data@${t}/${e}`;return"function"==typeof o?s=o(e,t):"string"==typeof o&&(s=`${o}/${e}`),s}(e,s,i),n=o?localStorage:sessionStorage,c=`emojibase/${s}/${e}`,l=n.getItem(c);if(l)return Promise.resolve(JSON.parse(l));const h=await fetch(a,{credentials:"omit",mode:"cors",redirect:"error",...r});if(!h.ok)throw new Error("Failed to load Emojibase dataset.");const d=await h.json();try{n.setItem(c,JSON.stringify(d))}catch{}return d}const l={discord:"joypixels",slack:"iamcal"};async function h(e,t,o){var s;return c(`${e}/shortcodes/${null!==(s=l[t])&&void 0!==s?s:t}.json`,o)}function d(e,t){if(0===t.length)return e;const o=new Set(e.shortcodes);return t.forEach((t=>{const s=t[e.hexcode];Array.isArray(s)?s.forEach((e=>o.add(e))):s&&o.add(s)})),e.shortcodes=[...o],e.skins&&e.skins.forEach((e=>{d(e,t)})),e}async function m(e,t={}){const{compact:o=!1,flat:s=!1,shortcodes:i=[],...r}=t,a=await c(`${e}/${o?"compact":"data"}.json`,r);let n=[];return i.length>0&&(n=await Promise.all(i.map((t=>{let o;if(t.includes("/")){const[e,s]=t.split("/");o=h(e,s,r)}else o=h(e,t,r);return o.catch((()=>({})))})))),s?function(e,t=[]){const o=[];return e.forEach((e=>{if(e.skins){const{skins:s,...i}=e;o.push(d(i,t)),s.forEach((e=>{const s={...e};i.tags&&(s.tags=[...i.tags]),o.push(d(s,t))}))}else o.push(d(e,t))})),o}(a,n):function(e,t){return 0===t.length||e.forEach((e=>{d(e,t)})),e}(a,n)}async function u(e,t){return c(`${e}/messages.json`,t)}function g(e,t){const o=e.target.closest("[data-emoji]");if(o){const e=t.find((e=>e.emoji===o.dataset.emoji));if(e)return e}return null}function p(e){var t;const o=null==(t=window.matchMedia)?void 0:t.call(window,"(prefers-reduced-motion: reduce)");return e.animate&&!(null!=o&&o.matches)}function y(e,t){return e.toLowerCase().includes(t.toLowerCase())}function v(e,t,o,s){if(p(s)&&e.animate)return e.animate(t,o).finished;const i="normal"===o.direction?1:0,r=Object.entries(t).reduce(((e,[t,o])=>({...e,[t]:o[i]})),{});return Object.assign(e.style,r),Promise.resolve()}function w(e){var t;const o=document.createElement("template");return o.innerHTML=e,null==(t=o.content)?void 0:t.firstElementChild}function f(...e){return e.reduce(((e,t)=>({...e,[t]:b(t)})),{})}function b(e){return`${e}`}async function C(e){try{return(await fetch(e,{method:"HEAD"})).headers.get("etag")}catch{return null}}async function j(e,t,o){const s=o||t(e);return await s.open(),s}async function k(e,t,o){const s=await j(e,t,o),[i,r]=await function(e){const{emojisUrl:t,messagesUrl:o}=function(e,t){const o=`https://cdn.jsdelivr.net/npm/emojibase-data@${"latest"}/${t}`;return{emojisUrl:`${o}/data.json`,messagesUrl:`${o}/messages.json`}}(0,e);try{return Promise.all([C(t),C(o)])}catch{return Promise.all([null,null])}}(e);if(await s.isPopulated())i&&r&&await async function(e,t,o){let s;try{s=await e.getEtags()}catch{s={}}const{storedEmojisEtag:i,storedMessagesEtag:r}=s;if(o!==r||t!==i){const[s,i]=await Promise.all([u(e.locale),m(e.locale)]);await e.populate({groups:s.groups,emojis:i,emojisEtag:t,messagesEtag:o})}}(s,i,r);else{const[t,o]=await Promise.all([u(e),m(e)]);await s.populate({groups:t.groups,emojis:o,emojisEtag:i,messagesEtag:r})}return s}async function x(e,t,o,s,i){const r=await j(e,t,i),a=await async function(e){const t=(new TextEncoder).encode(e),o=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(o)).map((e=>e.toString(16).padStart(2,"0"))).join("")}(s);return(!(await r.isPopulated())||await async function(e,t){return t!==await e.getHash()}(r,a))&&await r.populate({groups:o.groups,emojis:s,hash:a}),r}async function E(e,t,o,s,i){return o&&s?x(e,t,o,s,i):k(e,t,i)}class S{constructor(){this.handleKeyDown=this.handleKeyDown.bind(this)}activate(e){this.rootElement=e,this.rootElement.addEventListener("keydown",this.handleKeyDown)}deactivate(){var e;null==(e=this.rootElement)||e.removeEventListener("keydown",this.handleKeyDown)}get focusableElements(){return this.rootElement.querySelectorAll('input, [tabindex="0"]')}get lastFocusableElement(){return this.focusableElements[this.focusableElements.length-1]}get firstFocusableElement(){return this.focusableElements[0]}checkFocus(e,t,o){e.target===t&&(o.focus(),e.preventDefault())}handleKeyDown(e){"Tab"===e.key&&this.checkFocus(e,e.shiftKey?this.firstFocusableElement:this.lastFocusableElement,e.shiftKey?this.lastFocusableElement:this.firstFocusableElement)}}const{light:z,dark:L,auto:P}=f("light","dark","auto");class F{constructor({template:e,classes:t,parent:o}){this.isDestroyed=!1,this.appEvents={},this.uiEvents=[],this.uiElements={},this.ui={},this.template=e,this.classes=t,this.parent=o,this.keyBindingHandler=this.keyBindingHandler.bind(this)}initialize(){this.bindAppEvents()}setCustomEmojis(e){this.customEmojis=e}setEvents(e){this.events=e}setPickerId(e){this.pickerId=e}emit(e,...t){this.events.emit(e,...t)}setI18n(e){this.i18n=e}setRenderer(e){this.renderer=e}setEmojiData(e){this.emojiDataPromise=e,e.then((e=>{this.emojiData=e}))}updateEmojiData(e){this.emojiData=e,this.emojiDataPromise=Promise.resolve(e)}setOptions(e){this.options=e}renderSync(e={}){return this.el=this.template.renderSync({classes:this.classes,i18n:this.i18n,pickerId:this.pickerId,...e}),this.postRender(),this.el}async render(e={}){return await this.emojiDataPromise,this.el=await this.template.renderAsync({classes:this.classes,i18n:this.i18n,pickerId:this.pickerId,...e}),this.postRender(),this.el}postRender(){this.bindUIElements(),this.bindKeyBindings(),this.bindUIEvents(),this.scheduleShowAnimation()}bindAppEvents(){Object.keys(this.appEvents).forEach((e=>{this.events.on(e,this.appEvents[e],this)})),this.events.on("data:ready",this.updateEmojiData,this)}unbindAppEvents(){Object.keys(this.appEvents).forEach((e=>{this.events.off(e,this.appEvents[e])})),this.events.off("data:ready",this.updateEmojiData)}keyBindingHandler(e){const t=this.keyBindings[e.key];t&&t.call(this,e)}bindKeyBindings(){this.keyBindings&&this.el.addEventListener("keydown",this.keyBindingHandler)}unbindKeyBindings(){this.keyBindings&&this.el.removeEventListener("keydown",this.keyBindingHandler)}bindUIElements(){this.ui=Object.keys(this.uiElements).reduce(((e,t)=>({...e,[t]:this.el.querySelector(this.uiElements[t])})),{})}bindUIEvents(){this.uiEvents.forEach((e=>{e.handler=e.handler.bind(this),(e.target?this.ui[e.target]:this.el).addEventListener(e.event,e.handler,e.options)}))}unbindUIEvents(){this.uiEvents.forEach((e=>{(e.target?this.ui[e.target]:this.el).removeEventListener(e.event,e.handler)}))}destroy(){this.unbindAppEvents(),this.unbindUIEvents(),this.unbindKeyBindings(),this.el.remove(),this.isDestroyed=!0}scheduleShowAnimation(){if(this.parent){const e=new MutationObserver((t=>{const[o]=t;"childList"===o.type&&o.addedNodes[0]===this.el&&(p(this.options)&&this.animateShow&&this.animateShow(),e.disconnect)}));e.observe(this.parent,{childList:!0})}}static childEvent(e,t,o,s={}){return{target:e,event:t,handler:o,options:s}}static uiEvent(e,t,o={}){return{event:e,handler:t,options:o}}static byClass(e){return`.${e}`}}const $={clock:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',flag:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',frown:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',gamepad:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',lightbulb:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',mug:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',plane:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',robot:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',sad:'\n \n \n \n \n \n \n \x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e\n \n \n \n \n \n',search:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',smiley:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',symbols:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',tree:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',users:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',warning:'\n \n \n \n \n \n \n \x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e\n \n',xmark:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e'},A={recents:"clock","smileys-emotion":"smiley","people-body":"users","animals-nature":"tree","food-drink":"mug",activities:"gamepad","travel-places":"plane",objects:"lightbulb",symbols:"symbols",flags:"flag",custom:"robot"};function I(e,t){if(!(e in $))return console.warn(`Unknown icon: "${e}"`),document.createElement("div");const o=function(e,t){const o=w(t);return o.dataset.icon=e,o.classList.add(b("icon")),o}(e,$[e]);return t&&o.classList.add(b(`icon-${t}`)),o}const T="sync";var V,R,M,B,D,H,N,O;class U{constructor(e,t={}){r(this,M),r(this,D),r(this,N),r(this,V,void 0),r(this,R,void 0),a(this,V,e),a(this,R,t.mode||T)}renderSync(e={}){const t=w(i(this,V).call(this,e));return n(this,N,O).call(this,t,e),n(this,D,H).call(this,t),n(this,M,B).call(this,t,e),t}async renderAsync(e={}){const t=w(i(this,V).call(this,e));return n(this,N,O).call(this,t,e),n(this,D,H).call(this,t),await n(this,M,B).call(this,t,e),t}render(e){return"sync"===i(this,R)?this.renderSync(e):this.renderAsync(e)}}V=new WeakMap,R=new WeakMap,M=new WeakSet,B=async function(e,t){const o=e.querySelectorAll("[data-view]"),s=[];for(const i of o){const e=t[i.dataset.view];e?"sync"!==i.dataset.render?s.push(e.render().then((e=>(i.replaceWith(e),e)))):i.replaceWith(e.renderSync()):i.remove()}return Promise.all(s)},D=new WeakSet,H=function(e){e.querySelectorAll("i[data-icon]").forEach((e=>{const{icon:t,size:o}=e.dataset;e.replaceWith(I(t,o))}))},N=new WeakSet,O=function(e,t){return e.querySelectorAll("[data-placeholder]").forEach((e=>{const o=e.dataset.placeholder;if(o&&t[o]){const s=t[o];e.replaceWith(...[s].flat())}else console.warn(`Missing placeholder element for key "${o}"`)})),e};const K=f("imagePlaceholder","placeholder"),q=new U((({classes:e})=>`\n
\n`));class W extends F{constructor({classNames:e}={}){super({template:q,classes:K}),this.classNames=e}load(e){const t=document.createElement("img");this.classNames&&(t.className=this.classNames),t.addEventListener("load",(()=>{this.el.replaceWith(t)}),{once:!0}),Promise.resolve(e).then((e=>t.src=e))}renderSync(){return super.renderSync(),this.classNames&&this.classNames.split(" ").forEach((e=>this.el.classList.add(e))),this.el}}const G=f("customEmoji");const J=new U((({emoji:e})=>`${e}`));class _ extends class{renderElement(e){return{content:e}}renderImage(e="",t){const o=new W({classNames:e});return o.renderSync(),{content:o,resolver:()=>(o.load(t()),o.el)}}doRender(e,t,o){if(e.custom)return this.renderCustom(e,t,o);const{content:s,resolver:i}=this.render(e,o),r=s instanceof Element?s:s.el;return i&&i(),r}doEmit(e){return e.custom?this.emitCustom(e):this.emit(e)}emitCustom({url:e,label:t,emoji:o,data:s}){return{url:e,label:t,emoji:o,data:s}}renderCustom(e,t,o=""){const s=[G.customEmoji,o].join(" ").trim(),{content:i,resolver:r}=this.renderImage(s,(()=>e.url)),a=i instanceof Element?i:i.el;return r&&r(),a}}{render(e){return this.renderElement(J.renderSync({emoji:e.emoji}))}emit({emoji:e,hexcode:t,label:o}){return{emoji:e,hexcode:t,label:o}}}const Y=[(e,t)=>("1F91D"===e.hexcode&&t<14&&(e.skins=[]),e),(e,t)=>(e.skins&&(e.skins=e.skins.filter((e=>!e.version||e.version<=t))),e)];function Q(e,t){return e.filter((e=>null!==function(e,t){return Y.some((o=>null===o(e,t)))?null:e}(e,t)))}function X(e){var t;return{emoji:e.emoji,label:e.label,tags:e.tags,skins:null==(t=e.skins)?void 0:t.map((e=>X(e))),order:e.order,custom:!1,hexcode:e.hexcode,version:e.version}}function Z(e,t,o){var s;return!(o&&!o.some((t=>t.order===e.group)))&&(y(e.label,t)||(null==(s=e.tags)?void 0:s.some((e=>y(e,t)))))}class ee{constructor(e="en"){this.locale=e}}const te="PicMo";function oe(e){return new se(e)}oe.deleteDatabase=e=>new Promise(((t,o)=>{const s=indexedDB.deleteDatabase(`${te}-${e}`);s.addEventListener("success",t),s.addEventListener("error",o)}));class se extends ee{async open(){const e=indexedDB.open(`${te}-${this.locale}`);return new Promise(((t,o)=>{e.addEventListener("success",(e=>{var o;this.db=null==(o=e.target)?void 0:o.result,t()})),e.addEventListener("error",o),e.addEventListener("upgradeneeded",(async e=>{var t;this.db=null==(t=e.target)?void 0:t.result,this.db.createObjectStore("category",{keyPath:"order"});const o=this.db.createObjectStore("emoji",{keyPath:"emoji"});o.createIndex("category","group"),o.createIndex("version","version"),this.db.createObjectStore("meta")}))}))}async delete(){this.close();const e=indexedDB.deleteDatabase(`${te}-${this.locale}`);await this.waitForRequest(e)}close(){this.db.close()}async getEmojiCount(){const e=this.db.transaction("emoji","readonly").objectStore("emoji");return(await this.waitForRequest(e.count())).target.result}async getEtags(){const e=this.db.transaction("meta","readonly").objectStore("meta"),[t,o]=await Promise.all([this.waitForRequest(e.get("emojisEtag")),this.waitForRequest(e.get("messagesEtag"))]);return{storedEmojisEtag:t.target.result,storedMessagesEtag:o.target.result}}async setMeta(e){const t=this.db.transaction("meta","readwrite"),o=t.objectStore("meta");return new Promise((s=>{t.oncomplete=s,Object.keys(e).filter(Boolean).forEach((t=>{o.put(e[t],t)}))}))}async getHash(){const e=this.db.transaction("meta","readonly").objectStore("meta");return(await this.waitForRequest(e.get("hash"))).target.result}async isPopulated(){const e=this.db.transaction("category","readonly").objectStore("category");return(await this.waitForRequest(e.count())).target.result>0}async populate({groups:e,emojis:t,emojisEtag:o,messagesEtag:s,hash:i}){await this.removeAllObjects("category","emoji");const r=[this.addObjects("category",e),this.addObjects("emoji",t),this.setMeta({emojisEtag:o,messagesEtag:s,hash:i})];await Promise.all(r)}async getCategories(e){var t;const o=this.db.transaction("category","readonly").objectStore("category");let s=(await this.waitForRequest(o.getAll())).target.result.filter((e=>"component"!==e.key));if(e.showRecents&&s.unshift({key:"recents",order:-1}),null!=(t=e.custom)&&t.length&&s.push({key:"custom",order:10}),e.categories){const t=e.categories;s=s.filter((e=>t.includes(e.key))),s.sort(((e,o)=>t.indexOf(e.key)-t.indexOf(o.key)))}else s.sort(((e,t)=>e.order-t.order));return s}async getEmojis(e,t){const o=this.db.transaction("emoji","readonly").objectStore("emoji").index("category");return Q((await this.waitForRequest(o.getAll(e.order))).target.result.filter((e=>e.version<=t)).sort(((e,t)=>null!=e.order&&null!=t.order?e.order-t.order:0)).map(X),t)}async searchEmojis(e,t,o,s){const i=[];return new Promise(((r,a)=>{const n=this.db.transaction("emoji","readonly").objectStore("emoji").openCursor();n.addEventListener("success",(a=>{var n;const c=null==(n=a.target)?void 0:n.result;if(!c)return r([...Q(i,o),...t.filter((t=>Z(t,e)))]);const l=c.value;Z(l,e,s)&&l.version<=o&&i.push(X(l)),c.continue()})),n.addEventListener("error",(e=>{a(e)}))}))}async waitForRequest(e){return new Promise(((t,o)=>{e.onsuccess=t,e.onerror=o}))}withTransaction(e,t="readwrite",o){return new Promise(((s,i)=>{const r=this.db.transaction(e,t);r.oncomplete=s,r.onerror=i,o(r)}))}async removeAllObjects(...e){const t=this.db.transaction(e,"readwrite"),o=e.map((e=>t.objectStore(e)));await Promise.all(o.map((e=>this.waitForRequest(e.clear()))))}async addObjects(e,t){return this.withTransaction(e,"readwrite",(o=>{const s=o.objectStore(e);t.forEach((e=>{s.add(e)}))}))}}const ie="PicMo:recents";class re extends class{}{constructor(e){super(),this.storage=e}clear(){this.storage.removeItem(ie)}getRecents(e){var t;try{return JSON.parse(null!=(t=this.storage.getItem(ie))?t:"[]").slice(0,e)}catch{return[]}}addOrUpdateRecent(e,t){const o=[e,...this.getRecents(t).filter((t=>t.hexcode!==e.hexcode))].slice(0,t);try{this.storage.setItem(ie,JSON.stringify(o))}catch{console.warn("storage is not available, recent emojis will not be saved")}}}class ae extends re{constructor(){super(localStorage)}}const ne={dataStore:oe,theme:z,animate:!0,showCategoryTabs:!0,showPreview:!0,showRecents:!0,showSearch:!0,showVariants:!0,emojisPerRow:8,visibleRows:6,emojiVersion:"auto",i18n:{"categories.activities":"Activities","categories.animals-nature":"Animals & Nature","categories.custom":"Custom","categories.flags":"Flags","categories.food-drink":"Food & Drink","categories.objects":"Objects","categories.people-body":"People & Body","categories.recents":"Recently Used","categories.smileys-emotion":"Smileys & Emotion","categories.symbols":"Symbols","categories.travel-places":"Travel & Places","error.load":"Failed to load emojis","recents.clear":"Clear recent emojis","recents.none":"You haven't selected any emojis yet.",retry:"Try again","search.clear":"Clear search","search.error":"Failed to search emojis","search.notFound":"No results found",search:"Search emojis..."},locale:"en",maxRecents:50,custom:[]};var ce,le,he,de,me;class ue{constructor(){r(this,le),r(this,de),r(this,ce,new Map)}on(e,t,o){n(this,de,me).call(this,e,t,o)}once(e,t,o){n(this,de,me).call(this,e,t,o,!0)}off(e,t){const o=n(this,le,he).call(this,e);i(this,ce).set(e,o.filter((e=>e.handler!==t)))}emit(e,...t){n(this,le,he).call(this,e).forEach((o=>{o.handler.apply(o.context,t),o.once&&this.off(e,o.handler)}))}removeAll(){i(this,ce).clear()}}ce=new WeakMap,le=new WeakSet,he=function(e){return i(this,ce).has(e)||i(this,ce).set(e,[]),i(this,ce).get(e)},de=new WeakSet,me=function(e,t,o,s=!1){n(this,le,he).call(this,e).push({context:o,handler:t,once:s})};const ge=!0;class pe extends ue{}class ye extends ue{}const ve=f("emojiCategory","categoryName","noRecents","recentEmojis");class we extends F{constructor({template:e,category:t,showVariants:o,lazyLoader:s}){super({template:e,classes:ve}),this.baseUIElements={categoryName:F.byClass(ve.categoryName)},this.category=t,this.showVariants=o,this.lazyLoader=s}setActive(e,t,o){this.emojiContainer.setActive(e,t,o)}}const fe=new U((({classes:e,emoji:t})=>`\n \n
\n \n`)),be=f("emojiButton");class Ce extends F{constructor({emoji:e,lazyLoader:t,category:o}){super({template:fe,classes:be}),this.emoji=e,this.lazyLoader=t,this.category=o}initialize(){this.uiEvents=[F.uiEvent("focus",this.handleFocus)],super.initialize()}handleFocus(){this.category&&this.events.emit("focus:change",this.category)}activateFocus(e){this.el.tabIndex=0,e&&this.el.focus()}deactivateFocus(){this.el.tabIndex=-1}renderSync(){return super.renderSync({emoji:this.emoji,emojiContent:this.renderer.doRender(this.emoji,this.lazyLoader)})}}class je{constructor(e,t,o=0,s=0,i=!1){this.events=new ue,this.keyHandlers={ArrowLeft:this.focusPrevious.bind(this),ArrowRight:this.focusNext.bind(this),ArrowUp:this.focusUp.bind(this),ArrowDown:this.focusDown.bind(this)},this.rowCount=Math.ceil(t/e),this.columnCount=e,this.focusedRow=o,this.focusedColumn=s,this.emojiCount=t,this.wrap=i,this.handleKeyDown=this.handleKeyDown.bind(this)}destroy(){this.events.removeAll()}on(e,t){this.events.on(e,t)}handleKeyDown(e){e.key in this.keyHandlers&&(e.preventDefault(),this.keyHandlers[e.key]())}setCell(e,t,o=!0){const s=this.getIndex();this.focusedRow=e,void 0!==t&&(this.focusedColumn=Math.min(this.columnCount,t)),(this.focusedRow>=this.rowCount||this.getIndex()>=this.emojiCount)&&(this.focusedRow=this.rowCount-1,this.focusedColumn=this.emojiCount%this.columnCount-1),this.events.emit("focus:change",{from:s,to:this.getIndex(),performFocus:o})}setFocusedIndex(e,t=!0){const o=Math.floor(e/this.columnCount),s=e%this.columnCount;this.setCell(o,s,t)}focusNext(){this.focusedColumn0?this.setCell(this.focusedRow,this.focusedColumn-1):this.focusedRow>0?this.setCell(this.focusedRow-1,this.columnCount-1):this.wrap?this.setCell(this.rowCount-1,this.columnCount-1):this.events.emit("focus:underflow",this.columnCount-1)}focusUp(){this.focusedRow>0?this.setCell(this.focusedRow-1,this.focusedColumn):this.events.emit("focus:underflow",this.focusedColumn)}focusDown(){this.focusedRow`\n
\n
\n
\n`)),xe=f("emojiContainer");class Ee extends F{constructor({emojis:e,showVariants:t,preview:o=!0,lazyLoader:s,category:i,fullHeight:r=!1}){super({template:ke,classes:xe}),this.fullHeight=!1,this.showVariants=t,this.lazyLoader=s,this.preview=o,this.emojis=e,this.category=i,this.fullHeight=r,this.setFocus=this.setFocus.bind(this),this.triggerNextCategory=this.triggerNextCategory.bind(this),this.triggerPreviousCategory=this.triggerPreviousCategory.bind(this)}initialize(){this.grid=new je(this.options.emojisPerRow,this.emojiCount,0,0,!this.category),this.grid.on("focus:change",this.setFocus),this.grid.on("focus:overflow",this.triggerNextCategory),this.grid.on("focus:underflow",this.triggerPreviousCategory),this.uiEvents=[F.uiEvent("click",this.selectEmoji),F.uiEvent("keydown",this.grid.handleKeyDown)],this.preview&&this.uiEvents.push(F.uiEvent("mouseover",this.showPreview),F.uiEvent("mouseout",this.hidePreview),F.uiEvent("focus",this.showPreview,{capture:!0}),F.uiEvent("blur",this.hidePreview,{capture:!0})),super.initialize()}setFocusedView(e,t){if(e)if("string"==typeof e){const t=this.emojis.findIndex((t=>t.emoji===e));this.grid.setFocusedIndex(t,!1),setTimeout((()=>{var e,o,s,i;const r=this.emojiViews[t].el;r.scrollIntoView();const a=null==(e=r.parentElement)?void 0:e.previousElementSibling;(null==(s=null==(o=r.parentElement)?void 0:o.parentElement)?void 0:s.parentElement).scrollTop-=null!=(i=null==a?void 0:a.offsetHeight)?i:0}))}else"first"===e.row||0===e.row?this.grid.setCell(0,e.offset,t):"last"===e.row&&this.grid.setCell(this.grid.getRowCount()-1,e.offset,t)}setActive(e,t,o){var s;e?this.setFocusedView(t,o):null==(s=this.emojiViews[this.grid.getIndex()])||s.deactivateFocus()}renderSync(){return this.emojiViews=this.emojis.map((e=>this.viewFactory.create(Ce,{emoji:e,category:this.category,lazyLoader:this.lazyLoader,renderer:this.renderer}))),this.emojiElements=this.emojiViews.map((e=>e.renderSync())),super.renderSync({emojis:this.emojiElements,i18n:this.i18n})}destroy(){super.destroy(),this.emojiViews.forEach((e=>e.destroy())),this.grid.destroy()}triggerPreviousCategory(e){this.events.emit("category:previous",e)}triggerNextCategory(e){this.category&&this.events.emit("category:next",e)}setFocus({from:e,to:t,performFocus:o}){var s,i;null==(s=this.emojiViews[e])||s.deactivateFocus(),null==(i=this.emojiViews[t])||i.activateFocus(o)}selectEmoji(e){e.stopPropagation();const t=g(e,this.emojis);t&&this.events.emit("emoji:select",{emoji:t,showVariants:this.showVariants})}showPreview(e){const t=e.target.closest("button"),o=null==t?void 0:t.firstElementChild,s=g(e,this.emojis);s&&this.events.emit("preview:show",s,null==o?void 0:o.cloneNode(!0))}hidePreview(e){g(e,this.emojis)&&this.events.emit("preview:hide")}get emojiCount(){return this.emojis.length}}const Se=new U((({classes:e,category:t,pickerId:o,icon:s,i18n:i})=>`\n
\n

\n \n ${i.get(`categories.${t.key}`,t.message||t.key)}\n

\n
\n
\n`));class ze extends we{constructor({category:e,showVariants:t,lazyLoader:o,emojiVersion:s}){super({category:e,showVariants:t,lazyLoader:o,template:Se}),this.showVariants=t,this.lazyLoader=o,this.emojiVersion=s}initialize(){this.uiElements={...this.baseUIElements},super.initialize()}async render(){await this.emojiDataPromise;const e=await this.emojiData.getEmojis(this.category,this.emojiVersion);return this.emojiContainer=this.viewFactory.create(Ee,{emojis:e,showVariants:this.showVariants,lazyLoader:this.lazyLoader,category:this.category.key}),super.render({category:this.category,emojis:this.emojiContainer,emojiCount:e.length,icon:A[this.category.key]})}}class Le extends Ee{constructor({category:e,emojis:t,preview:o=!0,lazyLoader:s}){super({category:e,emojis:t,showVariants:!1,preview:o,lazyLoader:s})}async addOrUpdate(e){const t=this.el.querySelector(`[data-emoji="${e.emoji}"]`);t&&(this.el.removeChild(t),this.emojis=this.emojis.filter((t=>t!==e)));const o=this.viewFactory.create(Ce,{emoji:e});if(this.el.insertBefore(o.renderSync(),this.el.firstChild),this.emojis=[e,...this.emojis.filter((t=>t!==e))],this.emojis.length>this.options.maxRecents){this.emojis=this.emojis.slice(0,this.options.maxRecents);const e=this.el.childElementCount-this.options.maxRecents;for(let t=0;t`\n
\n

\n \n ${r.get(`categories.${o.key}`,o.message||o.key)}\n

\n
\n
\n
\n
\n ${r.get("recents.none")}\n
\n
\n`),{mode:"async"});const Fe=new U((({classes:e,category:t,pickerId:o,icon:s,i18n:i})=>`\n
\n

\n \n ${i.get(`categories.${t.key}`,t.message||t.key)}\n

\n
\n
\n`));class $e{constructor(){this.elements=new Map}lazyLoad(e,t){return this.elements.set(e,t),e}observe(e){if(window.IntersectionObserver){const t=new IntersectionObserver((e=>{e.filter((e=>e.intersectionRatio>0)).map((e=>e.target)).forEach((e=>{const o=this.elements.get(e);null==o||o(),t.unobserve(e)}))}),{root:e});this.elements.forEach(((e,o)=>{t.observe(o)}))}else this.elements.forEach((e=>{e()}))}}const Ae=f("emojiArea"),Ie=new U((({classes:e})=>`\n
\n
\n
\n`),{mode:"async"}),Te={recents:class extends we{constructor({category:e,lazyLoader:t,provider:o}){super({category:e,showVariants:!1,lazyLoader:t,template:Pe}),this.provider=o}initialize(){this.uiElements={...this.baseUIElements,recents:F.byClass(ve.recentEmojis)},this.appEvents={"recent:add":this.addRecent},super.initialize()}async addRecent(e){await this.emojiContainer.addOrUpdate(e),this.ui.recents.dataset.empty="false"}async render(){var e;const t=null==(e=this.provider)?void 0:e.getRecents(this.options.maxRecents);return this.emojiContainer=this.viewFactory.create(Le,{emojis:t,showVariants:!1,lazyLoader:this.lazyLoader,category:this.category.key}),await super.render({category:this.category,emojis:this.emojiContainer,emojiCount:t.length,icon:A[this.category.key]}),this.el}},custom:class extends we{constructor({category:e,lazyLoader:t}){super({template:Fe,showVariants:!1,lazyLoader:t,category:e})}initialize(){this.uiElements={...this.baseUIElements},super.initialize()}async render(){return this.emojiContainer=this.viewFactory.create(Ee,{emojis:this.customEmojis,showVariants:this.showVariants,lazyLoader:this.lazyLoader,category:this.category.key}),super.render({category:this.category,emojis:this.emojiContainer,emojiCount:this.customEmojis.length,icon:A[this.category.key]})}}};class Ve extends F{constructor({categoryTabs:e,categories:t,emojiVersion:o}){super({template:Ie,classes:Ae}),this.selectedCategory=0,this.scrollListenerState="active",this.lazyLoader=new $e,this.categoryTabs=e,this.categories=t,this.emojiVersion=o,this.handleScroll=function(e,t){let o=null;return()=>{o||(o=window.setTimeout((()=>{e(),o=null}),t))}}(this.handleScroll.bind(this),100)}initialize(){this.appEvents={"category:select":this.handleCategorySelect,"category:previous":this.focusPreviousCategory,"category:next":this.focusNextCategory,"focus:change":this.updateFocusedCategory},this.uiElements={emojis:F.byClass(Ae.emojiArea)},this.uiEvents=[F.uiEvent("scroll",this.handleScroll)],super.initialize()}get focusableEmoji(){return this.el.querySelector('[tabindex="0"]')}async render(){this.emojiCategories=this.categories.map(this.createCategory,this);const e={};return this.categories.forEach(((t,o)=>{e[`emojis-${t.key}`]=this.emojiCategories[o]})),await super.render({emojis:await Promise.all(this.emojiCategories.map((e=>e.render())))}),this.lazyLoader.observe(this.el),window.ResizeObserver&&(this.observer=new ResizeObserver((()=>{const e=this.el.scrollHeight-this.scrollHeight;this.el.scrollTop-this.scrollTop===0&&e>0&&(this.el.scrollTop+=e),this.scrollHeight=this.el.scrollHeight,this.scrollTop=this.el.scrollTop})),this.emojiCategories.forEach((e=>{this.observer.observe(e.el)}))),this.el}destroy(){super.destroy(),this.emojiCategories.forEach((e=>{var t;null==(t=this.observer)||t.unobserve(e.el),e.destroy()}))}handleCategorySelect(e,t){this.selectCategory(e,t)}createCategory(e){const t=Te[e.key]||ze;return this.viewFactory.create(t,{category:e,showVariants:!0,lazyLoader:this.lazyLoader,emojiVersion:this.emojiVersion,provider:this.options.recentsProvider})}determineInitialCategory(){var e;return this.options.initialCategory&&this.categories.find((e=>e.key===this.options.initialCategory))?this.options.initialCategory:null==(e=this.categories.find((e=>"recents"!==e.key)))?void 0:e.key}determineFocusTarget(e){const t=this.emojiCategories.find((t=>t.category.key===e));return this.options.initialEmoji&&(null==t?void 0:t.el.querySelector(`[data-emoji="${this.options.initialEmoji}"]`))?this.options.initialEmoji:"button"}reset(e=!0){this.events.emit("preview:hide"),this.scrollHeight=this.el.scrollHeight;const t=this.determineInitialCategory();t&&(this.selectCategory(t,{focus:this.determineFocusTarget(t),performFocus:e,scroll:"jump"}),this.selectedCategory=this.getCategoryIndex(t))}getCategoryIndex(e){return this.categories.findIndex((t=>t.key===e))}focusPreviousCategory(e){this.selectedCategory>0&&this.focusCategory(this.selectedCategory-1,{row:"last",offset:null!=e?e:this.options.emojisPerRow})}focusNextCategory(e){this.selectedCategory{var s;return e<(null==(s=this.emojiCategories[o+1])?void 0:s.el.offsetTop)})),s={changeFocusable:!1,performFocus:!1,scroll:!1};0===e?this.categoryTabs.setActiveTab(0,s):Math.floor(e)===Math.floor(t)||o<0?this.categoryTabs.setActiveTab(this.categories.length-1,s):this.categoryTabs.setActiveTab(o,s)}}const Re=new U((({classList:e,classes:t,icon:o,message:s})=>`\n\n`)),Me=f("error","iconContainer","title");class Be extends F{constructor({message:e,icon:t="warning",template:o=Re,className:s}){super({template:o,classes:Me}),this.message=e,this.icon=t,this.className=s}renderSync(){const e=[Me.error,this.className].join(" ").trim();return super.renderSync({message:this.message,icon:this.icon,classList:e})}}const De=new U((({classList:e,classes:t,icon:o,i18n:s,message:i})=>`\n \n`)),He=f("dataError");class Ne extends Be{constructor({message:e}){super({message:e,template:De,className:He.dataError})}initialize(){this.uiElements={retryButton:"button"},this.uiEvents=[F.childEvent("retryButton","click",this.onRetry)],super.initialize()}async onRetry(){this.emojiData?await this.emojiData.delete():await this.options.dataStore.deleteDatabase(this.options.locale),this.events.emit("reinitialize");const e=await E(this.options.locale,this.options.dataStore,this.options.messages,this.options.emojiData,this.emojiData);this.viewFactory.setEmojiData(e),this.events.emit("data:ready",e)}}const Oe=f("preview","previewEmoji","previewName","tagList","tag"),Ue=new U((({classes:e,tag:t})=>`\n
  • ${t}
  • \n`)),Ke=new U((({classes:e})=>`\n
    \n
    \n
    \n
      \n
      \n`));class qe extends F{constructor(){super({template:Ke,classes:Oe})}initialize(){this.uiElements={emoji:F.byClass(Oe.previewEmoji),name:F.byClass(Oe.previewName),tagList:F.byClass(Oe.tagList)},this.appEvents={"preview:show":this.showPreview,"preview:hide":this.hidePreview},super.initialize()}showPreview(e,t){if(this.ui.emoji.replaceChildren(t),this.ui.name.textContent=e.label,e.tags){this.ui.tagList.style.display="flex";const t=e.tags.map((e=>Ue.renderSync({tag:e,classes:Oe})));this.ui.tagList.replaceChildren(...t)}}hidePreview(){this.ui.emoji.replaceChildren(),this.ui.name.textContent="",this.ui.tagList.replaceChildren()}}const We=new U((({classes:e,i18n:t})=>`\n \n`)),Ge=new U((({classes:e,i18n:t})=>`\n
      \n \n \n
      \n`),{mode:"async"}),Je=f("searchContainer","searchField","clearButton","searchAccessory","clearSearchButton","notFound");class _e extends F{constructor({categories:e,emojiVersion:t}){super({template:Ge,classes:Je}),this.categories=e.filter((e=>"recents"!==e.key)),this.emojiVersion=t,this.search=function(e,t){let o=null;return(...s)=>{o&&window.clearTimeout(o),o=window.setTimeout((()=>{e(...s),o=null}),t)}}(this.search.bind(this),100)}initialize(){this.uiElements={searchField:F.byClass(Je.searchField),searchAccessory:F.byClass(Je.searchAccessory)},this.uiEvents=[F.childEvent("searchField","keydown",this.onKeyDown),F.childEvent("searchField","input",this.onSearchInput)],super.initialize()}async render(){return await super.render(),this.searchIcon=I("search"),this.notFoundMessage=this.viewFactory.create(Be,{message:this.i18n.get("search.notFound"),className:Je.notFound,icon:"sad"}),this.notFoundMessage.renderSync(),this.errorMessage=this.viewFactory.create(Be,{message:this.i18n.get("search.error")}),this.errorMessage.renderSync(),this.clearSearchButton=We.render({classes:Je,i18n:this.i18n}),this.clearSearchButton.addEventListener("click",(e=>this.onClearSearch(e))),this.searchField=this.ui.searchField,this.showSearchIcon(),this.el}showSearchIcon(){this.showSearchAccessory(this.searchIcon)}showClearSearchButton(){this.showSearchAccessory(this.clearSearchButton)}showSearchAccessory(e){this.ui.searchAccessory.replaceChildren(e)}clear(){this.searchField.value="",this.showSearchIcon()}focus(){this.searchField.focus()}onClearSearch(e){var t;e.stopPropagation(),this.searchField.value="",null==(t=this.resultsContainer)||t.destroy(),this.resultsContainer=null,this.showSearchIcon(),this.events.emit("content:show"),this.searchField.focus()}handleResultsKeydown(e){this.resultsContainer&&"Escape"===e.key&&this.onClearSearch(e)}onKeyDown(e){var t;"Escape"===e.key&&this.searchField.value?this.onClearSearch(e):("Enter"===e.key||"ArrowDown"===e.key)&&this.resultsContainer&&(e.preventDefault(),null==(t=this.resultsContainer.el.querySelector('[tabindex="0"]'))||t.focus())}onSearchInput(e){this.searchField.value?(this.showClearSearchButton(),this.search()):this.onClearSearch(e)}async search(){var e;if(this.searchField.value)try{const t=await this.emojiData.searchEmojis(this.searchField.value,this.customEmojis,this.emojiVersion,this.categories);if(this.events.emit("preview:hide"),t.length){const o=new $e;this.resultsContainer=this.viewFactory.create(Ee,{emojis:t,fullHeight:!0,showVariants:!0,lazyLoader:o}),this.resultsContainer.renderSync(),null!=(e=this.resultsContainer)&&e.el&&(o.observe(this.resultsContainer.el),this.resultsContainer.setActive(!0,{row:0,offset:0},!1),this.resultsContainer.el.addEventListener("keydown",(e=>this.handleResultsKeydown(e))),this.events.emit("content:show",this.resultsContainer))}else this.events.emit("content:show",this.notFoundMessage)}catch{this.events.emit("content:show",this.errorMessage)}}}const Ye=new U((({classes:e})=>`\n
      \n
      \n
      \n
      \n
      \n`)),Qe=f("variantOverlay","variantPopup"),Xe={easing:"ease-in-out",duration:250,fill:"both"},Ze={opacity:[0,1]},et={opacity:[0,1],transform:["scale3d(0.8, 0.8, 0.8)","scale3d(1, 1, 1)"]};class tt extends F{constructor({emoji:e,parent:t}){super({template:Ye,classes:Qe,parent:t}),this.focusedEmojiIndex=0,this.focusTrap=new S,this.animateShow=()=>Promise.all([v(this.el,Ze,Xe,this.options),v(this.ui.popup,et,Xe,this.options)]),this.emoji=e}initialize(){this.uiElements={popup:F.byClass(Qe.variantPopup)},this.uiEvents=[F.uiEvent("click",this.handleClick),F.uiEvent("keydown",this.handleKeydown)],super.initialize()}animateHide(){const e={...Xe,direction:"reverse"};return Promise.all([v(this.el,Ze,e,this.options),v(this.ui.popup,et,e,this.options)])}async hide(){await this.animateHide(),this.events.emit("variantPopup:hide")}handleKeydown(e){"Escape"===e.key&&(this.hide(),e.stopPropagation())}handleClick(e){this.ui.popup.contains(e.target)||this.hide()}getEmoji(e){return this.renderedEmojis[e]}setFocusedEmoji(e){this.getEmoji(this.focusedEmojiIndex).tabIndex=-1,this.focusedEmojiIndex=e;const t=this.getEmoji(this.focusedEmojiIndex);t.tabIndex=0,t.focus()}destroy(){this.emojiContainer.destroy(),this.focusTrap.deactivate(),super.destroy()}renderSync(){const e=[{...this.emoji,skins:null},...(this.emoji.skins||[]).map((e=>({...e,label:this.emoji.label,tags:this.emoji.tags})))];return this.emojiContainer=this.viewFactory.create(Ee,{emojis:e,preview:!1}),super.renderSync({emojis:this.emojiContainer}),e.length`\n
    • \n \n \n
    • \n`)),st=f("categoryTab","categoryTabActive","categoryButton");class it extends F{constructor({category:e,icon:t}){super({template:ot,classes:st}),this.isActive=!1,this.category=e,this.icon=t}initialize(){this.uiElements={button:F.byClass(st.categoryButton)},this.uiEvents=[F.childEvent("button","click",this.selectCategory),F.childEvent("button","focus",this.selectCategory)],super.initialize()}renderSync(){return super.renderSync({category:this.category,icon:this.icon}),this.ui.button.ariaSelected="false",this.el}setActive(e,t={}){const{changeFocusable:o,performFocus:s,scroll:i}={changeFocusable:!0,performFocus:!0,scroll:!0,...t};this.el.classList.toggle(st.categoryTabActive,e),o&&(this.ui.button.tabIndex=e?0:-1,this.ui.button.ariaSelected=e.toString()),e&&s&&(this.ui.button.focus(),i&&this.events.emit("category:select",this.category.key,{scroll:"animate",focus:"button",performFocus:!1})),this.isActive=e}selectCategory(){this.isActive||this.events.emit("category:select",this.category.key,{scroll:"animate",focus:"button",performFocus:!0})}}const rt=new U((({classes:e})=>`\n
      \n
        \n
        \n
      \n
      \n`)),at=f("categoryButtons","categoryButtonsContainer");class nt extends F{constructor({categories:e}){super({template:rt,classes:at}),this.activeCategoryIndex=0,this.categories=e}initialize(){this.keyBindings={ArrowLeft:this.stepSelectedTab(-1),ArrowRight:this.stepSelectedTab(1)},this.uiEvents=[F.uiEvent("scroll",this.checkOverflow)],super.initialize()}checkOverflow(){const e=Math.abs(this.el.scrollLeft-(this.el.scrollWidth-this.el.offsetWidth))>1,t=this.el.scrollLeft>0;this.el.className="categoryButtonsContainer",t&&e?this.el.classList.add("has-overflow-both"):t?this.el.classList.add("has-overflow-left"):e&&this.el.classList.add("has-overflow-right")}renderSync(){return this.tabViews=this.categories.map((e=>this.viewFactory.create(it,{category:e,icon:A[e.key]}))),super.renderSync({tabs:this.tabViews.map((e=>e.renderSync()))}),this.el}get currentCategory(){return this.categories[this.activeCategoryIndex]}get currentTabView(){return this.tabViews[this.activeCategoryIndex]}setActiveTab(e,t={}){this.checkOverflow();const o=this.currentTabView,s=this.tabViews[e];o.setActive(!1,t),s.setActive(!0,t),this.activeCategoryIndex=e}getTargetCategory(e){return e<0?this.categories.length-1:e>=this.categories.length?0:e}stepSelectedTab(e){return()=>{const t=this.activeCategoryIndex+e;this.setActiveTab(this.getTargetCategory(t),{changeFocusable:!0,performFocus:!0})}}}const ct=[{version:15,emoji:String.fromCodePoint(129768)},{version:14,emoji:String.fromCodePoint(128733)},{version:13,emoji:String.fromCodePoint(129729)},{version:12,emoji:String.fromCodePoint(129449)},{version:11,emoji:String.fromCodePoint(129463)},{version:5,emoji:String.fromCodePoint(129322)},{version:4,emoji:String.fromCodePoint(9877)},{version:3,emoji:String.fromCodePoint(129314)},{version:2,emoji:String.fromCodePoint(128488)},{version:1,emoji:String.fromCodePoint(128512)}];function lt(){var e;const t=ct.find((e=>function(e){const t=document.createElement("canvas").getContext("2d");if(t)return t.textBaseline="top",t.font="32px Arial",t.fillText(e,0,0),0!==t.getImageData(16,16,1,1).data[0]}(e.emoji)));return null!=(e=null==t?void 0:t.version)?e:1}function ht(e,t){return Array.from({length:e},(()=>t)).join("")}function dt(e){const{emojiCount:t,classes:o,theme:s,className:i,categoryCount:r}=e;return`\n
      \n ${(({showHeader:t,classes:o})=>t?`\n
      \n ${(({showSearch:e,classes:t})=>e?`\n
      \n
      \n
      \n `:"")(e)}\n ${(({showCategoryTabs:e,classes:t})=>e?`\n
      \n ${ht(r,`
      `)}\n
      \n `:"")(e)}\n
      \n `:"")(e)}\n
      \n
      \n
      \n ${ht(t,`
      `)}\n
      \n
      \n ${(({showPreview:e,classes:t})=>e?`\n
      \n
      \n
      \n
        \n ${ht(3,`
      • `)}\n
      \n
      \n `:"")(e)}\n
      \n `}const mt=new U((e=>e.isLoaded?function(e){const{classes:t,theme:o,className:s=""}=e;return`\n
      \n ${function({showHeader:e,classes:t}){return e?`\n
      \n
      \n
      \n
      \n `:""}(e)}\n
      \n
      \n
      \n
      \n
      \n `}(e):dt(e))),ut=f("picker","skeleton","placeholder","searchSkeleton","searchInput","categoryTabsSkeleton","headerSkeleton","categoryTab","contentSkeleton","categoryName","emojiGrid","emoji","previewSkeleton","previewEmoji","previewName","tagList","tag","overlay","content","fullHeight","pluginContainer","header"),gt={emojisPerRow:"--emojis-per-row",visibleRows:"--row-count",emojiSize:"--emoji-size"};class pt extends F{constructor(){super({template:mt,classes:ut}),this.pickerReady=!1,this.externalEvents=new ye,this.updaters={styleProperty:e=>t=>this.el.style.setProperty(gt[e],t.toString()),theme:e=>{this.el.classList.remove(this.options.theme),this.el.classList.add(e)},className:e=>{this.options.className&&this.el.classList.remove(this.options.className),this.el.classList.add(e)},emojisPerRow:this.updateStyleProperty.bind(this,"emojisPerRow"),emojiSize:this.updateStyleProperty.bind(this,"emojiSize"),visibleRows:this.updateStyleProperty.bind(this,"visibleRows")}}initialize(){this.uiElements={pickerContent:F.byClass(ut.content),header:F.byClass(ut.header)},this.uiEvents=[F.uiEvent("keydown",this.handleKeyDown)],this.appEvents={error:this.onError,reinitialize:this.reinitialize,"data:ready":this.onDataReady,"content:show":this.showContent,"variantPopup:hide":this.hideVariantPopup,"emoji:select":this.selectEmoji},super.initialize(),this.options.recentsProvider}destroy(){var e,t;super.destroy(),null==(e=this.search)||e.destroy(),this.emojiArea.destroy(),null==(t=this.categoryTabs)||t.destroy(),this.events.removeAll(),this.externalEvents.removeAll()}clearRecents(){this.options.recentsProvider.clear()}addEventListener(e,t){this.externalEvents.on(e,t)}removeEventListener(e,t){this.externalEvents.off(e,t)}initializePickerView(){this.pickerReady&&(this.showContent(),this.emojiArea.reset(!1))}handleKeyDown(e){const t=e.ctrlKey||e.metaKey;"s"===e.key&&t&&this.search&&(e.preventDefault(),this.search.focus())}buildChildViews(){return this.options.showPreview&&(this.preview=this.viewFactory.create(qe)),this.options.showSearch&&(this.search=this.viewFactory.create(_e,{categories:this.categories,emojiVersion:this.emojiVersion})),this.options.showCategoryTabs&&(this.categoryTabs=this.viewFactory.create(nt,{categories:this.categories})),this.currentView=this.emojiArea=this.viewFactory.create(Ve,{categoryTabs:this.categoryTabs,categories:this.categories,emojiVersion:this.emojiVersion}),[this.preview,this.search,this.emojiArea,this.categoryTabs]}setStyleProperties(){this.options.showSearch||this.el.style.setProperty("--search-height-full","0px"),this.options.showCategoryTabs||(this.el.style.setProperty("--category-tabs-height","0px"),this.el.style.setProperty("--category-tabs-offset","0px")),this.options.showPreview||this.el.style.setProperty("--emoji-preview-height-full","0px"),Object.keys(gt).forEach((e=>{this.options[e]&&this.el.style.setProperty(gt[e],this.options[e].toString())}))}updateStyleProperty(e,t){this.el.style.setProperty(gt[e],t.toString())}reinitialize(){this.renderSync()}onError(e){const t=this.viewFactory.create(Ne,{message:this.i18n.get("error.load")}),o=this.el.offsetHeight||375;throw this.el.style.height=`${o}px`,this.el.replaceChildren(t.renderSync()),e}async onDataReady(e){const t=this.el;try{e?this.emojiData=e:await this.emojiDataPromise,"auto"===this.options.emojiVersion?this.emojiVersion=lt()||parseFloat("14.0"):this.emojiVersion=this.options.emojiVersion,this.categories=await this.emojiData.getCategories(this.options);const[o,s,i,r]=this.buildChildViews();await super.render({isLoaded:!0,search:s,categoryTabs:r,emojiArea:i,preview:o,showHeader:Boolean(this.search||this.categoryTabs),theme:this.options.theme,className:this.options.className}),this.el.style.setProperty("--category-count",this.categories.length.toString()),this.pickerReady=!0,t.replaceWith(this.el),this.setStyleProperties(),this.initializePickerView(),this.setInitialFocus(),this.externalEvents.emit("data:ready")}catch(o){this.events.emit("error",o)}}renderSync(){var e;let t=(null==(e=this.options.categories)?void 0:e.length)||10;if(this.options.showRecents&&(t+=1),super.renderSync({isLoaded:!1,theme:this.options.theme,showSearch:this.options.showSearch,showPreview:this.options.showPreview,showCategoryTabs:this.options.showCategoryTabs,showHeader:this.options.showSearch||this.options.showCategoryTabs,emojiCount:this.options.emojisPerRow*this.options.visibleRows,categoryCount:t}),this.el.style.setProperty("--category-count",t.toString()),!this.options.rootElement)throw new Error("Picker must be given a root element via the rootElement option");return this.options.rootElement.replaceChildren(this.el),this.setStyleProperties(),this.pickerReady&&this.initializePickerView(),this.el}getInitialFocusTarget(){if(typeof this.options.autoFocus<"u")switch(this.options.autoFocus){case"emojis":return this.emojiArea.focusableEmoji;case"search":return this.search;case"auto":return this.search||this.emojiArea.focusableEmoji;default:return null}if(!0===this.options.autoFocusSearch)return console.warn("options.autoFocusSearch is deprecated, please use options.focusTarget instead"),this.search}setInitialFocus(){var e;!this.pickerReady||null==(e=this.getInitialFocusTarget())||e.focus()}reset(e=!0){var t;this.pickerReady&&(this.emojiArea.reset(e),this.showContent(this.emojiArea)),null==(t=this.search)||t.clear(),this.hideVariantPopup()}showContent(e=this.emojiArea){var t,o;e!==this.currentView&&(this.currentView!==this.emojiArea&&(null==(t=this.currentView)||t.destroy()),this.ui.pickerContent.classList.toggle(ut.fullHeight,e!==this.emojiArea),this.ui.pickerContent.replaceChildren(e.el),this.currentView=e,e===this.emojiArea?(this.emojiArea.reset(),this.categoryTabs&&this.ui.header.appendChild(this.categoryTabs.el)):null==(o=this.categoryTabs)||o.el.remove())}hideVariantPopup(){var e;null==(e=this.variantPopup)||e.destroy()}isPickerClick(e){var t,o;const s=e.target,i=this.el.contains(s),r=null==(o=null==(t=this.variantPopup)?void 0:t.el)?void 0:o.contains(s);return i||r}async selectEmoji({emoji:e}){var t,o;(null==(t=e.skins)?void 0:t.length)&&this.options.showVariants&&!this.isVariantPopupOpen?this.showVariantPopup(e):(await(null==(o=this.variantPopup)?void 0:o.animateHide()),this.events.emit("variantPopup:hide"),await this.emitEmoji(e))}get isVariantPopupOpen(){return this.variantPopup&&!this.variantPopup.isDestroyed}async showVariantPopup(e){const t=document.activeElement;this.events.once("variantPopup:hide",(()=>{null==t||t.focus()})),this.variantPopup=this.viewFactory.create(tt,{emoji:e,parent:this.el}),this.el.appendChild(this.variantPopup.renderSync()),this.variantPopup.activate()}async emitEmoji(e){this.externalEvents.emit("emoji:select",await this.renderer.doEmit(e)),this.options.recentsProvider.addOrUpdateRecent(e,this.options.maxRecents),this.events.emit("recent:add",e)}updateOptions(e){Object.keys(e).forEach((t=>{this.updaters[t](e[t])})),Object.assign(this.options,e)}}class yt{constructor({events:e,i18n:t,renderer:o,emojiData:s,options:i,customEmojis:r=[],pickerId:a}){this.events=e,this.i18n=t,this.renderer=o,this.emojiData=s,this.options=i,this.customEmojis=r,this.pickerId=a}setEmojiData(e){this.emojiData=Promise.resolve(e)}create(e,...t){const o=new e(...t);return o.setPickerId(this.pickerId),o.setEvents(this.events),o.setI18n(this.i18n),o.setRenderer(this.renderer),o.setEmojiData(this.emojiData),o.setOptions(this.options),o.setCustomEmojis(this.customEmojis),o.viewFactory=this,o.initialize(),o}}var vt;class wt{constructor(e={}){r(this,vt,void 0),a(this,vt,new Map(Object.entries(e)))}get(e,t=e){return i(this,vt).get(e)||t}}vt=new WeakMap;let ft=0;const bt=function(){let e=!1;return function(t){ge&&!e&&(function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&!(typeof document>"u")){var s=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===o&&s.firstChild?s.insertBefore(i,s.firstChild):s.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(t),e=!0)}}();function Ct(e){bt('.picmo-picker .icon{width:1.25em;height:1em;fill:currentColor}.icon-small{font-size:.8em}.icon-medium{font-size:1em}.icon-large{font-size:1.25em}.icon-2x{font-size:2em}.icon-3x{font-size:3em}.icon-4x{font-size:4em}.icon-5x{font-size:5em}.icon-8x{font-size:8em}.icon-10x{font-size:10em}.light,.auto{color-scheme:light;--accent-color: #4f46e5;--background-color: #f9fafb;--border-color: #cccccc;--category-name-background-color: #f9fafb;--category-name-button-color: #999999;--category-name-text-color: hsl(214, 30%, 50%);--category-tab-active-background-color: rgba(255, 255, 255, .6);--category-tab-active-color: var(--accent-color);--category-tab-color: #666;--category-tab-highlight-background-color: rgba(0, 0, 0, .15);--error-color-dark: hsl(0, 100%, 45%);--error-color: hsl(0, 100%, 40%);--focus-indicator-background-color: hsl(198, 65%, 85%);--focus-indicator-color: #333333;--hover-background-color: #c7d2fe;--placeholder-background-color: #cccccc;--preview-background-color: var(--secondary-background-color);--scrollbar-background-color: var(--background-color);--scrollbar-color: #aaa;--search-background-color: #f9fafb;--search-focus-background-color: #ffffff;--search-icon-color: #999999;--search-placeholder-color: #71717a;--secondary-background-color: #e2e8f0;--secondary-text-color: #666666;--tag-background-color: rgba(162, 190, 245, .3);--text-color: #000000;--variant-popup-background-color: #ffffff}.dark{color-scheme:dark;--accent-color: #A580F9;--background-color: #333333;--border-color: #666666;--category-name-background-color: #333333;--category-name-button-color: #eeeeee;--category-name-text-color: #ffffff;--category-tab-active-background-color: #000000;--category-tab-active-color: var(--accent-color);--category-tab-color: #cccccc;--category-tab-highlight-background-color: #4A4A4A;--error-color-dark: hsl(0, 7%, 3%);--error-color: hsl(0, 30%, 60%);--focus-indicator-background-color: hsl(0, 0%, 50%);--focus-indicator-color: #999999;--hover-background-color: hsla(0, 0%, 40%, .85);--image-placeholder-color: #ffffff;--placeholder-background-color: #666666;--search-background-color: #71717a;--search-focus-background-color: #52525b;--search-icon-color: #cccccc;--search-placeholder-color: #d4d4d8;--secondary-background-color: #000000 ;--secondary-text-color: #999999;--tag-background-color: rgba(162, 190, 245, .3);--text-color: #ffffff;--variant-popup-background-color: #333333}@media (prefers-color-scheme: dark){.auto{color-scheme:dark;--accent-color: #A580F9;--background-color: #333333;--border-color: #666666;--category-name-background-color: #333333;--category-name-button-color: #eeeeee;--category-name-text-color: #ffffff;--category-tab-active-background-color: #000000;--category-tab-active-color: var(--accent-color);--category-tab-color: #cccccc;--category-tab-highlight-background-color: #4A4A4A;--error-color-dark: hsl(0, 7%, 3%);--error-color: hsl(0, 30%, 60%);--focus-indicator-background-color: hsl(0, 0%, 50%);--focus-indicator-color: #999999;--hover-background-color: hsla(0, 0%, 40%, .85);--image-placeholder-color: #ffffff;--placeholder-background-color: #666666;--search-background-color: #71717a;--search-focus-background-color: #52525b;--search-icon-color: #cccccc;--search-placeholder-color: #d4d4d8;--secondary-background-color: #000000 ;--secondary-text-color: #999999;--tag-background-color: rgba(162, 190, 245, .3);--text-color: #ffffff;--variant-popup-background-color: #333333}}.picmo-picker .categoryButtonsContainer{overflow:auto;padding:2px 0;scrollbar-width:thin}.picmo-picker .categoryButtonsContainer.has-overflow-right{mask-image:linear-gradient(270deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%);-webkit-mask-image:linear-gradient(270deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%)}.picmo-picker .categoryButtonsContainer.has-overflow-left{mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%);-webkit-mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%)}.picmo-picker .categoryButtonsContainer.has-overflow-both{mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%,rgba(255,255,255,1) 90%,rgba(255,255,255,0) 100%);-webkit-mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%,rgba(255,255,255,1) 90%,rgba(255,255,255,0) 100%)}.picmo-picker .categoryButtonsContainer::-webkit-scrollbar{width:8px;height:8px}.picmo-picker .categoryButtonsContainer::-webkit-scrollbar-thumb{background:var(--scrollbar-color);border-radius:1em}.picmo-picker .categoryButtons{display:flex;flex-direction:row;gap:var(--tab-gap);margin:0;padding:0 .5em;align-items:center;height:var(--category-tabs-height);box-sizing:border-box;width:100%;justify-content:space-between;position:relative;list-style-type:none;justify-self:center;max-width:min(23.55rem,calc(var(--category-count, 1) * 2.5rem))}.picmo-picker .categoryButtons .categoryTab{display:flex;align-items:center;transition:all .1s;width:2em}.picmo-picker .categoryButtons .categoryTab.categoryTabActive .categoryButton{color:var(--category-tab-active-color);background:linear-gradient(rgba(255,255,255,.75) 0%,rgba(255,255,255,.75) 100%),linear-gradient(var(--category-tab-active-color) 0%,var(--category-tab-active-color) 100%);border:2px solid var(--category-tab-active-color)}.picmo-picker .categoryButtons .categoryTab.categoryTabActive .categoryButton:hover{background-color:var(--category-tab-active-background-color)}.picmo-picker .categoryButtons .categoryTab button.categoryButton{border-radius:5px;background:transparent;border:2px solid transparent;color:var(--category-tab-color);cursor:pointer;padding:2px;vertical-align:middle;display:flex;align-items:center;justify-content:center;font-size:1.2rem;width:1.6em;height:1.6em;transition:all .1s}.picmo-picker .categoryButtons .categoryTab button.categoryButton:is(img){width:var(--category-tab-size);height:var(--category-tab-size)}.picmo-picker .categoryButtons .categoryTab button.categoryButton:hover{background:var(--category-tab-highlight-background-color)}.dataError [data-icon]{opacity:.8}@keyframes appear{0%{opacity:0}to{opacity:.8}}@keyframes appear-grow{0%{opacity:0;transform:scale(.8)}to{opacity:.8;transform:scale(1)}}.picmo-picker .error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--secondary-text-color)}.picmo-picker .error .iconContainer{opacity:.8;animation:appear-grow .25s cubic-bezier(.175,.885,.32,1.275);--color-primary: var(--error-color);--color-secondary: var(--error-color-dark)}.picmo-picker .error .title{animation:appear .25s;animation-delay:50ms;animation-fill-mode:both}.picmo-picker .error button{padding:8px 16px;cursor:pointer;background:var(--background-color);border:1px solid var(--text-color);border-radius:5px;color:var(--text-color)}.picmo-picker .error button:hover{background:var(--text-color);color:var(--background-color)}.emojiButton{background:transparent;border:none;border-radius:15px;cursor:pointer;display:flex;font-family:var(--emoji-font);font-size:var(--emoji-size);height:100%;justify-content:center;align-items:center;margin:0;overflow:hidden;padding:0;width:100%}.emojiButton:hover{background:var(--hover-background-color)}.emojiButton:focus{border-radius:0;background:var(--focus-indicator-background-color);outline:1px solid var(--focus-indicator-color)}.picmo-picker .emojiArea{height:var(--emoji-area-height);overflow-y:auto;position:relative;scrollbar-color:var(--scrollbar-color) var(--scrollbar-background-color);scrollbar-width:thin}.picmo-picker .emojiArea::-webkit-scrollbar{background:var(--scrollbar-background-color);width:1.1em}.picmo-picker .emojiArea::-webkit-scrollbar-thumb{background:var(--scrollbar-color);border-left:4px solid transparent;border-right:4px solid transparent;background-clip:padding-box;height:1em;border-radius:1em}.picmo-picker .emojiCategory{position:relative}.picmo-picker .emojiCategory .categoryName{font-size:.9em;padding:.5rem;margin:0;background:var(--category-name-background-color);color:var(--category-name-text-color);top:0;z-index:1;display:grid;gap:4px;grid-template-columns:auto 1fr auto;align-items:center;line-height:1;box-sizing:border-box;height:var(--category-name-height);justify-content:flex-start;text-transform:uppercase}.picmo-picker .emojiCategory .categoryName button{background:transparent;border:none;display:flex;align-items:center;cursor:pointer;color:var(--category-name-button-color)}.picmo-picker .emojiCategory .categoryName button:hover{opacity:1}.picmo-picker .emojiCategory .noRecents{color:var(--secondary-text-color);grid-column:1 / span var(--emojis-per-row);font-size:.9em;text-align:center;display:flex;align-items:center;justify-content:center;min-height:calc(var(--emoji-size) * var(--emoji-size-multiplier))}.picmo-picker .emojiCategory .recentEmojis[data-empty=true]{display:none}:is(.picmo-picker .emojiCategory) .recentEmojis[data-empty=false]+div{display:none}.picmo-picker .emojiContainer{display:grid;justify-content:space-between;gap:1px;padding:0 .5em;grid-template-columns:repeat(var(--emojis-per-row),calc(var(--emoji-size) * var(--emoji-size-multiplier)));grid-auto-rows:calc(var(--emoji-size) * var(--emoji-size-multiplier));align-items:center;justify-items:center}.picmo-picker.picker{--border-radius: 5px;--emoji-area-height: calc( (var(--row-count) * var(--emoji-size) * var(--emoji-size-multiplier)) + var(--category-name-height) );--content-height: var(--emoji-area-height);--emojis-per-row: 8;--row-count: 6;--emoji-preview-margin: 4px;--emoji-preview-height: calc(var(--emoji-preview-size) + 1em + 1px);--emoji-preview-height-full: calc(var(--emoji-preview-height) + var(--emoji-preview-margin));--emoji-preview-size: 2.75em;--emoji-size: 2rem;--emoji-size-multiplier: 1.3;--content-margin: 8px;--category-tabs-height:calc(1.5em + 9px);--category-tabs-offset: 8px;--category-tab-size: 1.2rem;--category-name-height: 2rem;--category-name-padding-y: 6px;--search-height: 2em;--search-margin: .5em;--search-margin-bottom: 4px;--search-height-full: calc(var(--search-height) + var(--search-margin) + var(--search-margin-bottom));--overlay-background-color: rgba(0, 0, 0, .8);--emoji-font: "Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla", "Noto Color Emoji", "EmojiOne Color", "Android Emoji";--ui-font: -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--ui-font-size: 16px;--picker-width: calc(var(--emojis-per-row) * var(--emoji-size) * var(--emoji-size-multiplier) + 2.75rem);background:var(--background-color);border-radius:var(--border-radius);border:1px solid var(--border-color);font-family:var(--ui-font);font-size:var(--ui-font-size);overflow:hidden;position:relative;width:var(--picker-width);display:grid;gap:8px}.picmo-picker.picker>*{font-family:var(--ui-font)}.picmo-picker.skeleton{background:var(--background-color);border-radius:var(--border-radius);border:1px solid var(--border-color);font-family:var(--ui-font);width:var(--picker-width);color:var(--secondary-text-color)}.picmo-picker.skeleton *{box-sizing:border-box}.picmo-picker.skeleton .placeholder{background:var(--placeholder-background-color);position:relative;overflow:hidden}.picmo-picker.skeleton .placeholder:after{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 100%);animation:shine 2s infinite;content:""}.picmo-picker.skeleton .headerSkeleton{background-color:var(--secondary-background-color);padding-top:8px;padding-bottom:8px;display:flex;flex-direction:column;overflow:hidden;gap:8px;border-bottom:1px solid var(--border-color);width:var(--picker-width)}.picmo-picker.skeleton .searchSkeleton{padding:0 8px;height:var(--search-height)}.picmo-picker.skeleton .searchSkeleton .searchInput{width:100%;height:28px;border-radius:3px}.picmo-picker.skeleton .categoryTabsSkeleton{height:var(--category-tabs-height);display:flex;flex-direction:row;align-items:center;justify-self:center;width:calc(2rem * var(--category-count, 1))}.picmo-picker.skeleton .categoryTabsSkeleton .categoryTab{width:25px;height:25px;padding:2px;border-radius:5px;margin:.25em}.picmo-picker.skeleton .contentSkeleton{height:var(--content-height);padding-right:8px;opacity:.7}.picmo-picker.skeleton .contentSkeleton .categoryName{width:50%;height:1rem;margin:.5rem;box-sizing:border-box}.picmo-picker.skeleton .contentSkeleton .emojiGrid{display:grid;justify-content:space-between;gap:1px;padding:0 .5em;grid-template-columns:repeat(var(--emojis-per-row),calc(var(--emoji-size) * var(--emoji-size-multiplier)));grid-auto-rows:calc(var(--emoji-size) * var(--emoji-size-multiplier));align-items:center;justify-items:center;width:var(--picker-width)}.picmo-picker.skeleton .contentSkeleton .emojiGrid .emoji{width:var(--emoji-size);height:var(--emoji-size);border-radius:50%}.picmo-picker.skeleton .previewSkeleton{height:var(--emoji-preview-height);border-top:1px solid var(--border-color);display:grid;align-items:center;padding:.5em;gap:6px;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;grid-template-areas:"emoji name" "emoji tags"}.picmo-picker.skeleton .previewSkeleton .previewEmoji{grid-area:emoji;border-radius:50%;width:var(--emoji-preview-size);height:var(--emoji-preview-size)}.picmo-picker.skeleton .previewSkeleton .previewName{grid-area:name;height:.8em;width:80%}.picmo-picker.skeleton .previewSkeleton .tagList{grid-area:tags;list-style-type:none;display:flex;flex-direction:row;padding:0;margin:0}.picmo-picker.skeleton .previewSkeleton .tagList .tag{border-radius:3px;padding:2px 8px;margin-right:.25em;height:1em;width:20%}.overlay{background:rgba(0,0,0,.75);height:100%;left:0;position:fixed;top:0;width:100%;z-index:1000}.content{position:relative;overflow:hidden;height:var(--content-height)}.content.fullHeight{height:calc(var(--content-height) + var(--category-tabs-height) + var(--category-tabs-offset));overflow-y:auto;scrollbar-color:var(--scrollbar-color) var(--scrollbar-background-color);scrollbar-width:thin}.content.fullHeight::-webkit-scrollbar{background:var(--scrollbar-background-color);width:1.1em}.content.fullHeight::-webkit-scrollbar-thumb{background:var(--scrollbar-color);background-clip:padding-box;height:1em;border-radius:.5em}.pluginContainer{margin:.5em;display:flex;flex-direction:row}.header{background-color:var(--secondary-background-color);padding-top:8px;padding-bottom:8px;display:grid;gap:8px;border-bottom:1px solid var(--border-color)}@media (prefers-reduced-motion: reduce){.placeholder{background:var(--placeholder-background-color);position:relative;overflow:hidden}.placeholder:after{display:none}}.picmo-picker .preview{border-top:1px solid var(--border-color);display:grid;align-items:center;gap:6px;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;grid-template-areas:"emoji name" "emoji tags";height:var(--emoji-preview-height);box-sizing:border-box;padding:.5em;position:relative;background:var(--preview-background-color)}.picmo-picker .preview .previewEmoji{grid-area:emoji;font-size:var(--emoji-preview-size);font-family:var(--emoji-font);width:1.25em;display:flex;align-items:center;justify-content:center}.picmo-picker .preview .previewName{grid-area:name;color:var(--text-color);font-size:.8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.picmo-picker .preview .tagList{grid-area:tags;list-style-type:none;display:flex;flex-direction:row;padding:0;margin:0;font-size:.75em;overflow:hidden}.picmo-picker .preview .tag{border-radius:3px;background:var(--tag-background-color);color:var(--text-color);padding:2px 8px;margin-right:.25em;white-space:nowrap}.picmo-picker .preview .tag:last-child{margin-right:0}.picmo-picker .searchContainer{display:flex;height:var(--search-height);box-sizing:border-box;padding:0 8px;position:relative}.picmo-picker .searchContainer .searchField{background:var(--search-background-color);border-radius:3px;border:none;box-sizing:border-box;color:var(--text-color);font-size:.9em;outline:none;padding:.5em 2.25em .5em .5em;width:100%}.picmo-picker .searchContainer .searchField:focus{background:var(--search-focus-background-color)}.picmo-picker .searchContainer .searchField::placeholder{color:var(--search-placeholder-color)}.picmo-picker .searchContainer .searchAccessory{color:var(--search-icon-color);height:100%;position:absolute;right:1em;top:0;width:1.25rem;display:flex;align-items:center}.picmo-picker .searchContainer .searchAccessory svg{fill:var(--search-icon-color)}.picmo-picker .searchContainer .clearButton{border:0;color:var(--search-icon-color);background:transparent;cursor:pointer}.picmo-picker .searchContainer .clearSearchButton{cursor:pointer;border:none;background:transparent;color:var(--search-icon-color);font-size:1em;width:100%;height:100%;display:flex;align-items:center;padding:0}.picmo-picker .searchContainer .notFound [data-icon]{fill:#f3e265}.picmo-picker .variantOverlay{background:var(--overlay-background-color);border-radius:5px;display:flex;flex-direction:column;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%;z-index:1}.picmo-picker .variantOverlay .variantPopup{background:var(--variant-popup-background-color);border-radius:5px;margin:.5em;padding:.5em;text-align:center;user-select:none;display:flex;align-items:center;justify-content:center}.customEmoji{width:1em;height:1em}@keyframes shine{to{transform:translate(100%)}}.picmo-picker .imagePlaceholder{width:2rem;height:2rem;border-radius:50%}.placeholder{background:#DDDBDD;position:relative}.placeholder:after{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 100%);animation:shine 2s infinite;content:""}\n');const t=function(e={}){return{...ne,...e,renderer:e.renderer||new _,recentsProvider:e.recentsProvider||new ae}}(e),o=((null==t?void 0:t.custom)||[]).map((e=>({...e,custom:!0,tags:["custom",...e.tags||[]]}))),s=new pe,i=function(e){return E(e.locale,e.dataStore,e.messages,e.emojiData)}(t),r=new wt(t.i18n);i.then((e=>{s.emit("data:ready",e)})).catch((e=>{s.emit("error",e)}));const a=new yt({events:s,i18n:r,customEmojis:o,renderer:t.renderer,options:t,emojiData:i,pickerId:`picmo-${Date.now()}-${ft++}`}).create(pt);return a.renderSync(),a}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7741],{57741:function(e,t,s){s.d(t,{wU:function(){return Ct}});var i=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},o=(e,t,s)=>(i(e,t,"read from private field"),s?s.call(e):t.get(e)),r=(e,t,s)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,s)},a=(e,t,s,o)=>(i(e,t,"write to private field"),o?o.call(e,s):t.set(e,s),s),n=(e,t,s)=>(i(e,t,"access private method"),s);async function c(e,t={}){const{local:s=!1,version:i="latest",cdnUrl:o,...r}=t,a=function(e,t,s){let i=`https://cdn.jsdelivr.net/npm/emojibase-data@${t}/${e}`;return"function"==typeof s?i=s(e,t):"string"==typeof s&&(i=`${s}/${e}`),i}(e,i,o),n=s?localStorage:sessionStorage,c=`emojibase/${i}/${e}`,l=n.getItem(c);if(l)return Promise.resolve(JSON.parse(l));const h=await fetch(a,{credentials:"omit",mode:"cors",redirect:"error",...r});if(!h.ok)throw new Error("Failed to load Emojibase dataset.");const d=await h.json();try{n.setItem(c,JSON.stringify(d))}catch{}return d}const l={discord:"joypixels",slack:"iamcal"};async function h(e,t,s){var i;return c(`${e}/shortcodes/${null!==(i=l[t])&&void 0!==i?i:t}.json`,s)}function d(e,t){if(0===t.length)return e;const s=new Set(e.shortcodes);return t.forEach((t=>{const i=t[e.hexcode];Array.isArray(i)?i.forEach((e=>s.add(e))):i&&s.add(i)})),e.shortcodes=[...s],e.skins&&e.skins.forEach((e=>{d(e,t)})),e}async function m(e,t={}){const{compact:s=!1,flat:i=!1,shortcodes:o=[],...r}=t,a=await c(`${e}/${s?"compact":"data"}.json`,r);let n=[];return o.length>0&&(n=await Promise.all(o.map((t=>{let s;if(t.includes("/")){const[e,i]=t.split("/");s=h(e,i,r)}else s=h(e,t,r);return s.catch((()=>({})))})))),i?function(e,t=[]){const s=[];return e.forEach((e=>{if(e.skins){const{skins:i,...o}=e;s.push(d(o,t)),i.forEach((e=>{const i={...e};o.tags&&(i.tags=[...o.tags]),s.push(d(i,t))}))}else s.push(d(e,t))})),s}(a,n):function(e,t){return 0===t.length||e.forEach((e=>{d(e,t)})),e}(a,n)}async function u(e,t){return c(`${e}/messages.json`,t)}function g(e,t){const s=e.target.closest("[data-emoji]");if(s){const e=t.find((e=>e.emoji===s.dataset.emoji));if(e)return e}return null}function p(e){var t;const s=null==(t=window.matchMedia)?void 0:t.call(window,"(prefers-reduced-motion: reduce)");return e.animate&&!(null!=s&&s.matches)}function y(e,t){return e.toLowerCase().includes(t.toLowerCase())}function v(e,t,s,i){if(p(i)&&e.animate)return e.animate(t,s).finished;const o="normal"===s.direction?1:0,r=Object.entries(t).reduce(((e,[t,s])=>({...e,[t]:s[o]})),{});return Object.assign(e.style,r),Promise.resolve()}function w(e){var t;const s=document.createElement("template");return s.innerHTML=e,null==(t=s.content)?void 0:t.firstElementChild}function f(...e){return e.reduce(((e,t)=>({...e,[t]:b(t)})),{})}function b(e){return`${e}`}async function C(e){try{return(await fetch(e,{method:"HEAD"})).headers.get("etag")}catch{return null}}async function j(e,t,s){const i=s||t(e);return await i.open(),i}async function k(e,t,s){const i=await j(e,t,s),[o,r]=await function(e){const{emojisUrl:t,messagesUrl:s}=function(e,t){const s=`https://cdn.jsdelivr.net/npm/emojibase-data@${"latest"}/${t}`;return{emojisUrl:`${s}/data.json`,messagesUrl:`${s}/messages.json`}}(0,e);try{return Promise.all([C(t),C(s)])}catch{return Promise.all([null,null])}}(e);if(await i.isPopulated())o&&r&&await async function(e,t,s){let i;try{i=await e.getEtags()}catch{i={}}const{storedEmojisEtag:o,storedMessagesEtag:r}=i;if(s!==r||t!==o){const[i,o]=await Promise.all([u(e.locale),m(e.locale)]);await e.populate({groups:i.groups,emojis:o,emojisEtag:t,messagesEtag:s})}}(i,o,r);else{const[t,s]=await Promise.all([u(e),m(e)]);await i.populate({groups:t.groups,emojis:s,emojisEtag:o,messagesEtag:r})}return i}async function x(e,t,s,i,o){const r=await j(e,t,o),a=await async function(e){const t=(new TextEncoder).encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map((e=>e.toString(16).padStart(2,"0"))).join("")}(i);return(!(await r.isPopulated())||await async function(e,t){return t!==await e.getHash()}(r,a))&&await r.populate({groups:s.groups,emojis:i,hash:a}),r}async function E(e,t,s,i,o){return s&&i?x(e,t,s,i,o):k(e,t,o)}class S{constructor(){this.handleKeyDown=this.handleKeyDown.bind(this)}activate(e){this.rootElement=e,this.rootElement.addEventListener("keydown",this.handleKeyDown)}deactivate(){var e;null==(e=this.rootElement)||e.removeEventListener("keydown",this.handleKeyDown)}get focusableElements(){return this.rootElement.querySelectorAll('input, [tabindex="0"]')}get lastFocusableElement(){return this.focusableElements[this.focusableElements.length-1]}get firstFocusableElement(){return this.focusableElements[0]}checkFocus(e,t,s){e.target===t&&(s.focus(),e.preventDefault())}handleKeyDown(e){"Tab"===e.key&&this.checkFocus(e,e.shiftKey?this.firstFocusableElement:this.lastFocusableElement,e.shiftKey?this.lastFocusableElement:this.firstFocusableElement)}}const{light:z,dark:L,auto:P}=f("light","dark","auto");class F{constructor({template:e,classes:t,parent:s}){this.isDestroyed=!1,this.appEvents={},this.uiEvents=[],this.uiElements={},this.ui={},this.template=e,this.classes=t,this.parent=s,this.keyBindingHandler=this.keyBindingHandler.bind(this)}initialize(){this.bindAppEvents()}setCustomEmojis(e){this.customEmojis=e}setEvents(e){this.events=e}setPickerId(e){this.pickerId=e}emit(e,...t){this.events.emit(e,...t)}setI18n(e){this.i18n=e}setRenderer(e){this.renderer=e}setEmojiData(e){this.emojiDataPromise=e,e.then((e=>{this.emojiData=e}))}updateEmojiData(e){this.emojiData=e,this.emojiDataPromise=Promise.resolve(e)}setOptions(e){this.options=e}renderSync(e={}){return this.el=this.template.renderSync({classes:this.classes,i18n:this.i18n,pickerId:this.pickerId,...e}),this.postRender(),this.el}async render(e={}){return await this.emojiDataPromise,this.el=await this.template.renderAsync({classes:this.classes,i18n:this.i18n,pickerId:this.pickerId,...e}),this.postRender(),this.el}postRender(){this.bindUIElements(),this.bindKeyBindings(),this.bindUIEvents(),this.scheduleShowAnimation()}bindAppEvents(){Object.keys(this.appEvents).forEach((e=>{this.events.on(e,this.appEvents[e],this)})),this.events.on("data:ready",this.updateEmojiData,this)}unbindAppEvents(){Object.keys(this.appEvents).forEach((e=>{this.events.off(e,this.appEvents[e])})),this.events.off("data:ready",this.updateEmojiData)}keyBindingHandler(e){const t=this.keyBindings[e.key];t&&t.call(this,e)}bindKeyBindings(){this.keyBindings&&this.el.addEventListener("keydown",this.keyBindingHandler)}unbindKeyBindings(){this.keyBindings&&this.el.removeEventListener("keydown",this.keyBindingHandler)}bindUIElements(){this.ui=Object.keys(this.uiElements).reduce(((e,t)=>({...e,[t]:this.el.querySelector(this.uiElements[t])})),{})}bindUIEvents(){this.uiEvents.forEach((e=>{e.handler=e.handler.bind(this),(e.target?this.ui[e.target]:this.el).addEventListener(e.event,e.handler,e.options)}))}unbindUIEvents(){this.uiEvents.forEach((e=>{(e.target?this.ui[e.target]:this.el).removeEventListener(e.event,e.handler)}))}destroy(){this.unbindAppEvents(),this.unbindUIEvents(),this.unbindKeyBindings(),this.el.remove(),this.isDestroyed=!0}scheduleShowAnimation(){if(this.parent){const e=new MutationObserver((t=>{const[s]=t;"childList"===s.type&&s.addedNodes[0]===this.el&&(p(this.options)&&this.animateShow&&this.animateShow(),e.disconnect)}));e.observe(this.parent,{childList:!0})}}static childEvent(e,t,s,i={}){return{target:e,event:t,handler:s,options:i}}static uiEvent(e,t,s={}){return{event:e,handler:t,options:s}}static byClass(e){return`.${e}`}}const $={clock:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',flag:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',frown:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',gamepad:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',lightbulb:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',mug:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',plane:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',robot:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',sad:'\n \n \n \n \n \n \n \x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e\n \n \n \n \n \n',search:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',smiley:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',symbols:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',tree:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',users:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e',warning:'\n \n \n \n \n \n \n \x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e\n \n',xmark:'\x3c!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e'},A={recents:"clock","smileys-emotion":"smiley","people-body":"users","animals-nature":"tree","food-drink":"mug",activities:"gamepad","travel-places":"plane",objects:"lightbulb",symbols:"symbols",flags:"flag",custom:"robot"};function I(e,t){if(!(e in $))return console.warn(`Unknown icon: "${e}"`),document.createElement("div");const s=function(e,t){const s=w(t);return s.dataset.icon=e,s.classList.add(b("icon")),s}(e,$[e]);return t&&s.classList.add(b(`icon-${t}`)),s}const T="sync";var V,R,M,B,D,H,N,O;class U{constructor(e,t={}){r(this,M),r(this,D),r(this,N),r(this,V,void 0),r(this,R,void 0),a(this,V,e),a(this,R,t.mode||T)}renderSync(e={}){const t=w(o(this,V).call(this,e));return n(this,N,O).call(this,t,e),n(this,D,H).call(this,t),n(this,M,B).call(this,t,e),t}async renderAsync(e={}){const t=w(o(this,V).call(this,e));return n(this,N,O).call(this,t,e),n(this,D,H).call(this,t),await n(this,M,B).call(this,t,e),t}render(e){return"sync"===o(this,R)?this.renderSync(e):this.renderAsync(e)}}V=new WeakMap,R=new WeakMap,M=new WeakSet,B=async function(e,t){const s=e.querySelectorAll("[data-view]"),i=[];for(const o of s){const e=t[o.dataset.view];e?"sync"!==o.dataset.render?i.push(e.render().then((e=>(o.replaceWith(e),e)))):o.replaceWith(e.renderSync()):o.remove()}return Promise.all(i)},D=new WeakSet,H=function(e){e.querySelectorAll("i[data-icon]").forEach((e=>{const{icon:t,size:s}=e.dataset;e.replaceWith(I(t,s))}))},N=new WeakSet,O=function(e,t){return e.querySelectorAll("[data-placeholder]").forEach((e=>{const s=e.dataset.placeholder;if(s&&t[s]){const i=t[s];e.replaceWith(...[i].flat())}else console.warn(`Missing placeholder element for key "${s}"`)})),e};const K=f("imagePlaceholder","placeholder"),q=new U((({classes:e})=>`\n
      \n`));class W extends F{constructor({classNames:e}={}){super({template:q,classes:K}),this.classNames=e}load(e){const t=document.createElement("img");this.classNames&&(t.className=this.classNames),t.addEventListener("load",(()=>{this.el.replaceWith(t)}),{once:!0}),Promise.resolve(e).then((e=>t.src=e))}renderSync(){return super.renderSync(),this.classNames&&this.classNames.split(" ").forEach((e=>this.el.classList.add(e))),this.el}}const G=f("customEmoji");const J=new U((({emoji:e})=>`${e}`));class _ extends class{renderElement(e){return{content:e}}renderImage(e="",t){const s=new W({classNames:e});return s.renderSync(),{content:s,resolver:()=>(s.load(t()),s.el)}}doRender(e,t,s){if(e.custom)return this.renderCustom(e,t,s);const{content:i,resolver:o}=this.render(e,s),r=i instanceof Element?i:i.el;return o&&o(),r}doEmit(e){return e.custom?this.emitCustom(e):this.emit(e)}emitCustom({url:e,label:t,emoji:s,data:i}){return{url:e,label:t,emoji:s,data:i}}renderCustom(e,t,s=""){const i=[G.customEmoji,s].join(" ").trim(),{content:o,resolver:r}=this.renderImage(i,(()=>e.url)),a=o instanceof Element?o:o.el;return r&&r(),a}}{render(e){return this.renderElement(J.renderSync({emoji:e.emoji}))}emit({emoji:e,hexcode:t,label:s}){return{emoji:e,hexcode:t,label:s}}}const Y=[(e,t)=>("1F91D"===e.hexcode&&t<14&&(e.skins=[]),e),(e,t)=>(e.skins&&(e.skins=e.skins.filter((e=>!e.version||e.version<=t))),e)];function Q(e,t){return e.filter((e=>null!==function(e,t){return Y.some((s=>null===s(e,t)))?null:e}(e,t)))}function X(e){var t;return{emoji:e.emoji,label:e.label,tags:e.tags,skins:null==(t=e.skins)?void 0:t.map((e=>X(e))),order:e.order,custom:!1,hexcode:e.hexcode,version:e.version}}function Z(e,t,s){var i;return!(s&&!s.some((t=>t.order===e.group)))&&(y(e.label,t)||(null==(i=e.tags)?void 0:i.some((e=>y(e,t)))))}class ee{constructor(e="en"){this.locale=e}}const te="PicMo";function se(e){return new ie(e)}se.deleteDatabase=e=>new Promise(((t,s)=>{const i=indexedDB.deleteDatabase(`${te}-${e}`);i.addEventListener("success",t),i.addEventListener("error",s)}));class ie extends ee{async open(){const e=indexedDB.open(`${te}-${this.locale}`);return new Promise(((t,s)=>{e.addEventListener("success",(e=>{var s;this.db=null==(s=e.target)?void 0:s.result,t()})),e.addEventListener("error",s),e.addEventListener("upgradeneeded",(async e=>{var t;this.db=null==(t=e.target)?void 0:t.result,this.db.createObjectStore("category",{keyPath:"order"});const s=this.db.createObjectStore("emoji",{keyPath:"emoji"});s.createIndex("category","group"),s.createIndex("version","version"),this.db.createObjectStore("meta")}))}))}async delete(){this.close();const e=indexedDB.deleteDatabase(`${te}-${this.locale}`);await this.waitForRequest(e)}close(){this.db.close()}async getEmojiCount(){const e=this.db.transaction("emoji","readonly").objectStore("emoji");return(await this.waitForRequest(e.count())).target.result}async getEtags(){const e=this.db.transaction("meta","readonly").objectStore("meta"),[t,s]=await Promise.all([this.waitForRequest(e.get("emojisEtag")),this.waitForRequest(e.get("messagesEtag"))]);return{storedEmojisEtag:t.target.result,storedMessagesEtag:s.target.result}}async setMeta(e){const t=this.db.transaction("meta","readwrite"),s=t.objectStore("meta");return new Promise((i=>{t.oncomplete=i,Object.keys(e).filter(Boolean).forEach((t=>{s.put(e[t],t)}))}))}async getHash(){const e=this.db.transaction("meta","readonly").objectStore("meta");return(await this.waitForRequest(e.get("hash"))).target.result}async isPopulated(){const e=this.db.transaction("category","readonly").objectStore("category");return(await this.waitForRequest(e.count())).target.result>0}async populate({groups:e,emojis:t,emojisEtag:s,messagesEtag:i,hash:o}){await this.removeAllObjects("category","emoji");const r=[this.addObjects("category",e),this.addObjects("emoji",t),this.setMeta({emojisEtag:s,messagesEtag:i,hash:o})];await Promise.all(r)}async getCategories(e){var t;const s=this.db.transaction("category","readonly").objectStore("category");let i=(await this.waitForRequest(s.getAll())).target.result.filter((e=>"component"!==e.key));if(e.showRecents&&i.unshift({key:"recents",order:-1}),null!=(t=e.custom)&&t.length&&i.push({key:"custom",order:10}),e.categories){const t=e.categories;i=i.filter((e=>t.includes(e.key))),i.sort(((e,s)=>t.indexOf(e.key)-t.indexOf(s.key)))}else i.sort(((e,t)=>e.order-t.order));return i}async getEmojis(e,t){const s=this.db.transaction("emoji","readonly").objectStore("emoji").index("category");return Q((await this.waitForRequest(s.getAll(e.order))).target.result.filter((e=>e.version<=t)).sort(((e,t)=>null!=e.order&&null!=t.order?e.order-t.order:0)).map(X),t)}async searchEmojis(e,t,s,i){const o=[];return new Promise(((r,a)=>{const n=this.db.transaction("emoji","readonly").objectStore("emoji").openCursor();n.addEventListener("success",(a=>{var n;const c=null==(n=a.target)?void 0:n.result;if(!c)return r([...Q(o,s),...t.filter((t=>Z(t,e)))]);const l=c.value;Z(l,e,i)&&l.version<=s&&o.push(X(l)),c.continue()})),n.addEventListener("error",(e=>{a(e)}))}))}async waitForRequest(e){return new Promise(((t,s)=>{e.onsuccess=t,e.onerror=s}))}withTransaction(e,t="readwrite",s){return new Promise(((i,o)=>{const r=this.db.transaction(e,t);r.oncomplete=i,r.onerror=o,s(r)}))}async removeAllObjects(...e){const t=this.db.transaction(e,"readwrite"),s=e.map((e=>t.objectStore(e)));await Promise.all(s.map((e=>this.waitForRequest(e.clear()))))}async addObjects(e,t){return this.withTransaction(e,"readwrite",(s=>{const i=s.objectStore(e);t.forEach((e=>{i.add(e)}))}))}}const oe="PicMo:recents";class re extends class{}{constructor(e){super(),this.storage=e}clear(){this.storage.removeItem(oe)}getRecents(e){var t;try{return JSON.parse(null!=(t=this.storage.getItem(oe))?t:"[]").slice(0,e)}catch{return[]}}addOrUpdateRecent(e,t){const s=[e,...this.getRecents(t).filter((t=>t.hexcode!==e.hexcode))].slice(0,t);try{this.storage.setItem(oe,JSON.stringify(s))}catch{console.warn("storage is not available, recent emojis will not be saved")}}}class ae extends re{constructor(){super(localStorage)}}const ne={dataStore:se,theme:z,animate:!0,showCategoryTabs:!0,showPreview:!0,showRecents:!0,showSearch:!0,showVariants:!0,emojisPerRow:8,visibleRows:6,emojiVersion:"auto",i18n:{"categories.activities":"Activities","categories.animals-nature":"Animals & Nature","categories.custom":"Custom","categories.flags":"Flags","categories.food-drink":"Food & Drink","categories.objects":"Objects","categories.people-body":"People & Body","categories.recents":"Recently Used","categories.smileys-emotion":"Smileys & Emotion","categories.symbols":"Symbols","categories.travel-places":"Travel & Places","error.load":"Failed to load emojis","recents.clear":"Clear recent emojis","recents.none":"You haven't selected any emojis yet.",retry:"Try again","search.clear":"Clear search","search.error":"Failed to search emojis","search.notFound":"No results found",search:"Search emojis..."},locale:"en",maxRecents:50,custom:[]};var ce,le,he,de,me;class ue{constructor(){r(this,le),r(this,de),r(this,ce,new Map)}on(e,t,s){n(this,de,me).call(this,e,t,s)}once(e,t,s){n(this,de,me).call(this,e,t,s,!0)}off(e,t){const s=n(this,le,he).call(this,e);o(this,ce).set(e,s.filter((e=>e.handler!==t)))}emit(e,...t){n(this,le,he).call(this,e).forEach((s=>{s.handler.apply(s.context,t),s.once&&this.off(e,s.handler)}))}removeAll(){o(this,ce).clear()}}ce=new WeakMap,le=new WeakSet,he=function(e){return o(this,ce).has(e)||o(this,ce).set(e,[]),o(this,ce).get(e)},de=new WeakSet,me=function(e,t,s,i=!1){n(this,le,he).call(this,e).push({context:s,handler:t,once:i})};const ge=!0;class pe extends ue{}class ye extends ue{}const ve=f("emojiCategory","categoryName","noRecents","recentEmojis");class we extends F{constructor({template:e,category:t,showVariants:s,lazyLoader:i}){super({template:e,classes:ve}),this.baseUIElements={categoryName:F.byClass(ve.categoryName)},this.category=t,this.showVariants=s,this.lazyLoader=i}setActive(e,t,s){this.emojiContainer.setActive(e,t,s)}}const fe=new U((({classes:e,emoji:t})=>`\n \n
      \n \n`)),be=f("emojiButton");class Ce extends F{constructor({emoji:e,lazyLoader:t,category:s}){super({template:fe,classes:be}),this.emoji=e,this.lazyLoader=t,this.category=s}initialize(){this.uiEvents=[F.uiEvent("focus",this.handleFocus)],super.initialize()}handleFocus(){this.category&&this.events.emit("focus:change",this.category)}activateFocus(e){this.el.tabIndex=0,e&&this.el.focus()}deactivateFocus(){this.el.tabIndex=-1}renderSync(){return super.renderSync({emoji:this.emoji,emojiContent:this.renderer.doRender(this.emoji,this.lazyLoader)})}}class je{constructor(e,t,s=0,i=0,o=!1){this.events=new ue,this.keyHandlers={ArrowLeft:this.focusPrevious.bind(this),ArrowRight:this.focusNext.bind(this),ArrowUp:this.focusUp.bind(this),ArrowDown:this.focusDown.bind(this)},this.rowCount=Math.ceil(t/e),this.columnCount=e,this.focusedRow=s,this.focusedColumn=i,this.emojiCount=t,this.wrap=o,this.handleKeyDown=this.handleKeyDown.bind(this)}destroy(){this.events.removeAll()}on(e,t){this.events.on(e,t)}handleKeyDown(e){e.key in this.keyHandlers&&(e.preventDefault(),this.keyHandlers[e.key]())}setCell(e,t,s=!0){const i=this.getIndex();this.focusedRow=e,void 0!==t&&(this.focusedColumn=Math.min(this.columnCount,t)),(this.focusedRow>=this.rowCount||this.getIndex()>=this.emojiCount)&&(this.focusedRow=this.rowCount-1,this.focusedColumn=this.emojiCount%this.columnCount-1),this.events.emit("focus:change",{from:i,to:this.getIndex(),performFocus:s})}setFocusedIndex(e,t=!0){const s=Math.floor(e/this.columnCount),i=e%this.columnCount;this.setCell(s,i,t)}focusNext(){this.focusedColumn0?this.setCell(this.focusedRow,this.focusedColumn-1):this.focusedRow>0?this.setCell(this.focusedRow-1,this.columnCount-1):this.wrap?this.setCell(this.rowCount-1,this.columnCount-1):this.events.emit("focus:underflow",this.columnCount-1)}focusUp(){this.focusedRow>0?this.setCell(this.focusedRow-1,this.focusedColumn):this.events.emit("focus:underflow",this.focusedColumn)}focusDown(){this.focusedRow`\n
      \n
      \n
      \n`)),xe=f("emojiContainer");class Ee extends F{constructor({emojis:e,showVariants:t,preview:s=!0,lazyLoader:i,category:o,fullHeight:r=!1}){super({template:ke,classes:xe}),this.fullHeight=!1,this.showVariants=t,this.lazyLoader=i,this.preview=s,this.emojis=e,this.category=o,this.fullHeight=r,this.setFocus=this.setFocus.bind(this),this.triggerNextCategory=this.triggerNextCategory.bind(this),this.triggerPreviousCategory=this.triggerPreviousCategory.bind(this)}initialize(){this.grid=new je(this.options.emojisPerRow,this.emojiCount,0,0,!this.category),this.grid.on("focus:change",this.setFocus),this.grid.on("focus:overflow",this.triggerNextCategory),this.grid.on("focus:underflow",this.triggerPreviousCategory),this.uiEvents=[F.uiEvent("click",this.selectEmoji),F.uiEvent("keydown",this.grid.handleKeyDown)],this.preview&&this.uiEvents.push(F.uiEvent("mouseover",this.showPreview),F.uiEvent("mouseout",this.hidePreview),F.uiEvent("focus",this.showPreview,{capture:!0}),F.uiEvent("blur",this.hidePreview,{capture:!0})),super.initialize()}setFocusedView(e,t){if(e)if("string"==typeof e){const t=this.emojis.findIndex((t=>t.emoji===e));this.grid.setFocusedIndex(t,!1),setTimeout((()=>{var e,s,i,o;const r=this.emojiViews[t].el;r.scrollIntoView();const a=null==(e=r.parentElement)?void 0:e.previousElementSibling;(null==(i=null==(s=r.parentElement)?void 0:s.parentElement)?void 0:i.parentElement).scrollTop-=null!=(o=null==a?void 0:a.offsetHeight)?o:0}))}else"first"===e.row||0===e.row?this.grid.setCell(0,e.offset,t):"last"===e.row&&this.grid.setCell(this.grid.getRowCount()-1,e.offset,t)}setActive(e,t,s){var i;e?this.setFocusedView(t,s):null==(i=this.emojiViews[this.grid.getIndex()])||i.deactivateFocus()}renderSync(){return this.emojiViews=this.emojis.map((e=>this.viewFactory.create(Ce,{emoji:e,category:this.category,lazyLoader:this.lazyLoader,renderer:this.renderer}))),this.emojiElements=this.emojiViews.map((e=>e.renderSync())),super.renderSync({emojis:this.emojiElements,i18n:this.i18n})}destroy(){super.destroy(),this.emojiViews.forEach((e=>e.destroy())),this.grid.destroy()}triggerPreviousCategory(e){this.events.emit("category:previous",e)}triggerNextCategory(e){this.category&&this.events.emit("category:next",e)}setFocus({from:e,to:t,performFocus:s}){var i,o;null==(i=this.emojiViews[e])||i.deactivateFocus(),null==(o=this.emojiViews[t])||o.activateFocus(s)}selectEmoji(e){e.stopPropagation();const t=g(e,this.emojis);t&&this.events.emit("emoji:select",{emoji:t,showVariants:this.showVariants})}showPreview(e){const t=e.target.closest("button"),s=null==t?void 0:t.firstElementChild,i=g(e,this.emojis);i&&this.events.emit("preview:show",i,null==s?void 0:s.cloneNode(!0))}hidePreview(e){g(e,this.emojis)&&this.events.emit("preview:hide")}get emojiCount(){return this.emojis.length}}const Se=new U((({classes:e,category:t,pickerId:s,icon:i,i18n:o})=>`\n
      \n

      \n \n ${o.get(`categories.${t.key}`,t.message||t.key)}\n

      \n
      \n
      \n`));class ze extends we{constructor({category:e,showVariants:t,lazyLoader:s,emojiVersion:i}){super({category:e,showVariants:t,lazyLoader:s,template:Se}),this.showVariants=t,this.lazyLoader=s,this.emojiVersion=i}initialize(){this.uiElements={...this.baseUIElements},super.initialize()}async render(){await this.emojiDataPromise;const e=await this.emojiData.getEmojis(this.category,this.emojiVersion);return this.emojiContainer=this.viewFactory.create(Ee,{emojis:e,showVariants:this.showVariants,lazyLoader:this.lazyLoader,category:this.category.key}),super.render({category:this.category,emojis:this.emojiContainer,emojiCount:e.length,icon:A[this.category.key]})}}class Le extends Ee{constructor({category:e,emojis:t,preview:s=!0,lazyLoader:i}){super({category:e,emojis:t,showVariants:!1,preview:s,lazyLoader:i})}async addOrUpdate(e){const t=this.el.querySelector(`[data-emoji="${e.emoji}"]`);t&&(this.el.removeChild(t),this.emojis=this.emojis.filter((t=>t!==e)));const s=this.viewFactory.create(Ce,{emoji:e});if(this.el.insertBefore(s.renderSync(),this.el.firstChild),this.emojis=[e,...this.emojis.filter((t=>t!==e))],this.emojis.length>this.options.maxRecents){this.emojis=this.emojis.slice(0,this.options.maxRecents);const e=this.el.childElementCount-this.options.maxRecents;for(let t=0;t`\n
      \n

      \n \n ${r.get(`categories.${s.key}`,s.message||s.key)}\n

      \n
      \n
      \n
      \n
      \n ${r.get("recents.none")}\n
      \n
      \n`),{mode:"async"});const Fe=new U((({classes:e,category:t,pickerId:s,icon:i,i18n:o})=>`\n
      \n

      \n \n ${o.get(`categories.${t.key}`,t.message||t.key)}\n

      \n
      \n
      \n`));class $e{constructor(){this.elements=new Map}lazyLoad(e,t){return this.elements.set(e,t),e}observe(e){if(window.IntersectionObserver){const t=new IntersectionObserver((e=>{e.filter((e=>e.intersectionRatio>0)).map((e=>e.target)).forEach((e=>{const s=this.elements.get(e);null==s||s(),t.unobserve(e)}))}),{root:e});this.elements.forEach(((e,s)=>{t.observe(s)}))}else this.elements.forEach((e=>{e()}))}}const Ae=f("emojiArea"),Ie=new U((({classes:e})=>`\n
      \n
      \n
      \n`),{mode:"async"}),Te={recents:class extends we{constructor({category:e,lazyLoader:t,provider:s}){super({category:e,showVariants:!1,lazyLoader:t,template:Pe}),this.provider=s}initialize(){this.uiElements={...this.baseUIElements,recents:F.byClass(ve.recentEmojis)},this.appEvents={"recent:add":this.addRecent},super.initialize()}async addRecent(e){await this.emojiContainer.addOrUpdate(e),this.ui.recents.dataset.empty="false"}async render(){var e;const t=null==(e=this.provider)?void 0:e.getRecents(this.options.maxRecents);return this.emojiContainer=this.viewFactory.create(Le,{emojis:t,showVariants:!1,lazyLoader:this.lazyLoader,category:this.category.key}),await super.render({category:this.category,emojis:this.emojiContainer,emojiCount:t.length,icon:A[this.category.key]}),this.el}},custom:class extends we{constructor({category:e,lazyLoader:t}){super({template:Fe,showVariants:!1,lazyLoader:t,category:e})}initialize(){this.uiElements={...this.baseUIElements},super.initialize()}async render(){return this.emojiContainer=this.viewFactory.create(Ee,{emojis:this.customEmojis,showVariants:this.showVariants,lazyLoader:this.lazyLoader,category:this.category.key}),super.render({category:this.category,emojis:this.emojiContainer,emojiCount:this.customEmojis.length,icon:A[this.category.key]})}}};class Ve extends F{constructor({categoryTabs:e,categories:t,emojiVersion:s}){super({template:Ie,classes:Ae}),this.selectedCategory=0,this.scrollListenerState="active",this.lazyLoader=new $e,this.categoryTabs=e,this.categories=t,this.emojiVersion=s,this.handleScroll=function(e,t){let s=null;return()=>{s||(s=window.setTimeout((()=>{e(),s=null}),t))}}(this.handleScroll.bind(this),100)}initialize(){this.appEvents={"category:select":this.handleCategorySelect,"category:previous":this.focusPreviousCategory,"category:next":this.focusNextCategory,"focus:change":this.updateFocusedCategory},this.uiElements={emojis:F.byClass(Ae.emojiArea)},this.uiEvents=[F.uiEvent("scroll",this.handleScroll)],super.initialize()}get focusableEmoji(){return this.el.querySelector('[tabindex="0"]')}async render(){this.emojiCategories=this.categories.map(this.createCategory,this);const e={};return this.categories.forEach(((t,s)=>{e[`emojis-${t.key}`]=this.emojiCategories[s]})),await super.render({emojis:await Promise.all(this.emojiCategories.map((e=>e.render())))}),this.lazyLoader.observe(this.el),window.ResizeObserver&&(this.observer=new ResizeObserver((()=>{const e=this.el.scrollHeight-this.scrollHeight;this.el.scrollTop-this.scrollTop===0&&e>0&&(this.el.scrollTop+=e),this.scrollHeight=this.el.scrollHeight,this.scrollTop=this.el.scrollTop})),this.emojiCategories.forEach((e=>{this.observer.observe(e.el)}))),this.el}destroy(){super.destroy(),this.emojiCategories.forEach((e=>{var t;null==(t=this.observer)||t.unobserve(e.el),e.destroy()}))}handleCategorySelect(e,t){this.selectCategory(e,t)}createCategory(e){const t=Te[e.key]||ze;return this.viewFactory.create(t,{category:e,showVariants:!0,lazyLoader:this.lazyLoader,emojiVersion:this.emojiVersion,provider:this.options.recentsProvider})}determineInitialCategory(){var e;return this.options.initialCategory&&this.categories.find((e=>e.key===this.options.initialCategory))?this.options.initialCategory:null==(e=this.categories.find((e=>"recents"!==e.key)))?void 0:e.key}determineFocusTarget(e){const t=this.emojiCategories.find((t=>t.category.key===e));return this.options.initialEmoji&&(null==t?void 0:t.el.querySelector(`[data-emoji="${this.options.initialEmoji}"]`))?this.options.initialEmoji:"button"}reset(e=!0){this.events.emit("preview:hide"),this.scrollHeight=this.el.scrollHeight;const t=this.determineInitialCategory();t&&(this.selectCategory(t,{focus:this.determineFocusTarget(t),performFocus:e,scroll:"jump"}),this.selectedCategory=this.getCategoryIndex(t))}getCategoryIndex(e){return this.categories.findIndex((t=>t.key===e))}focusPreviousCategory(e){this.selectedCategory>0&&this.focusCategory(this.selectedCategory-1,{row:"last",offset:null!=e?e:this.options.emojisPerRow})}focusNextCategory(e){this.selectedCategory{var i;return e<(null==(i=this.emojiCategories[s+1])?void 0:i.el.offsetTop)})),i={changeFocusable:!1,performFocus:!1,scroll:!1};0===e?this.categoryTabs.setActiveTab(0,i):Math.floor(e)===Math.floor(t)||s<0?this.categoryTabs.setActiveTab(this.categories.length-1,i):this.categoryTabs.setActiveTab(s,i)}}const Re=new U((({classList:e,classes:t,icon:s,message:i})=>`\n\n`)),Me=f("error","iconContainer","title");class Be extends F{constructor({message:e,icon:t="warning",template:s=Re,className:i}){super({template:s,classes:Me}),this.message=e,this.icon=t,this.className=i}renderSync(){const e=[Me.error,this.className].join(" ").trim();return super.renderSync({message:this.message,icon:this.icon,classList:e})}}const De=new U((({classList:e,classes:t,icon:s,i18n:i,message:o})=>`\n \n`)),He=f("dataError");class Ne extends Be{constructor({message:e}){super({message:e,template:De,className:He.dataError})}initialize(){this.uiElements={retryButton:"button"},this.uiEvents=[F.childEvent("retryButton","click",this.onRetry)],super.initialize()}async onRetry(){this.emojiData?await this.emojiData.delete():await this.options.dataStore.deleteDatabase(this.options.locale),this.events.emit("reinitialize");const e=await E(this.options.locale,this.options.dataStore,this.options.messages,this.options.emojiData,this.emojiData);this.viewFactory.setEmojiData(e),this.events.emit("data:ready",e)}}const Oe=f("preview","previewEmoji","previewName","tagList","tag"),Ue=new U((({classes:e,tag:t})=>`\n
    • ${t}
    • \n`)),Ke=new U((({classes:e})=>`\n
      \n
      \n
      \n
        \n
        \n`));class qe extends F{constructor(){super({template:Ke,classes:Oe})}initialize(){this.uiElements={emoji:F.byClass(Oe.previewEmoji),name:F.byClass(Oe.previewName),tagList:F.byClass(Oe.tagList)},this.appEvents={"preview:show":this.showPreview,"preview:hide":this.hidePreview},super.initialize()}showPreview(e,t){if(this.ui.emoji.replaceChildren(t),this.ui.name.textContent=e.label,e.tags){this.ui.tagList.style.display="flex";const t=e.tags.map((e=>Ue.renderSync({tag:e,classes:Oe})));this.ui.tagList.replaceChildren(...t)}}hidePreview(){this.ui.emoji.replaceChildren(),this.ui.name.textContent="",this.ui.tagList.replaceChildren()}}const We=new U((({classes:e,i18n:t})=>`\n \n`)),Ge=new U((({classes:e,i18n:t})=>`\n
        \n \n \n
        \n`),{mode:"async"}),Je=f("searchContainer","searchField","clearButton","searchAccessory","clearSearchButton","notFound");class _e extends F{constructor({categories:e,emojiVersion:t}){super({template:Ge,classes:Je}),this.categories=e.filter((e=>"recents"!==e.key)),this.emojiVersion=t,this.search=function(e,t){let s=null;return(...i)=>{s&&window.clearTimeout(s),s=window.setTimeout((()=>{e(...i),s=null}),t)}}(this.search.bind(this),100)}initialize(){this.uiElements={searchField:F.byClass(Je.searchField),searchAccessory:F.byClass(Je.searchAccessory)},this.uiEvents=[F.childEvent("searchField","keydown",this.onKeyDown),F.childEvent("searchField","input",this.onSearchInput)],super.initialize()}async render(){return await super.render(),this.searchIcon=I("search"),this.notFoundMessage=this.viewFactory.create(Be,{message:this.i18n.get("search.notFound"),className:Je.notFound,icon:"sad"}),this.notFoundMessage.renderSync(),this.errorMessage=this.viewFactory.create(Be,{message:this.i18n.get("search.error")}),this.errorMessage.renderSync(),this.clearSearchButton=We.render({classes:Je,i18n:this.i18n}),this.clearSearchButton.addEventListener("click",(e=>this.onClearSearch(e))),this.searchField=this.ui.searchField,this.showSearchIcon(),this.el}showSearchIcon(){this.showSearchAccessory(this.searchIcon)}showClearSearchButton(){this.showSearchAccessory(this.clearSearchButton)}showSearchAccessory(e){this.ui.searchAccessory.replaceChildren(e)}clear(){this.searchField.value="",this.showSearchIcon()}focus(){this.searchField.focus()}onClearSearch(e){var t;e.stopPropagation(),this.searchField.value="",null==(t=this.resultsContainer)||t.destroy(),this.resultsContainer=null,this.showSearchIcon(),this.events.emit("content:show"),this.searchField.focus()}handleResultsKeydown(e){this.resultsContainer&&"Escape"===e.key&&this.onClearSearch(e)}onKeyDown(e){var t;"Escape"===e.key&&this.searchField.value?this.onClearSearch(e):("Enter"===e.key||"ArrowDown"===e.key)&&this.resultsContainer&&(e.preventDefault(),null==(t=this.resultsContainer.el.querySelector('[tabindex="0"]'))||t.focus())}onSearchInput(e){this.searchField.value?(this.showClearSearchButton(),this.search()):this.onClearSearch(e)}async search(){var e;if(this.searchField.value)try{const t=await this.emojiData.searchEmojis(this.searchField.value,this.customEmojis,this.emojiVersion,this.categories);if(this.events.emit("preview:hide"),t.length){const s=new $e;this.resultsContainer=this.viewFactory.create(Ee,{emojis:t,fullHeight:!0,showVariants:!0,lazyLoader:s}),this.resultsContainer.renderSync(),null!=(e=this.resultsContainer)&&e.el&&(s.observe(this.resultsContainer.el),this.resultsContainer.setActive(!0,{row:0,offset:0},!1),this.resultsContainer.el.addEventListener("keydown",(e=>this.handleResultsKeydown(e))),this.events.emit("content:show",this.resultsContainer))}else this.events.emit("content:show",this.notFoundMessage)}catch{this.events.emit("content:show",this.errorMessage)}}}const Ye=new U((({classes:e})=>`\n
        \n
        \n
        \n
        \n
        \n`)),Qe=f("variantOverlay","variantPopup"),Xe={easing:"ease-in-out",duration:250,fill:"both"},Ze={opacity:[0,1]},et={opacity:[0,1],transform:["scale3d(0.8, 0.8, 0.8)","scale3d(1, 1, 1)"]};class tt extends F{constructor({emoji:e,parent:t}){super({template:Ye,classes:Qe,parent:t}),this.focusedEmojiIndex=0,this.focusTrap=new S,this.animateShow=()=>Promise.all([v(this.el,Ze,Xe,this.options),v(this.ui.popup,et,Xe,this.options)]),this.emoji=e}initialize(){this.uiElements={popup:F.byClass(Qe.variantPopup)},this.uiEvents=[F.uiEvent("click",this.handleClick),F.uiEvent("keydown",this.handleKeydown)],super.initialize()}animateHide(){const e={...Xe,direction:"reverse"};return Promise.all([v(this.el,Ze,e,this.options),v(this.ui.popup,et,e,this.options)])}async hide(){await this.animateHide(),this.events.emit("variantPopup:hide")}handleKeydown(e){"Escape"===e.key&&(this.hide(),e.stopPropagation())}handleClick(e){this.ui.popup.contains(e.target)||this.hide()}getEmoji(e){return this.renderedEmojis[e]}setFocusedEmoji(e){this.getEmoji(this.focusedEmojiIndex).tabIndex=-1,this.focusedEmojiIndex=e;const t=this.getEmoji(this.focusedEmojiIndex);t.tabIndex=0,t.focus()}destroy(){this.emojiContainer.destroy(),this.focusTrap.deactivate(),super.destroy()}renderSync(){const e=[{...this.emoji,skins:null},...(this.emoji.skins||[]).map((e=>({...e,label:this.emoji.label,tags:this.emoji.tags})))];return this.emojiContainer=this.viewFactory.create(Ee,{emojis:e,preview:!1}),super.renderSync({emojis:this.emojiContainer}),e.length`\n
      • \n \n \n
      • \n`)),it=f("categoryTab","categoryTabActive","categoryButton");class ot extends F{constructor({category:e,icon:t}){super({template:st,classes:it}),this.isActive=!1,this.category=e,this.icon=t}initialize(){this.uiElements={button:F.byClass(it.categoryButton)},this.uiEvents=[F.childEvent("button","click",this.selectCategory),F.childEvent("button","focus",this.selectCategory)],super.initialize()}renderSync(){return super.renderSync({category:this.category,icon:this.icon}),this.ui.button.ariaSelected="false",this.el}setActive(e,t={}){const{changeFocusable:s,performFocus:i,scroll:o}={changeFocusable:!0,performFocus:!0,scroll:!0,...t};this.el.classList.toggle(it.categoryTabActive,e),s&&(this.ui.button.tabIndex=e?0:-1,this.ui.button.ariaSelected=e.toString()),e&&i&&(this.ui.button.focus(),o&&this.events.emit("category:select",this.category.key,{scroll:"animate",focus:"button",performFocus:!1})),this.isActive=e}selectCategory(){this.isActive||this.events.emit("category:select",this.category.key,{scroll:"animate",focus:"button",performFocus:!0})}}const rt=new U((({classes:e})=>`\n
        \n
          \n
          \n
        \n
        \n`)),at=f("categoryButtons","categoryButtonsContainer");class nt extends F{constructor({categories:e}){super({template:rt,classes:at}),this.activeCategoryIndex=0,this.categories=e}initialize(){this.keyBindings={ArrowLeft:this.stepSelectedTab(-1),ArrowRight:this.stepSelectedTab(1)},this.uiEvents=[F.uiEvent("scroll",this.checkOverflow)],super.initialize()}checkOverflow(){const e=Math.abs(this.el.scrollLeft-(this.el.scrollWidth-this.el.offsetWidth))>1,t=this.el.scrollLeft>0;this.el.className="categoryButtonsContainer",t&&e?this.el.classList.add("has-overflow-both"):t?this.el.classList.add("has-overflow-left"):e&&this.el.classList.add("has-overflow-right")}renderSync(){return this.tabViews=this.categories.map((e=>this.viewFactory.create(ot,{category:e,icon:A[e.key]}))),super.renderSync({tabs:this.tabViews.map((e=>e.renderSync()))}),this.el}get currentCategory(){return this.categories[this.activeCategoryIndex]}get currentTabView(){return this.tabViews[this.activeCategoryIndex]}setActiveTab(e,t={}){this.checkOverflow();const s=this.currentTabView,i=this.tabViews[e];s.setActive(!1,t),i.setActive(!0,t),this.activeCategoryIndex=e}getTargetCategory(e){return e<0?this.categories.length-1:e>=this.categories.length?0:e}stepSelectedTab(e){return()=>{const t=this.activeCategoryIndex+e;this.setActiveTab(this.getTargetCategory(t),{changeFocusable:!0,performFocus:!0})}}}const ct=[{version:15,emoji:String.fromCodePoint(129768)},{version:14,emoji:String.fromCodePoint(128733)},{version:13,emoji:String.fromCodePoint(129729)},{version:12,emoji:String.fromCodePoint(129449)},{version:11,emoji:String.fromCodePoint(129463)},{version:5,emoji:String.fromCodePoint(129322)},{version:4,emoji:String.fromCodePoint(9877)},{version:3,emoji:String.fromCodePoint(129314)},{version:2,emoji:String.fromCodePoint(128488)},{version:1,emoji:String.fromCodePoint(128512)}];function lt(){var e;const t=ct.find((e=>function(e){const t=document.createElement("canvas").getContext("2d");if(t)return t.textBaseline="top",t.font="32px Arial",t.fillText(e,0,0),0!==t.getImageData(16,16,1,1).data[0]}(e.emoji)));return null!=(e=null==t?void 0:t.version)?e:1}function ht(e,t){return Array.from({length:e},(()=>t)).join("")}function dt(e){const{emojiCount:t,classes:s,theme:i,className:o,categoryCount:r}=e;return`\n
        \n ${(({showHeader:t,classes:s})=>t?`\n
        \n ${(({showSearch:e,classes:t})=>e?`\n
        \n
        \n
        \n `:"")(e)}\n ${(({showCategoryTabs:e,classes:t})=>e?`\n
        \n ${ht(r,`
        `)}\n
        \n `:"")(e)}\n
        \n `:"")(e)}\n
        \n
        \n
        \n ${ht(t,`
        `)}\n
        \n
        \n ${(({showPreview:e,classes:t})=>e?`\n
        \n
        \n
        \n
          \n ${ht(3,`
        • `)}\n
        \n
        \n `:"")(e)}\n
        \n `}const mt=new U((e=>e.isLoaded?function(e){const{classes:t,theme:s,className:i=""}=e;return`\n
        \n ${function({showHeader:e,classes:t}){return e?`\n
        \n
        \n
        \n
        \n `:""}(e)}\n
        \n
        \n
        \n
        \n
        \n `}(e):dt(e))),ut=f("picker","skeleton","placeholder","searchSkeleton","searchInput","categoryTabsSkeleton","headerSkeleton","categoryTab","contentSkeleton","categoryName","emojiGrid","emoji","previewSkeleton","previewEmoji","previewName","tagList","tag","overlay","content","fullHeight","pluginContainer","header"),gt={emojisPerRow:"--emojis-per-row",visibleRows:"--row-count",emojiSize:"--emoji-size"};class pt extends F{constructor(){super({template:mt,classes:ut}),this.pickerReady=!1,this.externalEvents=new ye,this.updaters={styleProperty:e=>t=>this.el.style.setProperty(gt[e],t.toString()),theme:e=>{const t=this.options.theme,s=this.el.closest(`.${t}`);this.el.classList.remove(t),null==s||s.classList.remove(t),this.el.classList.add(e),null==s||s.classList.add(e)},className:e=>{this.options.className&&this.el.classList.remove(this.options.className),this.el.classList.add(e)},emojisPerRow:this.updateStyleProperty.bind(this,"emojisPerRow"),emojiSize:this.updateStyleProperty.bind(this,"emojiSize"),visibleRows:this.updateStyleProperty.bind(this,"visibleRows")}}initialize(){this.uiElements={pickerContent:F.byClass(ut.content),header:F.byClass(ut.header)},this.uiEvents=[F.uiEvent("keydown",this.handleKeyDown)],this.appEvents={error:this.onError,reinitialize:this.reinitialize,"data:ready":this.onDataReady,"content:show":this.showContent,"variantPopup:hide":this.hideVariantPopup,"emoji:select":this.selectEmoji},super.initialize(),this.options.recentsProvider}destroy(){var e,t;super.destroy(),null==(e=this.search)||e.destroy(),this.emojiArea.destroy(),null==(t=this.categoryTabs)||t.destroy(),this.events.removeAll(),this.externalEvents.removeAll()}clearRecents(){this.options.recentsProvider.clear()}addEventListener(e,t){this.externalEvents.on(e,t)}removeEventListener(e,t){this.externalEvents.off(e,t)}initializePickerView(){this.pickerReady&&(this.showContent(),this.emojiArea.reset(!1))}handleKeyDown(e){const t=e.ctrlKey||e.metaKey;"s"===e.key&&t&&this.search&&(e.preventDefault(),this.search.focus())}buildChildViews(){return this.options.showPreview&&(this.preview=this.viewFactory.create(qe)),this.options.showSearch&&(this.search=this.viewFactory.create(_e,{categories:this.categories,emojiVersion:this.emojiVersion})),this.options.showCategoryTabs&&(this.categoryTabs=this.viewFactory.create(nt,{categories:this.categories})),this.currentView=this.emojiArea=this.viewFactory.create(Ve,{categoryTabs:this.categoryTabs,categories:this.categories,emojiVersion:this.emojiVersion}),[this.preview,this.search,this.emojiArea,this.categoryTabs]}setStyleProperties(){this.options.showSearch||this.el.style.setProperty("--search-height-full","0px"),this.options.showCategoryTabs||(this.el.style.setProperty("--category-tabs-height","0px"),this.el.style.setProperty("--category-tabs-offset","0px")),this.options.showPreview||this.el.style.setProperty("--emoji-preview-height-full","0px"),Object.keys(gt).forEach((e=>{this.options[e]&&this.el.style.setProperty(gt[e],this.options[e].toString())}))}updateStyleProperty(e,t){this.el.style.setProperty(gt[e],t.toString())}reinitialize(){this.renderSync()}onError(e){const t=this.viewFactory.create(Ne,{message:this.i18n.get("error.load")}),s=this.el.offsetHeight||375;throw this.el.style.height=`${s}px`,this.el.replaceChildren(t.renderSync()),e}async onDataReady(e){const t=this.el;try{e?this.emojiData=e:await this.emojiDataPromise,"auto"===this.options.emojiVersion?this.emojiVersion=lt()||parseFloat("14.0"):this.emojiVersion=this.options.emojiVersion,this.categories=await this.emojiData.getCategories(this.options);const[s,i,o,r]=this.buildChildViews();await super.render({isLoaded:!0,search:i,categoryTabs:r,emojiArea:o,preview:s,showHeader:Boolean(this.search||this.categoryTabs),theme:this.options.theme,className:this.options.className}),this.el.style.setProperty("--category-count",this.categories.length.toString()),this.pickerReady=!0,t.replaceWith(this.el),this.setStyleProperties(),this.initializePickerView(),this.setInitialFocus(),this.externalEvents.emit("data:ready")}catch(s){this.events.emit("error",s)}}renderSync(){var e;let t=(null==(e=this.options.categories)?void 0:e.length)||10;if(this.options.showRecents&&(t+=1),super.renderSync({isLoaded:!1,theme:this.options.theme,showSearch:this.options.showSearch,showPreview:this.options.showPreview,showCategoryTabs:this.options.showCategoryTabs,showHeader:this.options.showSearch||this.options.showCategoryTabs,emojiCount:this.options.emojisPerRow*this.options.visibleRows,categoryCount:t}),this.el.style.setProperty("--category-count",t.toString()),!this.options.rootElement)throw new Error("Picker must be given a root element via the rootElement option");return this.options.rootElement.replaceChildren(this.el),this.setStyleProperties(),this.pickerReady&&this.initializePickerView(),this.el}getInitialFocusTarget(){if(typeof this.options.autoFocus<"u")switch(this.options.autoFocus){case"emojis":return this.emojiArea.focusableEmoji;case"search":return this.search;case"auto":return this.search||this.emojiArea.focusableEmoji;default:return null}if(!0===this.options.autoFocusSearch)return console.warn("options.autoFocusSearch is deprecated, please use options.focusTarget instead"),this.search}setInitialFocus(){var e;!this.pickerReady||null==(e=this.getInitialFocusTarget())||e.focus()}reset(e=!0){var t;this.pickerReady&&(this.emojiArea.reset(e),this.showContent(this.emojiArea)),null==(t=this.search)||t.clear(),this.hideVariantPopup()}showContent(e=this.emojiArea){var t,s;e!==this.currentView&&(this.currentView!==this.emojiArea&&(null==(t=this.currentView)||t.destroy()),this.ui.pickerContent.classList.toggle(ut.fullHeight,e!==this.emojiArea),this.ui.pickerContent.replaceChildren(e.el),this.currentView=e,e===this.emojiArea?(this.emojiArea.reset(),this.categoryTabs&&this.ui.header.appendChild(this.categoryTabs.el)):null==(s=this.categoryTabs)||s.el.remove())}hideVariantPopup(){var e;null==(e=this.variantPopup)||e.destroy()}isPickerClick(e){var t,s;const i=e.target,o=this.el.contains(i),r=null==(s=null==(t=this.variantPopup)?void 0:t.el)?void 0:s.contains(i);return o||r}async selectEmoji({emoji:e}){var t,s;(null==(t=e.skins)?void 0:t.length)&&this.options.showVariants&&!this.isVariantPopupOpen?this.showVariantPopup(e):(await(null==(s=this.variantPopup)?void 0:s.animateHide()),this.events.emit("variantPopup:hide"),await this.emitEmoji(e))}get isVariantPopupOpen(){return this.variantPopup&&!this.variantPopup.isDestroyed}async showVariantPopup(e){const t=document.activeElement;this.events.once("variantPopup:hide",(()=>{null==t||t.focus()})),this.variantPopup=this.viewFactory.create(tt,{emoji:e,parent:this.el}),this.el.appendChild(this.variantPopup.renderSync()),this.variantPopup.activate()}async emitEmoji(e){this.externalEvents.emit("emoji:select",await this.renderer.doEmit(e)),this.options.recentsProvider.addOrUpdateRecent(e,this.options.maxRecents),this.events.emit("recent:add",e)}updateOptions(e){Object.keys(e).forEach((t=>{this.updaters[t](e[t])})),Object.assign(this.options,e)}}class yt{constructor({events:e,i18n:t,renderer:s,emojiData:i,options:o,customEmojis:r=[],pickerId:a}){this.events=e,this.i18n=t,this.renderer=s,this.emojiData=i,this.options=o,this.customEmojis=r,this.pickerId=a}setEmojiData(e){this.emojiData=Promise.resolve(e)}create(e,...t){const s=new e(...t);return s.setPickerId(this.pickerId),s.setEvents(this.events),s.setI18n(this.i18n),s.setRenderer(this.renderer),s.setEmojiData(this.emojiData),s.setOptions(this.options),s.setCustomEmojis(this.customEmojis),s.viewFactory=this,s.initialize(),s}}var vt;class wt{constructor(e={}){r(this,vt,void 0),a(this,vt,new Map(Object.entries(e)))}get(e,t=e){return o(this,vt).get(e)||t}}vt=new WeakMap;let ft=0;const bt=function(){let e=!1;return function(t){ge&&!e&&(function(e,t){void 0===t&&(t={});var s=t.insertAt;if(e&&!(typeof document>"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===s&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}(t),e=!0)}}();function Ct(e){bt('.picmo-picker .icon{width:1.25em;height:1em;fill:currentColor}.icon-small{font-size:.8em}.icon-medium{font-size:1em}.icon-large{font-size:1.25em}.icon-2x{font-size:2em}.icon-3x{font-size:3em}.icon-4x{font-size:4em}.icon-5x{font-size:5em}.icon-8x{font-size:8em}.icon-10x{font-size:10em}.light,.auto{color-scheme:light;--accent-color: #4f46e5;--background-color: #f9fafb;--border-color: #cccccc;--category-name-background-color: #f9fafb;--category-name-button-color: #999999;--category-name-text-color: hsl(214, 30%, 50%);--category-tab-active-background-color: rgba(255, 255, 255, .6);--category-tab-active-color: var(--accent-color);--category-tab-color: #666;--category-tab-highlight-background-color: rgba(0, 0, 0, .15);--error-color-dark: hsl(0, 100%, 45%);--error-color: hsl(0, 100%, 40%);--focus-indicator-background-color: hsl(198, 65%, 85%);--focus-indicator-color: #333333;--hover-background-color: #c7d2fe;--placeholder-background-color: #cccccc;--search-background-color: #f9fafb;--search-focus-background-color: #ffffff;--search-icon-color: #999999;--search-placeholder-color: #71717a;--secondary-background-color: #e2e8f0;--secondary-text-color: #666666;--tag-background-color: rgba(162, 190, 245, .3);--text-color: #000000;--variant-popup-background-color: #ffffff}.dark{color-scheme:dark;--accent-color: #A580F9;--background-color: #333333;--border-color: #666666;--category-name-background-color: #333333;--category-name-button-color: #eeeeee;--category-name-text-color: #ffffff;--category-tab-active-background-color: #000000;--category-tab-active-color: var(--accent-color);--category-tab-color: #cccccc;--category-tab-highlight-background-color: #4A4A4A;--error-color-dark: hsl(0, 7%, 3%);--error-color: hsl(0, 30%, 60%);--focus-indicator-background-color: hsl(0, 0%, 50%);--focus-indicator-color: #999999;--hover-background-color: hsla(0, 0%, 40%, .85);--image-placeholder-color: #ffffff;--placeholder-background-color: #666666;--search-background-color: #71717a;--search-focus-background-color: #52525b;--search-icon-color: #cccccc;--search-placeholder-color: #d4d4d8;--secondary-background-color: #000000;--secondary-text-color: #999999;--tag-background-color: rgba(162, 190, 245, .3);--text-color: #ffffff;--variant-popup-background-color: #333333}@media (prefers-color-scheme: dark){.auto{color-scheme:dark;--accent-color: #A580F9;--background-color: #333333;--border-color: #666666;--category-name-background-color: #333333;--category-name-button-color: #eeeeee;--category-name-text-color: #ffffff;--category-tab-active-background-color: #000000;--category-tab-active-color: var(--accent-color);--category-tab-color: #cccccc;--category-tab-highlight-background-color: #4A4A4A;--error-color-dark: hsl(0, 7%, 3%);--error-color: hsl(0, 30%, 60%);--focus-indicator-background-color: hsl(0, 0%, 50%);--focus-indicator-color: #999999;--hover-background-color: hsla(0, 0%, 40%, .85);--image-placeholder-color: #ffffff;--placeholder-background-color: #666666;--search-background-color: #71717a;--search-focus-background-color: #52525b;--search-icon-color: #cccccc;--search-placeholder-color: #d4d4d8;--secondary-background-color: #000000;--secondary-text-color: #999999;--tag-background-color: rgba(162, 190, 245, .3);--text-color: #ffffff;--variant-popup-background-color: #333333}}.picmo-picker .categoryButtonsContainer{overflow:auto;padding:2px 0}.picmo-picker .categoryButtonsContainer.has-overflow-right{mask-image:linear-gradient(270deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%);-webkit-mask-image:linear-gradient(270deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%)}.picmo-picker .categoryButtonsContainer.has-overflow-left{mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%);-webkit-mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%)}.picmo-picker .categoryButtonsContainer.has-overflow-both{mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%,rgba(255,255,255,1) 90%,rgba(255,255,255,0) 100%);-webkit-mask-image:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,1) 10%,rgba(255,255,255,1) 90%,rgba(255,255,255,0) 100%)}.picmo-picker .categoryButtons{display:flex;flex-direction:row;gap:var(--tab-gap);margin:0;padding:0 .5em;align-items:center;height:var(--category-tabs-height);box-sizing:border-box;width:100%;justify-content:space-between;position:relative;list-style-type:none;justify-self:center;max-width:min(23.55rem,calc(var(--category-count, 1) * 2.5rem))}.picmo-picker .categoryButtons .categoryTab{display:flex;align-items:center;transition:all .1s;width:2em}.picmo-picker .categoryButtons .categoryTab.categoryTabActive .categoryButton{color:var(--category-tab-active-color);background:linear-gradient(rgba(255,255,255,.75) 0%,rgba(255,255,255,.75) 100%),linear-gradient(var(--category-tab-active-color) 0%,var(--category-tab-active-color) 100%);border:2px solid var(--category-tab-active-color)}.picmo-picker .categoryButtons .categoryTab.categoryTabActive .categoryButton:hover{background-color:var(--category-tab-active-background-color)}.picmo-picker .categoryButtons .categoryTab button.categoryButton{border-radius:5px;background:transparent;border:2px solid transparent;color:var(--category-tab-color);cursor:pointer;padding:2px;vertical-align:middle;display:flex;align-items:center;justify-content:center;font-size:1.2rem;width:1.6em;height:1.6em;transition:all .1s}.picmo-picker .categoryButtons .categoryTab button.categoryButton:is(img){width:var(--category-tab-size);height:var(--category-tab-size)}.picmo-picker .categoryButtons .categoryTab button.categoryButton:hover{background:var(--category-tab-highlight-background-color)}.dataError [data-icon]{opacity:.8}@keyframes appear{0%{opacity:0}to{opacity:.8}}@keyframes appear-grow{0%{opacity:0;transform:scale(.8)}to{opacity:.8;transform:scale(1)}}.picmo-picker .error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--secondary-text-color)}.picmo-picker .error .iconContainer{opacity:.8;animation:appear-grow .25s cubic-bezier(.175,.885,.32,1.275);--color-primary: var(--error-color);--color-secondary: var(--error-color-dark)}.picmo-picker .error .title{animation:appear .25s;animation-delay:50ms;animation-fill-mode:both}.picmo-picker .error button{padding:8px 16px;cursor:pointer;background:var(--background-color);border:1px solid var(--text-color);border-radius:5px;color:var(--text-color)}.picmo-picker .error button:hover{background:var(--text-color);color:var(--background-color)}.emojiButton{background:transparent;border:none;border-radius:15px;cursor:pointer;display:flex;font-family:var(--emoji-font);font-size:var(--emoji-size);height:100%;justify-content:center;align-items:center;margin:0;overflow:hidden;padding:0;width:100%}.emojiButton:hover{background:var(--hover-background-color)}.emojiButton:focus{border-radius:0;background:var(--focus-indicator-background-color);outline:1px solid var(--focus-indicator-color)}.picmo-picker .emojiArea{height:var(--emoji-area-height);overflow-y:auto;position:relative}.picmo-picker .emojiCategory{position:relative}.picmo-picker .emojiCategory .categoryName{font-size:.9em;padding:.5rem;margin:0;background:var(--category-name-background-color);color:var(--category-name-text-color);top:0;z-index:1;display:grid;gap:4px;grid-template-columns:auto 1fr auto;align-items:center;line-height:1;box-sizing:border-box;height:var(--category-name-height);justify-content:flex-start;text-transform:uppercase}.picmo-picker .emojiCategory .categoryName button{background:transparent;border:none;display:flex;align-items:center;cursor:pointer;color:var(--category-name-button-color)}.picmo-picker .emojiCategory .categoryName button:hover{opacity:1}.picmo-picker .emojiCategory .noRecents{color:var(--secondary-text-color);grid-column:1 / span var(--emojis-per-row);font-size:.9em;text-align:center;display:flex;align-items:center;justify-content:center;min-height:calc(var(--emoji-size) * var(--emoji-size-multiplier))}.picmo-picker .emojiCategory .recentEmojis[data-empty=true]{display:none}:is(.picmo-picker .emojiCategory) .recentEmojis[data-empty=false]+div{display:none}.picmo-picker .emojiContainer{display:grid;justify-content:space-between;gap:1px;padding:0 .5em;grid-template-columns:repeat(var(--emojis-per-row),calc(var(--emoji-size) * var(--emoji-size-multiplier)));grid-auto-rows:calc(var(--emoji-size) * var(--emoji-size-multiplier));align-items:center;justify-items:center}.picmo-picker.picker{--border-radius: 5px;--emoji-area-height: calc( (var(--row-count) * var(--emoji-size) * var(--emoji-size-multiplier)) + var(--category-name-height) );--content-height: var(--emoji-area-height);--emojis-per-row: 8;--row-count: 6;--emoji-preview-margin: 4px;--emoji-preview-height: calc(var(--emoji-preview-size) + 1em + 1px);--emoji-preview-height-full: calc(var(--emoji-preview-height) + var(--emoji-preview-margin));--emoji-preview-size: 2.75em;--emoji-size: 2rem;--emoji-size-multiplier: 1.3;--content-margin: 8px;--category-tabs-height:calc(1.5em + 9px);--category-tabs-offset: 8px;--category-tab-size: 1.2rem;--category-name-height: 2rem;--category-name-padding-y: 6px;--search-height: 2em;--search-margin: .5em;--search-margin-bottom: 4px;--search-height-full: calc(var(--search-height) + var(--search-margin) + var(--search-margin-bottom));--overlay-background-color: rgba(0, 0, 0, .8);--emoji-font: "Segoe UI Emoji", "Segoe UI Symbol", "Segoe UI", "Apple Color Emoji", "Twemoji Mozilla", "Noto Color Emoji", "EmojiOne Color", "Android Emoji";--ui-font: -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--ui-font-size: 16px;--picker-width: calc(var(--emojis-per-row) * var(--emoji-size) * var(--emoji-size-multiplier) + 2.75rem);--preview-background-color: var(--secondary-background-color);background:var(--background-color);border-radius:var(--border-radius);border:1px solid var(--border-color);font-family:var(--ui-font);font-size:var(--ui-font-size);overflow:hidden;position:relative;width:var(--picker-width);display:grid;gap:8px}.picmo-picker.picker>*{font-family:var(--ui-font)}.picmo-picker.skeleton{background:var(--background-color);border-radius:var(--border-radius);border:1px solid var(--border-color);font-family:var(--ui-font);width:var(--picker-width);color:var(--secondary-text-color)}.picmo-picker.skeleton *{box-sizing:border-box}.picmo-picker.skeleton .placeholder{background:var(--placeholder-background-color);position:relative;overflow:hidden}.picmo-picker.skeleton .placeholder:after{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 100%);animation:shine 2s infinite;content:""}.picmo-picker.skeleton .headerSkeleton{background-color:var(--secondary-background-color);padding-top:8px;padding-bottom:8px;display:flex;flex-direction:column;overflow:hidden;gap:8px;border-bottom:1px solid var(--border-color);width:var(--picker-width)}.picmo-picker.skeleton .searchSkeleton{padding:0 8px;height:var(--search-height)}.picmo-picker.skeleton .searchSkeleton .searchInput{width:100%;height:28px;border-radius:3px}.picmo-picker.skeleton .categoryTabsSkeleton{height:var(--category-tabs-height);display:flex;flex-direction:row;align-items:center;justify-self:center;width:calc(2rem * var(--category-count, 1))}.picmo-picker.skeleton .categoryTabsSkeleton .categoryTab{width:25px;height:25px;padding:2px;border-radius:5px;margin:.25em}.picmo-picker.skeleton .contentSkeleton{height:var(--content-height);padding-right:8px;opacity:.7}.picmo-picker.skeleton .contentSkeleton .categoryName{width:50%;height:1rem;margin:.5rem;box-sizing:border-box}.picmo-picker.skeleton .contentSkeleton .emojiGrid{display:grid;justify-content:space-between;gap:1px;padding:0 .5em;grid-template-columns:repeat(var(--emojis-per-row),calc(var(--emoji-size) * var(--emoji-size-multiplier)));grid-auto-rows:calc(var(--emoji-size) * var(--emoji-size-multiplier));align-items:center;justify-items:center;width:var(--picker-width)}.picmo-picker.skeleton .contentSkeleton .emojiGrid .emoji{width:var(--emoji-size);height:var(--emoji-size);border-radius:50%}.picmo-picker.skeleton .previewSkeleton{height:var(--emoji-preview-height);border-top:1px solid var(--border-color);display:grid;align-items:center;padding:.5em;gap:6px;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;grid-template-areas:"emoji name" "emoji tags"}.picmo-picker.skeleton .previewSkeleton .previewEmoji{grid-area:emoji;border-radius:50%;width:var(--emoji-preview-size);height:var(--emoji-preview-size)}.picmo-picker.skeleton .previewSkeleton .previewName{grid-area:name;height:.8em;width:80%}.picmo-picker.skeleton .previewSkeleton .tagList{grid-area:tags;list-style-type:none;display:flex;flex-direction:row;padding:0;margin:0}.picmo-picker.skeleton .previewSkeleton .tagList .tag{border-radius:3px;padding:2px 8px;margin-right:.25em;height:1em;width:20%}.overlay{background:rgba(0,0,0,.75);height:100%;left:0;position:fixed;top:0;width:100%;z-index:1000}.content{position:relative;overflow:hidden;height:var(--content-height)}.content.fullHeight{height:calc(var(--content-height) + var(--category-tabs-height) + var(--category-tabs-offset));overflow-y:auto}.pluginContainer{margin:.5em;display:flex;flex-direction:row}.header{background-color:var(--secondary-background-color);padding-top:8px;padding-bottom:8px;display:grid;gap:8px;border-bottom:1px solid var(--border-color)}@media (prefers-reduced-motion: reduce){.placeholder{background:var(--placeholder-background-color);position:relative;overflow:hidden}.placeholder:after{display:none}}.picmo-picker .preview{border-top:1px solid var(--border-color);display:grid;align-items:center;gap:6px;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;grid-template-areas:"emoji name" "emoji tags";height:var(--emoji-preview-height);box-sizing:border-box;padding:.5em;position:relative;background:var(--preview-background-color)}.picmo-picker .preview .previewEmoji{grid-area:emoji;font-size:var(--emoji-preview-size);font-family:var(--emoji-font);width:1.25em;display:flex;align-items:center;justify-content:center}.picmo-picker .preview .previewName{grid-area:name;color:var(--text-color);font-size:.8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.picmo-picker .preview .tagList{grid-area:tags;list-style-type:none;display:flex;flex-direction:row;padding:0;margin:0;font-size:.75em;overflow:hidden}.picmo-picker .preview .tag{border-radius:3px;background:var(--tag-background-color);color:var(--text-color);padding:2px 8px;margin-right:.25em;white-space:nowrap}.picmo-picker .preview .tag:last-child{margin-right:0}.picmo-picker .searchContainer{display:flex;height:var(--search-height);box-sizing:border-box;padding:0 8px;position:relative}.picmo-picker .searchContainer .searchField{background:var(--search-background-color);border-radius:3px;border:none;box-sizing:border-box;color:var(--text-color);font-size:.9em;outline:none;padding:.5em 2.25em .5em .5em;width:100%}.picmo-picker .searchContainer .searchField:focus{background:var(--search-focus-background-color)}.picmo-picker .searchContainer .searchField::placeholder{color:var(--search-placeholder-color)}.picmo-picker .searchContainer .searchAccessory{color:var(--search-icon-color);height:100%;position:absolute;right:1em;top:0;width:1.25rem;display:flex;align-items:center}.picmo-picker .searchContainer .searchAccessory svg{fill:var(--search-icon-color)}.picmo-picker .searchContainer .clearButton{border:0;color:var(--search-icon-color);background:transparent;cursor:pointer}.picmo-picker .searchContainer .clearSearchButton{cursor:pointer;border:none;background:transparent;color:var(--search-icon-color);font-size:1em;width:100%;height:100%;display:flex;align-items:center;padding:0}.picmo-picker .searchContainer .notFound [data-icon]{fill:#f3e265}.picmo-picker .variantOverlay{background:var(--overlay-background-color);border-radius:5px;display:flex;flex-direction:column;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%;z-index:1}.picmo-picker .variantOverlay .variantPopup{background:var(--variant-popup-background-color);border-radius:5px;margin:.5em;padding:.5em;text-align:center;user-select:none;display:flex;align-items:center;justify-content:center}.customEmoji{width:1em;height:1em}@keyframes shine{to{transform:translate(100%)}}.picmo-picker .imagePlaceholder{width:2rem;height:2rem;border-radius:50%}.placeholder{background:#DDDBDD;position:relative}.placeholder:after{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0) 100%);animation:shine 2s infinite;content:""}\n');const t=function(e={}){return{...ne,...e,renderer:e.renderer||new _,recentsProvider:e.recentsProvider||new ae}}(e),s=((null==t?void 0:t.custom)||[]).map((e=>({...e,custom:!0,tags:["custom",...e.tags||[]]}))),i=new pe,o=function(e){return E(e.locale,e.dataStore,e.messages,e.emojiData)}(t),r=new wt(t.i18n);o.then((e=>{i.emit("data:ready",e)})).catch((e=>{i.emit("error",e)}));const a=new yt({events:i,i18n:r,customEmojis:s,renderer:t.renderer,options:t,emojiData:o,pickerId:`picmo-${Date.now()}-${ft++}`}).create(pt);return a.renderSync(),a}}}]); \ No newline at end of file diff --git a/static/web/_next/static/chunks/webpack-ba55635df5a6d469.js b/static/web/_next/static/chunks/webpack-4444859824d7ed70.js similarity index 99% rename from static/web/_next/static/chunks/webpack-ba55635df5a6d469.js rename to static/web/_next/static/chunks/webpack-4444859824d7ed70.js index 2a09e7945..96d93c9a0 100644 --- a/static/web/_next/static/chunks/webpack-ba55635df5a6d469.js +++ b/static/web/_next/static/chunks/webpack-4444859824d7ed70.js @@ -1 +1 @@ -!function(){"use strict";var e={},t={};function a(c){var f=t[c];if(void 0!==f)return f.exports;var n=t[c]={id:c,loaded:!1,exports:{}},d=!0;try{e[c].call(n.exports,n,n.exports,a),d=!1}finally{d&&delete t[c]}return n.loaded=!0,n.exports}a.m=e,a.amdO={},function(){var e=[];a.O=function(t,c,f,n){if(!c){var d=1/0;for(i=0;i=n)&&Object.keys(a.O).every((function(e){return a.O[e](c[b])}))?c.splice(b--,1):(r=!1,n0&&e[i-1][2]>n;i--)e[i]=e[i-1];e[i]=[c,f,n]}}(),a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};a.t=function(c,f){if(1&f&&(c=this(c)),8&f)return c;if("object"===typeof c&&c){if(4&f&&c.__esModule)return c;if(16&f&&"function"===typeof c.then)return c}var n=Object.create(null);a.r(n);var d={};e=e||[null,t({}),t([]),t(t)];for(var r=2&f&&c;"object"==typeof r&&!~e.indexOf(r);r=t(r))Object.getOwnPropertyNames(r).forEach((function(e){d[e]=function(){return c[e]}}));return d.default=function(){return c},a.d(n,d),n}}(),a.d=function(e,t){for(var c in t)a.o(t,c)&&!a.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:t[c]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,c){return a.f[c](e,t),t}),[]))},a.u=function(e){return 8939===e?"static/chunks/8939-2c7dd78bd2286b4d.js":3903===e?"static/chunks/3903-97c724332d1a5798.js":4267===e?"static/chunks/4267-0d1cbd98a57df9e3.js":3626===e?"static/chunks/3626-d074077c8897dd8b.js":8091===e?"static/chunks/8091-d7457a988f3f1d54.js":4381===e?"static/chunks/4381-ff441df8dbf283c8.js":2544===e?"static/chunks/d6e1aeb5-e5a704c6afec0fd3.js":6967===e?"static/chunks/6967-c7a0b7dbdf0293e9.js":1064===e?"static/chunks/1064-3812a0a7dd7bd728.js":1272===e?"static/chunks/d3048c20-405c7c1a8bffb46c.js":8700===e?"static/chunks/d2094a0f-ffb6824e6aa18418.js":2852===e?"static/chunks/2852-f3e7fd3556662a09.js":2382===e?"static/chunks/2382-db0487c02624c136.js":"static/chunks/"+e+"."+{177:"07e81c876c150d56",228:"7008583a6edcaf6f",305:"81addcdd22dac87e",370:"52e16b019e72e3e7",402:"d2b366579300ae3b",617:"933158da5fda9b65",673:"ece53c2daf22e93d",758:"4e6dace4695912fa",786:"bda6a234b010d76b",870:"2ed8d4e2260b0131",889:"ae582629b4ddeada",1053:"cadcccb1887d1655",1084:"5b7bb8501d49b84f",1300:"4b32175d5676e8df",1390:"e28c81f99b757880",1446:"d4716947e754971e",1650:"8909ff4ee9be21d8",1660:"2e69d7651d99fffa",1770:"e9d167a359425734",1873:"a756dbdabb15f510",1920:"c33b94a1a93e947a",2040:"8c1f1efa3891bda8",2119:"33ee19dcc774b7b3",2136:"87902004824e59b3",2314:"0c7ba9cb309bbcae",2365:"46a4a8af0452b858",2386:"7849afb31fdbcbe9",2406:"fdc2fd9471c9277c",2542:"d87f01354fa8625b",2602:"23ec287cba38919e",2675:"c188080c2b5d4a3d",2750:"64ce3f9e097bda01",3127:"6fd202ee85d07fae",3203:"4a03f08cc075a41a",3283:"508ea7a82a17eb6f",3314:"21f4d993f672bac4",3465:"3b01362997e94018",3482:"123b2f3fc81ff758",3509:"3932ae3634ee5b2e",3519:"7b44cdadfa3dccf8",3883:"2fb7f03e2ca3529a",3993:"128027dd7265a783",4144:"ac42c8b1f09df8f9",4163:"1b16f58fd432f4da",4212:"f665078601f914de",4293:"9a6146c4cd92c0ea",4323:"88655b5982d04133",4439:"4f04bf9f401b13af",4511:"c20b329de4a94d30",4732:"abe153cd9e74cf8c",4778:"fe124557ac27707c",4796:"59ffa2aa8de67c8d",4879:"ff6296c6446eb972",4920:"5562dd5144a4a0c6",5122:"c94bd6aa99c27f1e",5134:"8c40f920826939fb",5135:"6541163f583921e6",5372:"1cbe35d74e4ddd0e",5379:"aade0a3e0e516604",5648:"6417f99e99d45d4c",5753:"369aa818f4fa0dae",5815:"d2bce212c3134600",5819:"d24a858591bd5c3c",5879:"1b55d2b462afebf3",6062:"99b0d3c3b2722798",6092:"cb997822d5ad9a36",6121:"3d67c2fae8774daa",6395:"21f59417b457c6b2",6443:"dd7e5cd2e659f21f",6471:"a1b969913a20a449",6665:"9b4fa1f8176c8faf",6692:"4c47b40a842bfe37",6732:"a90326e23dac20d0",6991:"015225d9c5454e6b",7001:"e576736a60e3567b",7047:"7055375b97eebebc",7213:"0c5bd78e1f87e6ff",7315:"6f5ab7ef11af96d8",7365:"f54e467b2f4523d1",7370:"f49ab049acf16289",7421:"06e86f299b78a3d3",7475:"b1546a7ebfa28cbb",7525:"938d02cfd66dc876",7590:"efdde8b2997b09a1",7601:"5a327eee5530fbe2",7663:"b3b1c64004576939",7735:"5528314f888ca32d",7741:"177818bb3887216e",7762:"7bae3e40001587ab",7781:"1830e606bfa36645",7917:"04781deb6d0da1e1",7988:"0a5a4bd779cbda3e",8007:"36e212ff50d5c34a",8029:"ca20148827905307",8088:"a5222fe3814956a0",8142:"fca9502f471ae841",8171:"97a5e3c90df36fc7",8225:"b1ad83c90140af1a",8283:"914dfaa8316d16d7",8393:"ac707cc39cd5aab8",8561:"281bc4ce77b8995a",8770:"719a9f10f1781d66",8910:"0be92050586e05f6",8915:"0a35c35fa8764138",9071:"d812295ab2a73c24",9121:"5c4711a92893fca9",9232:"400b581440faecc1",9296:"b186db185a29360d",9558:"cfa96280a9f9d439",9607:"ff46198deba68fd1",9674:"a7c00110a69614af",9713:"0ca649eec80739b4",9715:"c86da91e889ae200",9781:"6915afce38fb4e27",9809:"b5973362b6234d26",9831:"a0808ada0e3f0bcc",9972:"dcde2a016a9a80ee"}[e]+".js"},a.miniCssF=function(e){return"static/css/"+{955:"836decc457006cbf",2365:"19d74602c45ee60b",2888:"72d614d076ee4d2e",3126:"df2265f42be36c15",3127:"9536034b49ad2899",5135:"edb3f793b986286c",5405:"cffc98a5ffdc74a3",6967:"7c735c05af084bb2",7735:"4d949a8f962451f2",7781:"b92b45b3f2e03f44",8399:"12c1bf3c7fd206d0",9674:"ed28f196ebbc4ea9",9715:"12c1bf3c7fd206d0"}[e]+".css"},a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t="_N_E:";a.l=function(c,f,n,d){if(e[c])e[c].push(f);else{var r,b;if(void 0!==n)for(var o=document.getElementsByTagName("script"),i=0;i=n)&&Object.keys(a.O).every((function(e){return a.O[e](c[b])}))?c.splice(b--,1):(r=!1,n0&&e[i-1][2]>n;i--)e[i]=e[i-1];e[i]=[c,f,n]}}(),a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};a.t=function(c,f){if(1&f&&(c=this(c)),8&f)return c;if("object"===typeof c&&c){if(4&f&&c.__esModule)return c;if(16&f&&"function"===typeof c.then)return c}var n=Object.create(null);a.r(n);var d={};e=e||[null,t({}),t([]),t(t)];for(var r=2&f&&c;"object"==typeof r&&!~e.indexOf(r);r=t(r))Object.getOwnPropertyNames(r).forEach((function(e){d[e]=function(){return c[e]}}));return d.default=function(){return c},a.d(n,d),n}}(),a.d=function(e,t){for(var c in t)a.o(t,c)&&!a.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:t[c]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,c){return a.f[c](e,t),t}),[]))},a.u=function(e){return 8939===e?"static/chunks/8939-2c7dd78bd2286b4d.js":3903===e?"static/chunks/3903-97c724332d1a5798.js":4267===e?"static/chunks/4267-0d1cbd98a57df9e3.js":3626===e?"static/chunks/3626-d074077c8897dd8b.js":8091===e?"static/chunks/8091-d7457a988f3f1d54.js":4381===e?"static/chunks/4381-ff441df8dbf283c8.js":2544===e?"static/chunks/d6e1aeb5-e5a704c6afec0fd3.js":6967===e?"static/chunks/6967-c7a0b7dbdf0293e9.js":1064===e?"static/chunks/1064-3812a0a7dd7bd728.js":1272===e?"static/chunks/d3048c20-405c7c1a8bffb46c.js":8700===e?"static/chunks/d2094a0f-ffb6824e6aa18418.js":2852===e?"static/chunks/2852-f3e7fd3556662a09.js":2382===e?"static/chunks/2382-db0487c02624c136.js":"static/chunks/"+e+"."+{177:"07e81c876c150d56",228:"7008583a6edcaf6f",305:"81addcdd22dac87e",370:"52e16b019e72e3e7",402:"d2b366579300ae3b",617:"933158da5fda9b65",673:"ece53c2daf22e93d",758:"4e6dace4695912fa",786:"bda6a234b010d76b",870:"2ed8d4e2260b0131",889:"ae582629b4ddeada",1053:"cadcccb1887d1655",1084:"5b7bb8501d49b84f",1300:"4b32175d5676e8df",1390:"e28c81f99b757880",1446:"d4716947e754971e",1650:"8909ff4ee9be21d8",1660:"2e69d7651d99fffa",1770:"e9d167a359425734",1873:"a756dbdabb15f510",1920:"c33b94a1a93e947a",2040:"8c1f1efa3891bda8",2119:"33ee19dcc774b7b3",2136:"87902004824e59b3",2314:"0c7ba9cb309bbcae",2365:"46a4a8af0452b858",2386:"7849afb31fdbcbe9",2406:"fdc2fd9471c9277c",2542:"d87f01354fa8625b",2602:"23ec287cba38919e",2675:"c188080c2b5d4a3d",2750:"64ce3f9e097bda01",3127:"6fd202ee85d07fae",3203:"4a03f08cc075a41a",3283:"508ea7a82a17eb6f",3314:"21f4d993f672bac4",3465:"3b01362997e94018",3482:"123b2f3fc81ff758",3509:"3932ae3634ee5b2e",3519:"7b44cdadfa3dccf8",3883:"2fb7f03e2ca3529a",3993:"128027dd7265a783",4144:"ac42c8b1f09df8f9",4163:"1b16f58fd432f4da",4212:"f665078601f914de",4293:"9a6146c4cd92c0ea",4323:"88655b5982d04133",4439:"4f04bf9f401b13af",4511:"c20b329de4a94d30",4732:"abe153cd9e74cf8c",4778:"fe124557ac27707c",4796:"59ffa2aa8de67c8d",4879:"ff6296c6446eb972",4920:"5562dd5144a4a0c6",5122:"c94bd6aa99c27f1e",5134:"8c40f920826939fb",5135:"6541163f583921e6",5372:"1cbe35d74e4ddd0e",5379:"aade0a3e0e516604",5648:"6417f99e99d45d4c",5753:"369aa818f4fa0dae",5815:"d2bce212c3134600",5819:"d24a858591bd5c3c",5879:"1b55d2b462afebf3",6062:"99b0d3c3b2722798",6092:"cb997822d5ad9a36",6121:"3d67c2fae8774daa",6395:"21f59417b457c6b2",6443:"dd7e5cd2e659f21f",6471:"a1b969913a20a449",6665:"9b4fa1f8176c8faf",6692:"4c47b40a842bfe37",6732:"a90326e23dac20d0",6991:"015225d9c5454e6b",7001:"e576736a60e3567b",7047:"7055375b97eebebc",7213:"0c5bd78e1f87e6ff",7315:"6f5ab7ef11af96d8",7365:"f54e467b2f4523d1",7370:"f49ab049acf16289",7421:"06e86f299b78a3d3",7475:"b1546a7ebfa28cbb",7525:"938d02cfd66dc876",7590:"efdde8b2997b09a1",7601:"5a327eee5530fbe2",7663:"b3b1c64004576939",7735:"5528314f888ca32d",7741:"a2213dab74705161",7762:"7bae3e40001587ab",7781:"1830e606bfa36645",7917:"04781deb6d0da1e1",7988:"0a5a4bd779cbda3e",8007:"36e212ff50d5c34a",8029:"ca20148827905307",8088:"a5222fe3814956a0",8142:"fca9502f471ae841",8171:"97a5e3c90df36fc7",8225:"b1ad83c90140af1a",8283:"914dfaa8316d16d7",8393:"ac707cc39cd5aab8",8561:"281bc4ce77b8995a",8770:"719a9f10f1781d66",8910:"0be92050586e05f6",8915:"0a35c35fa8764138",9071:"d812295ab2a73c24",9121:"5c4711a92893fca9",9232:"400b581440faecc1",9296:"b186db185a29360d",9558:"cfa96280a9f9d439",9607:"ff46198deba68fd1",9674:"a7c00110a69614af",9713:"0ca649eec80739b4",9715:"c86da91e889ae200",9781:"6915afce38fb4e27",9809:"b5973362b6234d26",9831:"a0808ada0e3f0bcc",9972:"dcde2a016a9a80ee"}[e]+".js"},a.miniCssF=function(e){return"static/css/"+{955:"836decc457006cbf",2365:"19d74602c45ee60b",2888:"72d614d076ee4d2e",3126:"df2265f42be36c15",3127:"9536034b49ad2899",5135:"edb3f793b986286c",5405:"cffc98a5ffdc74a3",6967:"7c735c05af084bb2",7735:"4d949a8f962451f2",7781:"b92b45b3f2e03f44",8399:"12c1bf3c7fd206d0",9674:"ed28f196ebbc4ea9",9715:"12c1bf3c7fd206d0"}[e]+".css"},a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t="_N_E:";a.l=function(c,f,n,d){if(e[c])e[c].push(f);else{var r,b;if(void 0!==n)for(var o=document.getElementsByTagName("script"),i=0;iOwncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Access Tokens

        Access tokens are used to allow external, 3rd party tools to perform specific actions on your Owncast server. They should be kept secure and never included in client code, instead they should be kept on a server that you control.
        Read more about how to use these tokens, with examples, at our documentation.
        NameTokenScopesLast Used
        No Data

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Access Tokens

        Access tokens are used to allow external, 3rd party tools to perform specific actions on your Owncast server. They should be kept secure and never included in client code, instead they should be kept on a server that you control.
        Read more about how to use these tokens, with examples, at our documentation.
        NameTokenScopesLast Used
        No Data

        \ No newline at end of file diff --git a/static/web/admin/actions/index.html b/static/web/admin/actions/index.html index 45eae1ae8..28e885105 100644 --- a/static/web/admin/actions/index.html +++ b/static/web/admin/actions/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        External Actions

        External action URLs are 3rd party UI you can display, embedded, into your Owncast page when a user clicks on a button to launch your action.
        Read more about how to use actions, with examples, at our documentation.
        NameDescriptionURLIconColorOpens
        No Data

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        External Actions

        External action URLs are 3rd party UI you can display, embedded, into your Owncast page when a user clicks on a button to launch your action.
        Read more about how to use actions, with examples, at our documentation.
        NameDescriptionURLIconColorOpens
        No Data

        \ No newline at end of file diff --git a/static/web/admin/chat/messages/index.html b/static/web/admin/chat/messages/index.html index e8acfb2b0..258c8be66 100644 --- a/static/web/admin/chat/messages/index.html +++ b/static/web/admin/chat/messages/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Chat Messages

        Manage the messages from viewers that show up on your stream.

        Check multiple messages to change their visibility to:
        Time
        User
        Message
        No Data
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Chat Messages

        Manage the messages from viewers that show up on your stream.

        Check multiple messages to change their visibility to:
        Time
        User
        Message
        No Data
        \ No newline at end of file diff --git a/static/web/admin/chat/users/index.html b/static/web/admin/chat/users/index.html index 1d8746e32..f11d76864 100644 --- a/static/web/admin/chat/users/index.html +++ b/static/web/admin/chat/users/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        When a stream is active and chat is enabled, connected chat clients will be displayed here.

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        When a stream is active and chat is enabled, connected chat clients will be displayed here.

        \ No newline at end of file diff --git a/static/web/admin/config-chat/index.html b/static/web/admin/config-chat/index.html index 285725a2d..f008b10f9 100644 --- a/static/web/admin/config-chat/index.html +++ b/static/web/admin/config-chat/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline
        \ No newline at end of file diff --git a/static/web/admin/config-federation/index.html b/static/web/admin/config-federation/index.html index 41e7b2a9a..c91bca366 100644 --- a/static/web/admin/config-federation/index.html +++ b/static/web/admin/config-federation/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline
        \ No newline at end of file diff --git a/static/web/admin/config-notify/index.html b/static/web/admin/config-notify/index.html index f636aab9d..d009d1c76 100644 --- a/static/web/admin/config-notify/index.html +++ b/static/web/admin/config-notify/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Notifications

        Let your viewers know when you go live by supporting any of the below notification channels. Learn more about live notifications.


        The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

        The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

        Browser Alerts

        Viewers can opt into being notified when you go live with their browser.

        Not all browsers support this.

        Enable browser notifications

        The text to send when you go live.

        Twitter

        Let your Twitter followers know each time you go live.

        Enable Twitter

        The text to send when you go live.

        Discord

        Let your Discord channel know each time you go live.

        Create a webhook under Edit Channel / Integrations on your Discord channel and provide it below.

        Enable Discord

        The webhook assigned to your channel.

        The text to send when you go live.

        Fediverse Social

        Enabling the Fediverse social features will not just alert people to when you go live, but also enable other functionality.

        Fediverse social features: Disabled

        Configure

        Custom

        Build your own notifications by using custom webhooks.

        Create
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Notifications

        Let your viewers know when you go live by supporting any of the below notification channels. Learn more about live notifications.


        The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

        The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

        Browser Alerts

        Viewers can opt into being notified when you go live with their browser.

        Not all browsers support this.

        Enable browser notifications

        The text to send when you go live.

        Twitter

        Let your Twitter followers know each time you go live.

        Enable Twitter

        The text to send when you go live.

        Discord

        Let your Discord channel know each time you go live.

        Create a webhook under Edit Channel / Integrations on your Discord channel and provide it below.

        Enable Discord

        The webhook assigned to your channel.

        The text to send when you go live.

        Fediverse Social

        Enabling the Fediverse social features will not just alert people to when you go live, but also enable other functionality.

        Fediverse social features: Disabled

        Configure

        Custom

        Build your own notifications by using custom webhooks.

        Create
        \ No newline at end of file diff --git a/static/web/admin/config-public-details/index.html b/static/web/admin/config-public-details/index.html index 4d6f21b1f..56b0205a3 100644 --- a/static/web/admin/config-public-details/index.html +++ b/static/web/admin/config-public-details/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        General Settings

        The following are displayed on your site to describe your stream and its content. Learn more.

        Custom Page Content

        Edit the content of your page by using simple Markdown syntax.


        Customize your page styling with CSS

        Customize the look and feel of your Owncast instance by overriding the CSS styles of various components on the page. Refer to the CSS & Components guide.

        Please input plain CSS text, as this will be directly injected onto your page during load.


        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        General Settings

        The following are displayed on your site to describe your stream and its content. Learn more.

        Custom Page Content

        Edit the content of your page by using simple Markdown syntax.


        Customize your page styling with CSS

        Customize the look and feel of your Owncast instance by overriding the CSS styles of various components on the page. Refer to the CSS & Components guide.

        Please input plain CSS text, as this will be directly injected onto your page during load.


        \ No newline at end of file diff --git a/static/web/admin/config-server-details/index.html b/static/web/admin/config-server-details/index.html index 32db1665f..67cb4e22f 100644 --- a/static/web/admin/config-server-details/index.html +++ b/static/web/admin/config-server-details/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Server Settings

        You should change your stream key from the default and keep it safe. For most people it's likely the other settings will not need to be changed.

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Server Settings

        You should change your stream key from the default and keep it safe. For most people it's likely the other settings will not need to be changed.

        \ No newline at end of file diff --git a/static/web/admin/config-social-items/index.html b/static/web/admin/config-social-items/index.html index fc07e3e7c..91ea27faa 100644 --- a/static/web/admin/config-social-items/index.html +++ b/static/web/admin/config-social-items/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Social Items

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Social Items

        \ No newline at end of file diff --git a/static/web/admin/config-storage/index.html b/static/web/admin/config-storage/index.html index 65722e45d..03b1d9b7f 100644 --- a/static/web/admin/config-storage/index.html +++ b/static/web/admin/config-storage/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Storage

        Owncast supports optionally using external storage providers to stream your video. Learn more about this by visiting our Storage Documentation.

        Configuring this incorrectly will likely cause your video to be unplayable. Double check the documentation for your storage provider on how to configure the bucket you created for Owncast.

        Keep in mind this is for live streaming, not for archival, recording or VOD purposes.

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Storage

        Owncast supports optionally using external storage providers to stream your video. Learn more about this by visiting our Storage Documentation.

        Configuring this incorrectly will likely cause your video to be unplayable. Double check the documentation for your storage provider on how to configure the bucket you created for Owncast.

        Keep in mind this is for live streaming, not for archival, recording or VOD purposes.

        \ No newline at end of file diff --git a/static/web/admin/config-video/index.html b/static/web/admin/config-video/index.html index 85498233b..33f40a96d 100644 --- a/static/web/admin/config-video/index.html +++ b/static/web/admin/config-video/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Video configuration

        Before changing your video configuration visit the video documentation to learn how it impacts your stream performance. The general rule is to start conservatively by having one middle quality stream output variant and experiment with adding more of varied qualities.

        Stream output

        NameVideo bitrateCPU Usage
        No name800 kbpsMedium

        Latency Buffer

        While it's natural to want to keep your latency as low as possible, you may experience reduced error tolerance and stability the lower you go. The lowest setting is not recommended.

        For interactive live streams you may want to experiment with a lower latency, for non-interactive broadcasts you may want to increase it. Read to learn more.

        LowestHighest

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Video configuration

        Before changing your video configuration visit the video documentation to learn how it impacts your stream performance. The general rule is to start conservatively by having one middle quality stream output variant and experiment with adding more of varied qualities.

        Stream output

        NameVideo bitrateCPU Usage
        No name800 kbpsMedium

        Latency Buffer

        While it's natural to want to keep your latency as low as possible, you may experience reduced error tolerance and stability the lower you go. The lowest setting is not recommended.

        For interactive live streams you may want to experiment with a lower latency, for non-interactive broadcasts you may want to increase it. Read to learn more.

        LowestHighest

        \ No newline at end of file diff --git a/static/web/admin/federation/actions/index.html b/static/web/admin/federation/actions/index.html index 268161650..98f672d26 100644 --- a/static/web/admin/federation/actions/index.html +++ b/static/web/admin/federation/actions/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Fediverse Actions

        Below is a list of actions that were taken by others in response to your posts as well as people who requested to follow you.
        ActionFromWhen
        No Data
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Fediverse Actions

        Below is a list of actions that were taken by others in response to your posts as well as people who requested to follow you.
        ActionFromWhen
        No Data
        \ No newline at end of file diff --git a/static/web/admin/federation/followers/index.html b/static/web/admin/federation/followers/index.html index d35d41891..e4978c241 100644 --- a/static/web/admin/federation/followers/index.html +++ b/static/web/admin/federation/followers/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        The following accounts get notified when you go live or send a post.

        NameURL
        Added
        Remove
        No Data
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        The following accounts get notified when you go live or send a post.

        NameURL
        Added
        Remove
        No Data
        \ No newline at end of file diff --git a/static/web/admin/hardware-info/index.html b/static/web/admin/hardware-info/index.html index e9a78c2fe..983e7578d 100644 --- a/static/web/admin/hardware-info/index.html +++ b/static/web/admin/hardware-info/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Hardware Info


        CPU
        0%
        Memory
        0%
        Disk
        0%
        Loading...
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Hardware Info


        CPU
        0%
        Memory
        0%
        Disk
        0%
        Loading...
        \ No newline at end of file diff --git a/static/web/admin/help/index.html b/static/web/admin/help/index.html index fcc036749..7d2c0915d 100644 --- a/static/web/admin/help/index.html +++ b/static/web/admin/help/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        How can we help you?

        Troubleshooting

        Fix your problems

        Documentation

        Read the Docs

        Common tasks

        I want to configure my owncast instance
        Help configuring my broadcasting software
        I want to embed my stream into another site
        I want to customize my website
        I want to tweak my video output
        I want to use an external storage provider

        Other

        I found a bug
        If you found a bug, then please let us know
        I have a general question
        Most general questions are answered in our FAQ or exist in our discussions
        I want to build add-ons for Owncast
        You can build your own bots, overlays, tools and add-ons with our developer APIs. 
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        How can we help you?

        Troubleshooting

        Fix your problems

        Documentation

        Read the Docs

        Common tasks

        I want to configure my owncast instance
        Help configuring my broadcasting software
        I want to embed my stream into another site
        I want to customize my website
        I want to tweak my video output
        I want to use an external storage provider

        Other

        I found a bug
        If you found a bug, then please let us know
        I have a general question
        Most general questions are answered in our FAQ or exist in our discussions
        I want to build add-ons for Owncast
        You can build your own bots, overlays, tools and add-ons with our developer APIs. 
        \ No newline at end of file diff --git a/static/web/admin/index.html b/static/web/admin/index.html index 7ad045ec8..c1a06a514 100644 --- a/static/web/admin/index.html +++ b/static/web/admin/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        No stream is active

        You should start one.

        Use your broadcasting software
        Chat is disabled
        Chat will continue to be disabled until you begin a live stream.
        Find an audience on the Owncast Directory
        List yourself in the Owncast Directory and show off your stream. Enable it in settings.
        fediverse
        Add your Owncast instance to the Fediverse
        Enable Owncast social features to have your instance join the Fediverse, allowing people to follow, share and engage with your live stream.

        News & Updates from Owncast

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        No stream is active

        You should start one.

        Use your broadcasting software
        Chat is disabled
        Chat will continue to be disabled until you begin a live stream.
        Find an audience on the Owncast Directory
        List yourself in the Owncast Directory and show off your stream. Enable it in settings.
        fediverse
        Add your Owncast instance to the Fediverse
        Enable Owncast social features to have your instance join the Fediverse, allowing people to follow, share and engage with your live stream.

        News & Updates from Owncast

        \ No newline at end of file diff --git a/static/web/admin/logs/index.html b/static/web/admin/logs/index.html index c6f42ac5d..979973c33 100644 --- a/static/web/admin/logs/index.html +++ b/static/web/admin/logs/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline
        \ No newline at end of file diff --git a/static/web/admin/stream-health/index.html b/static/web/admin/stream-health/index.html index 13490868f..577db25d0 100644 --- a/static/web/admin/stream-health/index.html +++ b/static/web/admin/stream-health/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Stream Performance

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Stream Performance

        \ No newline at end of file diff --git a/static/web/admin/upgrade/index.html b/static/web/admin/upgrade/index.html index ad06cb32a..5fd3ed5f1 100644 --- a/static/web/admin/upgrade/index.html +++ b/static/web/admin/upgrade/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Thu Jan 01 1970

        Downloads

        NameSize
        No Data
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Thu Jan 01 1970

        Downloads

        NameSize
        No Data
        \ No newline at end of file diff --git a/static/web/admin/viewer-info/index.html b/static/web/admin/viewer-info/index.html index cfdb49c15..61c08d912 100644 --- a/static/web/admin/viewer-info/index.html +++ b/static/web/admin/viewer-info/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Viewer Info


        Max viewers last stream
        0
        All-time max viewers
        0
        User AgentLocation
        Watch Time
        No Data
        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Viewer Info


        Max viewers last stream
        0
        All-time max viewers
        0
        User AgentLocation
        Watch Time
        No Data
        \ No newline at end of file diff --git a/static/web/admin/webhooks/index.html b/static/web/admin/webhooks/index.html index ecfdf1438..0d040f3f8 100644 --- a/static/web/admin/webhooks/index.html +++ b/static/web/admin/webhooks/index.html @@ -1 +1 @@ -Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Webhooks

        A webhook is a callback made to an external API in response to an event that takes place within Owncast. This can be used to build chat bots or sending automatic notifications that you've started streaming.
        Read more about how to use webhooks, with examples, at our documentation.
        URLEvents
        No Data

        \ No newline at end of file +Owncast Admin

        What is your stream about today?

        What is your stream about today?
        Offline

        Webhooks

        A webhook is a callback made to an external API in response to an event that takes place within Owncast. This can be used to build chat bots or sending automatic notifications that you've started streaming.
        Read more about how to use webhooks, with examples, at our documentation.
        URLEvents
        No Data

        \ No newline at end of file diff --git a/static/web/embed/chat/readonly/index.html b/static/web/embed/chat/readonly/index.html index 1e75e2890..7cffdc694 100644 --- a/static/web/embed/chat/readonly/index.html +++ b/static/web/embed/chat/readonly/index.html @@ -1 +1 @@ -
        \ No newline at end of file +
        \ No newline at end of file diff --git a/static/web/embed/chat/readwrite/index.html b/static/web/embed/chat/readwrite/index.html index 30fddb96b..445122f49 100644 --- a/static/web/embed/chat/readwrite/index.html +++ b/static/web/embed/chat/readwrite/index.html @@ -1 +1 @@ -
        \ No newline at end of file +
        \ No newline at end of file diff --git a/static/web/embed/video/index.html b/static/web/embed/video/index.html index 7f946fa33..fd0250a3e 100644 --- a/static/web/embed/video/index.html +++ b/static/web/embed/video/index.html @@ -1 +1 @@ -
        This stream is offline. Check back soon!
        \ No newline at end of file +
        This stream is offline. Check back soon!
        \ No newline at end of file diff --git a/static/web/index.html b/static/web/index.html index 7fa5094a2..382a900da 100644 --- a/static/web/index.html +++ b/static/web/index.html @@ -1,4 +1,4 @@ {{.Name}}
        Chat offline
        Logo
        Preview
        \ No newline at end of file + {{.Name}}
        Chat offline
        Logo
        Preview
        \ No newline at end of file