mirror of
https://github.com/discordjs/discord.js.git
synced 2026-05-31 16:10:08 +00:00
* feat: thumbnail component * chore: just a temp file to track remaining components * feat: file component * feat: section component * feat: text display component * chore: bump alpha version of dtypes * chore: simplify ComponentBuilder base type * feat: MediaGallery * feat: Section builder * chore: tests for sections * chore: forgot you * chore: docs * fix: missing comma * fix: my bad * feat: container builder * chore: requested changes * chore: missed u * chore: type tests * chore: setId/clearId * chore: apply suggestions from code review * chore: unify pick * chore: some requested changes * chore: tests and small fixes * chore: added tests that need fixing * fix: tests * chore: cleanup on isle protected * docs: remove locale * chore: types for new message builder * chore: fix tests * chore: attempt 1 at message builder assertions * chore: apply suggestions * Update packages/builders/src/messages/Assertions.ts Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> * Update packages/builders/src/components/v2/Thumbnail.ts Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> * fix: tests * chore: fmt * Apply suggestions from code review Co-authored-by: Denis-Adrian Cristea <didinele.dev@gmail.com> * chore: fix pnpm lockfile revert --------- Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com> Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> Co-authored-by: Denis-Adrian Cristea <didinele.dev@gmail.com>
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import type { APITextDisplayComponent } from 'discord-api-types/v10';
|
|
import { ComponentType } from 'discord-api-types/v10';
|
|
import { validate } from '../../util/validation.js';
|
|
import { ComponentBuilder } from '../Component.js';
|
|
import { textDisplayPredicate } from './Assertions.js';
|
|
|
|
export class TextDisplayBuilder extends ComponentBuilder<APITextDisplayComponent> {
|
|
protected readonly data: Partial<APITextDisplayComponent>;
|
|
|
|
/**
|
|
* Creates a new text display from API data.
|
|
*
|
|
* @param data - The API data to create this text display with
|
|
* @example
|
|
* Creating a text display from an API data object:
|
|
* ```ts
|
|
* const textDisplay = new TextDisplayBuilder({
|
|
* content: 'some text',
|
|
* });
|
|
* ```
|
|
* @example
|
|
* Creating a text display using setters and API data:
|
|
* ```ts
|
|
* const textDisplay = new TextDisplayBuilder({
|
|
* content: 'old text',
|
|
* })
|
|
* .setContent('new text');
|
|
* ```
|
|
*/
|
|
public constructor(data: Partial<APITextDisplayComponent> = {}) {
|
|
super();
|
|
this.data = {
|
|
...structuredClone(data),
|
|
type: ComponentType.TextDisplay,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sets the text of this text display.
|
|
*
|
|
* @param content - The text to use
|
|
*/
|
|
public setContent(content: string) {
|
|
this.data.content = content;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc ComponentBuilder.toJSON}
|
|
*/
|
|
public override toJSON(validationOverride?: boolean): APITextDisplayComponent {
|
|
const clone = structuredClone(this.data);
|
|
validate(textDisplayPredicate, clone, validationOverride);
|
|
|
|
return clone as APITextDisplayComponent;
|
|
}
|
|
}
|