seyfert
Version:
The most advanced framework for discord bots
61 lines (60 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Section = void 0;
const common_1 = require("../common");
const types_1 = require("../types");
const _1 = require(".");
const Base_1 = require("./Base");
class Section extends Base_1.BaseComponentBuilder {
components;
accessory;
constructor({ components, accessory, ...data } = {}) {
super({ type: types_1.ComponentType.Section, ...data });
this.components = (components?.map(component => (0, _1.fromComponent)(component)) ?? []);
if (accessory)
this.accessory = (0, _1.fromComponent)(accessory);
}
/**
* Adds components to this section.
* @param components The components to add
* @example section.addComponents(new TextDisplay().content('Hello'));
*/
addComponents(...components) {
this.components = this.components.concat(components.flat());
return this;
}
/**
* Sets the components for this section.
* @param components The components to set
* @example section.setComponents(new TextDisplay().content('Hello'));
*/
setComponents(...components) {
this.components = components.flat();
return this;
}
setAccessory(accessory) {
this.accessory = accessory;
return this;
}
/**
* Converts this section to JSON.
* @returns The JSON representation of this section
*/
toJSON() {
if (!this.accessory)
throw new common_1.SeyfertError('MISSING_ACCESSORY', {
metadata: {
...(0, common_1.createValidationMetadata)('accessory to be set before calling toJSON()', this.accessory, {
component: 'Section',
}),
detail: 'Cannot convert to JSON without an accessory.',
},
});
return {
...this.data,
components: this.components.map(component => component.toJSON()),
accessory: this.accessory.toJSON(),
};
}
}
exports.Section = Section;