fox-block-builder
Version:
Maintainable code for loop slack-block-kit-like modal builder
164 lines • 6.2 kB
JavaScript
"use strict";
/* eslint-disable max-classes-per-file */
/* eslint-disable @typescript-eslint/ban-ts-comment */
Object.defineProperty(exports, "__esModule", { value: true });
exports.SlackElementDto = exports.SlackBlockDto = exports.SlackWorkflowStepDto = exports.SlackModalDto = exports.SlackHomeTabDto = exports.SlackMessageDto = exports.SlackDto = exports.Param = void 0;
const constants_1 = require("../constants");
exports.Param = {
[ ]: 'action_id',
[ ]: 'blocks',
[ ]: 'block_id',
[ ]: 'max_selected_items',
title: 'title',
text: 'text',
confirm: 'confirm',
deny: 'deny',
style: 'style',
danger: 'danger',
label: 'label',
options: 'options',
value: 'value',
description: 'description',
url: 'url',
elements: 'elements',
externalId: 'external_id',
imageUrl: 'image_url',
altText: 'alt_text',
element: 'element',
hint: 'hint',
optional: 'optional',
fields: 'fields',
accessory: 'accessory',
initialChannels: 'initial_channels',
initialChannel: 'initial_channel',
responseUrlEnabled: 'response_url_enabled',
initialOptions: 'initial_options',
initialConversations: 'initial_conversations',
defaultToCurrentConversation: 'default_to_current_conversation',
filter: 'filter',
initialConversation: 'initial_conversation',
initialDateTime: 'initial_date_time',
isDecimalAllowed: 'is_decimal_allowed',
minQueryLength: 'min_query_length',
initialOption: 'initial_option',
optionGroups: 'option_groups',
placeholder: 'placeholder',
initialValue: 'initial_value',
multiline: 'multiline',
[ ]: constants_1.Prop.MinLength,
[ ]: constants_1.Prop.MaxLength,
initialUsers: 'initial_users',
initialUser: 'initial_user',
channel: 'channel',
close: 'close',
submit: 'submit',
clearOnClose: 'clear_on_close',
notifyOnClose: 'notify_on_close',
privateMetaData: 'private_metadata',
callbackId: 'callback_id',
asUser: 'as_user',
ts: 'ts',
threadTs: 'thread_ts',
replaceOriginal: 'replace_original',
deleteOriginal: 'delete_original',
responseType: 'response_type',
postAt: 'post_at',
color: 'color',
fallback: 'fallback',
attachments: 'attachments',
dispatchAction: 'dispatch_action',
dispatchActionConfig: 'dispatch_action_config',
initialTime: 'initial_time',
mrkdwn: 'mrkdwn',
submitDisabled: 'submit_disabled',
type: 'type',
focusOnLoad: 'focus_on_load',
accessibilityLabel: 'accessibility_label',
authorName: 'author_name',
providerIconUrl: 'provider_icon_url',
providerName: 'provider_name',
titleUrl: 'title_url',
thumbnailUrl: 'thumbnail_url',
videoUrl: 'video_url',
[ ]: constants_1.Prop.MinValue,
[ ]: constants_1.Prop.MaxValue,
maxFiles: 'max_files',
filetypes: 'filetypes',
[ ]: 'source',
/** Расширенные параметры нашего форка */
[ ]: constants_1.Prop.Access,
[ ]: constants_1.Prop.NoSubmit,
/** Планфикс */
[ ]: constants_1.Prop.AsTitle,
[ ]: constants_1.Prop.CustomField,
[ ]: constants_1.Prop.Directory,
[ ]: constants_1.Prop.Analytics,
/** Команды */
[ ]: constants_1.Prop.ForTeams,
/** Прочее */
[ ]: constants_1.Prop.GetValue,
[ ]: constants_1.Prop.OneSType,
[ ]: constants_1.Prop.OnSelect,
[ ]: constants_1.Prop.TextProps,
[ ]: constants_1.Prop.Team,
[ ]: constants_1.Prop.SubmitOnClick,
[ ]: constants_1.Prop.Variant,
[ ]: constants_1.Prop.RegExp,
/** Даты */
[ ]: constants_1.Prop.MinOffset,
[ ]: constants_1.Prop.MaxOffset,
[ ]: constants_1.Prop.InitialOffset,
[ ]: constants_1.Prop.InitialOffsetRange,
[ ]: constants_1.Prop.MaxDateRange,
[ ]: constants_1.Prop.DatePickerPicker,
[ ]: constants_1.Prop.FetchValues,
/** Видимость */
[ ]: constants_1.Prop.VisibleIf,
};
class SlackDto {
constructor(params) {
Object.keys(params).forEach((paramName) => {
const mappedParam = SlackDto.mapParam(paramName);
if (params[paramName] !== undefined && mappedParam !== undefined) {
// @ts-ignore -- Dynamically created class
this[mappedParam] = params[paramName];
}
});
}
static mapParam(param) {
// @ts-ignore -- Dynamically created class
return exports.Param[param];
}
}
exports.SlackDto = SlackDto;
class SlackMessageDto extends SlackDto {
}
exports.SlackMessageDto = SlackMessageDto;
class SlackHomeTabDto extends SlackDto {
constructor() {
super(...arguments);
this.type = constants_1.SurfaceType.HomeTab;
}
}
exports.SlackHomeTabDto = SlackHomeTabDto;
class SlackModalDto extends SlackDto {
constructor() {
super(...arguments);
this.type = constants_1.SurfaceType.Modal;
}
}
exports.SlackModalDto = SlackModalDto;
class SlackWorkflowStepDto extends SlackDto {
constructor() {
super(...arguments);
this.type = constants_1.SurfaceType.WorkflowStep;
}
}
exports.SlackWorkflowStepDto = SlackWorkflowStepDto;
class SlackBlockDto extends SlackDto {
}
exports.SlackBlockDto = SlackBlockDto;
class SlackElementDto extends SlackDto {
}
exports.SlackElementDto = SlackElementDto;
//# sourceMappingURL=slack-dto.js.map