basant307/AI_Governance_Project
048
1import { emojiComponents } from "../data.js";2import { getEmojiSequenceKeyword } from "../format.js";3/**4* Map components from test data5*/6function mapEmojiTestDataComponents(testSequences) {7 const results = {8 converted: /* @__PURE__ */ new Map(),9 items: /* @__PURE__ */ new Map(),10 names: /* @__PURE__ */ new Map(),11 types: {},12 keywords: {}13 };14 for (const key in emojiComponents) {15 const type = key;16 const range = emojiComponents[type];17 for (let number = range[0]; number < range[1]; number++) {18 const keyword = getEmojiSequenceKeyword([number]);19 const item = testSequences[keyword];20 if (!item) throw new Error(`Missing emoji component in test sequence: "${keyword}"`);21 results.converted.set(number, keyword);22 results.items.set(number, item);23 results.items.set(keyword, item);24 const name = item.name;25 results.names.set(number, name);26 results.names.set(keyword, name);27 results.types[name] = type;28 results.keywords[name] = keyword;29 }30 }31 return results;32}33/**34* Convert to string35*/36function emojiSequenceWithComponentsToString(sequence) {37 return sequence.map((item) => typeof item === "number" ? item.toString(16) : item).join("-");38}39/**40* Find variations in sequence41*/42function findEmojiComponentsInSequence(sequence) {43 const components = [];44 for (let index = 0; index < sequence.length; index++) {45 const code = sequence[index];46 for (const key in emojiComponents) {47 const type = key;48 const range = emojiComponents[type];49 if (code >= range[0] && code < range[1]) {50 components.push({51 index,52 type53 });54 break;55 }56 }57 }58 return components;59}60/**61* Replace components in sequence62*/63function replaceEmojiComponentsInCombinedSequence(sequence, values) {64 const indexes = {65 "hair-style": 0,66 "skin-tone": 067 };68 return sequence.map((item) => {69 if (typeof item === "number") return item;70 const index = indexes[item]++;71 const list = values[item];72 if (!list || !list.length) throw new Error(`Cannot replace ${item}: no valid values provided`);73 return list[index >= list.length ? list.length - 1 : index];74 });75}76export { emojiSequenceWithComponentsToString, findEmojiComponentsInSequence, mapEmojiTestDataComponents, replaceEmojiComponentsInCombinedSequence };77 