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.
65 lines (64 loc) • 3.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDispatchActionsConfigurationObject = exports.getFilter = exports.getDateTimeIntegerFromDate = exports.getFormattedDate = exports.getFields = exports.getElementsForContext = exports.getMarkdownObject = exports.getStringFromNumber = exports.getPlainTextObject = exports.getBuilderResults = exports.getBuilderResult = void 0;
const objects_1 = require("../objects");
const defaultParams = {
isMarkdown: false,
};
const valueOrUndefined = (value) => (value === undefined ? undefined : value);
const valuesOrUndefined = (values) => {
if (values.filter((value) => value !== undefined).length === 0) {
return undefined;
}
return values;
};
function getBuilderResult(builder, params = defaultParams) {
return valueOrUndefined(builder) && builder.build(params);
}
exports.getBuilderResult = getBuilderResult;
function getBuilderResults(builders, params = defaultParams) {
return valueOrUndefined(builders) && builders
.map((builder) => getBuilderResult(builder, params));
}
exports.getBuilderResults = getBuilderResults;
function getPlainTextObject(text) {
return valueOrUndefined(text) ? new objects_1.PlainTextObject(text) : undefined;
}
exports.getPlainTextObject = getPlainTextObject;
function getStringFromNumber(value) {
return valueOrUndefined(value) ? value.toString() : undefined;
}
exports.getStringFromNumber = getStringFromNumber;
function getMarkdownObject(text) {
return valueOrUndefined(text) ? new objects_1.MarkdownObject(text) : undefined;
}
exports.getMarkdownObject = getMarkdownObject;
function getElementsForContext(elements) {
return valueOrUndefined(elements) && elements.map((element) => (typeof element === 'string'
? new objects_1.MarkdownObject(element)
: element.build()));
}
exports.getElementsForContext = getElementsForContext;
function getFields(fields) {
return valueOrUndefined(fields) && fields.map((field) => new objects_1.MarkdownObject(field));
}
exports.getFields = getFields;
function getFormattedDate(date) {
return valueOrUndefined(date) && date.toISOString().split('T')[0];
}
exports.getFormattedDate = getFormattedDate;
function getDateTimeIntegerFromDate(date) {
return valueOrUndefined(date) && Math.floor(date.getTime() / 1000);
}
exports.getDateTimeIntegerFromDate = getDateTimeIntegerFromDate;
function getFilter({ filter, excludeBotUsers, excludeExternalSharedChannels }) {
return valuesOrUndefined([filter, excludeBotUsers, excludeExternalSharedChannels])
&& new objects_1.FilterObject({ filter, excludeBotUsers, excludeExternalSharedChannels });
}
exports.getFilter = getFilter;
function getDispatchActionsConfigurationObject({ onEnterPressed, onCharacterEntered }) {
return valuesOrUndefined([onEnterPressed, onCharacterEntered])
&& new objects_1.DispatchActionsConfigurationObject([onEnterPressed, onCharacterEntered]
.filter(Boolean));
}
exports.getDispatchActionsConfigurationObject = getDispatchActionsConfigurationObject;