UNPKG

@shgysk8zer0/slack

Version:

An npm package for sending messages in Slack

75 lines (61 loc) 1.41 kB
'use strict'; 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;