diff --git a/docs/bundle.js b/docs/bundle.js index 23872dc..797d9e8 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -1 +1 @@ -var emojiPickerElement=function(e){"use strict";function t(e){if("string"!=typeof e||!e)throw new Error("expected a non-empty string, got: "+e)}function n(e){if("number"!=typeof e)throw new Error("expected a number, got: "+e)}const o="eTag",i="url";function r(e){return function(e,t){const n=new Set,o=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),o.push(i))}return o}(e,e=>e.unicode)}const a=[{version:1,migration:function(e,t,n){function o(t,n,o){const i=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(o)for(const[e,[t,n]]of Object.entries(o))i.createIndex(e,t,{multiEntry:n});return i}o("keyvalue"),o("emoji","unicode",{tokens:["tokens",!0],"group-order":[["group","order"]],skinUnicodes:["skinUnicodes",!0]}),o("favorites",void 0,{count:[""]}),n()}}],s={},c={},l={};function u(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}function d(e){return c[e]||(c[e]=async function(e){const t=await new Promise((t,n)=>{const o=indexedDB.open(e,1);s[e]=o,o.onupgradeneeded=e=>{const t=o.result,n=e.currentTarget.transaction,i=a.filter(({version:t})=>e.oldVersionm(e),t}(e)),c[e]}function f(e,t,n,o){return new Promise((i,r)=>{const a=e.transaction(t,n),s="string"==typeof t?a.objectStore(t):t.map(e=>a.objectStore(e));let c;o(s,e=>{c=e}),a.oncomplete=()=>i(c),a.onerror=()=>r(a.error)})}function m(e){const t=s[e],n=t&&t.result;if(n){n.close();const t=l[e];if(t)for(const e of t)e()}delete s[e],delete c[e],delete l[e]}const h=new Set([":D","xD",":'D","o:)",":x",":p",";p","xp",":l",":z",":j","8D","xo","8)",":B",":o",":s",":'o","Dx","x(","D:",":c",">0)",":3","!e.match(/\w/)||h.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}function g(e,t,n,o){e[t](n).onsuccess=e=>o&&o(e.target.result)}function b(e,t,n){g(e,"get",t,n)}function y(e,t,n){g(e,"getAll",t,n)}function w(e,t){const n=function(e,t){let n=e[0];for(let o=1;ot(i)&&(n=i)}return n}(e,e=>e.length),o=[];for(const i of n)e.some(e=>-1===e.findIndex(e=>t(e)===t(i)))||o.push(i);return o}async function v(e,t,n,r){try{const a=function(e){return e.map(({annotation:e,emoticon:t,group:n,order:o,shortcodes:i,skins:r,tags:a,emoji:s,version:c})=>{const l=[...new Set([...i.map(p).flat(),...a.map(p).flat(),...p(e),t].filter(Boolean).map(e=>e.toLowerCase()).filter(e=>e.length>=2))].sort(),u={annotation:e,group:n,order:o,shortcodes:i,tags:a,tokens:l,unicode:s,version:c};if(t&&(u.emoticon=t),r){u.skinTones=[],u.skinUnicodes=[],u.skinVersions=[];for(const{tone:e,emoji:t,version:n}of r)u.skinTones.push(e),u.skinUnicodes.push(t),u.skinVersions.push(n)}return u})}(t);await f(e,["emoji","keyvalue"],"readwrite",([e,t])=>{let s,c,l,u=0;function d(){3==++u&&function(){if(s===r&&c===n)return;for(const t of l)e.delete(t);for(const t of a)e.put(t);t.put(r,o),t.put(n,i)}()}b(t,o,e=>{s=e,d()}),b(t,i,e=>{c=e,d()}),g(e,"getAllKeys",void 0,e=>{l=e,d()})})}finally{}}async function k(e,t){const n=p(t);return f(e,"emoji","readonly",(e,t)=>{const o=[],i=()=>{const e=w(o,e=>e.unicode);t(e.sort((e,t)=>e.order{o.push(e),o.length===n.length&&i()})}})}function j(e,t,n){return f(e,t,"readonly",(e,t)=>b(e,n,t))}const $=["name","shortcodes","url"];function x(e){!function(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||$.some(t=>!(t in e[0])));if(!t||n)throw new Error("Expected custom emojis to be in correct format")}(e);const t=(e,t)=>e.name.toLowerCase(){let o=n;for(let t=0;te[0][...new Set(e.shortcodes.map(e=>p(e)).flat())]),i=e=>o(e,!0),r=e=>o(e,!1),a=new Map,s=new Map;for(const t of e){s.set(t.name.toLowerCase(),t);for(const e of t.shortcodes)a.set(e.toLowerCase(),t)}return{all:n,search:e=>{const n=p(e);return w(n.map((e,t)=>(te.name).sort(t)},byShortcode:e=>a.get(e.toLowerCase()),byName:e=>s.get(e.toLowerCase())}}function E(e){if(!e)return e;if(delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n!(t in e[0])))throw new Error("Expected emojibase full (not compact) data, but data is in wrong format")}(o),[n,o]}async function z(e){const t=function(e){for(var t=e.length,n=new ArrayBuffer(t),o=new Uint8Array(n),i=-1;++ij(e,"keyvalue",t)));return r===n&&a===t}(e,t,r));else{if(!n){n=(await L(t))[1]}await v(e,n,t,r)}}class A{constructor({dataSource:e="https://cdn.jsdelivr.net/npm/emojibase-data@5/en/data.json",locale:t="en",customEmoji:n=[]}={}){this.dataSource=e,this.locale=t,this._dbName="emoji-picker-element-"+this.locale,this._db=void 0,this._lazyUpdate=void 0,this._custom=x(n),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const e=this._db=await d(this._dbName);!function(e,t){let n=l[e];n||(n=l[e]=[]),n.push(t)}(this._dbName,this._clear);const t=this.dataSource;await async function(e){return!await j(e,"keyvalue",i)}(e)?await async function(e,t){let[n,o]=await L(t);n||(n=await z(o)),await v(e,o,t,n)}(e,t):this._lazyUpdate=C(e,t)}async ready(){return this._ready||(this._ready=this._init()),this._ready}async getEmojiByGroup(e){return n(e),await this.ready(),r(await async function(e,t){return f(e,"emoji","readonly",(e,n)=>{const o=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);y(e.index("group-order"),o,n)})}(this._db,e)).map(E)}async getEmojiBySearchQuery(e){t(e),await this.ready();return[...this._custom.search(e),...r(await k(this._db,e)).map(E)]}async getEmojiByShortcode(e){t(e),await this.ready();const n=this._custom.byShortcode(e);return n||E(await async function(e,t){return(await k(e,t)).filter(e=>e.shortcodes.map(e=>e.toLowerCase()).includes(t.toLowerCase()))[0]||null}(this._db,e))}async getEmojiByUnicodeOrName(e){t(e),await this.ready();const n=this._custom.byName(e);return n||E(await async function(e,t){return f(e,"emoji","readonly",(e,n)=>b(e,t,o=>{if(o)return n(o);b(e.index("skinUnicodes"),t,e=>n(e||null))}))}(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await j(this._db,"keyvalue","skinTone")||0}async setPreferredSkinTone(e){return n(e),await this.ready(),t=this._db,o="skinTone",i=e,f(t,"keyvalue","readwrite",e=>e.put(i,o));var t,o,i}async incrementFavoriteEmojiCount(e){return t(e),await this.ready(),n=this._db,o=e,f(n,"favorites","readwrite",e=>{b(e,o,t=>e.put((t||0)+1,o))});var n,o}async getTopFavoriteEmoji(e){return n(e),await this.ready(),(await function(e,t,n){return 0===n?[]:f(e,["favorites","emoji"],"readonly",([e,o],i)=>{const r=[];e.index("count").openCursor(void 0,"prev").onsuccess=e=>{const a=e.target.result;if(!a)return i(r);function s(e){if(r.push(e),r.length===n)return i(r);a.continue()}const c=a.primaryKey,l=t.byName(c);if(l)return s(l);b(o,c,e=>{if(e)return s(e);a.continue()})}})}(this._db,this._custom,e)).map(E)}set customEmoji(e){this._custom=x(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}if(this._db)return!0}_clear(){this._dbName,this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown()&&await m(this._dbName)}async delete(){var e;await this._shutdown()&&await(e=this._dbName,new Promise((t,n)=>{m(e),u(t,n,indexedDB.deleteDatabase(e))}))}}function D(){}function B(e){return e()}function M(){return Object.create(null)}function U(e){e.forEach(B)}function N(e){return"function"==typeof e}function P(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function R(e){return e&&N(e.destroy)?e.destroy:D}function I(e,t){e.appendChild(t)}function O(e,t,n){e.insertBefore(t,n||null)}function F(e){e.parentNode.removeChild(e)}function V(e){return document.createElement(e)}function H(e){return document.createTextNode(e)}function K(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function Y(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function q(e,t){t=""+t,e.data!==t&&(e.data=t)}function W(e,t){(null!=t||e.value)&&(e.value=t)}function G(e,t,n,o){e.style.setProperty(t,n,o?"important":"")}let Q;function X(e){Q=e}function J(){if(!Q)throw new Error("Function called outside component initialization");return Q}const Z=[],ee=[],te=[],ne=[],oe=Promise.resolve();let ie=!1;function re(){ie||(ie=!0,oe.then(ue))}function ae(){return re(),oe}function se(e){te.push(e)}let ce=!1;const le=new Set;function ue(){if(!ce){ce=!0;do{for(let e=0;ey.get(i)?(v.add(o),k(t)):(w.add(i),f--):(c(n,a),f--)}for(;f--;){const t=e[f];b.has(t.key)||c(t,a)}for(;m;)k(g[m-1]);return g}function be(e,t,n,o,i,r,a=[-1]){const s=Q;X(e);const c=t.props||{},l=e.$$={fragment:null,ctx:null,props:r,update:D,not_equal:i,bound:M(),on_mount:[],on_destroy:[],before_update:[],after_update:[],context:new Map(s?s.$$.context:[]),callbacks:M(),dirty:a};let u=!1;if(l.ctx=n?n(e,c,(t,n,...o)=>{const r=o.length?o[0]:n;return l.ctx&&i(l.ctx[t],l.ctx[t]=r)&&(l.bound[t]&&l.bound[t](r),u&&function(e,t){-1===e.$$.dirty[0]&&(Z.push(e),re(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const t=i.map(B).filter(N);r?r.push(...t):U(t),e.$$.on_mount=[]}),a.forEach(se)}(e,t.target,t.anchor),ue()}X(s)}let ye;"function"==typeof HTMLElement&&(ye=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){for(const e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(e,t,n){this[e]=n}$destroy(){!function(e,t){const n=e.$$;null!==n.fragment&&(U(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}(this,1),this.$destroy=D}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(){}});var we={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji. Try refreshing.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const ve=[[-1,"✨","custom"],[0,"πŸ˜€","smileys-emotion"],[1,"πŸ‘‹","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"πŸ“","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map(([e,t,n])=>({id:e,emoji:t,name:n})),ke=ve.slice(1),je=ve[0],$e="function"==typeof requestIdleCallback?requestIdleCallback:setTimeout;function xe(e){return e.unicode.includes("‍")}const Ee={"πŸ˜ƒ":.6,"😐️":.7,"πŸ˜€":1,"πŸ‘οΈβ€πŸ—¨οΈ":2,"🀣":3,"πŸ‘±β€β™€οΈ":4,"🀩":5,"πŸ₯°":11,"πŸ₯»":12,"πŸ§‘β€πŸ¦°":12.1,"πŸ₯²":13},_e="πŸ–οΈ",Te=["😊","πŸ˜’","β™₯️","πŸ‘οΈ","😍","πŸ˜‚","😭","☺️","πŸ˜”","😩","😏","πŸ’•","πŸ™Œ","😘"],Se='"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Twemoji Mozilla","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Le=(e,t)=>{try{const n=document.createElement("canvas");n.width=n.height=1;const o=n.getContext("2d");return o.textBaseline="top",o.font="100px "+Se,o.fillStyle=t,o.scale(.01,.01),o.fillText(e,0,0),o.getImageData(0,0,1,1).data}catch(e){}};function ze(e){const t=Le(e,"#000"),n=Le(e,"#fff");return t&&n&&((e,t)=>{const n=[...e].join(",");return n===[...t].join(",")&&"0,0,0,0"!==n})(t,n)}const Ce=new Promise(e=>$e(()=>e(function(){let e;for(const[t,n]of Object.entries(Ee)){if(!ze(t))break;e=n}return e}()))),Ae=new Map;function De(e){e.preventDefault(),e.stopPropagation()}function Be(e,t,n){return(t+=e?-1:1)<0?t=n.length-1:t>=n.length&&(t=0),t}function Me(e,t){const n=new Set,o=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),o.push(i))}return o}const Ue=requestAnimationFrame,Ne="function"==typeof ResizeObserver;function Pe(e,t){let n;return Ne?(n=new ResizeObserver(e=>t(e[0].contentRect.width)),n.observe(e)):Ue(()=>t(e.getBoundingClientRect().width)),{destroy(){n&&n.disconnect()}}}function Re(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let Ie;const{Map:Oe}=he;function Fe(e,t,n){const o=e.slice();return o[64]=t[n],o[66]=n,o}function Ve(e,t,n){const o=e.slice();return o[64]=t[n],o[66]=n,o}function He(e,t,n){const o=e.slice();return o[67]=t[n],o[66]=n,o}function Ke(e,t,n){const o=e.slice();return o[70]=t[n],o}function Ye(e,t,n){const o=e.slice();return o[73]=t[n],o[66]=n,o}function qe(e,t){let n,o,i,r,a,s,c,l=t[73]+"";return{key:e,first:null,c(){n=V("div"),o=H(l),Y(n,"id",i="skintone-"+t[66]),Y(n,"class",r="emoji skintone-option cursor-pointer hide-focus "+(t[66]===t[15]?"active":"")),Y(n,"aria-selected",a=t[66]===t[15]),Y(n,"role","option"),Y(n,"title",s=t[0].skinTones[t[66]]),Y(n,"tabindex","-1"),Y(n,"aria-label",c=t[0].skinTones[t[66]]),this.first=n},m(e,t){O(e,n,t),I(n,o)},p(e,t){524288&t[0]&&l!==(l=e[73]+"")&&q(o,l),524288&t[0]&&i!==(i="skintone-"+e[66])&&Y(n,"id",i),557056&t[0]&&r!==(r="emoji skintone-option cursor-pointer hide-focus "+(e[66]===e[15]?"active":""))&&Y(n,"class",r),557056&t[0]&&a!==(a=e[66]===e[15])&&Y(n,"aria-selected",a),524289&t[0]&&s!==(s=e[0].skinTones[e[66]])&&Y(n,"title",s),524289&t[0]&&c!==(c=e[0].skinTones[e[66]])&&Y(n,"aria-label",c)},d(e){e&&F(n)}}}function We(e,t){let n,o,i,r,a,s,c,l,u=t[70].emoji+"";function d(...e){return t[60](t[70],...e)}return{key:e,first:null,c(){n=V("button"),o=V("div"),i=H(u),Y(o,"class","emoji"),Y(n,"role","tab"),Y(n,"class","nav-button"),Y(n,"aria-controls",r="tab-"+t[70].id),Y(n,"aria-label",a=t[0].categories[t[70].name]),Y(n,"aria-selected",s=!t[7]&&t[23].id===t[70].id),Y(n,"title",c=t[0].categories[t[70].name]),this.first=n},m(e,t,r){O(e,n,t),I(n,o),I(o,i),r&&l(),l=K(n,"click",d)},p(e,o){t=e,4194304&o[0]&&u!==(u=t[70].emoji+"")&&q(i,u),4194304&o[0]&&r!==(r="tab-"+t[70].id)&&Y(n,"aria-controls",r),4194305&o[0]&&a!==(a=t[0].categories[t[70].name])&&Y(n,"aria-label",a),12583040&o[0]&&s!==(s=!t[7]&&t[23].id===t[70].id)&&Y(n,"aria-selected",s),4194305&o[0]&&c!==(c=t[0].categories[t[70].name])&&Y(n,"title",c)},d(e){e&&F(n),l()}}}function Ge(e){let t;return{c(){t=V("div"),Y(t,"class","custom-emoji"),G(t,"background-image","url("+e[64].url+")")},m(e,n){O(e,t,n)},p(e,n){4&n[0]&&G(t,"background-image","url("+e[64].url+")")},d(e){e&&F(t)}}}function Qe(e){let t,n=ot(e[64],e[14])+"";return{c(){t=H(n)},m(e,n){O(e,t,n)},p(e,o){16388&o[0]&&n!==(n=ot(e[64],e[14])+"")&&q(t,n)},d(e){e&&F(t)}}}function Xe(e,t){let n,o,i,r,a,s,c;function l(e,t){return e[64].unicode?Qe:Ge}let u=l(t),d=u(t);return{key:e,first:null,c(){n=V("button"),d.c(),Y(n,"role",o=t[7]?"option":"menuitem"),Y(n,"aria-selected",i=t[7]?t[66]==t[8]:""),Y(n,"aria-label",r=t[26](t[64],t[14])),Y(n,"title",a=t[64].title),Y(n,"class",s="emoji "+(t[7]&&t[66]===t[8]?"active":"")),Y(n,"id",c="emo-"+t[64].id),this.first=n},m(e,t){O(e,n,t),d.m(n,null)},p(e,t){u===(u=l(e))&&d?d.p(e,t):(d.d(1),d=u(e),d&&(d.c(),d.m(n,null))),128&t[0]&&o!==(o=e[7]?"option":"menuitem")&&Y(n,"role",o),388&t[0]&&i!==(i=e[7]?e[66]==e[8]:"")&&Y(n,"aria-selected",i),16388&t[0]&&r!==(r=e[26](e[64],e[14]))&&Y(n,"aria-label",r),4&t[0]&&a!==(a=e[64].title)&&Y(n,"title",a),388&t[0]&&s!==(s="emoji "+(e[7]&&e[66]===e[8]?"active":""))&&Y(n,"class",s),4&t[0]&&c!==(c="emo-"+e[64].id)&&Y(n,"id",c)},d(e){e&&F(n),d.d()}}}function Je(e,t){let n,o,i,r,a,s,c,l,u,d,f=(t[7]?t[0].searchResultsLabel:t[67].category?t[67].category:t[2].length>1?t[0].categories.custom:t[0].categories[t[23].name])+"",m=[],h=new Oe,p=t[67].emojis;const g=e=>e[64].id;for(let e=0;e1?"":"gone")),Y(n,"aria-hidden","true"),Y(a,"class","emoji-menu"),Y(a,"role",s=t[7]?"listbox":"menu"),Y(a,"aria-labelledby",c="menu-label-"+t[66]),Y(a,"id",l=t[7]?"search-results":""),this.first=n},m(e,i,r){O(e,n,i),I(n,o),O(e,a,i);for(let e=0;e1?e[0].categories.custom:e[0].categories[e[23].name])+"")&&q(o,f),4&t[0]&&i!==(i="menu-label-"+e[66])&&Y(n,"id",i),4&t[0]&&r!==(r="category "+(e[2].length>1?"":"gone"))&&Y(n,"class",r),67125636&t[0]){const n=e[67].emojis;m=ge(m,t,g,1,e,n,h,a,pe,Xe,null,Ve)}128&t[0]&&s!==(s=e[7]?"listbox":"menu")&&Y(a,"role",s),4&t[0]&&c!==(c="menu-label-"+e[66])&&Y(a,"aria-labelledby",c),128&t[0]&&l!==(l=e[7]?"search-results":"")&&Y(a,"id",l)},d(e){e&&F(n),e&&F(a);for(let e=0;ee[73];for(let t=0;te[70].id;for(let t=0;te[67].category;for(let t=0;te[64].id;for(let t=0;tt.getElementById("emo-"+e.id)),n(1,w=w)}function H(e){return!e.unicode||!xe(e)||Ae.get(e.unicode)}async function K(e){const t=await Ce;return e.filter(({version:e})=>!e||e<=t)}async function Y(e){return function(e,t){const n=e=>{const n={};for(const o of e)"number"==typeof o.tone&&o.version<=t&&(n[o.tone]=o.unicode);return n};return e.map(({unicode:e,skins:t,shortcodes:o,url:i,name:r,category:a})=>({unicode:e,name:r,shortcodes:o,url:i,category:a,id:e||r,skins:t&&n(t),title:o.join(", ")}))}(e,await Ce)}async function q(e){if(void 0===e)return[];const t=-1===e?y:await b.getEmojiByGroup(e);return Y(await K(t))}async function W(e){return Y(await K(await b.getEmojiBySearchQuery(e)))}function G(e){n(3,k=""),n(44,j=""),n(8,x=-1),n(48,N=P.findIndex(t=>t.id===e.id))}async function Q(e){const t=await b.getEmojiByUnicodeOrName(e),o=[...w,...B].find(t=>t.id===e),i=o.unicode&&ot(o,L);await b.incrementFavoriteEmojiCount(e),n(46,u=u),O("emoji-click",{emoji:t,skinTone:L,...i&&{unicode:i},...o.name&&{name:o.name}})}async function X(e){const{target:t}=e;if(!t.classList.contains("skintone-option"))return;De(e);const o=parseInt(t.id.slice(9),10);n(14,L=o),n(11,T=!1),I("skintone-button"),O("skin-tone-change",{skinTone:o}),b.setPreferredSkinTone(o)}Ce.then(e=>{e||n(9,a=g.emojiUnsupportedMessage)}),F=async()=>{await ae(),n(38,m=m||"en"),n(39,h=h||"https://cdn.jsdelivr.net/npm/emojibase-data@5/en/data.json")},J().$$.on_mount.push(F),function(e){J().$$.on_destroy.push(e)}(async()=>{b&&await b.close()});return e.$set=e=>{"locale"in e&&n(38,m=e.locale),"dataSource"in e&&n(39,h=e.dataSource),"skinToneEmoji"in e&&n(41,p=e.skinToneEmoji),"i18n"in e&&n(0,g=e.i18n),"database"in e&&n(40,b=e.database),"customEmoji"in e&&n(42,y=e.customEmoji)},e.$$.update=()=>{if(896&e.$$.dirty[1]&&m&&h&&(!b||b.locale!==m&&b.dataSource!==h)&&n(40,b=new A({dataSource:h,locale:m})),2560&e.$$.dirty[1]&&y&&b&&n(40,b.customEmoji=y,b),513&e.$$.dirty[0]|512&e.$$.dirty[1]){b&&async function(){const e=setTimeout(()=>{n(9,a=g.loadingMessage)},1e3);try{await b.ready(),n(24,R=!0)}catch(e){console.error(e),n(9,a=g.networkErrorMessage)}finally{clearTimeout(e),a===g.loadingMessage&&n(9,a="")}}()}if(4194304&e.$$.dirty[0]|2048&e.$$.dirty[1]&&(y&&y.length?n(22,P=[je,...ke]):P!==ke&&n(22,P=ke)),8&e.$$.dirty[0]&&$e(()=>{n(44,j=(k||"").trim()),n(8,x=-1)}),4194304&e.$$.dirty[0]|131072&e.$$.dirty[1]&&n(23,d=P[N]),8388608&e.$$.dirty[0]|8704&e.$$.dirty[1]){!async function(){b?j.length>=2?(n(1,w=await W(j)),n(7,$=!0)):d&&(n(1,w=await q(d.id)),n(7,$=!1)):(n(1,w=[]),n(7,$=!1))}()}if(4194432&e.$$.dirty[0]&&n(17,l=`\n --font-family: ${Se};\n --num-groups: ${P.length}; \n --indicator-opacity: ${$?0:1}; \n --num-skintones: 6;`),512&e.$$.dirty[1]){!async function(){b&&n(14,L=await b.getPreferredSkinTone())}()}if(1024&e.$$.dirty[1]&&n(19,D=Array(6).fill().map((e,t)=>function(e,t){if(0===t)return e;const n=e.indexOf("‍");return-1!==n?e.substring(0,n)+String.fromCodePoint(127995+t-1)+e.substring(n):(e.endsWith("️")&&(e=e.substring(0,e.length-1)),e+"\ud83c"+String.fromCodePoint(57339+t-1))}(p,t))),540672&e.$$.dirty[0]&&n(16,c=D[L]),16385&e.$$.dirty[0]&&n(18,C=g.skinToneLabel.replace("{skinTone}",g.skinTones[L])),512&e.$$.dirty[1]){b&&async function(){n(46,u=(await Promise.all(Te.map(e=>b.getEmojiByUnicodeOrName(e)))).filter(Boolean))}()}if(98816&e.$$.dirty[1]){b&&u&&async function(){const e=await b.getTopFavoriteEmoji(M),t=await Y(Me([...e,...u],e=>e.unicode||e.name).slice(0,M));n(20,B=t)}()}if(147456&e.$$.dirty[1]&&n(10,_=Ne?`transform: translateX(${N*E}px);`:`transform: translateX(${100*N}%);`),2&e.$$.dirty[0]){const e=w.filter(e=>e.unicode).filter(e=>xe(e)&&!Ae.has(e.unicode));e.length?Ue(()=>V(e)):(n(1,w=w.filter(H)),Ue(()=>{n(6,r.scrollTop=0,r)}))}if(e.$$.dirty[0],e.$$.dirty[1],130&e.$$.dirty[0]){n(2,v=function(){if($)return[{category:"",emojis:w}];const e=new Map;for(const t of w){const n=t.category||"";let o=e.get(n);o||(o=[],e.set(n,o)),o.push(t)}return[...e.entries()].map(([e,t])=>({category:e,emojis:t})).sort((e,t)=>e.category{n(12,S=!0)},{once:!0}):n(12,S=!1))},[g,w,v,k,o,i,r,$,x,a,_,T,S,s,L,z,c,l,C,D,B,U,P,d,R,f,function(e,t){return(n=[e.name||ot(e,t),...e.shortcodes],Me(n,e=>e)).join(", ");var n},function(e){return Pe(e,t=>{const i=parseInt(getComputedStyle(o).getPropertyValue("--num-columns"),10),r=e.parentElement.getBoundingClientRect().width-t;n(47,M=i),n(21,U=r)})},function(e){return Pe(e,e=>{n(45,E=e)})},function(e){if(!$||!w.length)return;const t=t=>{De(e),n(8,x=Be(t,x,w))};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==x)return De(e),Q(w[x].id);w.length&&n(8,x=0)}},G,function(e){const{target:t,key:n}=e,o=t=>{t&&(De(e),t.focus())};switch(n){case"ArrowLeft":return o(t.previousSibling);case"ArrowRight":return o(t.nextSibling)}},async function(e){const{target:t}=e;if(!t.classList.contains("emoji"))return;De(e),Q(t.id.substring(4))},X,async function(e){n(11,T=!T),n(15,z=L),T&&(De(e),Ue(()=>I("skintone-"+z)))},function(e){if(!T)return;const t=async t=>{De(e),n(15,z=Be(t,z,D)),await ae(),I("skintone-"+z)};switch(e.key){case"ArrowUp":return t(!0);case"ArrowDown":return t(!1);case"Enter":return X(e)}},function(e){if(T)switch(e.key){case" ":return X(e)}},async function(e){const{relatedTarget:t}=e;t&&t.classList.contains("skintone-option")||n(11,T=!1)},m,h,b,p,y,!0,j,E,u,M,N,I,O,V,H,K,Y,q,W,Q,function(){k=this.value,n(3,k)},function(e){ee[e?"unshift":"push"](()=>{n(13,s=e)})},e=>G(e),function(e){ee[e?"unshift":"push"](()=>{n(6,r=e)})},function(e){ee[e?"unshift":"push"](()=>{n(5,i=e)})},function(e){ee[e?"unshift":"push"](()=>{n(4,o=e)})}]}class rt extends ye{constructor(e){super(),this.shadowRoot.innerHTML="",be(this,{target:this.shadowRoot},it,nt,P,{locale:38,dataSource:39,skinToneEmoji:41,i18n:0,database:40,customEmoji:42},[-1,-1,-1]),e&&(e.target&&O(e.target,this,e.anchor),e.props&&(this.$set(e.props),ue()))}static get observedAttributes(){return["locale","dataSource","skinToneEmoji","i18n","database","customEmoji"]}get locale(){return this.$$.ctx[38]}set locale(e){this.$set({locale:e}),ue()}get dataSource(){return this.$$.ctx[39]}set dataSource(e){this.$set({dataSource:e}),ue()}get skinToneEmoji(){return this.$$.ctx[41]}set skinToneEmoji(e){this.$set({skinToneEmoji:e}),ue()}get i18n(){return this.$$.ctx[0]}set i18n(e){this.$set({i18n:e}),ue()}get database(){return this.$$.ctx[40]}set database(e){this.$set({database:e}),ue()}get customEmoji(){return this.$$.ctx[42]}set customEmoji(e){this.$set({customEmoji:e}),ue()}}class at extends rt{constructor(e){super({props:e})}disconnectedCallback(){this.$destroy()}}return customElements.define("emoji-picker",at),e.Database=A,e.Picker=at,e}({}); +var emojiPickerElement=function(e){"use strict";function t(e){if("string"!=typeof e||!e)throw new Error("expected a non-empty string, got: "+e)}function n(e){if("number"!=typeof e)throw new Error("expected a number, got: "+e)}const o="eTag",i="url";function r(e){return function(e,t){const n=new Set,o=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),o.push(i))}return o}(e,e=>e.unicode)}const a={},s={},c={};function l(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}async function u(e){const t=await new Promise((t,n)=>{const o=indexedDB.open(e,1);a[e]=o,o.onupgradeneeded=e=>{const t=o.result;e.oldVersion<1&&function(e){function t(t,n,o){const i=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(o)for(const[e,[t,n]]of Object.entries(o))i.createIndex(e,t,{multiEntry:n});return i}t("keyvalue"),t("emoji","unicode",{tokens:["tokens",!0],"group-order":[["group","order"]],skinUnicodes:["skinUnicodes",!0]}),t("favorites",void 0,{count:[""]})}(t)},l(t,n,o)});return t.onclose=()=>f(e),t}function d(e,t,n,o){return new Promise((i,r)=>{const a=e.transaction(t,n),s="string"==typeof t?a.objectStore(t):t.map(e=>a.objectStore(e));let c;o(s,e=>{c=e}),a.oncomplete=()=>i(c),a.onerror=()=>r(a.error)})}function f(e){const t=a[e],n=t&&t.result;if(n){n.close();const t=c[e];if(t)for(const e of t)e()}delete a[e],delete s[e],delete c[e]}const h=new Set([":D","xD",":'D","o:)",":x",":p",";p","xp",":l",":z",":j","8D","xo","8)",":B",":o",":s",":'o","Dx","x(","D:",":c",">0)",":3","!e.match(/\w/)||h.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase()).filter(Boolean)}function p(e,t,n,o){e[t](n).onsuccess=e=>o&&o(e.target.result)}function g(e,t,n){p(e,"get",t,n)}function b(e,t,n){p(e,"getAll",t,n)}function y(e,t){const n=function(e,t){let n=e[0];for(let o=1;ot(i)&&(n=i)}return n}(e,e=>e.length),o=[];for(const i of n)e.some(e=>-1===e.findIndex(e=>t(e)===t(i)))||o.push(i);return o}async function k(e,t,n,r){try{const a=function(e){return e.map(({annotation:e,emoticon:t,group:n,order:o,shortcodes:i,skins:r,tags:a,emoji:s,version:c})=>{const l=[...new Set([...i.map(m).flat(),...a.map(m).flat(),...m(e),t].filter(Boolean).map(e=>e.toLowerCase()).filter(e=>e.length>=2))].sort(),u={annotation:e,group:n,order:o,shortcodes:i,tags:a,tokens:l,unicode:s,version:c};if(t&&(u.emoticon=t),r){u.skinTones=[],u.skinUnicodes=[],u.skinVersions=[];for(const{tone:e,emoji:t,version:n}of r)u.skinTones.push(e),u.skinUnicodes.push(t),u.skinVersions.push(n)}return u})}(t);await d(e,["emoji","keyvalue"],"readwrite",([e,t])=>{let s,c,l,u=0;function d(){3==++u&&function(){if(s===r&&c===n)return;for(const t of l)e.delete(t);for(const t of a)e.put(t);t.put(r,o),t.put(n,i)}()}g(t,o,e=>{s=e,d()}),g(t,i,e=>{c=e,d()}),p(e,"getAllKeys",void 0,e=>{l=e,d()})})}finally{}}async function w(e,t){const n=m(t);return d(e,"emoji","readonly",(e,t)=>{const o=[],i=()=>{const e=y(o,e=>e.unicode);t(e.sort((e,t)=>e.order{o.push(e),o.length===n.length&&i()})}})}function v(e,t,n){return d(e,t,"readonly",(e,t)=>g(e,n,t))}const j=["name","shortcodes","url"];function $(e){!function(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||j.some(t=>!(t in e[0])));if(!t||n)throw new Error("Expected custom emojis to be in correct format")}(e);const t=(e,t)=>e.name.toLowerCase(){let o=n;for(let t=0;te[0][...new Set(e.shortcodes.map(e=>m(e)).flat())]),i=e=>o(e,!0),r=e=>o(e,!1),a=new Map,s=new Map;for(const t of e){s.set(t.name.toLowerCase(),t);for(const e of t.shortcodes)a.set(e.toLowerCase(),t)}return{all:n,search:e=>{const n=m(e);return y(n.map((e,t)=>(te.name).sort(t)},byShortcode:e=>a.get(e.toLowerCase()),byName:e=>s.get(e.toLowerCase())}}function x(e){if(!e)return e;if(delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n!(t in e[0])))throw new Error("Expected emojibase full (not compact) data, but data is in wrong format")}(o),[n,o]}async function L(e){const t=function(e){for(var t=e.length,n=new ArrayBuffer(t),o=new Uint8Array(n),i=-1;++iv(e,"keyvalue",t)));return r===n&&a===t}(e,t,r));else{if(!n){n=(await S(t))[1]}await k(e,n,t,r)}}class C{constructor({dataSource:e="https://cdn.jsdelivr.net/npm/emojibase-data@5/en/data.json",locale:t="en",customEmoji:n=[]}={}){this.dataSource=e,this.locale=t,this._dbName="emoji-picker-element-"+this.locale,this._db=void 0,this._lazyUpdate=void 0,this._custom=$(n),this._clear=this._clear.bind(this),this._ready=this._init()}async _init(){const e=this._db=await(t=this._dbName,s[t]||(s[t]=u(t)),s[t]);var t;!function(e,t){let n=c[e];n||(n=c[e]=[]),n.push(t)}(this._dbName,this._clear);const n=this.dataSource;await async function(e){return!await v(e,"keyvalue",i)}(e)?await async function(e,t){let[n,o]=await S(t);n||(n=await L(o)),await k(e,o,t,n)}(e,n):this._lazyUpdate=z(e,n)}async ready(){return this._ready||(this._ready=this._init()),this._ready}async getEmojiByGroup(e){return n(e),await this.ready(),r(await async function(e,t){return d(e,"emoji","readonly",(e,n)=>{const o=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);b(e.index("group-order"),o,n)})}(this._db,e)).map(x)}async getEmojiBySearchQuery(e){t(e),await this.ready();return[...this._custom.search(e),...r(await w(this._db,e)).map(x)]}async getEmojiByShortcode(e){t(e),await this.ready();const n=this._custom.byShortcode(e);return n||x(await async function(e,t){return(await w(e,t)).filter(e=>e.shortcodes.map(e=>e.toLowerCase()).includes(t.toLowerCase()))[0]||null}(this._db,e))}async getEmojiByUnicodeOrName(e){t(e),await this.ready();const n=this._custom.byName(e);return n||x(await async function(e,t){return d(e,"emoji","readonly",(e,n)=>g(e,t,o=>{if(o)return n(o);g(e.index("skinUnicodes"),t,e=>n(e||null))}))}(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await v(this._db,"keyvalue","skinTone")||0}async setPreferredSkinTone(e){return n(e),await this.ready(),t=this._db,o="skinTone",i=e,d(t,"keyvalue","readwrite",e=>e.put(i,o));var t,o,i}async incrementFavoriteEmojiCount(e){return t(e),await this.ready(),n=this._db,o=e,d(n,"favorites","readwrite",e=>{g(e,o,t=>e.put((t||0)+1,o))});var n,o}async getTopFavoriteEmoji(e){return n(e),await this.ready(),(await function(e,t,n){return 0===n?[]:d(e,["favorites","emoji"],"readonly",([e,o],i)=>{const r=[];e.index("count").openCursor(void 0,"prev").onsuccess=e=>{const a=e.target.result;if(!a)return i(r);function s(e){if(r.push(e),r.length===n)return i(r);a.continue()}const c=a.primaryKey,l=t.byName(c);if(l)return s(l);g(o,c,e=>{if(e)return s(e);a.continue()})}})}(this._db,this._custom,e)).map(x)}set customEmoji(e){this._custom=$(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}if(this._db)return!0}_clear(){this._dbName,this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown()&&await f(this._dbName)}async delete(){var e;await this._shutdown()&&await(e=this._dbName,new Promise((t,n)=>{f(e),l(t,n,indexedDB.deleteDatabase(e))}))}}function A(){}function D(e){return e()}function B(){return Object.create(null)}function M(e){e.forEach(D)}function U(e){return"function"==typeof e}function N(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function P(e){return e&&U(e.destroy)?e.destroy:A}function R(e,t){e.appendChild(t)}function I(e,t,n){e.insertBefore(t,n||null)}function O(e){e.parentNode.removeChild(e)}function F(e){return document.createElement(e)}function V(e){return document.createTextNode(e)}function H(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function K(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function Y(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function q(e,t){e.value=null==t?"":t}function W(e,t,n,o){e.style.setProperty(t,n,o?"important":"")}let G;function Q(e){G=e}function X(){if(!G)throw new Error("Function called outside component initialization");return G}const J=[],Z=[],ee=[],te=[],ne=Promise.resolve();let oe=!1;function ie(){oe||(oe=!0,ne.then(le))}function re(){return ie(),ne}function ae(e){ee.push(e)}let se=!1;const ce=new Set;function le(){if(!se){se=!0;do{for(let e=0;ey.get(i)?(w.add(o),v(t)):(k.add(i),f--):(c(n,a),f--)}for(;f--;){const t=e[f];b.has(t.key)||c(t,a)}for(;h;)v(g[h-1]);return g}function ge(e,t,n,o,i,r,a=[-1]){const s=G;Q(e);const c=t.props||{},l=e.$$={fragment:null,ctx:null,props:r,update:A,not_equal:i,bound:B(),on_mount:[],on_destroy:[],before_update:[],after_update:[],context:new Map(s?s.$$.context:[]),callbacks:B(),dirty:a,skip_bound:!1};let u=!1;if(l.ctx=n?n(e,c,(t,n,...o)=>{const r=o.length?o[0]:n;return l.ctx&&i(l.ctx[t],l.ctx[t]=r)&&(!l.skip_bound&&l.bound[t]&&l.bound[t](r),u&&function(e,t){-1===e.$$.dirty[0]&&(J.push(e),ie(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const t=i.map(D).filter(U);r?r.push(...t):M(t),e.$$.on_mount=[]}),a.forEach(ae)}(e,t.target,t.anchor),le()}Q(s)}let be;"function"==typeof HTMLElement&&(be=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){for(const e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(e,t,n){this[e]=n}$destroy(){!function(e,t){const n=e.$$;null!==n.fragment&&(M(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}(this,1),this.$destroy=A}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}});var ye={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji. Try refreshing.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const ke=[[-1,"✨","custom"],[0,"πŸ˜€","smileys-emotion"],[1,"πŸ‘‹","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"πŸ“","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map(([e,t,n])=>({id:e,emoji:t,name:n})),we=ke.slice(1),ve=ke[0],je="function"==typeof requestIdleCallback?requestIdleCallback:setTimeout;function $e(e){return e.unicode.includes("‍")}const xe={"πŸ˜ƒ":.6,"😐️":.7,"πŸ˜€":1,"πŸ‘οΈβ€πŸ—¨οΈ":2,"🀣":3,"πŸ‘±β€β™€οΈ":4,"🀩":5,"πŸ₯°":11,"πŸ₯»":12,"πŸ§‘β€πŸ¦°":12.1,"πŸ₯²":13},Ee="πŸ–οΈ",_e=["😊","πŸ˜’","β™₯️","πŸ‘οΈ","😍","πŸ˜‚","😭","☺️","πŸ˜”","😩","😏","πŸ’•","πŸ™Œ","😘"],Te='"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Twemoji Mozilla","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Se=(e,t)=>{try{const n=document.createElement("canvas");n.width=n.height=1;const o=n.getContext("2d");return o.textBaseline="top",o.font="100px "+Te,o.fillStyle=t,o.scale(.01,.01),o.fillText(e,0,0),o.getImageData(0,0,1,1).data}catch(e){}};function Le(e){const t=Se(e,"#000"),n=Se(e,"#fff");return t&&n&&((e,t)=>{const n=[...e].join(",");return n===[...t].join(",")&&"0,0,0,0"!==n})(t,n)}const ze=new Promise(e=>je(()=>e(function(){let e;for(const[t,n]of Object.entries(xe)){if(!Le(t))break;e=n}return e}()))),Ce=new Map;function Ae(e){e.preventDefault(),e.stopPropagation()}function De(e,t,n){return(t+=e?-1:1)<0?t=n.length-1:t>=n.length&&(t=0),t}function Be(e,t){const n=new Set,o=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),o.push(i))}return o}const Me=requestAnimationFrame,Ue="function"==typeof ResizeObserver;function Ne(e,t){let n;return Ue?(n=new ResizeObserver(e=>t(e[0].contentRect.width)),n.observe(e)):Me(()=>t(e.getBoundingClientRect().width)),{destroy(){n&&n.disconnect()}}}function Pe(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}let Re;const{Map:Ie}=he;function Oe(e,t,n){const o=e.slice();return o[64]=t[n],o[66]=n,o}function Fe(e,t,n){const o=e.slice();return o[64]=t[n],o[66]=n,o}function Ve(e,t,n){const o=e.slice();return o[67]=t[n],o[66]=n,o}function He(e,t,n){const o=e.slice();return o[70]=t[n],o}function Ke(e,t,n){const o=e.slice();return o[73]=t[n],o[66]=n,o}function Ye(e,t){let n,o,i,r,a,s,c,l=t[73]+"";return{key:e,first:null,c(){n=F("div"),o=V(l),K(n,"id",i="skintone-"+t[66]),K(n,"class",r="emoji skintone-option cursor-pointer hide-focus "+(t[66]===t[15]?"active":"")),K(n,"aria-selected",a=t[66]===t[15]),K(n,"role","option"),K(n,"title",s=t[0].skinTones[t[66]]),K(n,"tabindex","-1"),K(n,"aria-label",c=t[0].skinTones[t[66]]),this.first=n},m(e,t){I(e,n,t),R(n,o)},p(e,t){524288&t[0]&&l!==(l=e[73]+"")&&Y(o,l),524288&t[0]&&i!==(i="skintone-"+e[66])&&K(n,"id",i),557056&t[0]&&r!==(r="emoji skintone-option cursor-pointer hide-focus "+(e[66]===e[15]?"active":""))&&K(n,"class",r),557056&t[0]&&a!==(a=e[66]===e[15])&&K(n,"aria-selected",a),524289&t[0]&&s!==(s=e[0].skinTones[e[66]])&&K(n,"title",s),524289&t[0]&&c!==(c=e[0].skinTones[e[66]])&&K(n,"aria-label",c)},d(e){e&&O(n)}}}function qe(e,t){let n,o,i,r,a,s,c,l,u,d=t[70].emoji+"";function f(...e){return t[45](t[70],...e)}return{key:e,first:null,c(){n=F("button"),o=F("div"),i=V(d),K(o,"class","emoji"),K(n,"role","tab"),K(n,"class","nav-button"),K(n,"aria-controls",r="tab-"+t[70].id),K(n,"aria-label",a=t[0].categories[t[70].name]),K(n,"aria-selected",s=!t[7]&&t[23].id===t[70].id),K(n,"title",c=t[0].categories[t[70].name]),this.first=n},m(e,t){I(e,n,t),R(n,o),R(o,i),l||(u=H(n,"click",f),l=!0)},p(e,o){t=e,4194304&o[0]&&d!==(d=t[70].emoji+"")&&Y(i,d),4194304&o[0]&&r!==(r="tab-"+t[70].id)&&K(n,"aria-controls",r),4194305&o[0]&&a!==(a=t[0].categories[t[70].name])&&K(n,"aria-label",a),12583040&o[0]&&s!==(s=!t[7]&&t[23].id===t[70].id)&&K(n,"aria-selected",s),4194305&o[0]&&c!==(c=t[0].categories[t[70].name])&&K(n,"title",c)},d(e){e&&O(n),l=!1,u()}}}function We(e){let t;return{c(){t=F("div"),K(t,"class","custom-emoji"),W(t,"background-image","url("+e[64].url+")")},m(e,n){I(e,t,n)},p(e,n){4&n[0]&&W(t,"background-image","url("+e[64].url+")")},d(e){e&&O(t)}}}function Ge(e){let t,n=nt(e[64],e[14])+"";return{c(){t=V(n)},m(e,n){I(e,t,n)},p(e,o){16388&o[0]&&n!==(n=nt(e[64],e[14])+"")&&Y(t,n)},d(e){e&&O(t)}}}function Qe(e,t){let n,o,i,r,a,s,c;function l(e,t){return e[64].unicode?Ge:We}let u=l(t),d=u(t);return{key:e,first:null,c(){n=F("button"),d.c(),K(n,"role",o=t[7]?"option":"menuitem"),K(n,"aria-selected",i=t[7]?t[66]==t[8]:""),K(n,"aria-label",r=t[26](t[64],t[14])),K(n,"title",a=t[64].title),K(n,"class",s="emoji "+(t[7]&&t[66]===t[8]?"active":"")),K(n,"id",c="emo-"+t[64].id),this.first=n},m(e,t){I(e,n,t),d.m(n,null)},p(e,t){u===(u=l(e))&&d?d.p(e,t):(d.d(1),d=u(e),d&&(d.c(),d.m(n,null))),128&t[0]&&o!==(o=e[7]?"option":"menuitem")&&K(n,"role",o),388&t[0]&&i!==(i=e[7]?e[66]==e[8]:"")&&K(n,"aria-selected",i),16388&t[0]&&r!==(r=e[26](e[64],e[14]))&&K(n,"aria-label",r),4&t[0]&&a!==(a=e[64].title)&&K(n,"title",a),388&t[0]&&s!==(s="emoji "+(e[7]&&e[66]===e[8]?"active":""))&&K(n,"class",s),4&t[0]&&c!==(c="emo-"+e[64].id)&&K(n,"id",c)},d(e){e&&O(n),d.d()}}}function Xe(e,t){let n,o,i,r,a,s,c,l,u,d,f,h=(t[7]?t[0].searchResultsLabel:t[67].category?t[67].category:t[2].length>1?t[0].categories.custom:t[0].categories[t[23].name])+"",m=[],p=new Ie,g=t[67].emojis;const b=e=>e[64].id;for(let e=0;e1?"":"gone")),K(n,"aria-hidden","true"),K(a,"class","emoji-menu"),K(a,"role",s=t[7]?"listbox":"menu"),K(a,"aria-labelledby",c="menu-label-"+t[66]),K(a,"id",l=t[7]?"search-results":""),this.first=n},m(e,i){I(e,n,i),R(n,o),I(e,a,i);for(let e=0;e1?e[0].categories.custom:e[0].categories[e[23].name])+"")&&Y(o,h),4&t[0]&&i!==(i="menu-label-"+e[66])&&K(n,"id",i),4&t[0]&&r!==(r="category "+(e[2].length>1?"":"gone"))&&K(n,"class",r),67125636&t[0]){const n=e[67].emojis;m=pe(m,t,b,1,e,n,p,a,me,Qe,null,Fe)}128&t[0]&&s!==(s=e[7]?"listbox":"menu")&&K(a,"role",s),4&t[0]&&c!==(c="menu-label-"+e[66])&&K(a,"aria-labelledby",c),128&t[0]&&l!==(l=e[7]?"search-results":"")&&K(a,"id",l)},d(e){e&&O(n),e&&O(a);for(let e=0;ee[73];for(let t=0;te[70].id;for(let t=0;te[67].category;for(let t=0;t<$e.length;t+=1){let n=Ve(e,$e,t),o=xe(n);ge.set(o,he[t]=Xe(o,n))}let Ee=e[20];const _e=e=>e[64].id;for(let t=0;tt.getElementById("emo-"+e.id)),n(1,k=k)}function H(e){return!e.unicode||!$e(e)||Ce.get(e.unicode)}async function K(e){const t=await ze;return e.filter(({version:e})=>!e||e<=t)}async function Y(e){return function(e,t){const n=e=>{const n={};for(const o of e)"number"==typeof o.tone&&o.version<=t&&(n[o.tone]=o.unicode);return n};return e.map(({unicode:e,skins:t,shortcodes:o,url:i,name:r,category:a})=>({unicode:e,name:r,shortcodes:o,url:i,category:a,id:e||r,skins:t&&n(t),title:o.join(", ")}))}(e,await ze)}function q(e){n(3,v=""),n(50,j=""),n(8,x=-1),n(54,N=P.findIndex(t=>t.id===e.id))}async function W(e){const t=await b.getEmojiByUnicodeOrName(e),o=[...k,...B].find(t=>t.id===e),i=o.unicode&&nt(o,L);await b.incrementFavoriteEmojiCount(e),n(52,u=u),O("emoji-click",{emoji:t,skinTone:L,...i&&{unicode:i},...o.name&&{name:o.name}})}async function G(e){const{target:t}=e;if(!t.classList.contains("skintone-option"))return;Ae(e);const o=parseInt(t.id.slice(9),10);n(14,L=o),n(11,T=!1),I("skintone-button"),O("skin-tone-change",{skinTone:o}),b.setPreferredSkinTone(o)}ze.then(e=>{e||n(9,a=g.emojiUnsupportedMessage)}),F=async()=>{await re(),n(38,h=h||"en"),n(39,m=m||"https://cdn.jsdelivr.net/npm/emojibase-data@5/en/data.json")},X().$$.on_mount.push(F),function(e){X().$$.on_destroy.push(e)}(async()=>{b&&await b.close()});return e.$$set=e=>{"locale"in e&&n(38,h=e.locale),"dataSource"in e&&n(39,m=e.dataSource),"skinToneEmoji"in e&&n(41,p=e.skinToneEmoji),"i18n"in e&&n(0,g=e.i18n),"database"in e&&n(40,b=e.database),"customEmoji"in e&&n(42,y=e.customEmoji)},e.$$.update=()=>{if(896&e.$$.dirty[1]&&h&&m&&(!b||b.locale!==h&&b.dataSource!==m)&&n(40,b=new C({dataSource:m,locale:h})),2560&e.$$.dirty[1]&&y&&b&&n(40,b.customEmoji=y,b),513&e.$$.dirty[0]|512&e.$$.dirty[1]){b&&async function(){const e=setTimeout(()=>{n(9,a=g.loadingMessage)},1e3);try{await b.ready(),n(24,R=!0)}catch(e){console.error(e),n(9,a=g.networkErrorMessage)}finally{clearTimeout(e),a===g.loadingMessage&&n(9,a="")}}()}if(4194304&e.$$.dirty[0]|2048&e.$$.dirty[1]&&(y&&y.length?n(22,P=[ve,...we]):P!==we&&n(22,P=we)),8&e.$$.dirty[0]&&je(()=>{n(50,j=(v||"").trim()),n(8,x=-1)}),4194304&e.$$.dirty[0]|8388608&e.$$.dirty[1]&&n(23,d=P[N]),8388608&e.$$.dirty[0]|524800&e.$$.dirty[1]){!async function(){b?j.length>=2?(n(1,k=await async function(e){return Y(await K(await b.getEmojiBySearchQuery(e)))}(j)),n(7,$=!0)):d&&(n(1,k=await async function(e){if(void 0===e)return[];const t=-1===e?y:await b.getEmojiByGroup(e);return Y(await K(t))}(d.id)),n(7,$=!1)):(n(1,k=[]),n(7,$=!1))}()}if(4194432&e.$$.dirty[0]&&n(17,l=`\n --font-family: ${Te};\n --num-groups: ${P.length}; \n --indicator-opacity: ${$?0:1}; \n --num-skintones: 6;`),512&e.$$.dirty[1]){!async function(){b&&n(14,L=await b.getPreferredSkinTone())}()}if(1024&e.$$.dirty[1]&&n(19,D=Array(6).fill().map((e,t)=>function(e,t){if(0===t)return e;const n=e.indexOf("‍");return-1!==n?e.substring(0,n)+String.fromCodePoint(127995+t-1)+e.substring(n):(e.endsWith("️")&&(e=e.substring(0,e.length-1)),e+"\ud83c"+String.fromCodePoint(57339+t-1))}(p,t))),540672&e.$$.dirty[0]&&n(16,c=D[L]),16385&e.$$.dirty[0]&&n(18,A=g.skinToneLabel.replace("{skinTone}",g.skinTones[L])),512&e.$$.dirty[1]){b&&async function(){n(52,u=(await Promise.all(_e.map(e=>b.getEmojiByUnicodeOrName(e)))).filter(Boolean))}()}if(6291968&e.$$.dirty[1]){b&&u&&async function(){const e=await b.getTopFavoriteEmoji(M),t=await Y(Be([...e,...u],e=>e.unicode||e.name).slice(0,M));n(20,B=t)}()}if(9437184&e.$$.dirty[1]&&n(10,_=Ue?`transform: translateX(${N*E}px);`:`transform: translateX(${100*N}%);`),2&e.$$.dirty[0]){const e=k.filter(e=>e.unicode).filter(e=>$e(e)&&!Ce.has(e.unicode));e.length?Me(()=>V(e)):(n(1,k=k.filter(H)),Me(()=>{n(6,r.scrollTop=0,r)}))}if(e.$$.dirty[0],e.$$.dirty[1],130&e.$$.dirty[0]){n(2,w=function(){if($)return[{category:"",emojis:k}];const e=new Map;for(const t of k){const n=t.category||"";let o=e.get(n);o||(o=[],e.set(n,o)),o.push(t)}return[...e.entries()].map(([e,t])=>({category:e,emojis:t})).sort((e,t)=>e.category{n(12,S=!0)},{once:!0}):n(12,S=!1))},[g,k,w,v,o,i,r,$,x,a,_,T,S,s,L,z,c,l,A,D,B,U,P,d,R,f,function(e,t){return(n=[e.name||nt(e,t),...e.shortcodes],Be(n,e=>e)).join(", ");var n},function(e){return Ne(e,t=>{const i=parseInt(getComputedStyle(o).getPropertyValue("--num-columns"),10),r=e.parentElement.getBoundingClientRect().width-t;n(53,M=i),n(21,U=r)})},function(e){return Ne(e,e=>{n(51,E=e)})},function(e){if(!$||!k.length)return;const t=t=>{Ae(e),n(8,x=De(t,x,k))};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==x)return Ae(e),W(k[x].id);k.length&&n(8,x=0)}},q,function(e){const{target:t,key:n}=e,o=t=>{t&&(Ae(e),t.focus())};switch(n){case"ArrowLeft":return o(t.previousSibling);case"ArrowRight":return o(t.nextSibling)}},async function(e){const{target:t}=e;if(!t.classList.contains("emoji"))return;Ae(e),W(t.id.substring(4))},G,async function(e){n(11,T=!T),n(15,z=L),T&&(Ae(e),Me(()=>I("skintone-"+z)))},function(e){if(!T)return;const t=async t=>{Ae(e),n(15,z=De(t,z,D)),await re(),I("skintone-"+z)};switch(e.key){case"ArrowUp":return t(!0);case"ArrowDown":return t(!1);case"Enter":return G(e)}},function(e){if(T)switch(e.key){case" ":return G(e)}},async function(e){const{relatedTarget:t}=e;t&&t.classList.contains("skintone-option")||n(11,T=!1)},h,m,b,p,y,function(){v=this.value,n(3,v)},function(e){Z[e?"unshift":"push"](()=>{s=e,n(13,s)})},e=>q(e),function(e){Z[e?"unshift":"push"](()=>{r=e,n(6,r),n(1,k),n(40,b),n(50,j),n(23,d),n(38,h),n(39,m),n(42,y),n(3,v),n(22,P),n(54,N)})},function(e){Z[e?"unshift":"push"](()=>{i=e,n(5,i)})},function(e){Z[e?"unshift":"push"](()=>{o=e,n(4,o)})}]}class it extends be{constructor(e){super(),this.shadowRoot.innerHTML="",ge(this,{target:this.shadowRoot},ot,tt,N,{locale:38,dataSource:39,skinToneEmoji:41,i18n:0,database:40,customEmoji:42},[-1,-1,-1]),e&&(e.target&&I(e.target,this,e.anchor),e.props&&(this.$set(e.props),le()))}static get observedAttributes(){return["locale","dataSource","skinToneEmoji","i18n","database","customEmoji"]}get locale(){return this.$$.ctx[38]}set locale(e){this.$set({locale:e}),le()}get dataSource(){return this.$$.ctx[39]}set dataSource(e){this.$set({dataSource:e}),le()}get skinToneEmoji(){return this.$$.ctx[41]}set skinToneEmoji(e){this.$set({skinToneEmoji:e}),le()}get i18n(){return this.$$.ctx[0]}set i18n(e){this.$set({i18n:e}),le()}get database(){return this.$$.ctx[40]}set database(e){this.$set({database:e}),le()}get customEmoji(){return this.$$.ctx[42]}set customEmoji(e){this.$set({customEmoji:e}),le()}}class rt extends it{constructor(e){super({props:e})}disconnectedCallback(){this.$destroy()}static get observedAttributes(){return["locale","data-source","skin-tone-emoji"]}attributeChangedCallback(e,t,n){super.attributeChangedCallback(e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),t,n)}}return customElements.define("emoji-picker",rt),e.Database=C,e.Picker=rt,e}({});