Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/wincloud_gateway/node_modules/match-sorter/dist/ drwxr-xr-x | |
| Viewing file: Select action/file-type: (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.matchSorter = {}));
}(this, (function (exports) { 'use strict';
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 characterMap = {
"À": "A",
"Á": "A",
"Â": "A",
"Ã": "A",
"Ä": "A",
"Å": "A",
"Ấ": "A",
"Ắ": "A",
"Ẳ": "A",
"Ẵ": "A",
"Ặ": "A",
"Æ": "AE",
"Ầ": "A",
"Ằ": "A",
"Ȃ": "A",
"Ç": "C",
"Ḉ": "C",
"È": "E",
"É": "E",
"Ê": "E",
"Ë": "E",
"Ế": "E",
"Ḗ": "E",
"Ề": "E",
"Ḕ": "E",
"Ḝ": "E",
"Ȇ": "E",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ï": "I",
"Ḯ": "I",
"Ȋ": "I",
"Ð": "D",
"Ñ": "N",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Õ": "O",
"Ö": "O",
"Ø": "O",
"Ố": "O",
"Ṍ": "O",
"Ṓ": "O",
"Ȏ": "O",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ü": "U",
"Ý": "Y",
"à": "a",
"á": "a",
"â": "a",
"ã": "a",
"ä": "a",
"å": "a",
"ấ": "a",
"ắ": "a",
"ẳ": "a",
"ẵ": "a",
"ặ": "a",
"æ": "ae",
"ầ": "a",
"ằ": "a",
"ȃ": "a",
"ç": "c",
"ḉ": "c",
"è": "e",
"é": "e",
"ê": "e",
"ë": "e",
"ế": "e",
"ḗ": "e",
"ề": "e",
"ḕ": "e",
"ḝ": "e",
"ȇ": "e",
"ì": "i",
"í": "i",
"î": "i",
"ï": "i",
"ḯ": "i",
"ȋ": "i",
"ð": "d",
"ñ": "n",
"ò": "o",
"ó": "o",
"ô": "o",
"õ": "o",
"ö": "o",
"ø": "o",
"ố": "o",
"ṍ": "o",
"ṓ": "o",
"ȏ": "o",
"ù": "u",
"ú": "u",
"û": "u",
"ü": "u",
"ý": "y",
"ÿ": "y",
"Ā": "A",
"ā": "a",
"Ă": "A",
"ă": "a",
"Ą": "A",
"ą": "a",
"Ć": "C",
"ć": "c",
"Ĉ": "C",
"ĉ": "c",
"Ċ": "C",
"ċ": "c",
"Č": "C",
"č": "c",
"C̆": "C",
"c̆": "c",
"Ď": "D",
"ď": "d",
"Đ": "D",
"đ": "d",
"Ē": "E",
"ē": "e",
"Ĕ": "E",
"ĕ": "e",
"Ė": "E",
"ė": "e",
"Ę": "E",
"ę": "e",
"Ě": "E",
"ě": "e",
"Ĝ": "G",
"Ǵ": "G",
"ĝ": "g",
"ǵ": "g",
"Ğ": "G",
"ğ": "g",
"Ġ": "G",
"ġ": "g",
"Ģ": "G",
"ģ": "g",
"Ĥ": "H",
"ĥ": "h",
"Ħ": "H",
"ħ": "h",
"Ḫ": "H",
"ḫ": "h",
"Ĩ": "I",
"ĩ": "i",
"Ī": "I",
"ī": "i",
"Ĭ": "I",
"ĭ": "i",
"Į": "I",
"į": "i",
"İ": "I",
"ı": "i",
"IJ": "IJ",
"ij": "ij",
"Ĵ": "J",
"ĵ": "j",
"Ķ": "K",
"ķ": "k",
"Ḱ": "K",
"ḱ": "k",
"K̆": "K",
"k̆": "k",
"Ĺ": "L",
"ĺ": "l",
"Ļ": "L",
"ļ": "l",
"Ľ": "L",
"ľ": "l",
"Ŀ": "L",
"ŀ": "l",
"Ł": "l",
"ł": "l",
"Ḿ": "M",
"ḿ": "m",
"M̆": "M",
"m̆": "m",
"Ń": "N",
"ń": "n",
"Ņ": "N",
"ņ": "n",
"Ň": "N",
"ň": "n",
"ʼn": "n",
"N̆": "N",
"n̆": "n",
"Ō": "O",
"ō": "o",
"Ŏ": "O",
"ŏ": "o",
"Ő": "O",
"ő": "o",
"Œ": "OE",
"œ": "oe",
"P̆": "P",
"p̆": "p",
"Ŕ": "R",
"ŕ": "r",
"Ŗ": "R",
"ŗ": "r",
"Ř": "R",
"ř": "r",
"R̆": "R",
"r̆": "r",
"Ȓ": "R",
"ȓ": "r",
"Ś": "S",
"ś": "s",
"Ŝ": "S",
"ŝ": "s",
"Ş": "S",
"Ș": "S",
"ș": "s",
"ş": "s",
"Š": "S",
"š": "s",
"Ţ": "T",
"ţ": "t",
"ț": "t",
"Ț": "T",
"Ť": "T",
"ť": "t",
"Ŧ": "T",
"ŧ": "t",
"T̆": "T",
"t̆": "t",
"Ũ": "U",
"ũ": "u",
"Ū": "U",
"ū": "u",
"Ŭ": "U",
"ŭ": "u",
"Ů": "U",
"ů": "u",
"Ű": "U",
"ű": "u",
"Ų": "U",
"ų": "u",
"Ȗ": "U",
"ȗ": "u",
"V̆": "V",
"v̆": "v",
"Ŵ": "W",
"ŵ": "w",
"Ẃ": "W",
"ẃ": "w",
"X̆": "X",
"x̆": "x",
"Ŷ": "Y",
"ŷ": "y",
"Ÿ": "Y",
"Y̆": "Y",
"y̆": "y",
"Ź": "Z",
"ź": "z",
"Ż": "Z",
"ż": "z",
"Ž": "Z",
"ž": "z",
"ſ": "s",
"ƒ": "f",
"Ơ": "O",
"ơ": "o",
"Ư": "U",
"ư": "u",
"Ǎ": "A",
"ǎ": "a",
"Ǐ": "I",
"ǐ": "i",
"Ǒ": "O",
"ǒ": "o",
"Ǔ": "U",
"ǔ": "u",
"Ǖ": "U",
"ǖ": "u",
"Ǘ": "U",
"ǘ": "u",
"Ǚ": "U",
"ǚ": "u",
"Ǜ": "U",
"ǜ": "u",
"Ứ": "U",
"ứ": "u",
"Ṹ": "U",
"ṹ": "u",
"Ǻ": "A",
"ǻ": "a",
"Ǽ": "AE",
"ǽ": "ae",
"Ǿ": "O",
"ǿ": "o",
"Þ": "TH",
"þ": "th",
"Ṕ": "P",
"ṕ": "p",
"Ṥ": "S",
"ṥ": "s",
"X́": "X",
"x́": "x",
"Ѓ": "Г",
"ѓ": "г",
"Ќ": "К",
"ќ": "к",
"A̋": "A",
"a̋": "a",
"E̋": "E",
"e̋": "e",
"I̋": "I",
"i̋": "i",
"Ǹ": "N",
"ǹ": "n",
"Ồ": "O",
"ồ": "o",
"Ṑ": "O",
"ṑ": "o",
"Ừ": "U",
"ừ": "u",
"Ẁ": "W",
"ẁ": "w",
"Ỳ": "Y",
"ỳ": "y",
"Ȁ": "A",
"ȁ": "a",
"Ȅ": "E",
"ȅ": "e",
"Ȉ": "I",
"ȉ": "i",
"Ȍ": "O",
"ȍ": "o",
"Ȑ": "R",
"ȑ": "r",
"Ȕ": "U",
"ȕ": "u",
"B̌": "B",
"b̌": "b",
"Č̣": "C",
"č̣": "c",
"Ê̌": "E",
"ê̌": "e",
"F̌": "F",
"f̌": "f",
"Ǧ": "G",
"ǧ": "g",
"Ȟ": "H",
"ȟ": "h",
"J̌": "J",
"ǰ": "j",
"Ǩ": "K",
"ǩ": "k",
"M̌": "M",
"m̌": "m",
"P̌": "P",
"p̌": "p",
"Q̌": "Q",
"q̌": "q",
"Ř̩": "R",
"ř̩": "r",
"Ṧ": "S",
"ṧ": "s",
"V̌": "V",
"v̌": "v",
"W̌": "W",
"w̌": "w",
"X̌": "X",
"x̌": "x",
"Y̌": "Y",
"y̌": "y",
"A̧": "A",
"a̧": "a",
"B̧": "B",
"b̧": "b",
"Ḑ": "D",
"ḑ": "d",
"Ȩ": "E",
"ȩ": "e",
"Ɛ̧": "E",
"ɛ̧": "e",
"Ḩ": "H",
"ḩ": "h",
"I̧": "I",
"i̧": "i",
"Ɨ̧": "I",
"ɨ̧": "i",
"M̧": "M",
"m̧": "m",
"O̧": "O",
"o̧": "o",
"Q̧": "Q",
"q̧": "q",
"U̧": "U",
"u̧": "u",
"X̧": "X",
"x̧": "x",
"Z̧": "Z",
"z̧": "z"
};
var chars = Object.keys(characterMap).join('|');
var allAccents = new RegExp(chars, 'g');
var firstAccent = new RegExp(chars, '');
var removeAccents = function (string) {
return string.replace(allAccents, function (match) {
return characterMap[match];
});
};
var hasAccents = function (string) {
return !!string.match(firstAccent);
};
var removeAccents_1 = removeAccents;
var has = hasAccents;
var remove = removeAccents;
removeAccents_1.has = has;
removeAccents_1.remove = remove;
var rankings = {
CASE_SENSITIVE_EQUAL: 9,
EQUAL: 8,
STARTS_WITH: 7,
WORD_STARTS_WITH: 6,
STRING_CASE: 5,
STRING_CASE_ACRONYM: 4,
CONTAINS: 3,
ACRONYM: 2,
MATCHES: 1,
NO_MATCH: 0
};
var caseRankings = {
CAMEL: 0.8,
PASCAL: 0.6,
KEBAB: 0.4,
SNAKE: 0.2,
NO_CASE: 0
};
matchSorter.rankings = rankings;
matchSorter.caseRankings = caseRankings;
var defaultBaseSortFn = function (a, b) {
return String(a.rankedItem).localeCompare(b.rankedItem);
};
/**
* Takes an array of items and a value and returns a new array with the items that match the given value
* @param {Array} items - the items to sort
* @param {String} value - the value to use for ranking
* @param {Object} options - Some options to configure the sorter
* @return {Array} - the new sorted array
*/
function matchSorter(items, value, options) {
if (options === void 0) {
options = {};
}
var _options = options,
keys = _options.keys,
_options$threshold = _options.threshold,
threshold = _options$threshold === void 0 ? rankings.MATCHES : _options$threshold,
_options$baseSort = _options.baseSort,
baseSort = _options$baseSort === void 0 ? defaultBaseSortFn : _options$baseSort;
var matchedItems = items.reduce(reduceItemsToRanked, []);
return matchedItems.sort(function (a, b) {
return sortRankedItems(a, b, baseSort);
}).map(function (_ref) {
var item = _ref.item;
return item;
});
function reduceItemsToRanked(matches, item, index) {
var _getHighestRanking = getHighestRanking(item, keys, value, options),
rankedItem = _getHighestRanking.rankedItem,
rank = _getHighestRanking.rank,
keyIndex = _getHighestRanking.keyIndex,
_getHighestRanking$ke = _getHighestRanking.keyThreshold,
keyThreshold = _getHighestRanking$ke === void 0 ? threshold : _getHighestRanking$ke;
if (rank >= keyThreshold) {
matches.push({
rankedItem: rankedItem,
item: item,
rank: rank,
index: index,
keyIndex: keyIndex
});
}
return matches;
}
}
/**
* Gets the highest ranking for value for the given item based on its values for the given keys
* @param {*} item - the item to rank
* @param {Array} keys - the keys to get values from the item for the ranking
* @param {String} value - the value to rank against
* @param {Object} options - options to control the ranking
* @return {{rank: Number, keyIndex: Number, keyThreshold: Number}} - the highest ranking
*/
function getHighestRanking(item, keys, value, options) {
if (!keys) {
return {
// ends up being duplicate of 'item' in matches but consistent
rankedItem: item,
rank: getMatchRanking(item, value, options),
keyIndex: -1,
keyThreshold: options.threshold
};
}
var valuesToRank = getAllValuesToRank(item, keys);
return valuesToRank.reduce(function (_ref2, _ref3, i) {
var rank = _ref2.rank,
rankedItem = _ref2.rankedItem,
keyIndex = _ref2.keyIndex,
keyThreshold = _ref2.keyThreshold;
var itemValue = _ref3.itemValue,
attributes = _ref3.attributes;
var newRank = getMatchRanking(itemValue, value, options);
var newRankedItem = rankedItem;
var minRanking = attributes.minRanking,
maxRanking = attributes.maxRanking,
threshold = attributes.threshold;
if (newRank < minRanking && newRank >= rankings.MATCHES) {
newRank = minRanking;
} else if (newRank > maxRanking) {
newRank = maxRanking;
}
if (newRank > rank) {
rank = newRank;
keyIndex = i;
keyThreshold = threshold;
newRankedItem = itemValue;
}
return {
rankedItem: newRankedItem,
rank: rank,
keyIndex: keyIndex,
keyThreshold: keyThreshold
};
}, {
rank: rankings.NO_MATCH,
keyIndex: -1,
keyThreshold: options.threshold
});
}
/**
* Gives a rankings score based on how well the two strings match.
* @param {String} testString - the string to test against
* @param {String} stringToRank - the string to rank
* @param {Object} options - options for the match (like keepDiacritics for comparison)
* @returns {Number} the ranking for how well stringToRank matches testString
*/
function getMatchRanking(testString, stringToRank, options) {
/* eslint complexity:[2, 12] */
testString = prepareValueForComparison(testString, options);
stringToRank = prepareValueForComparison(stringToRank, options); // too long
if (stringToRank.length > testString.length) {
return rankings.NO_MATCH;
} // case sensitive equals
if (testString === stringToRank) {
return rankings.CASE_SENSITIVE_EQUAL;
}
var caseRank = getCaseRanking(testString);
var isPartial = isPartialOfCase(testString, stringToRank, caseRank);
var isCasedAcronym = isCaseAcronym(testString, stringToRank, caseRank); // Lower casing before further comparison
testString = testString.toLowerCase();
stringToRank = stringToRank.toLowerCase(); // case insensitive equals
if (testString === stringToRank) {
return rankings.EQUAL + caseRank;
} // starts with
if (testString.indexOf(stringToRank) === 0) {
return rankings.STARTS_WITH + caseRank;
} // word starts with
if (testString.indexOf(" " + stringToRank) !== -1) {
return rankings.WORD_STARTS_WITH + caseRank;
} // is a part inside a cased string
if (isPartial) {
return rankings.STRING_CASE + caseRank;
} // is acronym for a cased string
if (caseRank > 0 && isCasedAcronym) {
return rankings.STRING_CASE_ACRONYM + caseRank;
} // contains
if (testString.indexOf(stringToRank) !== -1) {
return rankings.CONTAINS + caseRank;
} else if (stringToRank.length === 1) {
// If the only character in the given stringToRank
// isn't even contained in the testString, then
// it's definitely not a match.
return rankings.NO_MATCH;
} // acronym
if (getAcronym(testString).indexOf(stringToRank) !== -1) {
return rankings.ACRONYM + caseRank;
} // will return a number between rankings.MATCHES and
// rankings.MATCHES + 1 depending on how close of a match it is.
return getClosenessRanking(testString, stringToRank);
}
/**
* Generates an acronym for a string.
*
* @param {String} string the string for which to produce the acronym
* @returns {String} the acronym
*/
function getAcronym(string) {
var acronym = '';
var wordsInString = string.split(' ');
wordsInString.forEach(function (wordInString) {
var splitByHyphenWords = wordInString.split('-');
splitByHyphenWords.forEach(function (splitByHyphenWord) {
acronym += splitByHyphenWord.substr(0, 1);
});
});
return acronym;
}
/**
* Returns a score base on the case of the testString
* @param {String} testString - the string to test against
* @returns {Number} the number of the ranking,
* based on the case between 0 and 1 for how the testString matches the case
*/
function getCaseRanking(testString) {
var containsUpperCase = testString.toLowerCase() !== testString;
var containsDash = testString.indexOf('-') >= 0;
var containsUnderscore = testString.indexOf('_') >= 0;
if (!containsUpperCase && !containsUnderscore && containsDash) {
return caseRankings.KEBAB;
}
if (!containsUpperCase && containsUnderscore && !containsDash) {
return caseRankings.SNAKE;
}
if (containsUpperCase && !containsDash && !containsUnderscore) {
var startsWithUpperCase = testString[0].toUpperCase() === testString[0];
if (startsWithUpperCase) {
return caseRankings.PASCAL;
}
return caseRankings.CAMEL;
}
return caseRankings.NO_CASE;
}
/**
* Returns whether the stringToRank is one of the case parts in the testString (works with any string case)
* @example
* // returns true
* isPartialOfCase('helloWorld', 'world', caseRankings.CAMEL)
* @example
* // returns false
* isPartialOfCase('helloWorld', 'oworl', caseRankings.CAMEL)
* @param {String} testString - the string to test against
* @param {String} stringToRank - the string to rank
* @param {Number} caseRanking - the ranking score based on case of testString
* @returns {Boolean} whether the stringToRank is one of the case parts in the testString
*/
function isPartialOfCase(testString, stringToRank, caseRanking) {
var testIndex = testString.toLowerCase().indexOf(stringToRank.toLowerCase());
switch (caseRanking) {
case caseRankings.SNAKE:
return testString[testIndex - 1] === '_';
case caseRankings.KEBAB:
return testString[testIndex - 1] === '-';
case caseRankings.PASCAL:
case caseRankings.CAMEL:
return testIndex !== -1 && testString[testIndex] === testString[testIndex].toUpperCase();
default:
return false;
}
}
/**
* Check if stringToRank is an acronym for a partial case
* @example
* // returns true
* isCaseAcronym('super_duper_file', 'sdf', caseRankings.SNAKE)
* @param {String} testString - the string to test against
* @param {String} stringToRank - the acronym to test
* @param {Number} caseRank - the ranking of the case
* @returns {Boolean} whether the stringToRank is an acronym for the testString
*/
function isCaseAcronym(testString, stringToRank, caseRank) {
var splitValue = null;
switch (caseRank) {
case caseRankings.SNAKE:
splitValue = '_';
break;
case caseRankings.KEBAB:
splitValue = '-';
break;
case caseRankings.PASCAL:
case caseRankings.CAMEL:
splitValue = /(?=[A-Z])/;
break;
default:
splitValue = null;
}
var splitTestString = testString.split(splitValue);
return stringToRank.toLowerCase().split('').reduce(function (correct, char, charIndex) {
var splitItem = splitTestString[charIndex];
return correct && splitItem && splitItem[0].toLowerCase() === char;
}, true);
}
/**
* Returns a score based on how spread apart the
* characters from the stringToRank are within the testString.
* A number close to rankings.MATCHES represents a loose match. A number close
* to rankings.MATCHES + 1 represents a tighter match.
* @param {String} testString - the string to test against
* @param {String} stringToRank - the string to rank
* @returns {Number} the number between rankings.MATCHES and
* rankings.MATCHES + 1 for how well stringToRank matches testString
*/
function getClosenessRanking(testString, stringToRank) {
var matchingInOrderCharCount = 0;
var charNumber = 0;
function findMatchingCharacter(matchChar, string, index) {
for (var j = index; j < string.length; j++) {
var stringChar = string[j];
if (stringChar === matchChar) {
matchingInOrderCharCount += 1;
return j + 1;
}
}
return -1;
}
function getRanking(spread) {
var inOrderPercentage = matchingInOrderCharCount / stringToRank.length;
var ranking = rankings.MATCHES + inOrderPercentage * (1 / spread);
return ranking;
}
var firstIndex = findMatchingCharacter(stringToRank[0], testString, 0);
if (firstIndex < 0) {
return rankings.NO_MATCH;
}
charNumber = firstIndex;
for (var i = 1; i < stringToRank.length; i++) {
var matchChar = stringToRank[i];
charNumber = findMatchingCharacter(matchChar, testString, charNumber);
var found = charNumber > -1;
if (!found) {
return rankings.NO_MATCH;
}
}
var spread = charNumber - firstIndex;
return getRanking(spread);
}
/**
* Sorts items that have a rank, index, and keyIndex
* @param {Object} a - the first item to sort
* @param {Object} b - the second item to sort
* @return {Number} -1 if a should come first, 1 if b should come first, 0 if equal
*/
function sortRankedItems(a, b, baseSort) {
var aFirst = -1;
var bFirst = 1;
var aRank = a.rank,
aKeyIndex = a.keyIndex;
var bRank = b.rank,
bKeyIndex = b.keyIndex;
if (aRank === bRank) {
if (aKeyIndex === bKeyIndex) {
// use the base sort function as a tie-breaker
return baseSort(a, b);
} else {
return aKeyIndex < bKeyIndex ? aFirst : bFirst;
}
} else {
return aRank > bRank ? aFirst : bFirst;
}
}
/**
* Prepares value for comparison by stringifying it, removing diacritics (if specified)
* @param {String} value - the value to clean
* @param {Object} options - {keepDiacritics: whether to remove diacritics}
* @return {String} the prepared value
*/
function prepareValueForComparison(value, _ref4) {
var keepDiacritics = _ref4.keepDiacritics;
value = "" + value; // toString
if (!keepDiacritics) {
value = removeAccents_1(value);
}
return value;
}
/**
* Gets value for key in item at arbitrarily nested keypath
* @param {Object} item - the item
* @param {Object|Function} key - the potentially nested keypath or property callback
* @return {Array} - an array containing the value(s) at the nested keypath
*/
function getItemValues(item, key) {
if (typeof key === 'object') {
key = key.key;
}
var value;
if (typeof key === 'function') {
value = key(item); // eslint-disable-next-line no-negated-condition
} else if (key.indexOf('.') !== -1) {
// handle nested keys
value = key.split('.').reduce(function (itemObj, nestedKey) {
return itemObj ? itemObj[nestedKey] : null;
}, item);
} else {
value = item[key];
} // concat because `value` can be a string or an array
// eslint-disable-next-line
return value != null ? [].concat(value) : null;
}
/**
* Gets all the values for the given keys in the given item and returns an array of those values
* @param {Object} item - the item from which the values will be retrieved
* @param {Array} keys - the keys to use to retrieve the values
* @return {Array} objects with {itemValue, attributes}
*/
function getAllValuesToRank(item, keys) {
return keys.reduce(function (allVals, key) {
var values = getItemValues(item, key);
if (values) {
values.forEach(function (itemValue) {
allVals.push({
itemValue: itemValue,
attributes: getKeyAttributes(key)
});
});
}
return allVals;
}, []);
}
/**
* Gets all the attributes for the given key
* @param {Object|String} key - the key from which the attributes will be retrieved
* @return {Object} object containing the key's attributes
*/
function getKeyAttributes(key) {
if (typeof key === 'string') {
key = {
key: key
};
}
return _extends({
maxRanking: Infinity,
minRanking: -Infinity
}, key);
}
exports.default = matchSorter;
exports.rankings = rankings;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=match-sorter.umd.js.map
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0065 ]-- |