diff --git a/packages/discord.js/src/util/Components.js b/packages/discord.js/src/util/Components.js index 1d74aa72b1ca..1c512e2074a6 100644 --- a/packages/discord.js/src/util/Components.js +++ b/packages/discord.js/src/util/Components.js @@ -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, +};