fox-block-builder
Version:
Maintainable code for loop slack-block-kit-like modal builder
73 lines • 2.84 kB
JavaScript
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
;