Skip to content

Commit 4fb0079

Browse files
authored
Merge pull request #51 from DebidYadav/main
Add. Search Bar using JavaScript
2 parents a820780 + 9a625da commit 4fb0079

File tree

15 files changed

+927
-0
lines changed

15 files changed

+927
-0
lines changed

.talismanrc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
fileignoreconfig:
2+
- filename: Search Bar/yarn.lock
3+
checksum: 3aa2a354bcdab7bc6969ff6cbc8ba618498bb208105009d18f57ad441ac2d061
4+
version: ""

Search Bar/.DS_Store

6 KB
Binary file not shown.

Search Bar/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
package-lock.json
3+

Search Bar/.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Search Bar/.idea/misc.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Search Bar/.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Search Bar/.idea/serp.iml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Search Bar/.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Search Bar/bundle.js

Lines changed: 322 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,322 @@
1+
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
2+
const createTrie = require('autosuggest-trie');
3+
const levenshtein = require('js-levenshtein');
4+
5+
window.createTrie = createTrie;
6+
window.levenshtein = levenshtein;
7+
},{"autosuggest-trie":4,"js-levenshtein":6}],2:[function(require,module,exports){
8+
"use strict";
9+
10+
Object.defineProperty(exports, "__esModule", {
11+
value: true
12+
});
13+
var unique = function unique(arr) {
14+
var seen = {};
15+
var result = [];
16+
var len = arr.length;
17+
18+
for (var i = 0; i < len; i++) {
19+
var item = arr[i];
20+
21+
if (!seen[item]) {
22+
seen[item] = true;
23+
result[result.length] = item;
24+
}
25+
}
26+
27+
return result;
28+
};
29+
30+
exports.default = function (arr1, arr2) {
31+
return unique(arr1.concat(arr2));
32+
};
33+
},{}],3:[function(require,module,exports){
34+
'use strict';
35+
36+
Object.defineProperty(exports, "__esModule", {
37+
value: true
38+
});
39+
40+
var _intersectionWithLimit = require('../intersection-with-limit/intersection-with-limit');
41+
42+
var _intersectionWithLimit2 = _interopRequireDefault(_intersectionWithLimit);
43+
44+
var _concatAndRemoveDups = require('../concat-and-remove-dups/concat-and-remove-dups');
45+
46+
var _concatAndRemoveDups2 = _interopRequireDefault(_concatAndRemoveDups);
47+
48+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49+
50+
exports.default = function (items, textKey) {
51+
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
52+
comparator = _ref.comparator,
53+
_ref$splitRegex = _ref.splitRegex,
54+
splitRegex = _ref$splitRegex === undefined ? /\s+/ : _ref$splitRegex;
55+
56+
var data = items;
57+
var trie = {};
58+
59+
var compareFunction = comparator ? function (id1, id2) {
60+
return comparator(items[id1], items[id2]);
61+
} : null;
62+
63+
var addWord = function addWord(word, id, wordIndex) {
64+
var wordLength = word.length;
65+
var node = trie;
66+
67+
for (var i = 0; i < wordLength; i++) {
68+
var letter = word[i];
69+
70+
if (!node[letter]) {
71+
node[letter] = {
72+
ids: []
73+
};
74+
}
75+
76+
if (!node[letter].ids[wordIndex]) {
77+
node[letter].ids[wordIndex] = [];
78+
}
79+
80+
node[letter].ids[wordIndex].push(id);
81+
82+
if (compareFunction) {
83+
node[letter].ids[wordIndex].sort(compareFunction);
84+
}
85+
86+
node = node[letter];
87+
}
88+
};
89+
90+
var addPhrase = function addPhrase(phrase, id) {
91+
var words = phrase.trim().toLowerCase().split(splitRegex);
92+
var wordsCount = words.length;
93+
94+
for (var i = 0; i < wordsCount; i++) {
95+
addWord(words[i], id, i);
96+
}
97+
};
98+
99+
var getWordIndices = function getWordIndices(word) {
100+
var wordLength = word.length;
101+
var node = trie;
102+
103+
for (var i = 0; i < wordLength; i++) {
104+
if (node[word[i]]) {
105+
node = node[word[i]];
106+
} else {
107+
return [];
108+
}
109+
}
110+
111+
var ids = node.ids;
112+
var length = ids.length;
113+
var result = [];
114+
115+
for (var _i = 0; _i < length; _i++) {
116+
if (ids[_i]) {
117+
result = (0, _concatAndRemoveDups2.default)(result, ids[_i]);
118+
}
119+
}
120+
121+
return result;
122+
};
123+
124+
var getPhraseIndices = function getPhraseIndices(phrase, _ref2) {
125+
var limit = _ref2.limit,
126+
_ref2$splitRegex = _ref2.splitRegex,
127+
splitRegex = _ref2$splitRegex === undefined ? /\s+/ : _ref2$splitRegex;
128+
129+
var words = phrase.toLowerCase().split(splitRegex).filter(Boolean);
130+
131+
if (words.length === 0) {
132+
return [];
133+
}
134+
135+
var wordsCount = words.length;
136+
var indicesArray = [];
137+
138+
for (var i = 0; i < wordsCount; i++) {
139+
indicesArray[indicesArray.length] = getWordIndices(words[i]);
140+
}
141+
142+
return (0, _intersectionWithLimit2.default)(indicesArray, limit);
143+
};
144+
145+
var getMatches = function getMatches(query) {
146+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
147+
148+
var indices = getPhraseIndices(query, options);
149+
var indicesCount = indices.length;
150+
var result = [];
151+
152+
for (var i = 0; i < indicesCount; i++) {
153+
result[result.length] = data[indices[i]];
154+
}
155+
156+
return result;
157+
};
158+
159+
var itemsCount = items.length;
160+
161+
for (var i = 0; i < itemsCount; i++) {
162+
addPhrase(items[i][textKey], i);
163+
}
164+
165+
return {
166+
getMatches: getMatches
167+
};
168+
};
169+
},{"../concat-and-remove-dups/concat-and-remove-dups":2,"../intersection-with-limit/intersection-with-limit":5}],4:[function(require,module,exports){
170+
'use strict';
171+
172+
var _createTrie = require('./create-trie/create-trie');
173+
174+
var _createTrie2 = _interopRequireDefault(_createTrie);
175+
176+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
177+
178+
module.exports = _createTrie2.default;
179+
},{"./create-trie/create-trie":3}],5:[function(require,module,exports){
180+
"use strict";
181+
182+
Object.defineProperty(exports, "__esModule", {
183+
value: true
184+
});
185+
186+
exports.default = function (arrays, limit) {
187+
var arraysCount = arrays.length;
188+
var firstArray = arrays[0];
189+
var firstArrayCount = firstArray.length;
190+
191+
limit = limit || firstArrayCount;
192+
193+
var result = [],
194+
candidate = void 0,
195+
found = void 0;
196+
197+
for (var i = 0; i < firstArrayCount && result.length < limit; i++) {
198+
candidate = firstArray[i];
199+
found = true;
200+
201+
for (var k = 1; k < arraysCount; k++) {
202+
if (arrays[k].indexOf(candidate) === -1) {
203+
found = false;
204+
break;
205+
}
206+
}
207+
208+
if (found) {
209+
result[result.length] = candidate;
210+
}
211+
}
212+
213+
return result;
214+
};
215+
},{}],6:[function(require,module,exports){
216+
'use strict';
217+
module.exports = (function()
218+
{
219+
function _min(d0, d1, d2, bx, ay)
220+
{
221+
return d0 < d1 || d2 < d1
222+
? d0 > d2
223+
? d2 + 1
224+
: d0 + 1
225+
: bx === ay
226+
? d1
227+
: d1 + 1;
228+
}
229+
230+
return function(a, b)
231+
{
232+
if (a === b) {
233+
return 0;
234+
}
235+
236+
if (a.length > b.length) {
237+
var tmp = a;
238+
a = b;
239+
b = tmp;
240+
}
241+
242+
var la = a.length;
243+
var lb = b.length;
244+
245+
while (la > 0 && (a.charCodeAt(la - 1) === b.charCodeAt(lb - 1))) {
246+
la--;
247+
lb--;
248+
}
249+
250+
var offset = 0;
251+
252+
while (offset < la && (a.charCodeAt(offset) === b.charCodeAt(offset))) {
253+
offset++;
254+
}
255+
256+
la -= offset;
257+
lb -= offset;
258+
259+
if (la === 0 || lb < 3) {
260+
return lb;
261+
}
262+
263+
var x = 0;
264+
var y;
265+
var d0;
266+
var d1;
267+
var d2;
268+
var d3;
269+
var dd;
270+
var dy;
271+
var ay;
272+
var bx0;
273+
var bx1;
274+
var bx2;
275+
var bx3;
276+
277+
var vector = [];
278+
279+
for (y = 0; y < la; y++) {
280+
vector.push(y + 1);
281+
vector.push(a.charCodeAt(offset + y));
282+
}
283+
284+
var len = vector.length - 1;
285+
286+
for (; x < lb - 3;) {
287+
bx0 = b.charCodeAt(offset + (d0 = x));
288+
bx1 = b.charCodeAt(offset + (d1 = x + 1));
289+
bx2 = b.charCodeAt(offset + (d2 = x + 2));
290+
bx3 = b.charCodeAt(offset + (d3 = x + 3));
291+
dd = (x += 4);
292+
for (y = 0; y < len; y += 2) {
293+
dy = vector[y];
294+
ay = vector[y + 1];
295+
d0 = _min(dy, d0, d1, bx0, ay);
296+
d1 = _min(d0, d1, d2, bx1, ay);
297+
d2 = _min(d1, d2, d3, bx2, ay);
298+
dd = _min(d2, d3, dd, bx3, ay);
299+
vector[y] = dd;
300+
d3 = d2;
301+
d2 = d1;
302+
d1 = d0;
303+
d0 = dy;
304+
}
305+
}
306+
307+
for (; x < lb;) {
308+
bx0 = b.charCodeAt(offset + (d0 = x));
309+
dd = ++x;
310+
for (y = 0; y < len; y += 2) {
311+
dy = vector[y];
312+
vector[y] = dd = _min(dy, d0, dd, bx0, vector[y + 1]);
313+
d0 = dy;
314+
}
315+
}
316+
317+
return dd;
318+
};
319+
})();
320+
321+
322+
},{}]},{},[1]);

0 commit comments

Comments
 (0)