this repo has no description
1import { 2 MessageBadge, 3 MessageBadgeIndicies, 4 Messages, 5 MessageUsername, 6 MessageUsernameBadge, 7 MessageUsernameBadgeIndicies, 8 MessageUsernameIndicies 9} from "@moonlight-mod/types/coreExtensions/componentEditor"; 10import React from "@moonlight-mod/wp/react"; 11 12const username: Record<string, MessageUsername> = {}; 13const usernameBadges: Record<string, MessageUsernameBadge> = {}; 14const badges: Record<string, MessageBadge> = {}; 15 16function addEntries( 17 elements: React.ReactNode[], 18 entries: Record<string, MessageUsername | MessageUsernameBadge | MessageBadge>, 19 indicies: Partial< 20 Record< 21 | keyof typeof MessageUsernameIndicies 22 | keyof typeof MessageUsernameBadgeIndicies 23 | keyof typeof MessageBadgeIndicies, 24 number 25 > 26 >, 27 props: any 28) { 29 const originalElements = [...elements]; 30 for (const [id, entry] of Object.entries(entries)) { 31 const component = <entry.component {...props} key={id} />; 32 33 if (entry.anchor === undefined) { 34 if (entry.before) { 35 elements.splice(0, 0, component); 36 } else { 37 elements.push(component); 38 } 39 } else { 40 const index = elements.indexOf(originalElements[indicies[entry.anchor]!]); 41 elements.splice(index! + (entry.before ? 0 : 1), 0, component); 42 } 43 } 44} 45 46export const messages: Messages = { 47 addToUsername(id, component, anchor, before = false) { 48 username[id] = { 49 component, 50 anchor, 51 before 52 }; 53 }, 54 addUsernameBadge(id, component, anchor, before = false) { 55 usernameBadges[id] = { 56 component, 57 anchor, 58 before 59 }; 60 }, 61 addBadge(id, component, anchor, before = false) { 62 badges[id] = { 63 component, 64 anchor, 65 before 66 }; 67 }, 68 _patchUsername(elements, props) { 69 addEntries(elements, username, MessageUsernameIndicies, props); 70 return elements; 71 }, 72 _patchUsernameBadges(elements, props) { 73 addEntries(elements, usernameBadges, MessageUsernameBadgeIndicies, props); 74 return elements; 75 }, 76 _patchBadges(elements, props) { 77 addEntries(elements, badges, MessageBadgeIndicies, props); 78 return elements; 79 } 80}; 81 82export default messages;