73fa0a2d1521e01c707ad294862ad478.json 19.4 KB
{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport * as React from 'react';\nimport { getColumnPos, renderColumnTitle, getColumnKey } from '../../util';\nimport FilterDropdown from './FilterDropdown';\n\nfunction collectFilterStates(columns, init, pos) {\n  var filterStates = [];\n  (columns || []).forEach(function (column, index) {\n    var columnPos = getColumnPos(index, pos);\n\n    if ('children' in column) {\n      filterStates = [].concat(_toConsumableArray(filterStates), _toConsumableArray(collectFilterStates(column.children, init, columnPos)));\n    } else if (column.filters || 'filterDropdown' in column || 'onFilter' in column) {\n      if ('filteredValue' in column) {\n        // Controlled\n        filterStates.push({\n          column: column,\n          key: getColumnKey(column, columnPos),\n          filteredKeys: column.filteredValue,\n          forceFiltered: column.filtered\n        });\n      } else {\n        // Uncontrolled\n        filterStates.push({\n          column: column,\n          key: getColumnKey(column, columnPos),\n          filteredKeys: init && column.defaultFilteredValue ? column.defaultFilteredValue : undefined,\n          forceFiltered: column.filtered\n        });\n      }\n    }\n  });\n  return filterStates;\n}\n\nfunction injectFilter(prefixCls, dropdownPrefixCls, columns, filterStates, triggerFilter, getPopupContainer, locale, pos) {\n  return columns.map(function (column, index) {\n    var columnPos = getColumnPos(index, pos);\n    var _column$filterMultipl = column.filterMultiple,\n        filterMultiple = _column$filterMultipl === void 0 ? true : _column$filterMultipl;\n    var newColumn = column;\n\n    if (newColumn.filters || newColumn.filterDropdown) {\n      var columnKey = getColumnKey(newColumn, columnPos);\n      var filterState = filterStates.find(function (_ref) {\n        var key = _ref.key;\n        return columnKey === key;\n      });\n      newColumn = _extends(_extends({}, newColumn), {\n        title: function title(renderProps) {\n          return /*#__PURE__*/React.createElement(FilterDropdown, {\n            prefixCls: \"\".concat(prefixCls, \"-filter\"),\n            dropdownPrefixCls: dropdownPrefixCls,\n            column: newColumn,\n            columnKey: columnKey,\n            filterState: filterState,\n            filterMultiple: filterMultiple,\n            triggerFilter: triggerFilter,\n            locale: locale,\n            getPopupContainer: getPopupContainer\n          }, renderColumnTitle(column.title, renderProps));\n        }\n      });\n    }\n\n    if ('children' in newColumn) {\n      newColumn = _extends(_extends({}, newColumn), {\n        children: injectFilter(prefixCls, dropdownPrefixCls, newColumn.children, filterStates, triggerFilter, getPopupContainer, locale, columnPos)\n      });\n    }\n\n    return newColumn;\n  });\n}\n\nfunction generateFilterInfo(filterStates) {\n  var currentFilters = {};\n  filterStates.forEach(function (_ref2) {\n    var key = _ref2.key,\n        filteredKeys = _ref2.filteredKeys;\n    currentFilters[key] = filteredKeys || null;\n  });\n  return currentFilters;\n}\n\nfunction flattenKeys(filters) {\n  var keys = [];\n  (filters || []).forEach(function (_ref3) {\n    var value = _ref3.value,\n        children = _ref3.children;\n    keys.push(value);\n\n    if (children) {\n      keys = [].concat(_toConsumableArray(keys), _toConsumableArray(flattenKeys(children)));\n    }\n  });\n  return keys;\n}\n\nexport function getFilterData(data, filterStates) {\n  return filterStates.reduce(function (currentData, filterState) {\n    var _filterState$column = filterState.column,\n        onFilter = _filterState$column.onFilter,\n        filters = _filterState$column.filters,\n        filteredKeys = filterState.filteredKeys;\n\n    if (onFilter && filteredKeys && filteredKeys.length) {\n      return currentData.filter(function (record) {\n        return filteredKeys.some(function (key) {\n          var keys = flattenKeys(filters);\n          var keyIndex = keys.findIndex(function (k) {\n            return String(k) === String(key);\n          });\n          var realKey = keyIndex !== -1 ? keys[keyIndex] : key;\n          return onFilter(realKey, record);\n        });\n      });\n    }\n\n    return currentData;\n  }, data);\n}\n\nfunction useFilter(_ref4) {\n  var prefixCls = _ref4.prefixCls,\n      dropdownPrefixCls = _ref4.dropdownPrefixCls,\n      mergedColumns = _ref4.mergedColumns,\n      onFilterChange = _ref4.onFilterChange,\n      getPopupContainer = _ref4.getPopupContainer,\n      tableLocale = _ref4.locale;\n\n  var _React$useState = React.useState(collectFilterStates(mergedColumns, true)),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      filterStates = _React$useState2[0],\n      setFilterStates = _React$useState2[1];\n\n  var mergedFilterStates = React.useMemo(function () {\n    var collectedStates = collectFilterStates(mergedColumns, false); // Return if not controlled\n\n    if (collectedStates.every(function (_ref5) {\n      var filteredKeys = _ref5.filteredKeys;\n      return filteredKeys === undefined;\n    })) {\n      return filterStates;\n    }\n\n    return collectedStates;\n  }, [mergedColumns, filterStates]);\n  var getFilters = React.useCallback(function () {\n    return generateFilterInfo(mergedFilterStates);\n  }, [mergedFilterStates]);\n\n  var triggerFilter = function triggerFilter(filterState) {\n    var newFilterStates = mergedFilterStates.filter(function (_ref6) {\n      var key = _ref6.key;\n      return key !== filterState.key;\n    });\n    newFilterStates.push(filterState);\n    setFilterStates(newFilterStates);\n    onFilterChange(generateFilterInfo(newFilterStates), newFilterStates);\n  };\n\n  var transformColumns = function transformColumns(innerColumns) {\n    return injectFilter(prefixCls, dropdownPrefixCls, innerColumns, mergedFilterStates, triggerFilter, getPopupContainer, tableLocale);\n  };\n\n  return [transformColumns, mergedFilterStates, getFilters];\n}\n\nexport default useFilter;","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/antd/es/table/hooks/useFilter/index.js"],"names":["_slicedToArray","_extends","_toConsumableArray","React","getColumnPos","renderColumnTitle","getColumnKey","FilterDropdown","collectFilterStates","columns","init","pos","filterStates","forEach","column","index","columnPos","concat","children","filters","push","key","filteredKeys","filteredValue","forceFiltered","filtered","defaultFilteredValue","undefined","injectFilter","prefixCls","dropdownPrefixCls","triggerFilter","getPopupContainer","locale","map","_column$filterMultipl","filterMultiple","newColumn","filterDropdown","columnKey","filterState","find","_ref","title","renderProps","createElement","generateFilterInfo","currentFilters","_ref2","flattenKeys","keys","_ref3","value","getFilterData","data","reduce","currentData","_filterState$column","onFilter","length","filter","record","some","keyIndex","findIndex","k","String","realKey","useFilter","_ref4","mergedColumns","onFilterChange","tableLocale","_React$useState","useState","_React$useState2","setFilterStates","mergedFilterStates","useMemo","collectedStates","every","_ref5","getFilters","useCallback","newFilterStates","_ref6","transformColumns","innerColumns"],"mappings":"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","sourcesContent":["import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport * as React from 'react';\nimport { getColumnPos, renderColumnTitle, getColumnKey } from '../../util';\nimport FilterDropdown from './FilterDropdown';\n\nfunction collectFilterStates(columns, init, pos) {\n  var filterStates = [];\n  (columns || []).forEach(function (column, index) {\n    var columnPos = getColumnPos(index, pos);\n\n    if ('children' in column) {\n      filterStates = [].concat(_toConsumableArray(filterStates), _toConsumableArray(collectFilterStates(column.children, init, columnPos)));\n    } else if (column.filters || 'filterDropdown' in column || 'onFilter' in column) {\n      if ('filteredValue' in column) {\n        // Controlled\n        filterStates.push({\n          column: column,\n          key: getColumnKey(column, columnPos),\n          filteredKeys: column.filteredValue,\n          forceFiltered: column.filtered\n        });\n      } else {\n        // Uncontrolled\n        filterStates.push({\n          column: column,\n          key: getColumnKey(column, columnPos),\n          filteredKeys: init && column.defaultFilteredValue ? column.defaultFilteredValue : undefined,\n          forceFiltered: column.filtered\n        });\n      }\n    }\n  });\n  return filterStates;\n}\n\nfunction injectFilter(prefixCls, dropdownPrefixCls, columns, filterStates, triggerFilter, getPopupContainer, locale, pos) {\n  return columns.map(function (column, index) {\n    var columnPos = getColumnPos(index, pos);\n    var _column$filterMultipl = column.filterMultiple,\n        filterMultiple = _column$filterMultipl === void 0 ? true : _column$filterMultipl;\n    var newColumn = column;\n\n    if (newColumn.filters || newColumn.filterDropdown) {\n      var columnKey = getColumnKey(newColumn, columnPos);\n      var filterState = filterStates.find(function (_ref) {\n        var key = _ref.key;\n        return columnKey === key;\n      });\n      newColumn = _extends(_extends({}, newColumn), {\n        title: function title(renderProps) {\n          return /*#__PURE__*/React.createElement(FilterDropdown, {\n            prefixCls: \"\".concat(prefixCls, \"-filter\"),\n            dropdownPrefixCls: dropdownPrefixCls,\n            column: newColumn,\n            columnKey: columnKey,\n            filterState: filterState,\n            filterMultiple: filterMultiple,\n            triggerFilter: triggerFilter,\n            locale: locale,\n            getPopupContainer: getPopupContainer\n          }, renderColumnTitle(column.title, renderProps));\n        }\n      });\n    }\n\n    if ('children' in newColumn) {\n      newColumn = _extends(_extends({}, newColumn), {\n        children: injectFilter(prefixCls, dropdownPrefixCls, newColumn.children, filterStates, triggerFilter, getPopupContainer, locale, columnPos)\n      });\n    }\n\n    return newColumn;\n  });\n}\n\nfunction generateFilterInfo(filterStates) {\n  var currentFilters = {};\n  filterStates.forEach(function (_ref2) {\n    var key = _ref2.key,\n        filteredKeys = _ref2.filteredKeys;\n    currentFilters[key] = filteredKeys || null;\n  });\n  return currentFilters;\n}\n\nfunction flattenKeys(filters) {\n  var keys = [];\n  (filters || []).forEach(function (_ref3) {\n    var value = _ref3.value,\n        children = _ref3.children;\n    keys.push(value);\n\n    if (children) {\n      keys = [].concat(_toConsumableArray(keys), _toConsumableArray(flattenKeys(children)));\n    }\n  });\n  return keys;\n}\n\nexport function getFilterData(data, filterStates) {\n  return filterStates.reduce(function (currentData, filterState) {\n    var _filterState$column = filterState.column,\n        onFilter = _filterState$column.onFilter,\n        filters = _filterState$column.filters,\n        filteredKeys = filterState.filteredKeys;\n\n    if (onFilter && filteredKeys && filteredKeys.length) {\n      return currentData.filter(function (record) {\n        return filteredKeys.some(function (key) {\n          var keys = flattenKeys(filters);\n          var keyIndex = keys.findIndex(function (k) {\n            return String(k) === String(key);\n          });\n          var realKey = keyIndex !== -1 ? keys[keyIndex] : key;\n          return onFilter(realKey, record);\n        });\n      });\n    }\n\n    return currentData;\n  }, data);\n}\n\nfunction useFilter(_ref4) {\n  var prefixCls = _ref4.prefixCls,\n      dropdownPrefixCls = _ref4.dropdownPrefixCls,\n      mergedColumns = _ref4.mergedColumns,\n      onFilterChange = _ref4.onFilterChange,\n      getPopupContainer = _ref4.getPopupContainer,\n      tableLocale = _ref4.locale;\n\n  var _React$useState = React.useState(collectFilterStates(mergedColumns, true)),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      filterStates = _React$useState2[0],\n      setFilterStates = _React$useState2[1];\n\n  var mergedFilterStates = React.useMemo(function () {\n    var collectedStates = collectFilterStates(mergedColumns, false); // Return if not controlled\n\n    if (collectedStates.every(function (_ref5) {\n      var filteredKeys = _ref5.filteredKeys;\n      return filteredKeys === undefined;\n    })) {\n      return filterStates;\n    }\n\n    return collectedStates;\n  }, [mergedColumns, filterStates]);\n  var getFilters = React.useCallback(function () {\n    return generateFilterInfo(mergedFilterStates);\n  }, [mergedFilterStates]);\n\n  var triggerFilter = function triggerFilter(filterState) {\n    var newFilterStates = mergedFilterStates.filter(function (_ref6) {\n      var key = _ref6.key;\n      return key !== filterState.key;\n    });\n    newFilterStates.push(filterState);\n    setFilterStates(newFilterStates);\n    onFilterChange(generateFilterInfo(newFilterStates), newFilterStates);\n  };\n\n  var transformColumns = function transformColumns(innerColumns) {\n    return injectFilter(prefixCls, dropdownPrefixCls, innerColumns, mergedFilterStates, triggerFilter, getPopupContainer, tableLocale);\n  };\n\n  return [transformColumns, mergedFilterStates, getFilters];\n}\n\nexport default useFilter;"]},"metadata":{},"sourceType":"module"}