@shgysk8zer0/slack
Version:
An npm package for sending messages in Slack
75 lines (61 loc) • 1.41 kB
JavaScript
;
var block = require('./block.cjs');
var text = require('../element/text.cjs');
var plainText = require('../element/plain-text.cjs');
var validation = require('../validation.cjs');
var functions = require('../functions.cjs');
class SlackImageBlock extends block.SlackBlock {
#url;
#alt;
#title;
constructor(url, { alt, title, id } = {}) {
super({ id });
this.url = url;
this.#alt = alt;
this.#title = title;
}
get alt() {
return this.#alt;
}
set alt(val) {
this.#alt = val;
}
get title() {
return this.#title;
}
set title(val) {
if (val instanceof text.SlackTextElement) {
this.#title = val;
} else if (typeof val === 'string') {
this.title = new plainText.SlackPlainTextElement(val);
} else {
throw new TypeError('title must be SlackTextElement or a string.');
}
}
get url() {
return this.#url;
}
set url(val) {
if (! validation.isURL(val)) {
throw new TypeError(`${val} is not a valid URL.`);
} else if (val instanceof URL) {
this.#url = val.href;
} else {
this.#url = val;
}
}
toJSON() {
return {
...super.toJSON(),
image_url: this.#url,
title: this.#title,
alt_text: this.#alt,
};
}
static get TYPE() {
return 'image';
}
}
const createSlackImageBlock = functions.createFactory(SlackImageBlock);
exports.SlackImageBlock = SlackImageBlock;
exports.createSlackImageBlock = createSlackImageBlock;