UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

81 lines (67 loc) 2.16 kB
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; import _typeof from "@babel/runtime/helpers/esm/typeof"; import XDate from 'xdate'; var formatDate = function formatDate(date) { return new XDate(date).toString('yyyy/MM/dd'); }; // 2020/01/20 var formatRegex = function formatRegex(value) { var vocals = ['[aáàãâä]', '[eéèêë]', '[iíìîï]', '[oóòõôö]', '[uúùûü]']; var string = Array.isArray(value) ? value.join('|') : value; vocals.forEach(function (list) { string = string.replace(new RegExp(list, 'gi'), list); }); return new RegExp("(^|)".concat(string.replace(/ /g, '\\s*'), "($|)\\b"), 'i'); }; var formatValue = function formatValue(type, value) { switch (type) { case 'date': return formatDate(value); case 'number': return Number(value); case 'category': return _typeof(value) === 'object' ? value._id : value; default: return value; } }; export default function formatFilters(filters) { return filters.map(function (filter) { var key = filter.key, operator = filter.operator, type = filter.type, value = filter.value, _filter$children = filter.children, children = _filter$children === void 0 ? [] : _filter$children; var valueFilter = Array.isArray(value) ? value.map(function (val) { return formatValue(type, val); }) : formatValue(type, value); var valueFromOperator = {}; switch (operator) { case '$range': valueFromOperator = { $gte: valueFilter[0], $lte: valueFilter[1] }; break; case '$regex': case '$unregex': valueFromOperator = { $regex: formatRegex(value) }; break; default: valueFromOperator = _defineProperty({}, operator, valueFilter); break; } var response = _defineProperty({}, key, valueFromOperator); if (children.length) { var child = formatFilters(children); return { $and: [_defineProperty({ $or: child }, key, valueFromOperator)] }; } return response; }); }