| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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 };
|