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> = {}; 15const accessories: Record<string, React.FC<any>> = {}; 16 17function addEntries( 18 elements: React.ReactNode[], 19 entries: Record<string, MessageUsername | MessageUsernameBadge | MessageBadge>, 20 indicies: Partial< 21 Record< 22 | keyof typeof MessageUsernameIndicies 23 | keyof typeof MessageUsernameBadgeIndicies 24 | keyof typeof MessageBadgeIndicies, 25 number 26 > 27 >, 28 props: any 29) { 30 const originalElements = [...elements]; 31 for (const [id, entry] of Object.entries(entries)) { 32 const component = <entry.component {...props} key={id} />; 33 34 if (entry.anchor === undefined) { 35 if (entry.before) { 36 elements.splice(0, 0, component); 37 } else { 38 elements.push(component); 39 } 40 } else { 41 const index = elements.indexOf(originalElements[indicies[entry.anchor]!]); 42 elements.splice(index! + (entry.before ? 0 : 1), 0, component); 43 } 44 } 45} 46 47function addComponents(elements: React.ReactNode[], components: Record<string, React.FC<any>>, props: any) { 48 for (const [id, Component] of Object.entries(components)) { 49 const component = <Component {...props} key={id} />; 50 elements.push(component); 51 } 52} 53 54export const messages: Messages = { 55 addToUsername(id, component, anchor, before = false) { 56 username[id] = { 57 component, 58 anchor, 59 before 60 }; 61 }, 62 addUsernameBadge(id, component, anchor, before = false) { 63 usernameBadges[id] = { 64 component, 65 anchor, 66 before 67 }; 68 }, 69 addBadge(id, component, anchor, before = false) { 70 badges[id] = { 71 component, 72 anchor, 73 before 74 }; 75 }, 76 addAccessory(id, component) { 77 accessories[id] = component; 78 }, 79 _patchUsername(elements, props) { 80 addEntries(elements, username, MessageUsernameIndicies, props); 81 return elements; 82 }, 83 _patchUsernameBadges(elements, props) { 84 addEntries(elements, usernameBadges, MessageUsernameBadgeIndicies, props); 85 return elements; 86 }, 87 _patchBadges(elements, props) { 88 addEntries(elements, badges, MessageBadgeIndicies, props); 89 return elements; 90 }, 91 _patchAccessories(elements, props) { 92 addComponents(elements, accessories, props); 93 return elements; 94 } 95}; 96 97export default messages;