@shgysk8zer0/slack
Version:
An npm package for sending messages in Slack
41 lines (32 loc) • 992 B
JavaScript
import { SlackBlock } from './block.js';
import { SlackTextElement } from '../element/text.js';
import { SlackImageBlock } from './image.js';
import { createFactory } from '../functions.js';
export class SlackContextBlock extends SlackBlock {
#elements = [];
constructor({ elements = [], id } = {}) {
super({ id });
if (! Array.isArray(elements)) {
throw new TypeError('elements must be an array.');
} else if (elements.length !== 0) {
this.add(...elements);
}
}add(...elements) {
const before = this.#elements.length;
const count = this.#elements.push(...elements.filter(el => el instanceof SlackTextElement || el instanceof SlackImageBlock));
if (count - before !== elements.length) {
throw new Error('Error adding some elements.');
}
return this;
}
toJSON() {
return {
...super.toJSON(),
elements: this.#elements,
};
}
static get TYPE() {
return 'context';
}
}
export const createSlackContextBlock = createFactory(SlackContextBlock);