@shgysk8zer0/slack
Version:
An npm package for sending messages in Slack
46 lines (35 loc) • 1.1 kB
JavaScript
;
var block = require('./block.cjs');
var text = require('../element/text.cjs');
var image = require('./image.cjs');
var functions = require('../functions.cjs');
class SlackContextBlock extends block.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 text.SlackTextElement || el instanceof image.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';
}
}
const createSlackContextBlock = functions.createFactory(SlackContextBlock);
exports.SlackContextBlock = SlackContextBlock;
exports.createSlackContextBlock = createSlackContextBlock;