UNPKG

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
"use strict"; /** * @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;