mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
perf(Components): Hash table (#10890)
refactor(Components): hash table Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
@@ -68,30 +68,7 @@ const { ComponentType } = require('discord-api-types/v10');
|
||||
* @ignore
|
||||
*/
|
||||
function createComponent(data) {
|
||||
if (data instanceof Component) {
|
||||
return data;
|
||||
}
|
||||
|
||||
switch (data.type) {
|
||||
case ComponentType.ActionRow:
|
||||
return new ActionRow(data);
|
||||
case ComponentType.Button:
|
||||
return new ButtonComponent(data);
|
||||
case ComponentType.StringSelect:
|
||||
return new StringSelectMenuComponent(data);
|
||||
case ComponentType.TextInput:
|
||||
return new TextInputComponent(data);
|
||||
case ComponentType.UserSelect:
|
||||
return new UserSelectMenuComponent(data);
|
||||
case ComponentType.RoleSelect:
|
||||
return new RoleSelectMenuComponent(data);
|
||||
case ComponentType.MentionableSelect:
|
||||
return new MentionableSelectMenuComponent(data);
|
||||
case ComponentType.ChannelSelect:
|
||||
return new ChannelSelectMenuComponent(data);
|
||||
default:
|
||||
return new Component(data);
|
||||
}
|
||||
return data instanceof Component ? data : new (ComponentTypeToClass[data.type] ?? Component)(data);
|
||||
}
|
||||
|
||||
exports.createComponent = createComponent;
|
||||
@@ -105,3 +82,14 @@ const { RoleSelectMenuComponent } = require('../structures/RoleSelectMenuCompone
|
||||
const { StringSelectMenuComponent } = require('../structures/StringSelectMenuComponent.js');
|
||||
const { TextInputComponent } = require('../structures/TextInputComponent.js');
|
||||
const { UserSelectMenuComponent } = require('../structures/UserSelectMenuComponent.js');
|
||||
|
||||
const ComponentTypeToClass = {
|
||||
[ComponentType.ActionRow]: ActionRow,
|
||||
[ComponentType.Button]: ButtonComponent,
|
||||
[ComponentType.StringSelect]: StringSelectMenuComponent,
|
||||
[ComponentType.TextInput]: TextInputComponent,
|
||||
[ComponentType.UserSelect]: UserSelectMenuComponent,
|
||||
[ComponentType.RoleSelect]: RoleSelectMenuComponent,
|
||||
[ComponentType.MentionableSelect]: MentionableSelectMenuComponent,
|
||||
[ComponentType.ChannelSelect]: ChannelSelectMenuComponent,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user