{"version":3,"sources":["jsdelivr-header.js","/npm/string-similarity-arraylist@1.0.1/index.js"],"names":[],"mappings":"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","file":"/npm/string-similarity-arraylist@1.0.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/string-similarity-arraylist@1.0.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\r\nfunction jaccardSimilarity(set1, set2) {\r\n    \r\n    first = set1.replace(/\\s+/g, '')\r\n\tsecond = set2.replace(/\\s+/g, '')\r\n\r\n\tif (first === second) return 1; // identical or empty\r\n\tif (first.length < 2 || second.length < 2) return 0; // if either is a 0-letter or 1-letter string\r\n\r\n\tlet firstBigrams = new Map();\r\n\tfor (let i = 0; i < first.length - 1; i++) {\r\n\t\tconst bigram = first.substring(i, i + 2);\r\n\t\tconst count = firstBigrams.has(bigram)\r\n\t\t\t? firstBigrams.get(bigram) + 1\r\n\t\t\t: 1;\r\n\r\n\t\tfirstBigrams.set(bigram, count);\r\n\t};\r\n\r\n\tlet intersectionSize = 0;\r\n\tfor (let i = 0; i < second.length - 1; i++) {\r\n\t\tconst bigram = second.substring(i, i + 2);\r\n\t\tconst count = firstBigrams.has(bigram)\r\n\t\t\t? firstBigrams.get(bigram)\r\n\t\t\t: 0;\r\n\r\n\t\tif (count > 0) {\r\n\t\t\tfirstBigrams.set(bigram, count - 1);\r\n\t\t\tintersectionSize++;\r\n\t\t}\r\n\t}\r\n\r\n\treturn (2.0 * intersectionSize) / (first.length + second.length - 2);\r\n}\r\n\r\n\r\nfunction filterData(itemList,sortingOrder,itemsToBeRendered){\r\n  itemList.forEach(item => {\r\n    item.averageSimilarityScale = calculateAverageSimilarity(item);\r\n  });\r\n\r\n  if(sortingOrder===1){\r\n    itemList.sort((a, b) => b.averageSimilarityScale - a.averageSimilarityScale);\r\n  }else if(sortingOrder===0){\r\n    itemList.sort((a, b) => a.averageSimilarityScale - b.averageSimilarityScale);\r\n  }\r\n\r\n  return (itemsToBeRendered || itemsToBeRendered===0)  ? itemList?.slice(0,itemsToBeRendered) : itemList\r\n\r\n}\r\n\r\n\r\nfunction getSimilarityScaleofArrayOfObjects({data=[],rawText='',objectMatchingKeys=[],sortingOrder,itemsToBeRendered}){\r\n\r\n    const similarities = findSimilarlity(data,rawText,objectMatchingKeys)\r\n  \r\n    return filterData(similarities,sortingOrder,itemsToBeRendered)\r\n\r\n}\r\n\r\nfunction getSimilarityofArrayOfObjects({data=[],similarityScale=0,rawText='',objectMatchingKeys=[],sortingOrder,itemsToBeRendered,callback}){\r\n  \r\n  \r\n\r\n    const similarities = findSimilarlity(data,rawText,objectMatchingKeys)\r\n    const similaritiesItem = similarities.filter(result => [true].includes(objectMatchingKeys.some(oe=>result.similarityScale[oe] >= similarityScale))||false);\r\n\r\n      var itemList = [...similaritiesItem] , bestMatchIndex = 0;\r\n      itemList =  filterData(itemList,sortingOrder,itemsToBeRendered)\r\n      const  itemListwithoutCount =  filterData(similaritiesItem)\r\n\r\n     itemListwithoutCount.forEach((e,i)=>{\r\n        if (e.averageSimilarityScale > itemListwithoutCount[bestMatchIndex].averageSimilarityScale) {\r\n          bestMatchIndex = i\r\n        }\r\n      })\r\n\r\n      callback && callback({bestMatch:itemListwithoutCount[bestMatchIndex],bestMatchIndex})\r\n      return  filterData(similaritiesItem,sortingOrder,itemsToBeRendered)\r\n}\r\n\r\nfunction calculateAverageSimilarity(item) {\r\n    let sum = 0;\r\n    let count = 0;\r\n  \r\n    for (const key in item.similarityScale) {\r\n      if (item.similarityScale.hasOwnProperty(key)) {\r\n        sum += item.similarityScale[key];\r\n        count++;\r\n      }\r\n    }\r\n  \r\n    return count === 0 ? 0 : sum / count;\r\n  }\r\n\r\n\r\nfunction findSimilarlity(data=[],rawText='',objectMatchingKeys=[]){\r\n\r\n   return data.map((item) => {\r\n        var similarity_item = {}\r\n    \r\n        objectMatchingKeys.forEach((e)=>{\r\n            similarity_item[e] = jaccardSimilarity(rawText.toLowerCase(), item[e].toLowerCase());\r\n        })\r\n        return {item,similarityScale:similarity_item}\r\n    \r\n    })\r\n}\r\n\r\n\r\nfunction getSimilarityOfTwoString(string1,string2){\r\n return {similarityScale: jaccardSimilarity(string1.toLowerCase(), string2.toLowerCase())||0};\r\n}\r\n\r\nfunction getSimilarityOfArrayOfStrings({rawText='', arrayOfStrings=[],sortingOrder,itemsToBeRendered,callback}) {\r\n\tconst similarities = [];\r\n\tlet bestMatchIndex = 0;\r\n\r\n\tfor (let i = 0; i < arrayOfStrings.length; i++) {\r\n\t\tconst currentTargetString = arrayOfStrings[i];\r\n\t\tconst currentRating = jaccardSimilarity(rawText, currentTargetString)\r\n\t\tsimilarities.push({targetString: currentTargetString, similarityScale: currentRating})\r\n\t\tif (currentRating > similarities[bestMatchIndex].similarityScale) {\r\n\t\t\tbestMatchIndex = i\r\n\t\t}\r\n\t}\r\n\t\r\n\t\r\n\tconst bestMatch = similarities[bestMatchIndex]\r\n\r\n  if(sortingOrder===1){\r\n    similarities.sort((a, b) => b.similarityScale - a.similarityScale);\r\n  }else if(sortingOrder===0){\r\n    similarities.sort((a, b) => a.similarityScale - b.similarityScale);\r\n  }\r\n\tcallback && callback({bestMatch,bestMatchIndex})\r\n\treturn  itemsToBeRendered ? similarities?.slice(0,itemsToBeRendered) : similarities\r\n}\r\n\r\n\r\nmodule.exports = {getSimilarityScaleofArrayOfObjects,getSimilarityofArrayOfObjects,getSimilarityOfTwoString,getSimilarityOfArrayOfStrings}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"]}