@checksub_team/react-widgets
Version:
151 lines (120 loc) • 5.56 kB
JavaScript
;
exports.__esModule = true;
exports.indexOf = indexOf;
exports.filter = filter;
exports.suggest = suggest;
exports.propTypes = exports.presets = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var CustomPropTypes = _interopRequireWildcard(require("./PropTypes"));
var _dataHelpers = require("./dataHelpers");
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var presets = {
eq: function eq(a, b) {
return a === b;
},
neq: function neq(a, b) {
return a !== b;
},
gt: function gt(a, b) {
return a > b;
},
gte: function gte(a, b) {
return a >= b;
},
lt: function lt(a, b) {
return a < b;
},
lte: function lte(a, b) {
return a <= b;
},
contains: function contains(a, b) {
return a.indexOf(b) !== -1;
},
startsWith: function startsWith(a, b) {
return a.lastIndexOf(b, 0) === 0;
},
endsWith: function endsWith(a, b) {
var pos = a.length - b.length;
var lastIndex = a.indexOf(b, pos);
return lastIndex !== -1 && lastIndex === pos;
}
};
exports.presets = presets;
function normalizeFilterType(type) {
if (type === false) return null;
if (type === true) return 'startsWith';
return type || 'eq';
}
function normalizeFilter(_ref) {
var filter = _ref.filter,
_ref$caseSensitive = _ref.caseSensitive,
caseSensitive = _ref$caseSensitive === void 0 ? false : _ref$caseSensitive,
textField = _ref.textField;
filter = normalizeFilterType(filter);
if (typeof filter === 'function' || !filter) {
return filter;
}
filter = presets[filter];
return function (item, searchTerm) {
var textValue = (0, _dataHelpers.dataText)(item, textField);
if (!caseSensitive) {
textValue = textValue.toLowerCase();
searchTerm = searchTerm.toLowerCase();
}
return filter(textValue, searchTerm);
};
}
function normalizeOptions(nextOptions) {
var options = _extends({}, nextOptions);
options.minLengh = options.minLengh || 0;
options.filter = normalizeFilter(options);
return options;
}
var propTypes = {
textField: CustomPropTypes.accessor,
caseSensitive: _propTypes.default.bool,
minLength: _propTypes.default.number,
filter: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.bool, _propTypes.default.oneOf(Object.keys(presets))])
};
exports.propTypes = propTypes;
function indexOf(data, _ref2) {
var _ref2$searchTerm = _ref2.searchTerm,
searchTerm = _ref2$searchTerm === void 0 ? '' : _ref2$searchTerm,
options = _objectWithoutProperties(_ref2, ["searchTerm"]);
var _normalizeOptions = normalizeOptions(options),
filter = _normalizeOptions.filter,
minLength = _normalizeOptions.minLength;
if (!filter || !searchTerm || !searchTerm.trim() || searchTerm.length < minLength) return -1;
for (var idx = 0; idx < data.length; idx++) {
if (filter(data[idx], searchTerm, idx)) return idx;
}
return -1;
}
function filter(data, _ref3) {
var _ref3$searchTerm = _ref3.searchTerm,
searchTerm = _ref3$searchTerm === void 0 ? '' : _ref3$searchTerm,
options = _objectWithoutProperties(_ref3, ["searchTerm"]);
var _normalizeOptions2 = normalizeOptions(options),
filter = _normalizeOptions2.filter,
minLength = _normalizeOptions2.minLength;
if (!filter || !searchTerm || !searchTerm.trim() || searchTerm.length < minLength) return data;
return data.filter(function (item, idx) {
return filter(item, searchTerm, idx);
});
}
function suggest(data, _ref4) {
var _ref4$searchTerm = _ref4.searchTerm,
searchTerm = _ref4$searchTerm === void 0 ? '' : _ref4$searchTerm,
options = _objectWithoutProperties(_ref4, ["searchTerm"]);
var _normalizeOptions3 = normalizeOptions(options),
filter = _normalizeOptions3.filter,
minLength = _normalizeOptions3.minLength;
if (!filter || !searchTerm || !searchTerm.trim() || searchTerm.length < minLength) return searchTerm;
for (var idx = 0; idx < data.length; idx++) {
if (filter(data[idx], searchTerm, idx)) return data[idx];
}
return searchTerm;
}