UNPKG

fox-block-builder

Version:

Maintainable code for loop slack-block-kit-like modal builder

164 lines 6.2 kB
"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 = { [constants_1.Prop.ActionId]: 'action_id', [constants_1.Prop.Blocks]: 'blocks', [constants_1.Prop.BlockId]: 'block_id', [constants_1.Prop.MaxSelectedItems]: '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.MinLength, [constants_1.Prop.MaxLength]: 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.MinValue, [constants_1.Prop.MaxValue]: constants_1.Prop.MaxValue, maxFiles: 'max_files', filetypes: 'filetypes', [constants_1.Prop.Source]: 'source', /** Расширенные параметры нашего форка */ [constants_1.Prop.Access]: constants_1.Prop.Access, [constants_1.Prop.NoSubmit]: constants_1.Prop.NoSubmit, /** Планфикс */ [constants_1.Prop.AsTitle]: constants_1.Prop.AsTitle, [constants_1.Prop.CustomField]: constants_1.Prop.CustomField, [constants_1.Prop.Directory]: constants_1.Prop.Directory, [constants_1.Prop.Analytics]: constants_1.Prop.Analytics, /** Команды */ [constants_1.Prop.ForTeams]: constants_1.Prop.ForTeams, /** Прочее */ [constants_1.Prop.GetValue]: constants_1.Prop.GetValue, [constants_1.Prop.OneSType]: constants_1.Prop.OneSType, [constants_1.Prop.OnSelect]: constants_1.Prop.OnSelect, [constants_1.Prop.TextProps]: constants_1.Prop.TextProps, [constants_1.Prop.Team]: constants_1.Prop.Team, [constants_1.Prop.SubmitOnClick]: constants_1.Prop.SubmitOnClick, [constants_1.Prop.Variant]: constants_1.Prop.Variant, [constants_1.Prop.RegExp]: constants_1.Prop.RegExp, /** Даты */ [constants_1.Prop.MinOffset]: constants_1.Prop.MinOffset, [constants_1.Prop.MaxOffset]: constants_1.Prop.MaxOffset, [constants_1.Prop.InitialOffset]: constants_1.Prop.InitialOffset, [constants_1.Prop.InitialOffsetRange]: constants_1.Prop.InitialOffsetRange, [constants_1.Prop.MaxDateRange]: constants_1.Prop.MaxDateRange, [constants_1.Prop.DatePickerPicker]: constants_1.Prop.DatePickerPicker, [constants_1.Prop.FetchValues]: constants_1.Prop.FetchValues, /** Видимость */ [constants_1.Prop.VisibleIf]: 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