UNPKG

fox-block-builder

Version:

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

108 lines 4.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fillPluginFormBlock = exports.arrayToString = exports.setBlockValueData = void 0; const class_transformer_1 = require("class-transformer"); const loop_1 = require("../../internal/constants/loop"); const internal_1 = require("../../internal"); const plugin_form_block_dto_1 = require("./plugin-form-block.dto"); const setBlockValueData = ({ value, obj }) => { const isObject = obj.value && typeof obj.value === 'object' && !Array.isArray(value); if (isObject) { obj.text = obj.value.label; } if (obj.value === null) { return null; } /** Если тип value - строка и нет поля text - это текстовое поле */ if (!obj.text && typeof value === 'string') { obj.text = value; } const blockValue = isObject ? obj.value.value : obj.value; /** Также обрабатываем массивы */ /** Если значение не задано - так и возвращаем */ if (blockValue === undefined) { return undefined; } /** Если массив значений */ if (Array.isArray(blockValue)) { /** Задаем флаг у обьекта */ obj.multi = true; /** Если массив labelInValue */ if (typeof blockValue[0] === 'object' && 'label' in obj.value[0] && 'value' in obj.value[0]) { const labels = []; const values = []; blockValue.forEach((val) => { labels.push(val.label); values.push(val.value); }); obj.text = labels.join(loop_1.LOOP_JOIN_ARG); return values; } else { /** Если другой массив */ return blockValue; } } return String(blockValue); }; exports.setBlockValueData = setBlockValueData; /** * Преобразование из массива в строку * * @param params.value - значение поля * @returns - строка, если значение было массивом */ const arrayToString = ({ value }) => { /** Если значение не задано - так и возвращаем */ if (!value) return undefined; /** Если массив - клеим */ if (Array.isArray(value)) return value.join(loop_1.LOOP_JOIN_ARG); /** В прочих случаях отдаем строку */ return String(value); }; exports.arrayToString = arrayToString; const fillPluginFormBlock = (block) => { switch (block.elementType) { case internal_1.ElementType.UserMultiSelect: case internal_1.ElementType.StaticMultiSelect: case internal_1.ElementType.ChannelsMultiSelect: case internal_1.ElementType.Checkboxes: return (0, class_transformer_1.plainToInstance)(plugin_form_block_dto_1.PluginFormMultiBlock, block, { exposeDefaultValues: true, }); case internal_1.ElementType.Button: case internal_1.ElementType.DatePicker: case internal_1.ElementType.DateTimePicker: case internal_1.ElementType.TimePicker: case internal_1.ElementType.Image: case internal_1.ElementType.Overflow: case internal_1.ElementType.TextInput: case internal_1.ElementType.RadioButtons: case internal_1.ElementType.StaticSelect: case internal_1.ElementType.ExternalSelect: case internal_1.ElementType.UserSelect: case internal_1.ElementType.ConversationSelect: case internal_1.ElementType.ChannelSelect: case internal_1.ElementType.ExternalMultiSelect: case internal_1.ElementType.ConversationsMultiSelect: case internal_1.ElementType.URLInput: case internal_1.ElementType.EmailInput: case internal_1.ElementType.NumberInput: case internal_1.ElementType.FileInput: case internal_1.ElementType.PhoneInput: case internal_1.ElementType.DirectorySelect: case internal_1.ElementType.OneSSelect: case internal_1.ElementType.ImageSelect: case internal_1.ElementType.DateRangePicker: case internal_1.ElementType.Addable: return (0, class_transformer_1.plainToInstance)(plugin_form_block_dto_1.PluginFormSingleBlock, block, { exposeDefaultValues: true, }); } }; exports.fillPluginFormBlock = fillPluginFormBlock; //# sourceMappingURL=plugin-form-block.utils.js.map