UNPKG

43.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"match-sorter.umd.js","sources":["../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/remove-accents/index.js","../src/index.ts"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","var characterMap = {\r\n\t\"À\": \"A\",\r\n\t\"Á\": \"A\",\r\n\t\"Â\": \"A\",\r\n\t\"Ã\": \"A\",\r\n\t\"Ä\": \"A\",\r\n\t\"Å\": \"A\",\r\n\t\"Ấ\": \"A\",\r\n\t\"Ắ\": \"A\",\r\n\t\"Ẳ\": \"A\",\r\n\t\"Ẵ\": \"A\",\r\n\t\"Ặ\": \"A\",\r\n\t\"Æ\": \"AE\",\r\n\t\"Ầ\": \"A\",\r\n\t\"Ằ\": \"A\",\r\n\t\"Ȃ\": \"A\",\r\n\t\"Ç\": \"C\",\r\n\t\"Ḉ\": \"C\",\r\n\t\"È\": \"E\",\r\n\t\"É\": \"E\",\r\n\t\"Ê\": \"E\",\r\n\t\"Ë\": \"E\",\r\n\t\"Ế\": \"E\",\r\n\t\"Ḗ\": \"E\",\r\n\t\"Ề\": \"E\",\r\n\t\"Ḕ\": \"E\",\r\n\t\"Ḝ\": \"E\",\r\n\t\"Ȇ\": \"E\",\r\n\t\"Ì\": \"I\",\r\n\t\"Í\": \"I\",\r\n\t\"Î\": \"I\",\r\n\t\"Ï\": \"I\",\r\n\t\"Ḯ\": \"I\",\r\n\t\"Ȋ\": \"I\",\r\n\t\"Ð\": \"D\",\r\n\t\"Ñ\": \"N\",\r\n\t\"Ò\": \"O\",\r\n\t\"Ó\": \"O\",\r\n\t\"Ô\": \"O\",\r\n\t\"Õ\": \"O\",\r\n\t\"Ö\": \"O\",\r\n\t\"Ø\": \"O\",\r\n\t\"Ố\": \"O\",\r\n\t\"Ṍ\": \"O\",\r\n\t\"Ṓ\": \"O\",\r\n\t\"Ȏ\": \"O\",\r\n\t\"Ù\": \"U\",\r\n\t\"Ú\": \"U\",\r\n\t\"Û\": \"U\",\r\n\t\"Ü\": \"U\",\r\n\t\"Ý\": \"Y\",\r\n\t\"à\": \"a\",\r\n\t\"á\": \"a\",\r\n\t\"â\": \"a\",\r\n\t\"ã\": \"a\",\r\n\t\"ä\": \"a\",\r\n\t\"å\": \"a\",\r\n\t\"ấ\": \"a\",\r\n\t\"ắ\": \"a\",\r\n\t\"ẳ\": \"a\",\r\n\t\"ẵ\": \"a\",\r\n\t\"ặ\": \"a\",\r\n\t\"æ\": \"ae\",\r\n\t\"ầ\": \"a\",\r\n\t\"ằ\": \"a\",\r\n\t\"ȃ\": \"a\",\r\n\t\"ç\": \"c\",\r\n\t\"ḉ\": \"c\",\r\n\t\"è\": \"e\",\r\n\t\"é\": \"e\",\r\n\t\"ê\": \"e\",\r\n\t\"ë\": \"e\",\r\n\t\"ế\": \"e\",\r\n\t\"ḗ\": \"e\",\r\n\t\"ề\": \"e\",\r\n\t\"ḕ\": \"e\",\r\n\t\"ḝ\": \"e\",\r\n\t\"ȇ\": \"e\",\r\n\t\"ì\": \"i\",\r\n\t\"í\": \"i\",\r\n\t\"î\": \"i\",\r\n\t\"ï\": \"i\",\r\n\t\"ḯ\": \"i\",\r\n\t\"ȋ\": \"i\",\r\n\t\"ð\": \"d\",\r\n\t\"ñ\": \"n\",\r\n\t\"ò\": \"o\",\r\n\t\"ó\": \"o\",\r\n\t\"ô\": \"o\",\r\n\t\"õ\": \"o\",\r\n\t\"ö\": \"o\",\r\n\t\"ø\": \"o\",\r\n\t\"ố\": \"o\",\r\n\t\"ṍ\": \"o\",\r\n\t\"ṓ\": \"o\",\r\n\t\"ȏ\": \"o\",\r\n\t\"ù\": \"u\",\r\n\t\"ú\": \"u\",\r\n\t\"û\": \"u\",\r\n\t\"ü\": \"u\",\r\n\t\"ý\": \"y\",\r\n\t\"ÿ\": \"y\",\r\n\t\"Ā\": \"A\",\r\n\t\"ā\": \"a\",\r\n\t\"Ă\": \"A\",\r\n\t\"ă\": \"a\",\r\n\t\"Ą\": \"A\",\r\n\t\"ą\": \"a\",\r\n\t\"Ć\": \"C\",\r\n\t\"ć\": \"c\",\r\n\t\"Ĉ\": \"C\",\r\n\t\"ĉ\": \"c\",\r\n\t\"Ċ\": \"C\",\r\n\t\"ċ\": \"c\",\r\n\t\"Č\": \"C\",\r\n\t\"č\": \"c\",\r\n\t\"C̆\": \"C\",\r\n\t\"c̆\": \"c\",\r\n\t\"Ď\": \"D\",\r\n\t\"ď\": \"d\",\r\n\t\"Đ\": \"D\",\r\n\t\"đ\": \"d\",\r\n\t\"Ē\": \"E\",\r\n\t\"ē\": \"e\",\r\n\t\"Ĕ\": \"E\",\r\n\t\"ĕ\": \"e\",\r\n\t\"Ė\": \"E\",\r\n\t\"ė\": \"e\",\r\n\t\"Ę\": \"E\",\r\n\t\"ę\": \"e\",\r\n\t\"Ě\": \"E\",\r\n\t\"ě\": \"e\",\r\n\t\"Ĝ\": \"G\",\r\n\t\"Ǵ\": \"G\",\r\n\t\"ĝ\": \"g\",\r\n\t\"ǵ\": \"g\",\r\n\t\"Ğ\": \"G\",\r\n\t\"ğ\": \"g\",\r\n\t\"Ġ\": \"G\",\r\n\t\"ġ\": \"g\",\r\n\t\"Ģ\": \"G\",\r\n\t\"ģ\": \"g\",\r\n\t\"Ĥ\": \"H\",\r\n\t\"ĥ\": \"h\",\r\n\t\"Ħ\": \"H\",\r\n\t\"ħ\": \"h\",\r\n\t\"Ḫ\": \"H\",\r\n\t\"ḫ\": \"h\",\r\n\t\"Ĩ\": \"I\",\r\n\t\"ĩ\": \"i\",\r\n\t\"Ī\": \"I\",\r\n\t\"ī\": \"i\",\r\n\t\"Ĭ\": \"I\",\r\n\t\"ĭ\": \"i\",\r\n\t\"Į\": \"I\",\r\n\t\"į\": \"i\",\r\n\t\"İ\": \"I\",\r\n\t\"ı\": \"i\",\r\n\t\"IJ\": \"IJ\",\r\n\t\"ij\": \"ij\",\r\n\t\"Ĵ\": \"J\",\r\n\t\"ĵ\": \"j\",\r\n\t\"Ķ\": \"K\",\r\n\t\"ķ\": \"k\",\r\n\t\"Ḱ\": \"K\",\r\n\t\"ḱ\": \"k\",\r\n\t\"K̆\": \"K\",\r\n\t\"k̆\": \"k\",\r\n\t\"Ĺ\": \"L\",\r\n\t\"ĺ\": \"l\",\r\n\t\"Ļ\": \"L\",\r\n\t\"ļ\": \"l\",\r\n\t\"Ľ\": \"L\",\r\n\t\"ľ\": \"l\",\r\n\t\"Ŀ\": \"L\",\r\n\t\"ŀ\": \"l\",\r\n\t\"Ł\": \"l\",\r\n\t\"ł\": \"l\",\r\n\t\"Ḿ\": \"M\",\r\n\t\"ḿ\": \"m\",\r\n\t\"M̆\": \"M\",\r\n\t\"m̆\": \"m\",\r\n\t\"Ń\": \"N\",\r\n\t\"ń\": \"n\",\r\n\t\"Ņ\": \"N\",\r\n\t\"ņ\": \"n\",\r\n\t\"Ň\": \"N\",\r\n\t\"ň\": \"n\",\r\n\t\"ʼn\": \"n\",\r\n\t\"N̆\": \"N\",\r\n\t\"n̆\": \"n\",\r\n\t\"Ō\": \"O\",\r\n\t\"ō\": \"o\",\r\n\t\"Ŏ\": \"O\",\r\n\t\"ŏ\": \"o\",\r\n\t\"Ő\": \"O\",\r\n\t\"ő\": \"o\",\r\n\t\"Œ\": \"OE\",\r\n\t\"œ\": \"oe\",\r\n\t\"P̆\": \"P\",\r\n\t\"p̆\": \"p\",\r\n\t\"Ŕ\": \"R\",\r\n\t\"ŕ\": \"r\",\r\n\t\"Ŗ\": \"R\",\r\n\t\"ŗ\": \"r\",\r\n\t\"Ř\": \"R\",\r\n\t\"ř\": \"r\",\r\n\t\"R̆\": \"R\",\r\n\t\"r̆\": \"r\",\r\n\t\"Ȓ\": \"R\",\r\n\t\"ȓ\": \"r\",\r\n\t\"Ś\": \"S\",\r\n\t\"ś\": \"s\",\r\n\t\"Ŝ\": \"S\",\r\n\t\"ŝ\": \"s\",\r\n\t\"Ş\": \"S\",\r\n\t\"Ș\": \"S\",\r\n\t\"ș\": \"s\",\r\n\t\"ş\": \"s\",\r\n\t\"Š\": \"S\",\r\n\t\"š\": \"s\",\r\n\t\"Ţ\": \"T\",\r\n\t\"ţ\": \"t\",\r\n\t\"ț\": \"t\",\r\n\t\"Ț\": \"T\",\r\n\t\"Ť\": \"T\",\r\n\t\"ť\": \"t\",\r\n\t\"Ŧ\": \"T\",\r\n\t\"ŧ\": \"t\",\r\n\t\"T̆\": \"T\",\r\n\t\"t̆\": \"t\",\r\n\t\"Ũ\": \"U\",\r\n\t\"ũ\": \"u\",\r\n\t\"Ū\": \"U\",\r\n\t\"ū\": \"u\",\r\n\t\"Ŭ\": \"U\",\r\n\t\"ŭ\": \"u\",\r\n\t\"Ů\": \"U\",\r\n\t\"ů\": \"u\",\r\n\t\"Ű\": \"U\",\r\n\t\"ű\": \"u\",\r\n\t\"Ų\": \"U\",\r\n\t\"ų\": \"u\",\r\n\t\"Ȗ\": \"U\",\r\n\t\"ȗ\": \"u\",\r\n\t\"V̆\": \"V\",\r\n\t\"v̆\": \"v\",\r\n\t\"Ŵ\": \"W\",\r\n\t\"ŵ\": \"w\",\r\n\t\"Ẃ\": \"W\",\r\n\t\"ẃ\": \"w\",\r\n\t\"X̆\": \"X\",\r\n\t\"x̆\": \"x\",\r\n\t\"Ŷ\": \"Y\",\r\n\t\"ŷ\": \"y\",\r\n\t\"Ÿ\": \"Y\",\r\n\t\"Y̆\": \"Y\",\r\n\t\"y̆\": \"y\",\r\n\t\"Ź\": \"Z\",\r\n\t\"ź\": \"z\",\r\n\t\"Ż\": \"Z\",\r\n\t\"ż\": \"z\",\r\n\t\"Ž\": \"Z\",\r\n\t\"ž\": \"z\",\r\n\t\"ſ\": \"s\",\r\n\t\"ƒ\": \"f\",\r\n\t\"Ơ\": \"O\",\r\n\t\"ơ\": \"o\",\r\n\t\"Ư\": \"U\",\r\n\t\"ư\": \"u\",\r\n\t\"Ǎ\": \"A\",\r\n\t\"ǎ\": \"a\",\r\n\t\"Ǐ\": \"I\",\r\n\t\"ǐ\": \"i\",\r\n\t\"Ǒ\": \"O\",\r\n\t\"ǒ\": \"o\",\r\n\t\"Ǔ\": \"U\",\r\n\t\"ǔ\": \"u\",\r\n\t\"Ǖ\": \"U\",\r\n\t\"ǖ\": \"u\",\r\n\t\"Ǘ\": \"U\",\r\n\t\"ǘ\": \"u\",\r\n\t\"Ǚ\": \"U\",\r\n\t\"ǚ\": \"u\",\r\n\t\"Ǜ\": \"U\",\r\n\t\"ǜ\": \"u\",\r\n\t\"Ứ\": \"U\",\r\n\t\"ứ\": \"u\",\r\n\t\"Ṹ\": \"U\",\r\n\t\"ṹ\": \"u\",\r\n\t\"Ǻ\": \"A\",\r\n\t\"ǻ\": \"a\",\r\n\t\"Ǽ\": \"AE\",\r\n\t\"ǽ\": \"ae\",\r\n\t\"Ǿ\": \"O\",\r\n\t\"ǿ\": \"o\",\r\n\t\"Þ\": \"TH\",\r\n\t\"þ\": \"th\",\r\n\t\"Ṕ\": \"P\",\r\n\t\"ṕ\": \"p\",\r\n\t\"Ṥ\": \"S\",\r\n\t\"ṥ\": \"s\",\r\n\t\"X́\": \"X\",\r\n\t\"x́\": \"x\",\r\n\t\"Ѓ\": \"Г\",\r\n\t\"ѓ\": \"г\",\r\n\t\"Ќ\": \"К\",\r\n\t\"ќ\": \"к\",\r\n\t\"A̋\": \"A\",\r\n\t\"a̋\": \"a\",\r\n\t\"E̋\": \"E\",\r\n\t\"e̋\": \"e\",\r\n\t\"I̋\": \"I\",\r\n\t\"i̋\": \"i\",\r\n\t\"Ǹ\": \"N\",\r\n\t\"ǹ\": \"n\",\r\n\t\"Ồ\": \"O\",\r\n\t\"ồ\": \"o\",\r\n\t\"Ṑ\": \"O\",\r\n\t\"ṑ\": \"o\",\r\n\t\"Ừ\": \"U\",\r\n\t\"ừ\": \"u\",\r\n\t\"Ẁ\": \"W\",\r\n\t\"ẁ\": \"w\",\r\n\t\"Ỳ\": \"Y\",\r\n\t\"ỳ\": \"y\",\r\n\t\"Ȁ\": \"A\",\r\n\t\"ȁ\": \"a\",\r\n\t\"Ȅ\": \"E\",\r\n\t\"ȅ\": \"e\",\r\n\t\"Ȉ\": \"I\",\r\n\t\"ȉ\": \"i\",\r\n\t\"Ȍ\": \"O\",\r\n\t\"ȍ\": \"o\",\r\n\t\"Ȑ\": \"R\",\r\n\t\"ȑ\": \"r\",\r\n\t\"Ȕ\": \"U\",\r\n\t\"ȕ\": \"u\",\r\n\t\"B̌\": \"B\",\r\n\t\"b̌\": \"b\",\r\n\t\"Č̣\": \"C\",\r\n\t\"č̣\": \"c\",\r\n\t\"Ê̌\": \"E\",\r\n\t\"ê̌\": \"e\",\r\n\t\"F̌\": \"F\",\r\n\t\"f̌\": \"f\",\r\n\t\"Ǧ\": \"G\",\r\n\t\"ǧ\": \"g\",\r\n\t\"Ȟ\": \"H\",\r\n\t\"ȟ\": \"h\",\r\n\t\"J̌\": \"J\",\r\n\t\"ǰ\": \"j\",\r\n\t\"Ǩ\": \"K\",\r\n\t\"ǩ\": \"k\",\r\n\t\"M̌\": \"M\",\r\n\t\"m̌\": \"m\",\r\n\t\"P̌\": \"P\",\r\n\t\"p̌\": \"p\",\r\n\t\"Q̌\": \"Q\",\r\n\t\"q̌\": \"q\",\r\n\t\"Ř̩\": \"R\",\r\n\t\"ř̩\": \"r\",\r\n\t\"Ṧ\": \"S\",\r\n\t\"ṧ\": \"s\",\r\n\t\"V̌\": \"V\",\r\n\t\"v̌\": \"v\",\r\n\t\"W̌\": \"W\",\r\n\t\"w̌\": \"w\",\r\n\t\"X̌\": \"X\",\r\n\t\"x̌\": \"x\",\r\n\t\"Y̌\": \"Y\",\r\n\t\"y̌\": \"y\",\r\n\t\"A̧\": \"A\",\r\n\t\"a̧\": \"a\",\r\n\t\"B̧\": \"B\",\r\n\t\"b̧\": \"b\",\r\n\t\"Ḑ\": \"D\",\r\n\t\"ḑ\": \"d\",\r\n\t\"Ȩ\": \"E\",\r\n\t\"ȩ\": \"e\",\r\n\t\"Ɛ̧\": \"E\",\r\n\t\"ɛ̧\": \"e\",\r\n\t\"Ḩ\": \"H\",\r\n\t\"ḩ\": \"h\",\r\n\t\"I̧\": \"I\",\r\n\t\"i̧\": \"i\",\r\n\t\"Ɨ̧\": \"I\",\r\n\t\"ɨ̧\": \"i\",\r\n\t\"M̧\": \"M\",\r\n\t\"m̧\": \"m\",\r\n\t\"O̧\": \"O\",\r\n\t\"o̧\": \"o\",\r\n\t\"Q̧\": \"Q\",\r\n\t\"q̧\": \"q\",\r\n\t\"U̧\": \"U\",\r\n\t\"u̧\": \"u\",\r\n\t\"X̧\": \"X\",\r\n\t\"x̧\": \"x\",\r\n\t\"Z̧\": \"Z\",\r\n\t\"z̧\": \"z\",\r\n};\r\n\r\nvar chars = Object.keys(characterMap).join('|');\r\nvar allAccents = new RegExp(chars, 'g');\r\nvar firstAccent = new RegExp(chars, '');\r\n\r\nvar removeAccents = function(string) {\t\r\n\treturn string.replace(allAccents, function(match) {\r\n\t\treturn characterMap[match];\r\n\t});\r\n};\r\n\r\nvar hasAccents = function(string) {\r\n\treturn !!string.match(firstAccent);\r\n};\r\n\r\nmodule.exports = removeAccents;\r\nmodule.exports.has = hasAccents;\r\nmodule.exports.remove = removeAccents;\r\n","/**\n * @name match-sorter\n * @license MIT license.\n * @copyright (c) 2020 Kent C. Dodds\n * @author Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com)\n */\nimport removeAccents from 'remove-accents'\n\ntype KeyAttributes = {\n threshold?: Ranking\n maxRanking: Ranking\n minRanking: Ranking\n}\ninterface RankingInfo {\n rankedValue: string\n rank: Ranking\n keyIndex: number\n keyThreshold: Ranking | undefined\n}\n\ninterface ValueGetterKey<ItemType> {\n (item: ItemType): string | Array<string>\n}\ninterface IndexedItem<ItemType> {\n item: ItemType\n index: number\n}\ninterface RankedItem<ItemType> extends RankingInfo, IndexedItem<ItemType> {}\n\ninterface BaseSorter<ItemType> {\n (a: RankedItem<ItemType>, b: RankedItem<ItemType>): number\n}\n\ninterface Sorter<ItemType> {\n (matchItems: Array<RankedItem<ItemType>>): Array<RankedItem<ItemType>>\n}\n\ninterface KeyAttributesOptions<ItemType> {\n key?: string | ValueGetterKey<ItemType>\n threshold?: Ranking\n maxRanking?: Ranking\n minRanking?: Ranking\n}\n\ntype KeyOption<ItemType> =\n | KeyAttributesOptions<ItemType>\n | ValueGetterKey<ItemType>\n | string\n\ninterface MatchSorterOptions<ItemType = unknown> {\n keys?: ReadonlyArray<KeyOption<ItemType>>\n threshold?: Ranking\n baseSort?: BaseSorter<ItemType>\n keepDiacritics?: boolean\n sorter?: Sorter<ItemType>\n}\ntype IndexableByString = Record<string, unknown>\n\nconst rankings = {\n CASE_SENSITIVE_EQUAL: 7,\n EQUAL: 6,\n STARTS_WITH: 5,\n WORD_STARTS_WITH: 4,\n CONTAINS: 3,\n ACRONYM: 2,\n MATCHES: 1,\n NO_MATCH: 0,\n} as const\n\ntype Ranking = typeof rankings[keyof typeof rankings]\n\nmatchSorter.rankings = rankings\n\nconst defaultBaseSortFn: BaseSorter<unknown> = (a, b) =>\n String(a.rankedValue).localeCompare(String(b.rankedValue))\n\n/**\n * Takes an array of items and a value and returns a new array with the items that match the given value\n * @param {Array} items - the items to sort\n * @param {String} value - the value to use for ranking\n * @param {Object} options - Some options to configure the sorter\n * @return {Array} - the new sorted array\n */\nfunction matchSorter<ItemType = string>(\n items: ReadonlyArray<ItemType>,\n value: string,\n options: MatchSorterOptions<ItemType> = {},\n): Array<ItemType> {\n const {\n keys,\n threshold = rankings.MATCHES,\n baseSort = defaultBaseSortFn,\n sorter = matchedItems =>\n matchedItems.sort((a, b) => sortRankedValues(a, b, baseSort)),\n } = options\n const matchedItems = items.reduce(reduceItemsToRanked, [])\n return sorter(matchedItems).map(({item}) => item)\n\n function reduceItemsToRanked(\n matches: Array<RankedItem<ItemType>>,\n item: ItemType,\n index: number,\n ): Array<RankedItem<ItemType>> {\n const rankingInfo = getHighestRanking(item, keys, value, options)\n const {rank, keyThreshold = threshold} = rankingInfo\n if (rank >= keyThreshold) {\n matches.push({...rankingInfo, item, index})\n }\n return matches\n }\n}\n\n/**\n * Gets the highest ranking for value for the given item based on its values for the given keys\n * @param {*} item - the item to rank\n * @param {Array} keys - the keys to get values from the item for the ranking\n * @param {String} value - the value to rank against\n * @param {Object} options - options to control the ranking\n * @return {{rank: Number, keyIndex: Number, keyThreshold: Number}} - the highest ranking\n */\nfunction getHighestRanking<ItemType>(\n item: ItemType,\n keys: ReadonlyArray<KeyOption<ItemType>> | undefined,\n value: string,\n options: MatchSorterOptions<ItemType>,\n): RankingInfo {\n if (!keys) {\n // if keys is not specified, then we assume the item given is ready to be matched\n const stringItem = (item as unknown) as string\n return {\n // ends up being duplicate of 'item' in matches but consistent\n rankedValue: stringItem,\n rank: getMatchRanking(stringItem, value, options),\n keyIndex: -1,\n keyThreshold: options.threshold,\n }\n }\n const valuesToRank = getAllValuesToRank(item, keys)\n return valuesToRank.reduce(\n (\n {rank, rankedValue, keyIndex, keyThreshold},\n {itemValue, attributes},\n i,\n ) => {\n let newRank = getMatchRanking(itemValue, value, options)\n let newRankedValue = rankedValue\n const {minRanking, maxRanking, threshold} = attributes\n if (newRank < minRanking && newRank >= rankings.MATCHES) {\n newRank = minRanking\n } else if (newRank > maxRanking) {\n newRank = maxRanking\n }\n if (newRank > rank) {\n rank = newRank\n keyIndex = i\n keyThreshold = threshold\n newRankedValue = itemValue\n }\n return {rankedValue: newRankedValue, rank, keyIndex, keyThreshold}\n },\n {\n rankedValue: (item as unknown) as string,\n rank: rankings.NO_MATCH as Ranking,\n keyIndex: -1,\n keyThreshold: options.threshold,\n },\n )\n}\n\n/**\n * Gives a rankings score based on how well the two strings match.\n * @param {String} testString - the string to test against\n * @param {String} stringToRank - the string to rank\n * @param {Object} options - options for the match (like keepDiacritics for comparison)\n * @returns {Number} the ranking for how well stringToRank matches testString\n */\nfunction getMatchRanking<ItemType>(\n testString: string,\n stringToRank: string,\n options: MatchSorterOptions<ItemType>,\n): Ranking {\n testString = prepareValueForComparison(testString, options)\n stringToRank = prepareValueForComparison(stringToRank, options)\n\n // too long\n if (stringToRank.length > testString.length) {\n return rankings.NO_MATCH\n }\n\n // case sensitive equals\n if (testString === stringToRank) {\n return rankings.CASE_SENSITIVE_EQUAL\n }\n\n // Lower casing before further comparison\n testString = testString.toLowerCase()\n stringToRank = stringToRank.toLowerCase()\n\n // case insensitive equals\n if (testString === stringToRank) {\n return rankings.EQUAL\n }\n\n // starts with\n if (testString.startsWith(stringToRank)) {\n return rankings.STARTS_WITH\n }\n\n // word starts with\n if (testString.includes(` ${stringToRank}`)) {\n return rankings.WORD_STARTS_WITH\n }\n\n // contains\n if (testString.includes(stringToRank)) {\n return rankings.CONTAINS\n } else if (stringToRank.length === 1) {\n // If the only character in the given stringToRank\n // isn't even contained in the testString, then\n // it's definitely not a match.\n return rankings.NO_MATCH\n }\n\n // acronym\n if (getAcronym(testString).includes(stringToRank)) {\n return rankings.ACRONYM\n }\n\n // will return a number between rankings.MATCHES and\n // rankings.MATCHES + 1 depending on how close of a match it is.\n return getClosenessRanking(testString, stringToRank)\n}\n\n/**\n * Generates an acronym for a string.\n *\n * @param {String} string the string for which to produce the acronym\n * @returns {String} the acronym\n */\nfunction getAcronym(string: string): string {\n let acronym = ''\n const wordsInString = string.split(' ')\n wordsInString.forEach(wordInString => {\n const splitByHyphenWords = wordInString.split('-')\n splitByHyphenWords.forEach(splitByHyphenWord => {\n acronym += splitByHyphenWord.substr(0, 1)\n })\n })\n return acronym\n}\n\n/**\n * Returns a score based on how spread apart the\n * characters from the stringToRank are within the testString.\n * A number close to rankings.MATCHES represents a loose match. A number close\n * to rankings.MATCHES + 1 represents a tighter match.\n * @param {String} testString - the string to test against\n * @param {String} stringToRank - the string to rank\n * @returns {Number} the number between rankings.MATCHES and\n * rankings.MATCHES + 1 for how well stringToRank matches testString\n */\nfunction getClosenessRanking(\n testString: string,\n stringToRank: string,\n): Ranking {\n let matchingInOrderCharCount = 0\n let charNumber = 0\n function findMatchingCharacter(\n matchChar: string,\n string: string,\n index: number,\n ) {\n for (let j = index, J = string.length; j < J; j++) {\n const stringChar = string[j]\n if (stringChar === matchChar) {\n matchingInOrderCharCount += 1\n return j + 1\n }\n }\n return -1\n }\n function getRanking(spread: number) {\n const spreadPercentage = 1 / spread\n const inOrderPercentage = matchingInOrderCharCount / stringToRank.length\n const ranking = rankings.MATCHES + inOrderPercentage * spreadPercentage\n return ranking as Ranking\n }\n const firstIndex = findMatchingCharacter(stringToRank[0], testString, 0)\n if (firstIndex < 0) {\n return rankings.NO_MATCH\n }\n charNumber = firstIndex\n for (let i = 1, I = stringToRank.length; i < I; i++) {\n const matchChar = stringToRank[i]\n charNumber = findMatchingCharacter(matchChar, testString, charNumber)\n const found = charNumber > -1\n if (!found) {\n return rankings.NO_MATCH\n }\n }\n\n const spread = charNumber - firstIndex\n return getRanking(spread)\n}\n\n/**\n * Sorts items that have a rank, index, and keyIndex\n * @param {Object} a - the first item to sort\n * @param {Object} b - the second item to sort\n * @return {Number} -1 if a should come first, 1 if b should come first, 0 if equal\n */\nfunction sortRankedValues<ItemType>(\n a: RankedItem<ItemType>,\n b: RankedItem<ItemType>,\n baseSort: BaseSorter<ItemType>,\n): number {\n const aFirst = -1\n const bFirst = 1\n const {rank: aRank, keyIndex: aKeyIndex} = a\n const {rank: bRank, keyIndex: bKeyIndex} = b\n const same = aRank === bRank\n if (same) {\n if (aKeyIndex === bKeyIndex) {\n // use the base sort function as a tie-breaker\n return baseSort(a, b)\n } else {\n return aKeyIndex < bKeyIndex ? aFirst : bFirst\n }\n } else {\n return aRank > bRank ? aFirst : bFirst\n }\n}\n\n/**\n * Prepares value for comparison by stringifying it, removing diacritics (if specified)\n * @param {String} value - the value to clean\n * @param {Object} options - {keepDiacritics: whether to remove diacritics}\n * @return {String} the prepared value\n */\nfunction prepareValueForComparison<ItemType>(\n value: string,\n {keepDiacritics}: MatchSorterOptions<ItemType>,\n): string {\n // value might not actually be a string at this point (we don't get to choose)\n // so part of preparing the value for comparison is ensure that it is a string\n value = `${value}` // toString\n if (!keepDiacritics) {\n value = removeAccents(value)\n }\n return value\n}\n\n/**\n * Gets value for key in item at arbitrarily nested keypath\n * @param {Object} item - the item\n * @param {Object|Function} key - the potentially nested keypath or property callback\n * @return {Array} - an array containing the value(s) at the nested keypath\n */\nfunction getItemValues<ItemType>(\n item: ItemType,\n key: KeyOption<ItemType>,\n): Array<string> {\n if (typeof key === 'object') {\n key = key.key as string\n }\n let value: string | Array<string> | null | unknown\n if (typeof key === 'function') {\n value = key(item)\n } else if (item == null) {\n value = null\n } else if (Object.hasOwnProperty.call(item, key)) {\n value = (item as IndexableByString)[key]\n } else if (key.includes('.')) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return getNestedValues<ItemType>(key, item)\n } else {\n value = null\n }\n\n // because `value` can also be undefined\n if (value == null) {\n return []\n }\n if (Array.isArray(value)) {\n return value\n }\n return [String(value)]\n}\n\n/**\n * Given path: \"foo.bar.baz\"\n * And item: {foo: {bar: {baz: 'buzz'}}}\n * -> 'buzz'\n * @param path a dot-separated set of keys\n * @param item the item to get the value from\n */\nfunction getNestedValues<ItemType>(\n path: string,\n item: ItemType,\n): Array<string> {\n const keys = path.split('.')\n\n type ValueA = Array<ItemType | IndexableByString | string>\n let values: ValueA = [item]\n\n for (let i = 0, I = keys.length; i < I; i++) {\n const nestedKey = keys[i]\n let nestedValues: ValueA = []\n\n for (let j = 0, J = values.length; j < J; j++) {\n const nestedItem = values[j]\n\n if (nestedItem == null) continue\n\n if (Object.hasOwnProperty.call(nestedItem, nestedKey)) {\n const nestedValue = (nestedItem as IndexableByString)[nestedKey]\n if (nestedValue != null) {\n nestedValues.push(nestedValue as IndexableByString | string)\n }\n } else if (nestedKey === '*') {\n // ensure that values is an array\n nestedValues = nestedValues.concat(nestedItem)\n }\n }\n\n values = nestedValues\n }\n\n if (Array.isArray(values[0])) {\n // keep allowing the implicit wildcard for an array of strings at the end of\n // the path; don't use `.flat()` because that's not available in node.js v10\n const result: Array<string> = []\n return result.concat(...(values as Array<string>))\n }\n // Based on our logic it should be an array of strings by now...\n // assuming the user's path terminated in strings\n return values as Array<string>\n}\n\n/**\n * Gets all the values for the given keys in the given item and returns an array of those values\n * @param item - the item from which the values will be retrieved\n * @param keys - the keys to use to retrieve the values\n * @return objects with {itemValue, attributes}\n */\nfunction getAllValuesToRank<ItemType>(\n item: ItemType,\n keys: ReadonlyArray<KeyOption<ItemType>>,\n) {\n const allValues: Array<{itemValue: string; attributes: KeyAttributes}> = []\n for (let j = 0, J = keys.length; j < J; j++) {\n const key = keys[j]\n const attributes = getKeyAttributes(key)\n const itemValues = getItemValues(item, key)\n for (let i = 0, I = itemValues.length; i < I; i++) {\n allValues.push({\n itemValue: itemValues[i],\n attributes,\n })\n }\n }\n return allValues\n}\n\nconst defaultKeyAttributes = {\n maxRanking: Infinity as Ranking,\n minRanking: -Infinity as Ranking,\n}\n/**\n * Gets all the attributes for the given key\n * @param key - the key from which the attributes will be retrieved\n * @return object containing the key's attributes\n */\nfunction getKeyAttributes<ItemType>(key: KeyOption<ItemType>): KeyAttributes {\n if (typeof key === 'string') {\n return defaultKeyAttributes\n }\n return {...defaultKeyAttributes, ...key}\n}\n\nexport {matchSorter, rankings, defaultBaseSortFn}\n\nexport type {\n MatchSorterOptions,\n KeyAttributesOptions,\n KeyOption,\n KeyAttributes,\n RankingInfo,\n ValueGetterKey,\n}\n\n/*\neslint\n no-continue: \"off\",\n*/\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","characterMap","chars","keys","join","allAccents","RegExp","firstAccent","removeAccents","string","replace","match","hasAccents","rankings","CASE_SENSITIVE_EQUAL","EQUAL","STARTS_WITH","WORD_STARTS_WITH","CONTAINS","ACRONYM","MATCHES","NO_MATCH","matchSorter","defaultBaseSortFn","a","b","String","rankedValue","localeCompare","items","value","options","threshold","baseSort","sorter","matchedItems","sort","sortRankedValues","reduce","reduceItemsToRanked","map","item","matches","index","rankingInfo","getHighestRanking","rank","keyThreshold","push","stringItem","getMatchRanking","keyIndex","valuesToRank","getAllValuesToRank","itemValue","attributes","newRank","newRankedValue","minRanking","maxRanking","testString","stringToRank","prepareValueForComparison","toLowerCase","startsWith","includes","getAcronym","getClosenessRanking","acronym","wordsInString","split","forEach","wordInString","splitByHyphenWords","splitByHyphenWord","substr","matchingInOrderCharCount","charNumber","findMatchingCharacter","matchChar","j","J","stringChar","getRanking","spread","spreadPercentage","inOrderPercentage","ranking","firstIndex","I","found","aFirst","bFirst","aRank","aKeyIndex","bRank","bKeyIndex","same","keepDiacritics","getItemValues","getNestedValues","Array","isArray","path","values","nestedKey","nestedValues","nestedItem","nestedValue","concat","result","allValues","getKeyAttributes","itemValues","defaultKeyAttributes","Infinity"],"mappings":"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"}
\No newline at end of file