UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

92 lines (73 loc) 2.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = formatFilters; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _xdate = _interopRequireDefault(require("xdate")); var formatDate = function formatDate(date) { return new _xdate["default"](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 (0, _typeof2["default"])(value) === 'object' ? value._id : value; default: return value; } }; 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 = (0, _defineProperty2["default"])({}, operator, valueFilter); break; } var response = (0, _defineProperty2["default"])({}, key, valueFromOperator); if (children.length) { var child = formatFilters(children); return { $and: [(0, _defineProperty2["default"])({ $or: child }, key, valueFromOperator)] }; } return response; }); }