{"version":3,"file":"AutocompleteInteraction.mjs","sourceRoot":"","sources":["../../src/interactions/AutocompleteInteraction.mts"],"names":[],"mappings":"AAAA,OAAO,EAAwH,4BAA4B,EAAoE,MAAM,uBAAuB,CAAC;AAC7P,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAkD,0BAA0B,EAAwF,MAAM,4BAA4B,CAAC;AAC9M,OAAO,EAA4B,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAGtH,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,eAAe;IAgBhE,YAAY,WAAyD;QACjE,KAAK,CAAC,WAAW,CAAC,CAAC;QAdvB,uBAAuB;QACvB;;;;;WAAqB;QACrB,yBAAyB;QACzB;;;;;WAAoB;QACpB,0BAA0B;QAC1B;;;;;WAAoC;QACpC,2DAA2D;QAC3D;;;;;WAA2B;QAC3B,iDAAiD;QACjD;;;;;WAAqB;QACrB,sEAAsE;QACtE;;;;;WAA6B;QAKzB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9G,CAAC;CAEJ;AAED,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;IAChD,SAAS;CACZ,CAAC,CAAC;AAEH,8BAA8B,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;AAM1E,MAAM,OAAO,mBAAoB,SAAQ,0BAA0B;IAG/D,YAAY,OAAiE,EAAE,QAAgD,EAAE,OAAgB;QAC7I,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAElC,oCAAoC;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,WAAW,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAExD,IAAI,4BAA4B,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;gBAChE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;aAClE;iBACI,IAAI,4BAA4B,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;gBAC1E,WAAW,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;aACnF;YAED,iDAAiD;YACjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,WAAW,EAAE,OAAO,CAAC;SACvD;IACL,CAAC;IAED,SAAS,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IACtC,CAAC;CAEJ","sourcesContent":["import { APIApplicationCommandAutocompleteInteraction, APIApplicationCommandInteractionDataOption, APIInteractionDataResolved, ApplicationCommandOptionType, ApplicationCommandType, InteractionType, LocaleString, Snowflake } from \"discord-api-types/v10\";\nimport BaseInteraction from \"./BaseInteraction.mjs\";\nimport { AttachmentOption, BooleanOption, ChannelOption, ChatInputInteractionOption, IntegerOption, MentionableOption, NumberOption, RoleOption, StringOption, UserOption } from \"./ChatInputInteraction.mjs\";\nimport { InteractionResponseMixin, applyInteractionResponseMixins, createInteractionMixinList } from \"./Response.mjs\";\n\n\nexport default class AutocompleteInteraction extends BaseInteraction {\n    declare type: InteractionType.ApplicationCommandAutocomplete;\n\n    /** The command's Id */\n    commandId: Snowflake;\n    /** The command's name */\n    commandName: string;\n    /** The type of command */\n    commandType: ApplicationCommandType;\n    /** If the command was a guild specific, that guild's id */\n    commandGuildId?: Snowflake;\n    /** The selected language of the invoking user */\n    locale: LocaleString;\n    /** The options that the invoking user has provided for the command */\n    options: AutocompleteOptions;\n\n    constructor(interaction: APIApplicationCommandAutocompleteInteraction) {\n        super(interaction);\n\n        this.commandId = interaction.data.id;\n        this.commandName = interaction.data.name;\n        this.commandType = interaction.data.type;\n        this.commandGuildId = interaction.data.guild_id;\n        this.locale = interaction.locale;\n        this.options = new AutocompleteOptions(interaction.data.options, interaction.data.resolved, this.guildId);\n    }\n    \n}\n\nconst allowedResponses = createInteractionMixinList([\n    \"respond\"\n]);\n\napplyInteractionResponseMixins(AutocompleteInteraction, allowedResponses);\n\nexport default interface ApplicationCommandInteraction extends InteractionResponseMixin<typeof allowedResponses> {}\n\nexport type AutocompleteOptionsType = (StringOption | NumberOption | UserOption | RoleOption | BooleanOption | IntegerOption | ChannelOption | AttachmentOption | MentionableOption) & {focused?: boolean};\n\nexport class AutocompleteOptions extends ChatInputInteractionOption {\n    declare readonly options: Record<string, AutocompleteOptionsType>;\n    \n    constructor(options: APIApplicationCommandInteractionDataOption[] | undefined, resolved: APIInteractionDataResolved | undefined, guildId?: string) {\n        super(options, resolved, guildId);\n        \n        // Add focused option to all options\n        for (const option in this.options) {\n            let foundOption = options?.find(o => o.name === option);\n            \n            if (ApplicationCommandOptionType.Subcommand === options?.[0]?.type) {\n                foundOption = options[0].options?.find(o => o.name === option);\n            }\n            else if (ApplicationCommandOptionType.SubcommandGroup === options?.[0]?.type) {\n                foundOption = options?.[0]?.options?.[0]?.options?.find(o => o.name === option); \n            }\n\n            // @ts-expect-error - this is a valid option type\n            this.options[option].focused = foundOption?.focused;\n        }\n    }\n    \n    isFocused(name: string): boolean | undefined {\n        return this.options[name].focused;\n    }\n\n}\n"]}