UNPKG

@talend/react-components

Version:
43 lines (42 loc) 1.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sortCollection = void 0; exports.useCollectionSort = useCollectionSort; var _react = require("react"); function getDefaultSortFunction({ sortBy, isDescending }) { const direction = isDescending ? -1 : 1; return function defaultSort(a, b) { const result = new Intl.Collator(undefined, { sensitivity: 'base', numeric: true }).compare(a[sortBy], b[sortBy]); return result * direction; }; } function sort(collection, sortParams, sortFunctions) { const { sortBy } = sortParams; if (!sortBy) { return collection; } const sortFunctionGetter = sortFunctions[sortBy] || getDefaultSortFunction; return collection.slice(0).sort(sortFunctionGetter(sortParams)); } const sortCollection = (sortParams, sortFunctions) => collection => (0, _react.useMemo)(() => sort(collection, sortParams, sortFunctions), [collection, sortParams, sortFunctions]); exports.sortCollection = sortCollection; function useCollectionSort(collection = [], initialSortParams = {}, sortFunctions = {}) { const [sortParams, setSortParams] = (0, _react.useState)(initialSortParams); const sortedCollection = sortCollection(sortParams, sortFunctions)(collection); return { sortedCollection, sortParams, setSortParams }; } //# sourceMappingURL=useCollectionSort.hook.js.map