this repo has no description

componentEditor: Message accessories

(work check-in commit, I want to add text area stuff before releasing)

Changed files
+40
packages
core-extensions
src
componentEditor
webpackModules
types
src
coreExtensions
+8
packages/core-extensions/src/componentEditor/index.ts
··· 59 `children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])` 60 } 61 ] 62 } 63 ]; 64
··· 59 `children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])` 60 } 61 ] 62 + }, 63 + { 64 + find: '.provider&&"Discord"===', 65 + replace: { 66 + match: /(?<=\.container\),)children:(\[.+?this\.renderSuppressConfirmModal\(\),.+?\])}\)/, 67 + replacement: (_, elements) => 68 + `children:require("componentEditor_messages").default._patchAccessories(${elements},this.props)})` 69 + } 70 } 71 ]; 72
+15
packages/core-extensions/src/componentEditor/webpackModules/messages.tsx
··· 12 const username: Record<string, MessageUsername> = {}; 13 const usernameBadges: Record<string, MessageUsernameBadge> = {}; 14 const badges: Record<string, MessageBadge> = {}; 15 16 function addEntries( 17 elements: React.ReactNode[], ··· 40 const index = elements.indexOf(originalElements[indicies[entry.anchor]!]); 41 elements.splice(index! + (entry.before ? 0 : 1), 0, component); 42 } 43 } 44 } 45 ··· 65 before 66 }; 67 }, 68 _patchUsername(elements, props) { 69 addEntries(elements, username, MessageUsernameIndicies, props); 70 return elements; ··· 75 }, 76 _patchBadges(elements, props) { 77 addEntries(elements, badges, MessageBadgeIndicies, props); 78 return elements; 79 } 80 };
··· 12 const username: Record<string, MessageUsername> = {}; 13 const usernameBadges: Record<string, MessageUsernameBadge> = {}; 14 const badges: Record<string, MessageBadge> = {}; 15 + const accessories: Record<string, React.FC<any>> = {}; 16 17 function addEntries( 18 elements: React.ReactNode[], ··· 41 const index = elements.indexOf(originalElements[indicies[entry.anchor]!]); 42 elements.splice(index! + (entry.before ? 0 : 1), 0, component); 43 } 44 + } 45 + } 46 + 47 + function 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 ··· 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; ··· 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 };
+17
packages/types/src/coreExtensions/componentEditor.ts
··· 121 } 122 123 export type Messages = { 124 addToUsername: (id: string, component: React.FC<any>, anchor?: MessageUsernameAnchors, before?: boolean) => void; 125 addUsernameBadge: ( 126 id: string, 127 component: React.FC<any>, 128 anchor?: MessageUsernameBadgeAnchors, 129 before?: boolean 130 ) => void; 131 addBadge: (id: string, component: React.FC<any>, anchor?: MessageBadgeAnchors, before?: boolean) => void; 132 /** 133 * @private 134 */ 135 _patchUsername: Patcher<any>; ··· 141 * @private 142 */ 143 _patchBadges: Patcher<any>; 144 }; 145 //#endregion
··· 121 } 122 123 export type Messages = { 124 + /** 125 + * Adds a component to the username of a message 126 + */ 127 addToUsername: (id: string, component: React.FC<any>, anchor?: MessageUsernameAnchors, before?: boolean) => void; 128 + /** 129 + * Adds a component to the username badge area of a message (e.g. where role icons/new member badge is) 130 + */ 131 addUsernameBadge: ( 132 id: string, 133 component: React.FC<any>, 134 anchor?: MessageUsernameBadgeAnchors, 135 before?: boolean 136 ) => void; 137 + /** 138 + * Adds a component to the end of a message header (e.g. silent indicator) 139 + */ 140 addBadge: (id: string, component: React.FC<any>, anchor?: MessageBadgeAnchors, before?: boolean) => void; 141 /** 142 + * Adds a component to message accessories (e.g. embeds) 143 + */ 144 + addAccessory: (id: string, component: React.FC<any>) => void; 145 + /** 146 * @private 147 */ 148 _patchUsername: Patcher<any>; ··· 154 * @private 155 */ 156 _patchBadges: Patcher<any>; 157 + /** 158 + * @private 159 + */ 160 + _patchAccessories: Patcher<any>; 161 }; 162 //#endregion