1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | var _typeof = require("@babel/runtime/helpers/typeof");
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.default = void 0;
|
9 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
10 | var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
11 | var React = _interopRequireWildcard(require("react"));
|
12 | var _commonUtil = require("../utils/commonUtil");
|
13 | var _valueUtil = require("../utils/valueUtil");
|
14 | function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
15 | function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
16 | function includes(test, search) {
|
17 | return (0, _commonUtil.toArray)(test).join('').toUpperCase().includes(search);
|
18 | }
|
19 | var _default = exports.default = function _default(options, fieldNames, searchValue, filterOption, optionFilterProp) {
|
20 | return React.useMemo(function () {
|
21 | if (!searchValue || filterOption === false) {
|
22 | return options;
|
23 | }
|
24 | var fieldOptions = fieldNames.options,
|
25 | fieldLabel = fieldNames.label,
|
26 | fieldValue = fieldNames.value;
|
27 | var filteredOptions = [];
|
28 | var customizeFilter = typeof filterOption === 'function';
|
29 | var upperSearch = searchValue.toUpperCase();
|
30 | var filterFunc = customizeFilter ? filterOption : function (_, option) {
|
31 |
|
32 | if (optionFilterProp) {
|
33 | return includes(option[optionFilterProp], upperSearch);
|
34 | }
|
35 |
|
36 |
|
37 | if (option[fieldOptions]) {
|
38 |
|
39 | return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);
|
40 | }
|
41 | return includes(option[fieldValue], upperSearch);
|
42 | };
|
43 | var wrapOption = customizeFilter ? function (opt) {
|
44 | return (0, _valueUtil.injectPropsWithOption)(opt);
|
45 | } : function (opt) {
|
46 | return opt;
|
47 | };
|
48 | options.forEach(function (item) {
|
49 |
|
50 | if (item[fieldOptions]) {
|
51 |
|
52 | var matchGroup = filterFunc(searchValue, wrapOption(item));
|
53 | if (matchGroup) {
|
54 | filteredOptions.push(item);
|
55 | } else {
|
56 |
|
57 | var subOptions = item[fieldOptions].filter(function (subItem) {
|
58 | return filterFunc(searchValue, wrapOption(subItem));
|
59 | });
|
60 | if (subOptions.length) {
|
61 | filteredOptions.push((0, _objectSpread3.default)((0, _objectSpread3.default)({}, item), {}, (0, _defineProperty2.default)({}, fieldOptions, subOptions)));
|
62 | }
|
63 | }
|
64 | return;
|
65 | }
|
66 | if (filterFunc(searchValue, wrapOption(item))) {
|
67 | filteredOptions.push(item);
|
68 | }
|
69 | });
|
70 | return filteredOptions;
|
71 | }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);
|
72 | }; |
\ | No newline at end of file |