UNPKG

seyfert

Version:

The most advanced framework for discord bots

61 lines (60 loc) 2.1 kB
"use strict"; 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;