@shgysk8zer0/slack
Version:
An npm package for sending messages in Slack
47 lines (35 loc) • 1.05 kB
JavaScript
;
var block = require('./block.cjs');
var interactive = require('../element/interactive.cjs');
var functions = require('../functions.cjs');
class SlackActionsBlock 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 interactive.SlackInteractiveElement));
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 'actions';
}
}
const createSlackActionsBlock = functions.createFactory(SlackActionsBlock);
exports.SlackActionsBlock = SlackActionsBlock;
exports.createSlackActionsBlock = createSlackActionsBlock;