mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-15 02:53: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
|
* @ignore
|
||||||
*/
|
*/
|
||||||
function createComponent(data) {
|
function createComponent(data) {
|
||||||
if (data instanceof Component) {
|
return data instanceof Component ? data : new (ComponentTypeToClass[data.type] ?? Component)(data);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.createComponent = createComponent;
|
exports.createComponent = createComponent;
|
||||||
@@ -105,3 +82,14 @@ const { RoleSelectMenuComponent } = require('../structures/RoleSelectMenuCompone
|
|||||||
const { StringSelectMenuComponent } = require('../structures/StringSelectMenuComponent.js');
|
const { StringSelectMenuComponent } = require('../structures/StringSelectMenuComponent.js');
|
||||||
const { TextInputComponent } = require('../structures/TextInputComponent.js');
|
const { TextInputComponent } = require('../structures/TextInputComponent.js');
|
||||||
const { UserSelectMenuComponent } = require('../structures/UserSelectMenuComponent.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