UNPKG

fox-block-builder

Version:

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

73 lines 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.arrayToString = exports.setBlockValueData = exports.setBlockTypeData = void 0; const loop_1 = require("../../internal/constants/loop"); const setBlockTypeData = ({ value, obj }) => { const elementType = value; if ((elementType === null || elementType === void 0 ? void 0 : elementType.includes('multi')) || elementType === 'checkboxes') { obj.multi = true; } return value; }; exports.setBlockTypeData = setBlockTypeData; 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.join(loop_1.LOOP_JOIN_ARG); } else { /** Если другой массив */ return blockValue.join(loop_1.LOOP_JOIN_ARG); } } 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; //# sourceMappingURL=plugin-form-block.utils.js.map