astro-ghostcms/.pnpm-store/v3/files/30/b3a34c7d31697db346fc9970a6f...

76 lines
2.3 KiB
Plaintext

import { emojiComponents } from '../data.mjs';
import { getEmojiSequenceKeyword } from '../format.mjs';
import '../convert.mjs';
function mapEmojiTestDataComponents(testSequences) {
const results = {
converted: /* @__PURE__ */ new Map(),
items: /* @__PURE__ */ new Map(),
names: /* @__PURE__ */ new Map(),
types: {},
keywords: {}
};
for (const key in emojiComponents) {
const type = key;
const range = emojiComponents[type];
for (let number = range[0]; number < range[1]; number++) {
const keyword = getEmojiSequenceKeyword([number]);
const item = testSequences[keyword];
if (!item) {
throw new Error(
`Missing emoji component in test sequence: "${keyword}"`
);
}
results.converted.set(number, keyword);
results.items.set(number, item);
results.items.set(keyword, item);
const name = item.name;
results.names.set(number, name);
results.names.set(keyword, name);
results.types[name] = type;
results.keywords[name] = keyword;
}
}
return results;
}
function emojiSequenceWithComponentsToString(sequence) {
return sequence.map((item) => typeof item === "number" ? item.toString(16) : item).join("-");
}
function findEmojiComponentsInSequence(sequence) {
const components = [];
for (let index = 0; index < sequence.length; index++) {
const code = sequence[index];
for (const key in emojiComponents) {
const type = key;
const range = emojiComponents[type];
if (code >= range[0] && code < range[1]) {
components.push({
index,
type
});
break;
}
}
}
return components;
}
function replaceEmojiComponentsInCombinedSequence(sequence, values) {
const indexes = {
"hair-style": 0,
"skin-tone": 0
};
return sequence.map((item) => {
if (typeof item === "number") {
return item;
}
const index = indexes[item]++;
const list = values[item];
if (!list || !list.length) {
throw new Error(`Cannot replace ${item}: no valid values provided`);
}
return list[index >= list.length ? list.length - 1 : index];
});
}
export { emojiSequenceWithComponentsToString, findEmojiComponentsInSequence, mapEmojiTestDataComponents, replaceEmojiComponentsInCombinedSequence };