slack-block-builder
Version:
Maintainable code for interactive Slack messages, modals, home tabs, and workflow steps. A must-have for the Slack Block Kit framework.
135 lines (134 loc) • 2.97 kB
JavaScript
;
/**
* @description Wraps a string in quotation marks.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Md = exports.group = exports.channel = exports.user = exports.emoji = exports.mailto = exports.link = exports.listBullet = exports.listDash = exports.codeBlock = exports.codeInline = exports.strike = exports.italic = exports.bold = exports.blockquote = exports.quote = void 0;
function quote(string) {
return `"${string}"`;
}
exports.quote = quote;
/**
* @description Makes a string a block quote.
*/
function blockquote(string) {
return string.split('\n')
.map((value) => `>${value}`)
.join('\n');
}
exports.blockquote = blockquote;
/**
* @description Makes a string bold.
*/
function bold(string) {
return `*${string}*`;
}
exports.bold = bold;
/**
* @description Makes a string italic.
*/
function italic(string) {
return `_${string}_`;
}
exports.italic = italic;
/**
* @description Strikes out a string.
*/
function strike(string) {
return `~${string}~`;
}
exports.strike = strike;
/**
* @description Turns a string into an inline block of code.
*/
function codeInline(string) {
return `\`${string}\``;
}
exports.codeInline = codeInline;
/**
* @description Turns a string into a multi-line block of code.
*/
function codeBlock(string) {
return `\`\`\`${string}\`\`\``;
}
exports.codeBlock = codeBlock;
/**
* @description Formats multiple strings into a dashed list.
*/
function listDash(...items) {
return items.flat()
.map((string) => `- ${string}`)
.join('\n');
}
exports.listDash = listDash;
/**
* @description Formats multiple strings into a bulleted list.
*/
function listBullet(...items) {
return items.flat()
.map((string) => `• ${string}`)
.join('\n');
}
exports.listBullet = listBullet;
/**
* @description Formats a URL into a clickable link, with an optional alias.
*/
function link(url, alias) {
return alias
? `<${url}|${alias}>`
: `<${url}>`;
}
exports.link = link;
/**
* @description Formats an email address into a clickable link.
*/
function mailto(email, alias) {
return `<mailto:${email}|${alias}>`;
}
exports.mailto = mailto;
/**
* @description Creates a named emoji in the colon format.
*/
function emoji(name) {
return `:${name}:`;
}
exports.emoji = emoji;
/**
* @description Mentions a user in a channel.
*/
function user(id) {
return `<@${id}>`;
}
exports.user = user;
/**
* @description Creates a clickable link to a channel.
*/
function channel(id) {
return `<#${id}>`;
}
exports.channel = channel;
/**
* @description Mentions a Slack user group.
*/
function group(id) {
return `<!subteam^${id}>`;
}
exports.group = group;
const md = {
quote,
blockquote,
bold,
italic,
strike,
codeInline,
codeBlock,
listDash,
listBullet,
link,
mailto,
emoji,
user,
channel,
group,
};
exports.Md = md;