@ckeditor/ckeditor5-emoji 0.0.0-nightly-next-20250217.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE.md +5 -15
  2. package/README.md +3 -30
  3. package/package.json +5 -59
  4. package/CHANGELOG.md +0 -4
  5. package/build/emoji.js +0 -4
  6. package/ckeditor5-metadata.json +0 -32
  7. package/dist/index-content.css +0 -4
  8. package/dist/index-editor.css +0 -111
  9. package/dist/index.css +0 -143
  10. package/dist/index.css.map +0 -1
  11. package/dist/index.js +0 -1478
  12. package/dist/index.js.map +0 -1
  13. package/lang/contexts.json +0 -24
  14. package/src/augmentation.d.ts +0 -24
  15. package/src/augmentation.js +0 -5
  16. package/src/emoji.d.ts +0 -32
  17. package/src/emoji.js +0 -38
  18. package/src/emojicommand.d.ts +0 -24
  19. package/src/emojicommand.js +0 -33
  20. package/src/emojiconfig.d.ts +0 -80
  21. package/src/emojiconfig.js +0 -5
  22. package/src/emojimention.d.ts +0 -68
  23. package/src/emojimention.js +0 -203
  24. package/src/emojipicker.d.ts +0 -97
  25. package/src/emojipicker.js +0 -256
  26. package/src/emojirepository.d.ts +0 -139
  27. package/src/emojirepository.js +0 -280
  28. package/src/index.d.ts +0 -14
  29. package/src/index.js +0 -13
  30. package/src/ui/emojicategoriesview.d.ts +0 -68
  31. package/src/ui/emojicategoriesview.js +0 -147
  32. package/src/ui/emojigridview.d.ts +0 -140
  33. package/src/ui/emojigridview.js +0 -209
  34. package/src/ui/emojipickerview.d.ts +0 -91
  35. package/src/ui/emojipickerview.js +0 -208
  36. package/src/ui/emojisearchview.d.ts +0 -51
  37. package/src/ui/emojisearchview.js +0 -97
  38. package/src/ui/emojitoneview.d.ts +0 -46
  39. package/src/ui/emojitoneview.js +0 -97
  40. package/theme/emojicategories.css +0 -29
  41. package/theme/emojigrid.css +0 -55
  42. package/theme/emojipicker.css +0 -32
  43. package/theme/emojitone.css +0 -21
package/LICENSE.md CHANGED
@@ -1,28 +1,18 @@
1
1
  Software License Agreement
2
2
  ==========================
3
3
 
4
- **CKEditor&nbsp;5 emoji feature** – https://github.com/ckeditor/ckeditor5-emoji <br>
4
+ **CKEditor 5 emoji feature** – https://github.com/ckeditor/ckeditor5-emoji <br>
5
5
  Copyright (c) 2003–2025, [CKSource Holding sp. z o.o.](https://cksource.com) All rights reserved.
6
6
 
7
- Licensed under a dual-license model, this software is available under:
8
-
9
- * the [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html),
10
- * or commercial license terms from CKSource Holding sp. z o.o.
11
-
12
- For more information, see: [https://ckeditor.com/legal/ckeditor-licensing-options](https://ckeditor.com/legal/ckeditor-licensing-options).
7
+ CKEditor 5 emoji feature is licensed under a commercial license and is protected by copyright law.
8
+ For more information, see: [https://ckeditor.com/pricing](https://ckeditor.com/pricing).
13
9
 
14
10
  Sources of Intellectual Property Included in CKEditor
15
11
  -----------------------------------------------------
16
12
 
17
- Where not otherwise indicated, all CKEditor content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, CKEditor will incorporate work done by developers outside of CKSource with their express permission.
18
-
19
- The following libraries are included in CKEditor&nbsp;5 emoji feature under the [Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0):
20
-
21
- * es-toolkit - Copyright (c) 2024 Viva Republica, Inc.
22
- * emoji-picker-element-data - Copyright (c) 2020 Nolan Lawson.
23
- * Fuse.js - Copyright (c) 2017 Kirollos Risk.
13
+ Where not otherwise indicated, all CKEditor content is authored by CKSource engineers and consists of CKSource-owned intellectual property.
24
14
 
25
15
  Trademarks
26
16
  ----------
27
17
 
28
- **CKEditor** is a trademark of [CKSource Holding sp. z o.o.](https://cksource.com) All other brand and product names are trademarks, registered trademarks, or service marks of their respective holders.
18
+ **CKEditor** is a trademark of [CKSource Holding sp. z o.o.](https://cksource.com). All other brand and product names are trademarks, registered trademarks, or service marks of their respective holders.
package/README.md CHANGED
@@ -1,31 +1,4 @@
1
- CKEditor&nbsp;5 emoji feature
2
- =============================
1
+ CKEditor 5 emoji
2
+ ================
3
3
 
4
- [![npm version](https://badge.fury.io/js/%40ckeditor%2Fckeditor5-emoji.svg)](https://www.npmjs.com/package/@ckeditor/ckeditor5-emoji)
5
- [![Coverage Status](https://coveralls.io/repos/github/ckeditor/ckeditor5/badge.svg?branch=master)](https://coveralls.io/github/ckeditor/ckeditor5?branch=master)
6
- [![Build Status](https://travis-ci.com/ckeditor/ckeditor5.svg?branch=master)](https://app.travis-ci.com/github/ckeditor/ckeditor5)
7
-
8
- This package implements the emoji feature for CKEditor&nbsp;5.
9
-
10
- ## Demo
11
-
12
- Check out the demo in the [emoji feature guide](https://ckeditor.com/docs/ckeditor5/latest/features/emoji.html#demo).
13
-
14
- ## Documentation
15
-
16
- See the [`@ckeditor/ckeditor5-emoji` package](https://ckeditor.com/docs/ckeditor5/latest/api/emoji.html) page as well as the [emoji feature](https://ckeditor.com/docs/ckeditor5/latest/features/emoji.html) guide in [CKEditor&nbsp;5 documentation](https://ckeditor.com/docs/ckeditor5/latest/).
17
-
18
- ## Installation
19
-
20
- ```bash
21
- npm install ckeditor5
22
- ```
23
-
24
- ## License
25
-
26
- Licensed under a dual-license model, this software is available under:
27
-
28
- * the [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html),
29
- * or commercial license terms from CKSource Holding sp. z o.o.
30
-
31
- For more information, see: [https://ckeditor.com/legal/ckeditor-licensing-options](https://ckeditor.com/legal/ckeditor-licensing-options).
4
+ This is an initial package for development purposes. It does not contain code yet.
package/package.json CHANGED
@@ -1,68 +1,14 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-emoji",
3
- "version": "0.0.0-nightly-next-20250217.0",
4
- "description": "Emoji feature for CKEditor 5.",
3
+ "version": "0.0.1",
5
4
  "keywords": [
6
5
  "ckeditor",
7
6
  "ckeditor5",
8
7
  "ckeditor 5",
9
- "ckeditor5-feature",
10
- "ckeditor5-plugin",
11
- "ckeditor5-dll"
8
+ "ckeditor5-lib"
12
9
  ],
13
- "type": "module",
14
- "main": "src/index.js",
15
- "dependencies": {
16
- "@ckeditor/ckeditor5-core": "0.0.0-nightly-next-20250217.0",
17
- "@ckeditor/ckeditor5-icons": "0.0.0-nightly-next-20250217.0",
18
- "@ckeditor/ckeditor5-mention": "0.0.0-nightly-next-20250217.0",
19
- "@ckeditor/ckeditor5-typing": "0.0.0-nightly-next-20250217.0",
20
- "@ckeditor/ckeditor5-ui": "0.0.0-nightly-next-20250217.0",
21
- "@ckeditor/ckeditor5-utils": "0.0.0-nightly-next-20250217.0",
22
- "ckeditor5": "0.0.0-nightly-next-20250217.0",
23
- "fuse.js": "7.0.0",
24
- "es-toolkit": "1.32.0"
25
- },
26
10
  "author": "CKSource (http://cksource.com/)",
27
- "license": "SEE LICENSE IN LICENSE.md",
28
- "homepage": "https://ckeditor.com",
29
- "bugs": "https://github.com/ckeditor/ckeditor5/issues",
30
- "repository": {
31
- "type": "git",
32
- "url": "https://github.com/ckeditor/ckeditor5.git",
33
- "directory": "packages/ckeditor5-emoji"
34
- },
35
- "files": [
36
- "dist",
37
- "lang",
38
- "src/**/*.js",
39
- "src/**/*.d.ts",
40
- "theme",
41
- "build",
42
- "ckeditor5-metadata.json",
43
- "CHANGELOG.md"
44
- ],
45
- "types": "src/index.d.ts",
46
- "exports": {
47
- ".": {
48
- "types": "./src/index.d.ts",
49
- "import": "./src/index.js",
50
- "default": "./src/index.js"
51
- },
52
- "./dist/*": {
53
- "types": "./src/index.d.ts",
54
- "import": "./dist/*",
55
- "default": "./dist/*"
56
- },
57
- "./src/*": {
58
- "types": "./src/*.d.ts",
59
- "import": "./src/*",
60
- "default": "./src/*"
61
- },
62
- "./build/*": "./build/*",
63
- "./lang/*": "./lang/*",
64
- "./theme/*": "./theme/*",
65
- "./ckeditor5-metadata.json": "./ckeditor5-metadata.json",
66
- "./package.json": "./package.json"
67
- }
11
+ "license": "GPL-2.0-or-later",
12
+ "homepage": "https://ckeditor.com/ckeditor-5",
13
+ "bugs": "https://github.com/ckeditor/ckeditor5/issues"
68
14
  }
package/CHANGELOG.md DELETED
@@ -1,4 +0,0 @@
1
- Changelog
2
- =========
3
-
4
- All changes in the package are documented in https://github.com/ckeditor/ckeditor5/blob/master/CHANGELOG.md.
package/build/emoji.js DELETED
@@ -1,4 +0,0 @@
1
- /*!
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md.
4
- */(()=>{var e={21:e=>{"use strict";e.exports=function(e,t){Object.keys(t).forEach((function(i){e.setAttribute(i,t[i])}))}},51:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},59:(e,t,i)=>{"use strict";i.d(t,{A:()=>c});var s=i(758),n=i.n(s),o=i(935),r=i.n(o)()(n());r.push([e.id,".ck.ck-emoji__skin-tone{margin-left:var(--ck-spacing-standard)}.ck.ck-emoji__skin-tone>.ck.ck-dropdown .ck.ck-list__item{min-width:1em}.ck.ck-emoji__skin-tone>.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:auto}",""]);const c=r},128:e=>{"use strict";var t={};e.exports=function(e,i){var s=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(i)}},223:(e,t,i)=>{"use strict";i.d(t,{A:()=>c});var s=i(758),n=i.n(s),o=i(935),r=i.n(o)()(n());r.push([e.id,".ck.ck-emoji__categories-list{display:flex;justify-content:space-between;margin:0 var(--ck-spacing-large)}.ck.ck-emoji__categories-list>.ck.ck-button.ck-button_with-text{border-width:0;border-bottom:2px solid transparent;font-size:var(--ck-font-size-big);min-height:var(--ck-font-size-big);min-width:var(--ck-font-size-big);padding:0}.ck.ck-emoji__categories-list>.ck.ck-button.ck-button_with-text.ck-emoji__category-item.ck-on{border-bottom-color:var(--ck-color-base-active)}.ck.ck-emoji__categories-list>.ck.ck-button.ck-button_with-text>span{margin:auto}",""]);const c=r},237:e=>{"use strict";e.exports=CKEditor5.dll},291:(e,t,i)=>{"use strict";i.d(t,{A:()=>c});var s=i(758),n=i.n(s),o=i(935),r=i.n(o)()(n());r.push([e.id,":root{--ck-emoji-grid-tile-size:27px}.ck.ck-emoji .ck.ck-emoji__tiles{border-top:1px solid var(--ck-color-base-border);max-height:265px;max-width:100%;overflow-x:hidden;overflow-y:auto}.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--ck-emoji-grid-tile-size),1fr));margin:var(--ck-spacing-standard) var(--ck-spacing-large);grid-gap:var(--ck-spacing-small)}.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile{border:0;font-size:1.5em;height:var(--ck-emoji-grid-tile-size);min-height:var(--ck-emoji-grid-tile-size);min-width:var(--ck-emoji-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-emoji-grid-tile-size)}@media (prefers-reduced-motion:reduce){.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile{transition:none}}.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:focus:not(.ck-disabled),.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile .ck-button__label{line-height:var(--ck-emoji-grid-tile-size);text-align:center;width:100%}",""]);const c=r},311:(e,t,i)=>{e.exports=i(237)("./src/ui.js")},355:(e,t,i)=>{e.exports=i(237)("./src/icons.js")},584:(e,t,i)=>{e.exports=i(237)("./src/utils.js")},591:e=>{"use strict";var t=[];function i(e){for(var i=-1,s=0;s<t.length;s++)if(t[s].identifier===e){i=s;break}return i}function s(e,s){for(var o={},r=[],c=0;c<e.length;c++){var a=e[c],l=s.base?a[0]+s.base:a[0],h=o[l]||0,u="".concat(l," ").concat(h);o[l]=h+1;var d=i(u),g={css:a[1],media:a[2],sourceMap:a[3],supports:a[4],layer:a[5]};if(-1!==d)t[d].references++,t[d].updater(g);else{var m=n(g,s);s.byIndex=c,t.splice(c,0,{identifier:u,updater:m,references:1})}r.push(u)}return r}function n(e,t){var i=t.domAPI(t);i.update(e);return function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;i.update(e=t)}else i.remove()}}e.exports=function(e,n){var o=s(e=e||[],n=n||{});return function(e){e=e||[];for(var r=0;r<o.length;r++){var c=i(o[r]);t[c].references--}for(var a=s(e,n),l=0;l<o.length;l++){var h=i(o[l]);0===t[h].references&&(t[h].updater(),t.splice(h,1))}o=a}}},639:e=>{"use strict";var t,i=(t=[],function(e,i){return t[e]=i,t.filter(Boolean).join("\n")});function s(e,t,s,n){var o;if(s)o="";else{o="",n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,r&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}")}if(e.styleSheet)e.styleSheet.cssText=i(t,o);else{var c=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(c,a[t]):e.appendChild(c)}}var n={singleton:null,singletonCounter:0};e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=n.singletonCounter++,i=n.singleton||(n.singleton=e.insertStyleElement(e));return{update:function(e){s(i,t,!1,e)},remove:function(e){s(i,t,!0,e)}}}},758:e=>{"use strict";e.exports=function(e){return e[1]}},782:(e,t,i)=>{e.exports=i(237)("./src/core.js")},834:(e,t,i)=>{e.exports=i(237)("./src/typing.js")},913:(e,t,i)=>{"use strict";i.d(t,{A:()=>c});var s=i(758),n=i.n(s),o=i(935),r=i.n(o)()(n());r.push([e.id,".ck.ck-emoji{width:320px}.ck .ck.ck-emoji__search{align-items:center;display:flex;justify-content:space-between;padding:var(--ck-spacing-large);padding-bottom:var(--ck-spacing-medium)}.ck .ck-fake-emoji-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-emoji-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}",""]);const c=r},935:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i="",s=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),s&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),s&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(e,i,s,n,o){"string"==typeof e&&(e=[[null,e,void 0]]);var r={};if(s)for(var c=0;c<this.length;c++){var a=this[c][0];null!=a&&(r[a]=!0)}for(var l=0;l<e.length;l++){var h=[].concat(e[l]);s&&r[h[0]]||(void 0!==o&&(void 0===h[5]||(h[1]="@layer".concat(h[5].length>0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=o),i&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=i):h[2]=i),n&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=n):h[4]="".concat(n)),t.push(h))}},t}}},t={};function i(s){var n=t[s];if(void 0!==n)return n.exports;var o=t[s]={id:s,exports:{}};return e[s](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{"use strict";i.r(s),i.d(s,{Emoji:()=>Ie,EmojiCommand:()=>ne,EmojiMention:()=>te,EmojiPicker:()=>Le,EmojiRepository:()=>G});var e=i(782),t=i(584),n=i(834);function o(e){return Array.isArray?Array.isArray(e):"[object Array]"===d(e)}function r(e){return"string"==typeof e}function c(e){return"number"==typeof e}function a(e){return!0===e||!1===e||function(e){return l(e)&&null!==e}(e)&&"[object Boolean]"==d(e)}function l(e){return"object"==typeof e}function h(e){return null!=e}function u(e){return!e.trim().length}function d(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}const g=Object.prototype.hasOwnProperty;class m{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach((e=>{let i=p(e);this._keys.push(i),this._keyMap[i.id]=i,t+=i.weight})),this._keys.forEach((e=>{e.weight/=t}))}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function p(e){let t=null,i=null,s=null,n=1,c=null;if(r(e)||o(e))s=e,t=f(e),i=k(e);else{if(!g.call(e,"name"))throw new Error((e=>`Missing ${e} property in key`)("name"));const o=e.name;if(s=o,g.call(e,"weight")&&(n=e.weight,n<=0))throw new Error((e=>`Property 'weight' in key '${e}' must be a positive integer`)(o));t=f(o),i=k(o),c=e.getFn}return{path:t,id:i,weight:n,src:s,getFn:c}}function f(e){return o(e)?e:e.split(".")}function k(e){return o(e)?e.join("."):e}var y={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1,includeMatches:!1,findAllMatches:!1,minMatchCharLength:1,location:0,threshold:.6,distance:100,...{useExtendedSearch:!1,getFn:function(e,t){let i=[],s=!1;const n=(e,t,l)=>{if(h(e))if(t[l]){const u=e[t[l]];if(!h(u))return;if(l===t.length-1&&(r(u)||c(u)||a(u)))i.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;let t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(u));else if(o(u)){s=!0;for(let e=0,i=u.length;e<i;e+=1)n(u[e],t,l+1)}else t.length&&n(u,t,l+1)}else i.push(e)};return n(e,r(t)?t.split("."):t,0),s?i:i[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1}};const w=/[^ ]+/g;class _{constructor({getFn:e=y.getFn,fieldNormWeight:t=y.fieldNormWeight}={}){this.norm=function(e=1,t=3){const i=new Map,s=Math.pow(10,t);return{get(t){const n=t.match(w).length;if(i.has(n))return i.get(n);const o=1/Math.pow(n,.5*e),r=parseFloat(Math.round(o*s)/s);return i.set(n,r),r},clear(){i.clear()}}}(t,3),this.getFn=e,this.isCreated=!1,this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach(((e,t)=>{this._keysMap[e.id]=t}))}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,r(this.docs[0])?this.docs.forEach(((e,t)=>{this._addString(e,t)})):this.docs.forEach(((e,t)=>{this._addObject(e,t)})),this.norm.clear())}add(e){const t=this.size();r(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,i=this.size();t<i;t+=1)this.records[t].i-=1}getValueForItemAtKeyId(e,t){return e[this._keysMap[t]]}size(){return this.records.length}_addString(e,t){if(!h(e)||u(e))return;let i={v:e,i:t,n:this.norm.get(e)};this.records.push(i)}_addObject(e,t){let i={i:t,$:{}};this.keys.forEach(((t,s)=>{let n=t.getFn?t.getFn(e):this.getFn(e,t.path);if(h(n))if(o(n)){let e=[];const t=[{nestedArrIndex:-1,value:n}];for(;t.length;){const{nestedArrIndex:i,value:s}=t.pop();if(h(s))if(r(s)&&!u(s)){let t={v:s,i,n:this.norm.get(s)};e.push(t)}else o(s)&&s.forEach(((e,i)=>{t.push({nestedArrIndex:i,value:e})}))}i.$[s]=e}else if(r(n)&&!u(n)){let e={v:n,n:this.norm.get(n)};i.$[s]=e}})),this.records.push(i)}toJSON(){return{keys:this.keys,records:this.records}}}function b(e,t,{getFn:i=y.getFn,fieldNormWeight:s=y.fieldNormWeight}={}){const n=new _({getFn:i,fieldNormWeight:s});return n.setKeys(e.map(p)),n.setSources(t),n.create(),n}function x(e,{errors:t=0,currentLocation:i=0,expectedLocation:s=0,distance:n=y.distance,ignoreLocation:o=y.ignoreLocation}={}){const r=t/e.length;if(o)return r;const c=Math.abs(s-i);return n?r+c/n:c?1:r}const j=32;function v(e,t,i,{location:s=y.location,distance:n=y.distance,threshold:o=y.threshold,findAllMatches:r=y.findAllMatches,minMatchCharLength:c=y.minMatchCharLength,includeMatches:a=y.includeMatches,ignoreLocation:l=y.ignoreLocation}={}){if(t.length>j)throw new Error(`Pattern length exceeds max of ${j}.`);const h=t.length,u=e.length,d=Math.max(0,Math.min(s,u));let g=o,m=d;const p=c>1||a,f=p?Array(u):[];let k;for(;(k=e.indexOf(t,m))>-1;){let e=x(t,{currentLocation:k,expectedLocation:d,distance:n,ignoreLocation:l});if(g=Math.min(e,g),m=k+h,p){let e=0;for(;e<h;)f[k+e]=1,e+=1}}m=-1;let w=[],_=1,b=h+u;const v=1<<h-1;for(let s=0;s<h;s+=1){let o=0,c=b;for(;o<c;){x(t,{errors:s,currentLocation:d+c,expectedLocation:d,distance:n,ignoreLocation:l})<=g?o=c:b=c,c=Math.floor((b-o)/2+o)}b=c;let a=Math.max(1,d-c+1),k=r?u:Math.min(d+c,u)+h,y=Array(k+2);y[k+1]=(1<<s)-1;for(let o=k;o>=a;o-=1){let r=o-1,c=i[e.charAt(r)];if(p&&(f[r]=+!!c),y[o]=(y[o+1]<<1|1)&c,s&&(y[o]|=(w[o+1]|w[o])<<1|1|w[o+1]),y[o]&v&&(_=x(t,{errors:s,currentLocation:r,expectedLocation:d,distance:n,ignoreLocation:l}),_<=g)){if(g=_,m=r,m<=d)break;a=Math.max(1,2*d-m)}}if(x(t,{errors:s+1,currentLocation:d,expectedLocation:d,distance:n,ignoreLocation:l})>g)break;w=y}const V={isMatch:m>=0,score:Math.max(.001,_)};if(p){const e=function(e=[],t=y.minMatchCharLength){let i=[],s=-1,n=-1,o=0;for(let r=e.length;o<r;o+=1){let r=e[o];r&&-1===s?s=o:r||-1===s||(n=o-1,n-s+1>=t&&i.push([s,n]),s=-1)}return e[o-1]&&o-s>=t&&i.push([s,o-1]),i}(f,c);e.length?a&&(V.indices=e):V.isMatch=!1}return V}function V(e){let t={};for(let i=0,s=e.length;i<s;i+=1){const n=e.charAt(i);t[n]=(t[n]||0)|1<<s-i-1}return t}class M{constructor(e,{location:t=y.location,threshold:i=y.threshold,distance:s=y.distance,includeMatches:n=y.includeMatches,findAllMatches:o=y.findAllMatches,minMatchCharLength:r=y.minMatchCharLength,isCaseSensitive:c=y.isCaseSensitive,ignoreLocation:a=y.ignoreLocation}={}){if(this.options={location:t,threshold:i,distance:s,includeMatches:n,findAllMatches:o,minMatchCharLength:r,isCaseSensitive:c,ignoreLocation:a},this.pattern=c?e:e.toLowerCase(),this.chunks=[],!this.pattern.length)return;const l=(e,t)=>{this.chunks.push({pattern:e,alphabet:V(e),startIndex:t})},h=this.pattern.length;if(h>j){let e=0;const t=h%j,i=h-t;for(;e<i;)l(this.pattern.substr(e,j),e),e+=j;if(t){const e=h-j;l(this.pattern.substr(e),e)}}else l(this.pattern,0)}searchIn(e){const{isCaseSensitive:t,includeMatches:i}=this.options;if(t||(e=e.toLowerCase()),this.pattern===e){let t={isMatch:!0,score:0};return i&&(t.indices=[[0,e.length-1]]),t}const{location:s,distance:n,threshold:o,findAllMatches:r,minMatchCharLength:c,ignoreLocation:a}=this.options;let l=[],h=0,u=!1;this.chunks.forEach((({pattern:t,alphabet:d,startIndex:g})=>{const{isMatch:m,score:p,indices:f}=v(e,t,d,{location:s+g,distance:n,threshold:o,findAllMatches:r,minMatchCharLength:c,includeMatches:i,ignoreLocation:a});m&&(u=!0),h+=p,m&&f&&(l=[...l,...f])}));let d={isMatch:u,score:u?h/this.chunks.length:1};return u&&i&&(d.indices=l),d}}class T{constructor(e){this.pattern=e}static isMultiMatch(e){return C(e,this.multiRegex)}static isSingleMatch(e){return C(e,this.singleRegex)}search(){}}function C(e,t){const i=e.match(t);return i?i[1]:null}class E extends T{constructor(e,{location:t=y.location,threshold:i=y.threshold,distance:s=y.distance,includeMatches:n=y.includeMatches,findAllMatches:o=y.findAllMatches,minMatchCharLength:r=y.minMatchCharLength,isCaseSensitive:c=y.isCaseSensitive,ignoreLocation:a=y.ignoreLocation}={}){super(e),this._bitapSearch=new M(e,{location:t,threshold:i,distance:s,includeMatches:n,findAllMatches:o,minMatchCharLength:r,isCaseSensitive:c,ignoreLocation:a})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class L extends T{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let t,i=0;const s=[],n=this.pattern.length;for(;(t=e.indexOf(this.pattern,i))>-1;)i=t+n,s.push([t,i-1]);const o=!!s.length;return{isMatch:o,score:o?0:1,indices:s}}}const I=[class extends T{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}},L,class extends T{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}},class extends T{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}},class extends T{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}},class extends T{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}},class extends T{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}},E],P=I.length,S=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;const A=new Set([E.type,L.type]);class F{constructor(e,{isCaseSensitive:t=y.isCaseSensitive,includeMatches:i=y.includeMatches,minMatchCharLength:s=y.minMatchCharLength,ignoreLocation:n=y.ignoreLocation,findAllMatches:o=y.findAllMatches,location:r=y.location,threshold:c=y.threshold,distance:a=y.distance}={}){this.query=null,this.options={isCaseSensitive:t,includeMatches:i,minMatchCharLength:s,findAllMatches:o,ignoreLocation:n,location:r,threshold:c,distance:a},this.pattern=t?e:e.toLowerCase(),this.query=function(e,t={}){return e.split("|").map((e=>{let i=e.trim().split(S).filter((e=>e&&!!e.trim())),s=[];for(let e=0,n=i.length;e<n;e+=1){const n=i[e];let o=!1,r=-1;for(;!o&&++r<P;){const e=I[r];let i=e.isMultiMatch(n);i&&(s.push(new e(i,t)),o=!0)}if(!o)for(r=-1;++r<P;){const e=I[r];let i=e.isSingleMatch(n);if(i){s.push(new e(i,t));break}}}return s}))}(this.pattern,this.options)}static condition(e,t){return t.useExtendedSearch}searchIn(e){const t=this.query;if(!t)return{isMatch:!1,score:1};const{includeMatches:i,isCaseSensitive:s}=this.options;e=s?e:e.toLowerCase();let n=0,o=[],r=0;for(let s=0,c=t.length;s<c;s+=1){const c=t[s];o.length=0,n=0;for(let t=0,s=c.length;t<s;t+=1){const s=c[t],{isMatch:a,indices:l,score:h}=s.search(e);if(!a){r=0,n=0,o.length=0;break}if(n+=1,r+=h,i){const e=s.constructor.type;A.has(e)?o=[...o,...l]:o.push(l)}}if(n){let e={isMatch:!0,score:r/n};return i&&(e.indices=o),e}}return{isMatch:!1,score:1}}}const R=[];function $(e,t){for(let i=0,s=R.length;i<s;i+=1){let s=R[i];if(s.condition(e,t))return new s(e,t)}return new M(e,t)}const N="$and",O="$or",B="$path",D="$val",W=e=>!(!e[N]&&!e[O]),q=e=>({[N]:Object.keys(e).map((t=>({[t]:e[t]})))});function z(e,t,{auto:i=!0}={}){const s=e=>{let n=Object.keys(e);const c=(e=>!!e[B])(e);if(!c&&n.length>1&&!W(e))return s(q(e));if((e=>!o(e)&&l(e)&&!W(e))(e)){const s=c?e[B]:n[0],o=c?e[D]:e[s];if(!r(o))throw new Error((e=>`Invalid value for key ${e}`)(s));const a={keyId:k(s),pattern:o};return i&&(a.searcher=$(o,t)),a}let a={children:[],operator:n[0]};return n.forEach((t=>{const i=e[t];o(i)&&i.forEach((e=>{a.children.push(s(e))}))})),a};return W(e)||(e=q(e)),s(e)}function K(e,t){const i=e.matches;t.matches=[],h(i)&&i.forEach((e=>{if(!h(e.indices)||!e.indices.length)return;const{indices:i,value:s}=e;let n={indices:i,value:s};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}))}function H(e,t){t.score=e.score}class Q{constructor(e,t={},i){this.options={...y,...t},this.options.useExtendedSearch,this._keyStore=new m(this.options.keys),this.setCollection(e,i)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof _))throw new Error("Incorrect 'index' type");this._myIndex=t||b(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){h(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const t=[];for(let i=0,s=this._docs.length;i<s;i+=1){const n=this._docs[i];e(n,i)&&(this.removeAt(i),i-=1,s-=1,t.push(n))}return t}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:t=-1}={}){const{includeMatches:i,includeScore:s,shouldSort:n,sortFn:o,ignoreFieldNorm:a}=this.options;let l=r(e)?r(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return function(e,{ignoreFieldNorm:t=y.ignoreFieldNorm}){e.forEach((e=>{let i=1;e.matches.forEach((({key:e,norm:s,score:n})=>{const o=e?e.weight:null;i*=Math.pow(0===n&&o?Number.EPSILON:n,(o||1)*(t?1:s))})),e.score=i}))}(l,{ignoreFieldNorm:a}),n&&l.sort(o),c(t)&&t>-1&&(l=l.slice(0,t)),function(e,t,{includeMatches:i=y.includeMatches,includeScore:s=y.includeScore}={}){const n=[];return i&&n.push(K),s&&n.push(H),e.map((e=>{const{idx:i}=e,s={item:t[i],refIndex:i};return n.length&&n.forEach((t=>{t(e,s)})),s}))}(l,this._docs,{includeMatches:i,includeScore:s})}_searchStringList(e){const t=$(e,this.options),{records:i}=this._myIndex,s=[];return i.forEach((({v:e,i,n})=>{if(!h(e))return;const{isMatch:o,score:r,indices:c}=t.searchIn(e);o&&s.push({item:e,idx:i,matches:[{score:r,value:e,norm:n,indices:c}]})})),s}_searchLogical(e){const t=z(e,this.options),i=(e,t,s)=>{if(!e.children){const{keyId:i,searcher:n}=e,o=this._findMatches({key:this._keyStore.get(i),value:this._myIndex.getValueForItemAtKeyId(t,i),searcher:n});return o&&o.length?[{idx:s,item:t,matches:o}]:[]}const n=[];for(let o=0,r=e.children.length;o<r;o+=1){const r=e.children[o],c=i(r,t,s);if(c.length)n.push(...c);else if(e.operator===N)return[]}return n},s=this._myIndex.records,n={},o=[];return s.forEach((({$:e,i:s})=>{if(h(e)){let r=i(t,e,s);r.length&&(n[s]||(n[s]={idx:s,item:e,matches:[]},o.push(n[s])),r.forEach((({matches:e})=>{n[s].matches.push(...e)})))}})),o}_searchObjectList(e){const t=$(e,this.options),{keys:i,records:s}=this._myIndex,n=[];return s.forEach((({$:e,i:s})=>{if(!h(e))return;let o=[];i.forEach(((i,s)=>{o.push(...this._findMatches({key:i,value:e[s],searcher:t}))})),o.length&&n.push({idx:s,item:e,matches:o})})),n}_findMatches({key:e,value:t,searcher:i}){if(!h(t))return[];let s=[];if(o(t))t.forEach((({v:t,i:n,n:o})=>{if(!h(t))return;const{isMatch:r,score:c,indices:a}=i.searchIn(t);r&&s.push({score:c,key:e,value:t,idx:n,norm:o,indices:a})}));else{const{v:n,n:o}=t,{isMatch:r,score:c,indices:a}=i.searchIn(n);r&&s.push({score:c,key:e,value:n,norm:o,indices:a})}return s}}Q.version="7.0.0",Q.createIndex=b,Q.parseIndex=function(e,{getFn:t=y.getFn,fieldNormWeight:i=y.fieldNormWeight}={}){const{keys:s,records:n}=e,o=new _({getFn:t,fieldNormWeight:i});return o.setKeys(s),o.setIndexRecords(n),o},Q.config=y,Q.parseQuery=z,function(...e){R.push(...e)}(F);const U={0:"default",1:"light",2:"medium-light",3:"medium",4:"medium-dark",5:"dark"};class J extends e.Plugin{_database;_databasePromise;_fuseSearch;static get pluginName(){return"EmojiRepository"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this.editor.config.define("emoji",{version:16,skinTone:"default"}),this._database=[],this._databasePromise=new Promise((e=>{this._databasePromiseResolveCallback=e})),this._fuseSearch=null}async init(){const e=this.editor.config.get("emoji.version"),i="https://cdn.ckeditor.com/ckeditor5/data/emoji/{version}/en.json".replace("{version}",`${e}`),s=await async function(e){const i=await fetch(e).then((e=>e.ok?e.json():[])).catch((()=>[]));i.length||(0,t.logWarning)("emoji-database-load-failed");return i}(i);if(!s.length)return this._databasePromiseResolveCallback(!1);const n=function(){const e=document.createElement("div");return e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.left="-9999px",e.style.whiteSpace="nowrap",e.style.fontSize="24px",document.body.appendChild(e),e}();return this._database=s.filter((e=>function(e){return 2!==e.group}(e))).filter((e=>J._isEmojiSupported(e,n))).map((e=>function(e){const t={...e,skins:{default:e.emoji}};e.skins&&e.skins.forEach((e=>{const i=U[e.tone];t.skins[i]=e.emoji}));return t}(e))),n.remove(),this._fuseSearch=new Q(this._database,{keys:[{name:"emoticon",weight:5},{name:"annotation",weight:3},{name:"tags",weight:1}],minMatchCharLength:2,threshold:0,ignoreLocation:!0}),this._databasePromiseResolveCallback(!0)}getEmojiByQuery(e){if(!this._fuseSearch)return[];const t=e.split(/\s/).filter(Boolean);return t.some((e=>e.length>=2))?this._fuseSearch.search({$or:[{emoticon:e},{$and:t.map((e=>({annotation:e})))},{$and:t.map((e=>({tags:e})))}]}).map((e=>e.item)):[]}getEmojiCategories(){if(!this._database.length)return[];const{t:e}=this.editor.locale,t=[{title:e("Smileys & Expressions"),icon:"😀",groupId:0},{title:e("Gestures & People"),icon:"👋",groupId:1},{title:e("Animals & Nature"),icon:"🐻",groupId:3},{title:e("Food & Drinks"),icon:"🍎",groupId:4},{title:e("Travel & Places"),icon:"🚘",groupId:5},{title:e("Activities"),icon:"🏀",groupId:6},{title:e("Objects"),icon:"💡",groupId:7},{title:e("Symbols"),icon:"🟢",groupId:8},{title:e("Flags"),icon:"🏁",groupId:9}],i=function(e,t){const i={};for(let s=0;s<e.length;s++){const n=e[s],o=t(n);Object.hasOwn(i,o)||(i[o]=[]),i[o].push(n)}return i}(this._database,(e=>e.group));return t.map((e=>({...e,items:i[e.groupId]})))}getSkinTones(){const{t:e}=this.editor.locale;return[{id:"default",icon:"👋",tooltip:e("Default skin tone")},{id:"light",icon:"👋🏻",tooltip:e("Light skin tone")},{id:"medium-light",icon:"👋🏼",tooltip:e("Medium Light skin tone")},{id:"medium",icon:"👋🏽",tooltip:e("Medium skin tone")},{id:"medium-dark",icon:"👋🏾",tooltip:e("Medium Dark skin tone")},{id:"dark",icon:"👋🏿",tooltip:e("Dark skin tone")}]}isReady(){return this._databasePromise}static _isEmojiSupported=X}const G=J;function X(e,t){const i=function(e,t){const i=document.createElement("span");i.textContent=t,e.appendChild(i);const s=i.offsetWidth;return e.removeChild(i),s}(t,e.emoji);return i/1.8<24&&i>=24}const Y=":",Z=":__EMOJI_SHOW_ALL:",ee=":__EMOJI_HINT:";class te extends e.Plugin{_emojiDropdownLimit;_skinTone;static get requires(){return[G,n.Typing,"Mention"]}static get pluginName(){return"EmojiMention"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this.editor.config.define("emoji",{dropdownLimit:6}),this._emojiDropdownLimit=e.config.get("emoji.dropdownLimit"),this._skinTone=e.config.get("emoji.skinTone");const i=e.config.get("mention.feeds"),s=e.config.get("mergeFields.prefix"),n=i.some((e=>e.marker===Y)),o=!!s&&s[0]===Y;n||o?(0,t.logWarning)("emoji-config-marker-already-used",{marker:Y}):this._setupMentionConfiguration(i)}async init(){const e=this.editor;this._emojiPickerPlugin=e.plugins.has("EmojiPicker")?e.plugins.get("EmojiPicker"):null,this._emojiRepositoryPlugin=e.plugins.get("EmojiRepository"),await this._emojiRepositoryPlugin.isReady()&&e.once("ready",this._overrideMentionExecuteListener.bind(this))}_setupMentionConfiguration(e){const t={marker:Y,dropdownLimit:this._emojiDropdownLimit,itemRenderer:this._customItemRendererFactory(this.editor.t),feed:this._queryEmojiCallbackFactory()};this.editor.config.set("mention.feeds",[...e,t])}_customItemRendererFactory(e){return t=>{const i=document.createElement("button");i.classList.add("ck"),i.classList.add("ck-button"),i.classList.add("ck-button_with-text"),i.id=`mention-list-item-id${t.id.slice(0,-1)}`,i.type="button",i.tabIndex=-1;const s=document.createElement("span");return s.classList.add("ck"),s.classList.add("ck-button__label"),i.appendChild(s),t.id===ee?(i.classList.add("ck-list-item-button"),i.classList.add("ck-disabled"),s.textContent=e("Keep on typing to see the emoji.")):t.id===Z?s.textContent=e("Show all emoji..."):s.textContent=`${t.text} ${t.id}`,i}}_overrideMentionExecuteListener(){const e=this.editor;e.commands.get("mention").on("execute",((t,i)=>{const s=i[0];if(s.marker===Y&&(t.stop(),s.mention.id!==ee))if(s.mention.id===Z){const t=[...s.range.getItems()].filter((e=>e.is("$textProxy"))).map((e=>e.data)).reduce(((e,t)=>e+t),"");e.model.change((t=>{e.model.deleteContent(t.createSelection(s.range))}));const i=this._emojiPickerPlugin;i.showUI(t.slice(1)),setTimeout((()=>{i.emojiPickerView.focus()}))}else e.execute("insertText",{text:s.mention.text,range:s.range})}),{priority:"high"})}_queryEmojiCallbackFactory(){return e=>{if(e.startsWith(" "))return[];const t=this._emojiRepositoryPlugin.getEmojiByQuery(e).map((e=>{let t=e.skins[this._skinTone]||e.skins.default;return this._emojiPickerPlugin&&(t=e.skins[this._emojiPickerPlugin.skinTone]||e.skins.default),{id:`:${e.annotation}:`,text:t}}));if(!this._emojiPickerPlugin)return t.slice(0,this._emojiDropdownLimit);const i={id:e.length>1?Z:ee};return[...t.slice(0,this._emojiDropdownLimit-1),i]}}}var ie=i(311),se=i(355);class ne extends e.Command{refresh(){const e=this.editor.model,t=e.schema,i=e.document.selection;this.isEnabled=t.checkChild(i.getFirstPosition(),"$text")}execute(e=""){this.editor.plugins.get("EmojiPicker").showUI(e)}}var oe=i(591),re=i.n(oe),ce=i(639),ae=i.n(ce),le=i(128),he=i.n(le),ue=i(21),de=i.n(ue),ge=i(51),me=i.n(ge),pe=i(291),fe={attributes:{"data-cke":!0}};fe.setAttributes=de(),fe.insert=he().bind(null,"head"),fe.domAPI=ae(),fe.insertStyleElement=me();re()(pe.A,fe);pe.A&&pe.A.locals&&pe.A.locals;class ke extends ie.View{tiles;focusTracker;keystrokes;emojiCategories;cachedTiles;_getEmojiByQuery;constructor(e,{categoryName:i,emojiCategories:s,getEmojiByQuery:n,skinTone:o}){super(e),this.set("isEmpty",!0),this.set("categoryName",i),this.set("skinTone",o),this.tiles=this.createCollection(),this.cachedTiles=this.createCollection(),this.focusTracker=new t.FocusTracker,this.keystrokes=new t.KeystrokeHandler,this._getEmojiByQuery=n,this.emojiCategories=s;const r=this.bindTemplate;this.setTemplate({tag:"div",children:[{tag:"div",attributes:{role:"grid",class:["ck","ck-emoji__grid"]},children:this.tiles}],attributes:{role:"tabpanel",class:["ck","ck-emoji__tiles",r.if("isEmpty","ck-hidden",(e=>e))]}}),(0,ie.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.tiles,numberOfColumns:()=>t.global.window.getComputedStyle(this.element.firstChild).getPropertyValue("grid-template-columns").split(" ").length,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection})}render(){super.render(),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy(),this.focusTracker.destroy()}focus(){const e=this.tiles.first;e&&e.focus()}filter(e){const{matchingItems:t,allItems:i}=e?this._getItemsByQuery(e.source):this._getItemsByCategory();return this._updateGrid(t),this.set("isEmpty",0===t.length),{resultsCount:t.length,totalItemsCount:i.length}}_getItemsByQuery(e){return{matchingItems:this._getEmojiByQuery(e),allItems:this.emojiCategories.flatMap((e=>e.items))}}_getItemsByCategory(){const e=this.emojiCategories.find((e=>e.title===this.categoryName)),{items:t}=e;return{matchingItems:t,allItems:t}}_updateGrid(e){[...this.tiles].forEach((e=>{this.focusTracker.remove(e),this.tiles.remove(e)})),e.map((e=>{const t=e.skins[this.skinTone]||e.skins.default;return this.cachedTiles.get(t)||this._createTile(t,e.annotation)})).forEach((e=>{this.tiles.add(e),this.focusTracker.add(e)}))}_createTile(e,t){const i=new ie.ButtonView(this.locale);return i.viewUid=e,i.extendTemplate({attributes:{class:["ck-emoji__tile"]}}),i.set({label:e,tooltip:t,withText:!0,ariaLabel:t,ariaLabelledBy:void 0}),i.on("execute",(()=>{this.fire("execute",{name:t,emoji:e})})),this.cachedTiles.add(i),i}}var ye=i(223),we={attributes:{"data-cke":!0}};we.setAttributes=de(),we.insert=he().bind(null,"head"),we.domAPI=ae(),we.insertStyleElement=me();re()(ye.A,we);ye.A&&ye.A.locals&&ye.A.locals;class _e extends ie.View{focusTracker;keystrokes;focusCycler;buttonViews;constructor(e,{emojiCategories:i,categoryName:s}){super(e),this.buttonViews=this.createCollection(i.map((e=>this._createCategoryButton(e)))),this.focusTracker=new t.FocusTracker,this.keystrokes=new t.KeystrokeHandler,this.focusCycler=new ie.FocusCycler({focusables:this.buttonViews,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowleft",focusNext:"arrowright"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-emoji__categories-list"],role:"tablist"},children:this.buttonViews}),this.on("change:categoryName",((e,t,i,s)=>{const n=this.buttonViews.find((e=>e.tooltip===s));n&&(n.isOn=!1);this.buttonViews.find((e=>e.tooltip===i)).isOn=!0})),this.set("categoryName",s)}render(){super.render(),this.buttonViews.forEach((e=>{this.focusTracker.add(e)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),this.buttonViews.destroy()}focus(){this.buttonViews.first.focus()}enableCategories(){this.buttonViews.forEach((e=>{e.isEnabled=!0}))}disableCategories(){this.buttonViews.forEach((e=>{e.set({class:"",isEnabled:!1,isOn:!1})}))}_createCategoryButton(e){const t=new ie.ButtonView,i=t.bindTemplate;return t.extendTemplate({attributes:{"aria-selected":i.to("isOn",(e=>e.toString())),class:["ck-emoji__category-item"]}}),t.set({ariaLabel:e.title,label:e.icon,role:"tab",tooltip:e.title,withText:!0,ariaLabelledBy:void 0}),t.on("execute",(()=>{this.categoryName=e.title})),t.on("change:isEnabled",(()=>{t.isEnabled&&t.tooltip===this.categoryName&&(t.isOn=!0)})),t}}function be(e){if(null==e)return"";if(Array.isArray(e))return e.map(be).join(",");const t=String(e);return"0"===t&&Object.is(Number(e),-0)?"-0":t}class xe extends ie.View{inputView;gridView;constructor(e,{gridView:t,resultsView:i}){super(e),this.gridView=t;const s=e.t;this.inputView=new ie.SearchTextView(this.locale,{queryView:{label:s("Find an emoji (min. 2 characters)"),creator:ie.createLabeledInputText},filteredView:this.gridView,infoView:{instance:i}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-search"],tabindex:"-1"},children:[this.inputView.queryView]}),this.inputView.delegate("search").to(this)}destroy(){super.destroy(),this.inputView.destroy()}search(e){const t=e?new RegExp(function(e){return e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}(be(e)),"ig"):null;const i=this.gridView.filter(t);this.inputView.fire("search",{query:e,...i})}setInputValue(e){e?this.inputView.queryView.fieldView.value=e:this.inputView.queryView.fieldView.reset()}getInputValue(){return this.inputView.queryView.fieldView.element.value}focus(){this.inputView.focus()}}var je=i(59),ve={attributes:{"data-cke":!0}};ve.setAttributes=de(),ve.insert=he().bind(null,"head"),ve.domAPI=ae(),ve.insertStyleElement=me();re()(je.A,ve);je.A&&je.A.locals&&je.A.locals;class Ve extends ie.View{dropdownView;_skinTones;constructor(e,{skinTone:i,skinTones:s}){super(e),this.set("skinTone",i),this._skinTones=s;const n=(0,e.t)("Select skin tone"),o=(0,ie.createDropdown)(e),r=new t.Collection;for(const{id:e,icon:t,tooltip:i}of this._skinTones){const s={type:"button",model:new ie.ViewModel({value:e,label:t,ariaLabel:i,tooltip:i,tooltipPosition:"e",role:"menuitemradio",withText:!0,ariaLabelledBy:void 0})};s.model.bind("isOn").to(this,"skinTone",(t=>t===e)),r.add(s)}(0,ie.addListToDropdown)(o,r,{ariaLabel:n,role:"menu"}),o.buttonView.set({label:this._getSkinTone().icon,ariaLabel:n,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:n}),this.dropdownView=o,this.listenTo(o,"execute",(e=>{this.skinTone=e.source.value})),o.buttonView.bind("label").to(this,"skinTone",(()=>this._getSkinTone().icon)),o.buttonView.bind("ariaLabel").to(this,"skinTone",(()=>`${this._getSkinTone().tooltip}, ${n}`)),this.setTemplate({tag:"div",attributes:{class:["ck","ck-emoji__skin-tone"]},children:[o]})}focus(){this.dropdownView.buttonView.focus()}_getSkinTone(){return this._skinTones.find((e=>e.id===this.skinTone))}}class Me extends ie.View{items;focusTracker;keystrokes;focusCycler;searchView;toneView;categoriesView;gridView;infoView;constructor(e,{emojiCategories:i,getEmojiByQuery:s,skinTone:n,skinTones:o}){super(e);const r=i[0].title;this.gridView=new ke(e,{categoryName:r,emojiCategories:i,getEmojiByQuery:s,skinTone:n}),this.infoView=new ie.SearchInfoView,this.searchView=new xe(e,{gridView:this.gridView,resultsView:this.infoView}),this.categoriesView=new _e(e,{emojiCategories:i,categoryName:r}),this.toneView=new Ve(e,{skinTone:n,skinTones:o}),this.items=this.createCollection([this.searchView,this.toneView,this.categoriesView,this.gridView,this.infoView]),this.focusTracker=new t.FocusTracker,this.keystrokes=new t.KeystrokeHandler,this.focusCycler=new ie.FocusCycler({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",children:[{tag:"div",children:[this.searchView,this.toneView],attributes:{class:["ck","ck-emoji__search"]}},this.categoriesView,this.gridView,{tag:"div",children:[this.infoView],attributes:{class:["ck","ck-search__results"]}}],attributes:{tabindex:"-1",class:["ck","ck-emoji","ck-search"]}}),this._setupEventListeners()}render(){super.render(),this.focusTracker.add(this.searchView.element),this.focusTracker.add(this.toneView.element),this.focusTracker.add(this.categoriesView.element),this.focusTracker.add(this.gridView.element),this.focusTracker.add(this.infoView.element),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.searchView.focus()}_setupEventListeners(){const e=this.locale.t;this.searchView.on("search",((e,t)=>{t.query?this.categoriesView.disableCategories():this.categoriesView.enableCategories()})),this.searchView.on("search",((t,i)=>{1===i.query.length?this.infoView.set({primaryText:e("Keep on typing to see the emoji."),secondaryText:e("The query must contain at least two characters."),isVisible:!0}):i.resultsCount?this.infoView.set({isVisible:!1}):this.infoView.set({primaryText:e('No emojis were found matching "%0".',i.query),secondaryText:e("Please try a different phrase or check the spelling."),isVisible:!0})})),this.searchView.on("search",(()=>{this.fire("update")})),this.categoriesView.on("change:categoryName",((e,t,i)=>{this.gridView.categoryName=i,this.searchView.search("")})),this.toneView.on("change:skinTone",((e,t,i)=>{this.gridView.skinTone=i,this.searchView.search(this.searchView.getInputValue())}))}}var Te=i(913),Ce={attributes:{"data-cke":!0}};Ce.setAttributes=de(),Ce.insert=he().bind(null,"head"),Ce.domAPI=ae(),Ce.insertStyleElement=me();re()(Te.A,Ce);Te.A&&Te.A.locals&&Te.A.locals;const Ee="emoji-picker";class Le extends e.Plugin{static get requires(){return[G,ie.ContextualBalloon,ie.Dialog,n.Typing]}static get pluginName(){return"EmojiPicker"}static get isOfficialPlugin(){return!0}async init(){const e=this.editor;if(this._balloonPlugin=e.plugins.get("ContextualBalloon"),this._emojiRepositoryPlugin=e.plugins.get("EmojiRepository"),!await this._emojiRepositoryPlugin.isReady())return;const t=new ne(e);e.commands.add("emoji",t),e.ui.componentFactory.add("emoji",(()=>{const e=this._createButton(ie.ButtonView,t);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:emoji",(()=>this._createButton(ie.MenuBarMenuListItemButtonView,t))),this._setupConversion()}destroy(){super.destroy(),this.emojiPickerView&&this.emojiPickerView.destroy()}get skinTone(){return this.emojiPickerView?this.emojiPickerView.gridView.skinTone:this.editor.config.get("emoji.skinTone")}showUI(e=""){this._showFakeVisualSelection(),this.emojiPickerView||(this.emojiPickerView=this._createEmojiPickerView()),e&&this.emojiPickerView.searchView.setInputValue(e),this.emojiPickerView.searchView.search(e),this._balloonPlugin.hasView(this.emojiPickerView)||this._balloonPlugin.add({view:this.emojiPickerView,position:this._getBalloonPositionData()}),this.emojiPickerView.focus()}_createButton(e,t){const i=new e(this.editor.locale),s=this.editor.locale.t;return i.bind("isEnabled").to(t,"isEnabled"),i.set({label:s("Emoji"),icon:se.IconEmoji,isToggleable:!0}),i.on("execute",(()=>{this.showUI()})),i}_createEmojiPickerView(){const e=new Me(this.editor.locale,{emojiCategories:this._emojiRepositoryPlugin.getEmojiCategories(),skinTone:this.editor.config.get("emoji.skinTone"),skinTones:this._emojiRepositoryPlugin.getSkinTones(),getEmojiByQuery:e=>this._emojiRepositoryPlugin.getEmojiByQuery(e)});return this.listenTo(e.gridView,"execute",((e,t)=>{const i=this.editor,s=t.emoji;this._hideUI(),i.execute("insertText",{text:s})})),this.listenTo(e,"update",(()=>{this._balloonPlugin.visibleView===e&&this._balloonPlugin.updatePosition()})),e.keystrokes.set("Esc",((e,t)=>{this._hideUI(),t()})),(0,ie.clickOutsideHandler)({emitter:e,contextElements:[this._balloonPlugin.view.element],callback:()=>this._hideUI(),activator:()=>this._balloonPlugin.visibleView===e}),e}_hideUI(){this._balloonPlugin.remove(this.emojiPickerView),this.emojiPickerView.searchView.setInputValue(""),this.editor.editing.view.focus(),this._hideFakeVisualSelection()}_setupConversion(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:Ee,view:{classes:["ck-fake-emoji-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:Ee,view:(e,{writer:t})=>{if(!e.markerRange.isCollapsed)return null;const i=t.createUIElement("span");return t.addClass(["ck-fake-emoji-selection","ck-fake-emoji-selection_collapsed"],i),i}})}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document;return{target:()=>e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}_showFakeVisualSelection(){const e=this.editor.model;e.change((t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(Ee))t.updateMarker(Ee,{range:i});else if(i.start.isAtEnd){const s=i.start.getLastMatchingPosition((({item:t})=>!e.schema.isContent(t)),{boundaries:i});t.addMarker(Ee,{usingOperation:!1,affectsData:!1,range:t.createRange(s,i.end)})}else t.addMarker(Ee,{usingOperation:!1,affectsData:!1,range:i})}))}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(Ee)&&e.change((e=>{e.removeMarker(Ee)}))}}class Ie extends e.Plugin{static get requires(){return[te,Le]}static get pluginName(){return"Emoji"}static get isOfficialPlugin(){return!0}}})(),(window.CKEditor5=window.CKEditor5||{}).emoji=s})();
@@ -1,32 +0,0 @@
1
- {
2
- "plugins": [
3
- {
4
- "name": "Emoji",
5
- "className": "Emoji",
6
- "description": "Allows for inserting emojis via a dropdown or by typing `:` followed by emoji name.",
7
- "path": "src/emoji.js",
8
- "docs": "features/emoji.html"
9
- },
10
- {
11
- "name": "Emoji mention",
12
- "className": "EmojiMention",
13
- "description": "Allows for inserting emojis by typing `:` followed by emoji name.",
14
- "path": "src/emojimention.js",
15
- "docs": "features/emoji.html"
16
- },
17
- {
18
- "name": "Emoji picker",
19
- "className": "EmojiPicker",
20
- "description": "Allows for inserting emojis via a dropdown.",
21
- "path": "src/emojipicker.js",
22
- "docs": "features/emoji.html",
23
- "uiComponents": [
24
- {
25
- "type": "Button",
26
- "name": "emoji",
27
- "iconPath": "@ckeditor/ckeditor5-icons/theme/icons/emoji.svg"
28
- }
29
- ]
30
- }
31
- ]
32
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
@@ -1,111 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
5
- :root{
6
- --ck-emoji-grid-tile-size:27px;
7
- }
8
-
9
- .ck.ck-emoji .ck.ck-emoji__tiles{
10
- max-width:100%;
11
- max-height:265px;
12
-
13
- overflow-y:auto;
14
- overflow-x:hidden;
15
- border-top:1px solid var(--ck-color-base-border);
16
- }
17
-
18
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__grid{
19
- display:grid;
20
- grid-template-columns:repeat(auto-fill, minmax(var(--ck-emoji-grid-tile-size), 1fr));
21
- margin:var(--ck-spacing-standard) var(--ck-spacing-large);
22
- grid-gap:var(--ck-spacing-small);
23
- }
24
-
25
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile{
26
- width:var(--ck-emoji-grid-tile-size);
27
- height:var(--ck-emoji-grid-tile-size);
28
- min-width:var(--ck-emoji-grid-tile-size);
29
- min-height:var(--ck-emoji-grid-tile-size);
30
- font-size:1.5em;
31
- padding:0;
32
- transition:.2s ease box-shadow;
33
- border:0;
34
- }
35
-
36
- @media (prefers-reduced-motion: reduce){
37
-
38
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile{
39
- transition:none;
40
- }
41
- }
42
-
43
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:focus:not(.ck-disabled),
44
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:hover:not(.ck-disabled){
45
- border:0;
46
- box-shadow:inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);
47
- }
48
-
49
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile .ck-button__label{
50
- line-height:var(--ck-emoji-grid-tile-size);
51
- width:100%;
52
- text-align:center;
53
- }
54
-
55
- .ck.ck-emoji__categories-list{
56
- display:flex;
57
- justify-content:space-between;
58
- margin:0 var(--ck-spacing-large);
59
- }
60
-
61
- .ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text{
62
- border-width:0;
63
- border-bottom-width:2px;
64
- border-bottom-style:solid;
65
- border-bottom-color:transparent;
66
- padding:0;
67
- font-size:var(--ck-font-size-big);
68
- min-width:var(--ck-font-size-big);
69
- min-height:var(--ck-font-size-big);
70
- }
71
-
72
- .ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text.ck-emoji__category-item.ck-on{
73
- border-bottom-color:var(--ck-color-base-active);
74
- }
75
-
76
- .ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text > span{
77
- margin:auto;
78
- }
79
-
80
- .ck.ck-emoji__skin-tone{
81
- margin-left:var(--ck-spacing-standard);
82
- }
83
-
84
- .ck.ck-emoji__skin-tone > .ck.ck-dropdown .ck.ck-list__item{
85
- min-width:1em;
86
- }
87
-
88
- .ck.ck-emoji__skin-tone > .ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{
89
- width:initial;
90
- }
91
-
92
- .ck.ck-emoji{
93
- width:320px;
94
- }
95
-
96
- .ck .ck.ck-emoji__search{
97
- display:flex;
98
- padding:var(--ck-spacing-large);
99
- padding-bottom:var(--ck-spacing-medium);
100
- justify-content:space-between;
101
- align-items:center;
102
- }
103
- .ck .ck-fake-emoji-selection{
104
- background:var(--ck-color-link-fake-selection);
105
- }
106
- .ck .ck-fake-emoji-selection_collapsed{
107
- height:100%;
108
- border-right:1px solid var(--ck-color-base-text);
109
- margin-right:-1px;
110
- outline:solid 1px hsla(0, 0%, 100%, .5);
111
- }
package/dist/index.css DELETED
@@ -1,143 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
5
- /*
6
- * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
7
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
8
- */
9
-
10
- :root {
11
- --ck-emoji-grid-tile-size: 27px;
12
- }
13
-
14
- .ck.ck-emoji .ck.ck-emoji__tiles {
15
- max-width: 100%;
16
- max-height: 265px;
17
-
18
- overflow-y: auto;
19
- overflow-x: hidden;
20
- border-top: 1px solid var(--ck-color-base-border);
21
- }
22
-
23
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__grid {
24
- display: grid;
25
- grid-template-columns: repeat(auto-fill, minmax(var(--ck-emoji-grid-tile-size), 1fr));
26
- margin: var(--ck-spacing-standard) var(--ck-spacing-large);
27
- grid-gap: var(--ck-spacing-small);
28
- }
29
-
30
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile {
31
- width: var(--ck-emoji-grid-tile-size);
32
- height: var(--ck-emoji-grid-tile-size);
33
- min-width: var(--ck-emoji-grid-tile-size);
34
- min-height: var(--ck-emoji-grid-tile-size);
35
- font-size: 1.5em;
36
- padding: 0;
37
- transition: .2s ease box-shadow;
38
- border: 0;
39
- }
40
-
41
- @media (prefers-reduced-motion: reduce) {
42
-
43
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile {
44
- transition: none;
45
- }
46
- }
47
-
48
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:focus:not(.ck-disabled),
49
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:hover:not(.ck-disabled) {
50
- /* Disable the default .ck-button's border ring. */
51
- border: 0;
52
- box-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);
53
- }
54
-
55
- /* Make sure the glyph is rendered in the center of the button */
56
-
57
- .ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile .ck-button__label {
58
- line-height: var(--ck-emoji-grid-tile-size);
59
- width: 100%;
60
- text-align: center;
61
- }
62
-
63
- /*
64
- * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
65
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
66
- */
67
-
68
- .ck.ck-emoji__categories-list {
69
- display: flex;
70
- justify-content: space-between;
71
- margin: 0 var(--ck-spacing-large);
72
- }
73
-
74
- .ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text {
75
- border-width: 0;
76
- border-bottom-width: 2px;
77
- border-bottom-style: solid;
78
- border-bottom-color: transparent;
79
- padding: 0;
80
- font-size: var(--ck-font-size-big);
81
- min-width: var(--ck-font-size-big);
82
- min-height: var(--ck-font-size-big);
83
- }
84
-
85
- .ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text.ck-emoji__category-item.ck-on {
86
- border-bottom-color: var(--ck-color-base-active);
87
- }
88
-
89
- .ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text > span {
90
- margin: auto;
91
- }
92
-
93
- /*
94
- * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
95
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
96
- */
97
-
98
- .ck.ck-emoji__skin-tone {
99
- margin-left: var(--ck-spacing-standard);
100
- }
101
-
102
- .ck.ck-emoji__skin-tone > .ck.ck-dropdown .ck.ck-list__item {
103
- min-width: 1em;
104
- }
105
-
106
- .ck.ck-emoji__skin-tone > .ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label {
107
- width: initial;
108
- }
109
-
110
- /*
111
- * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
112
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
113
- */
114
-
115
- .ck.ck-emoji {
116
- width: 320px;
117
- }
118
-
119
- .ck .ck.ck-emoji__search {
120
- display: flex;
121
- padding: var(--ck-spacing-large);
122
- padding-bottom: var(--ck-spacing-medium);
123
- justify-content: space-between;
124
- align-items: center;
125
- }
126
-
127
- /*
128
- * Classes used by the "fake visual selection" displayed in the content when an input
129
- * in the emoji picker UI has focus (the browser does not render the native selection in this state).
130
- */
131
- .ck .ck-fake-emoji-selection {
132
- background: var(--ck-color-link-fake-selection);
133
- }
134
-
135
- /* A collapsed fake visual selection. */
136
- .ck .ck-fake-emoji-selection_collapsed {
137
- height: 100%;
138
- border-right: 1px solid var(--ck-color-base-text);
139
- margin-right: -1px;
140
- outline: solid 1px hsla(0, 0%, 100%, .5);
141
- }
142
-
143
- /*# sourceMappingURL=index.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../theme/emojigrid.css","index.css","../theme/emojicategories.css","../theme/emojitone.css","../theme/emojipicker.css"],"names":[],"mappings":";;;;AAAA,CAAA;ACCA,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;AAC3E,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClF,CAAC,CDAC;;AAEF,CAAA,IAAA,CAAA;ACCA,CDAC,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,IAA+B;AAChC;;AAGC,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA;ACAD,CAAC,CDCC,GAAA,CAAA,KAAA,CAAA,CAAA,GAAA,CAAe;ACAjB,CAAC,CDCC,GAAA,CAAA,MAAA,CAAA,CAAA,KAAiB;;ACCnB,CAAC,CDCC,QAAA,CAAA,CAAA,CAAA,CAAA,IAAgB;ACAlB,CAAC,CDCC,QAAA,CAAA,CAAA,CAAA,CAAA,MAAkB;ACApB,CAAC,CDCC,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,MAAA,CAAiD;ACAnD,CDqCC;;AAnCC,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,WAAA,CAAA;ACCF,CAAC,CAAC,CDAC,OAAA,CAAA,CAAA,IAAa;ACChB,CAAC,CAAC,CDAC,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAqF;ACCxF,CAAC,CAAC,CDAC,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,KAAA,CAA0D;ACC7D,CAAC,CAAC,CDAC,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,KAAA,CAAiC;ACCpC,CAAC,CDAC;;AAEA,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,WAAA,CAAA;ACCF,CAAC,CAAC,CDAC,KAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAqC;ACCxC,CAAC,CAAC,CDAC,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAsC;ACCzC,CAAC,CAAC,CDAC,GAAA,CAAA,KAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAAyC;ACC5C,CAAC,CAAC,CDAC,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAA0C;ACC7C,CAAC,CAAC,CDAC,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,GAAgB;ACCnB,CAAC,CAAC,CDAC,OAAA,CAAA,CAAA,CAAU;ACCb,CAAC,CAAC,CDAC,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,GAAA,CAAA,MAA+B;ACClC,CAAC,CAAC,CDAC,MAAA,CAAA,CAAA,CAAS;ACCZ,CAAC,CDkBC;;AAjBC,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA,CAAA;;AAVD,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,WAAA,CAAA;ACcF,CAAC,CAAC,CAAC,CDHC,UAAA,CAAA,CAAA,IAAgB;ACIpB,CAAC,CDYC;ACXF,CAAC,CAAC,CDJC;;AAEA,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,WAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,QAAA,CAAA;ACKH,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC,CDJC,CAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAkD;ACKtD,CAAC,CAAC,CAAC,CDJC,MAAA,CAAA,CAAA,CAAS;ACKb,CAAC,CAAC,CAAC,CDJC,GAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,KAAA,CAAA,MAAA,CAAmG;ACKvG,CAAC,CAAC,CDJC;;AAEA,CAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,KAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,GAAA,CAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAgE;;AAChE,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,aAAA,CAAA;ACMH,CAAC,CAAC,CAAC,CDLC,IAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,CAA2C;ACM/C,CAAC,CAAC,CAAC,CDLC,KAAA,CAAA,CAAA,GAAA,CAAW;ACMf,CAAC,CAAC,CAAC,CDLC,IAAA,CAAA,KAAA,CAAA,CAAA,MAAkB;ACMtB,CAAC,CAAC,CDLC;;AEnDH,CAAA;AD2DA,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;AAC3E,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClF,CAAC,CC1DC;;AAEF,CAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,CAAA;AD2DA,CC1DC,OAAA,CAAA,CAAA,IAAa;AD2Dd,CC1DC,OAAA,CAAA,OAAA,CAAA,CAAA,KAAA,CAAA,OAA8B;AD2D/B,CC1DC,MAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,KAAA,CAAiC;AAoBlC;;AAlBC,CAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA;AD4DD,CAAC,CC3DC,MAAA,CAAA,KAAA,CAAA,CAAA,CAAe;AD4DjB,CAAC,CC3DC,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,GAAwB;AD4D1B,CAAC,CC3DC,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,KAA0B;AD4D5B,CAAC,CC3DC,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,WAAgC;AD4DlC,CAAC,CC3DC,OAAA,CAAA,CAAA,CAAU;AD4DZ,CAAC,CC3DC,IAAA,CAAA,IAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAkC;AD4DpC,CAAC,CC3DC,GAAA,CAAA,KAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAkC;AD4DpC,CAAC,CC3DC,GAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAmC;AD4DrC,CCnDC;;AAPC,CAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA,EAAA,CAAA,eAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA;AD6DF,CAAC,CAAC,CC5DC,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,MAAA,CAAgD;AD6DnD,CAAC,CC5DC;;AAEA,CAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA,CAAA,CAAA,IAAA,CAAA;AD6DF,CAAC,CAAC,CC5DC,MAAA,CAAA,CAAA,IAAY;AD6Df,CAAC,CC5DC;;AC1BF,CAAA;AFyFA,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;AAC3E,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClF,CAAC,CExFC;;AAEF,CAAA,EAAA,CAAA,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA;AFyFA,CExFC,MAAA,CAAA,IAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,QAAA,CAAuC;AAcxC;;AAVE,CAAA,EAAA,CAAA,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA;AFwFF,CAAC,CAAC,CEvFC,GAAA,CAAA,KAAA,CAAA,CAAA,GAAc;AFwFjB,CAAC,CEvFC;;AAGC,CAAA,EAAA,CAAA,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,CAAA,aAAA,CAAA;AFuFH,CAAC,CAAC,CAAC,CEtFC,KAAA,CAAA,CAAA,OAAc;AFuFlB,CAAC,CAAC,CEtFC;;ACjBH,CAAA;AH0GA,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;AAC3E,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClF,CAAC,CGzGC;;AAEF,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA;AH0GA,CGzGC,KAAA,CAAA,CAAA,KAAY;AACb;;AAEA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,aAAA,CAAA;AH0GA,CGzGC,OAAA,CAAA,CAAA,IAAa;AH0Gd,CGzGC,OAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,KAAA,CAAgC;AH0GjC,CGzGC,OAAA,CAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,MAAA,CAAwC;AH0GzC,CGzGC,OAAA,CAAA,OAAA,CAAA,CAAA,KAAA,CAAA,OAA8B;AH0G/B,CGzGC,KAAA,CAAA,KAAA,CAAA,CAAA,MAAmB;AACpB;;AAEA,CAAA;AH0GA,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAChF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACpG,CAAC,CGzGC;AACF,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,SAAA,CAAA;AH0GA,CGzGC,UAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,SAAA,CAA+C;AAChD;;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,IAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;AACvC,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,mBAAA,CAAA;AH0GA,CGzGC,MAAA,CAAA,CAAA,GAAA,CAAY;AH0Gb,CGzGC,MAAA,CAAA,KAAA,CAAA,CAAA,GAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAiD;AH0GlD,CGzGC,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA,GAAkB;AH0GnB,CGzGC,OAAA,CAAA,CAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC;AACzC;;AH2GA,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC","file":"index.css.map","sourcesContent":["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-emoji-grid-tile-size: 27px;\n}\n\n.ck.ck-emoji {\n\t& .ck.ck-emoji__tiles {\n\t\tmax-width: 100%;\n\t\tmax-height: 265px;\n\n\t\toverflow-y: auto;\n\t\toverflow-x: hidden;\n\t\tborder-top: 1px solid var(--ck-color-base-border);\n\n\t\t& .ck-emoji__grid {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fill, minmax(var(--ck-emoji-grid-tile-size), 1fr));\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-large);\n\t\t\tgrid-gap: var(--ck-spacing-small);\n\t\t}\n\n\t\t& .ck-emoji__tile {\n\t\t\twidth: var(--ck-emoji-grid-tile-size);\n\t\t\theight: var(--ck-emoji-grid-tile-size);\n\t\t\tmin-width: var(--ck-emoji-grid-tile-size);\n\t\t\tmin-height: var(--ck-emoji-grid-tile-size);\n\t\t\tfont-size: 1.5em;\n\t\t\tpadding: 0;\n\t\t\ttransition: .2s ease box-shadow;\n\t\t\tborder: 0;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\ttransition: none;\n\t\t\t}\n\n\t\t\t&:focus:not(.ck-disabled),\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\t/* Disable the default .ck-button's border ring. */\n\t\t\t\tborder: 0;\n\t\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\n\t\t\t}\n\n\t\t\t/* Make sure the glyph is rendered in the center of the button */\n\t\t\t& .ck-button__label {\n\t\t\t\tline-height: var(--ck-emoji-grid-tile-size);\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-emoji-grid-tile-size: 27px;\n}\n\n.ck.ck-emoji .ck.ck-emoji__tiles {\n\t\tmax-width: 100%;\n\t\tmax-height: 265px;\n\n\t\toverflow-y: auto;\n\t\toverflow-x: hidden;\n\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t}\n\n.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__grid {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-columns: repeat(auto-fill, minmax(var(--ck-emoji-grid-tile-size), 1fr));\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-large);\n\t\t\tgrid-gap: var(--ck-spacing-small);\n\t\t}\n\n.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile {\n\t\t\twidth: var(--ck-emoji-grid-tile-size);\n\t\t\theight: var(--ck-emoji-grid-tile-size);\n\t\t\tmin-width: var(--ck-emoji-grid-tile-size);\n\t\t\tmin-height: var(--ck-emoji-grid-tile-size);\n\t\t\tfont-size: 1.5em;\n\t\t\tpadding: 0;\n\t\t\ttransition: .2s ease box-shadow;\n\t\t\tborder: 0;\n\t\t}\n\n@media (prefers-reduced-motion: reduce) {\n\n.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile {\n\t\t\t\ttransition: none;\n\t\t}\n\t\t\t}\n\n.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:focus:not(.ck-disabled),\n\t\t\t.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile:hover:not(.ck-disabled) {\n\t\t\t\t/* Disable the default .ck-button's border ring. */\n\t\t\t\tborder: 0;\n\t\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\n\t\t\t}\n\n/* Make sure the glyph is rendered in the center of the button */\n\n.ck.ck-emoji .ck.ck-emoji__tiles .ck-emoji__tile .ck-button__label {\n\t\t\t\tline-height: var(--ck-emoji-grid-tile-size);\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-emoji__categories-list {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tmargin: 0 var(--ck-spacing-large);\n}\n\n.ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text {\n\t\tborder-width: 0;\n\t\tborder-bottom-width: 2px;\n\t\tborder-bottom-style: solid;\n\t\tborder-bottom-color: transparent;\n\t\tpadding: 0;\n\t\tfont-size: var(--ck-font-size-big);\n\t\tmin-width: var(--ck-font-size-big);\n\t\tmin-height: var(--ck-font-size-big);\n\t}\n\n.ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text.ck-emoji__category-item.ck-on {\n\t\t\tborder-bottom-color: var(--ck-color-base-active);\n\t\t}\n\n.ck.ck-emoji__categories-list > .ck.ck-button.ck-button_with-text > span {\n\t\t\tmargin: auto;\n\t\t}\n\n/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-emoji__skin-tone {\n\tmargin-left: var(--ck-spacing-standard);\n}\n\n.ck.ck-emoji__skin-tone > .ck.ck-dropdown .ck.ck-list__item {\n\t\t\tmin-width: 1em;\n\t\t}\n\n.ck.ck-emoji__skin-tone > .ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label {\n\t\t\t\twidth: initial;\n\t\t\t}\n\n/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-emoji {\n\twidth: 320px;\n}\n\n.ck .ck.ck-emoji__search {\n\tdisplay: flex;\n\tpadding: var(--ck-spacing-large);\n\tpadding-bottom: var(--ck-spacing-medium);\n\tjustify-content: space-between;\n\talign-items: center;\n}\n\n/*\n * Classes used by the \"fake visual selection\" displayed in the content when an input\n * in the emoji picker UI has focus (the browser does not render the native selection in this state).\n */\n.ck .ck-fake-emoji-selection {\n\tbackground: var(--ck-color-link-fake-selection);\n}\n\n/* A collapsed fake visual selection. */\n.ck .ck-fake-emoji-selection_collapsed {\n\theight: 100%;\n\tborder-right: 1px solid var(--ck-color-base-text);\n\tmargin-right: -1px;\n\toutline: solid 1px hsla(0, 0%, 100%, .5);\n}\n\n/*# sourceMappingURL=index.css.map */","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-emoji__categories-list {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tmargin: 0 var(--ck-spacing-large);\n\n\t> .ck.ck-button.ck-button_with-text {\n\t\tborder-width: 0;\n\t\tborder-bottom-width: 2px;\n\t\tborder-bottom-style: solid;\n\t\tborder-bottom-color: transparent;\n\t\tpadding: 0;\n\t\tfont-size: var(--ck-font-size-big);\n\t\tmin-width: var(--ck-font-size-big);\n\t\tmin-height: var(--ck-font-size-big);\n\n\t\t&.ck-emoji__category-item.ck-on {\n\t\t\tborder-bottom-color: var(--ck-color-base-active);\n\t\t}\n\n\t\t> span {\n\t\t\tmargin: auto;\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-emoji__skin-tone {\n\tmargin-left: var(--ck-spacing-standard);\n\n\t> .ck.ck-dropdown {\n\n\t\t.ck.ck-list__item {\n\t\t\tmin-width: 1em;\n\t\t}\n\n\t\t.ck-button.ck-dropdown__button {\n\t\t\t.ck-button__label {\n\t\t\t\twidth: initial;\n\t\t\t}\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-emoji {\n\twidth: 320px;\n}\n\n.ck .ck.ck-emoji__search {\n\tdisplay: flex;\n\tpadding: var(--ck-spacing-large);\n\tpadding-bottom: var(--ck-spacing-medium);\n\tjustify-content: space-between;\n\talign-items: center;\n}\n\n/*\n * Classes used by the \"fake visual selection\" displayed in the content when an input\n * in the emoji picker UI has focus (the browser does not render the native selection in this state).\n */\n.ck .ck-fake-emoji-selection {\n\tbackground: var(--ck-color-link-fake-selection);\n}\n\n/* A collapsed fake visual selection. */\n.ck .ck-fake-emoji-selection_collapsed {\n\theight: 100%;\n\tborder-right: 1px solid var(--ck-color-base-text);\n\tmargin-right: -1px;\n\toutline: solid 1px hsla(0, 0%, 100%, .5);\n}\n"]}