@nextcloud/vue
Version:
Nextcloud vue components
66 lines (65 loc) • 1.99 kB
JavaScript
import { getBuilder } from "@nextcloud/browser-storage";
import { EmojiIndex, frequently } from "emoji-mart-vue-fast";
import data from "emoji-mart-vue-fast/data/all.json";
const storage = getBuilder("nextcloud-vue").persist(true).build();
let emojiIndex;
var EmojiSkinTone = /* @__PURE__ */ ((EmojiSkinTone2) => {
EmojiSkinTone2[EmojiSkinTone2["Neutral"] = 1] = "Neutral";
EmojiSkinTone2[EmojiSkinTone2["Light"] = 2] = "Light";
EmojiSkinTone2[EmojiSkinTone2["MediumLight"] = 3] = "MediumLight";
EmojiSkinTone2[EmojiSkinTone2["Medium"] = 4] = "Medium";
EmojiSkinTone2[EmojiSkinTone2["MediumDark"] = 5] = "MediumDark";
EmojiSkinTone2[EmojiSkinTone2["Dark"] = 6] = "Dark";
return EmojiSkinTone2;
})(EmojiSkinTone || {});
function emojiSearch(query, maxResults = 10) {
if (!emojiIndex) {
emojiIndex = new EmojiIndex(data);
}
const currentSkinTone = getCurrentSkinTone();
let results;
if (query) {
results = emojiIndex.search(`:${query}`, maxResults);
if (results.length < maxResults) {
results = results.concat(emojiIndex.search(query, maxResults - results.length));
}
} else {
results = frequently.get(maxResults).map((id) => emojiIndex.emoji(id)) || [];
}
return results.map((emoji) => emoji.getSkin(currentSkinTone));
}
function emojiAddRecent(emojiData) {
frequently.add(emojiData);
}
function getCurrentSkinTone() {
const skinTone = Number.parseInt(storage.getItem("NcEmojiPicker::currentSkinTone") ?? "1");
return Math.min(
Math.max(
skinTone,
1
/* Neutral */
),
6
/* Dark */
);
}
function setCurrentSkinTone(skinTone) {
skinTone = Math.min(
Math.max(
skinTone,
1
/* Neutral */
),
6
/* Dark */
);
storage.setItem("NcEmojiPicker::currentSkinTone", skinTone.toString());
}
export {
EmojiSkinTone as E,
emojiAddRecent as a,
emojiSearch as e,
getCurrentSkinTone as g,
setCurrentSkinTone as s
};
//# sourceMappingURL=emoji-BY_D0V5K.mjs.map