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 59 `children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])` 60 60 } 61 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 + } 62 70 } 63 71 ]; 64 72
+15
packages/core-extensions/src/componentEditor/webpackModules/messages.tsx
··· 12 12 const username: Record<string, MessageUsername> = {}; 13 13 const usernameBadges: Record<string, MessageUsernameBadge> = {}; 14 14 const badges: Record<string, MessageBadge> = {}; 15 + const accessories: Record<string, React.FC<any>> = {}; 15 16 16 17 function addEntries( 17 18 elements: React.ReactNode[], ··· 40 41 const index = elements.indexOf(originalElements[indicies[entry.anchor]!]); 41 42 elements.splice(index! + (entry.before ? 0 : 1), 0, component); 42 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); 43 51 } 44 52 } 45 53 ··· 65 73 before 66 74 }; 67 75 }, 76 + addAccessory(id, component) { 77 + accessories[id] = component; 78 + }, 68 79 _patchUsername(elements, props) { 69 80 addEntries(elements, username, MessageUsernameIndicies, props); 70 81 return elements; ··· 75 86 }, 76 87 _patchBadges(elements, props) { 77 88 addEntries(elements, badges, MessageBadgeIndicies, props); 89 + return elements; 90 + }, 91 + _patchAccessories(elements, props) { 92 + addComponents(elements, accessories, props); 78 93 return elements; 79 94 } 80 95 };
+17
packages/types/src/coreExtensions/componentEditor.ts
··· 121 121 } 122 122 123 123 export type Messages = { 124 + /** 125 + * Adds a component to the username of a message 126 + */ 124 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 + */ 125 131 addUsernameBadge: ( 126 132 id: string, 127 133 component: React.FC<any>, 128 134 anchor?: MessageUsernameBadgeAnchors, 129 135 before?: boolean 130 136 ) => void; 137 + /** 138 + * Adds a component to the end of a message header (e.g. silent indicator) 139 + */ 131 140 addBadge: (id: string, component: React.FC<any>, anchor?: MessageBadgeAnchors, before?: boolean) => void; 132 141 /** 142 + * Adds a component to message accessories (e.g. embeds) 143 + */ 144 + addAccessory: (id: string, component: React.FC<any>) => void; 145 + /** 133 146 * @private 134 147 */ 135 148 _patchUsername: Patcher<any>; ··· 141 154 * @private 142 155 */ 143 156 _patchBadges: Patcher<any>; 157 + /** 158 + * @private 159 + */ 160 + _patchAccessories: Patcher<any>; 144 161 }; 145 162 //#endregion