UNPKG

@checksub_team/react-widgets

Version:
151 lines (120 loc) 5.56 kB
"use strict"; 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; }