word-games-theme 2.4.2 → 2.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,812 @@
1
+ const getScript = document.querySelector(".serachSection")
2
+ const letterLen = getScript.dataset.letter
3
+ const ablank = getScript.dataset.ablank
4
+ const siteUrl = getScript.dataset.url
5
+ let errorMsg = document.querySelector('.errorMsg')
6
+ let script = document.currentScript
7
+ let wordCount = document.querySelector('.wordCount')
8
+ let main = document.querySelector('.main')
9
+
10
+ const params = new URLSearchParams(window.location.search)
11
+ let serachValue = params.get('search').toLowerCase()
12
+ let prefixValue = params.get('prefix')
13
+ let containsValue = params.get('contains')
14
+ let suffixValue = params.get('suffix')
15
+ let exculdeValue = params.get('exculde')
16
+ let includeValue = params.get('include')
17
+ let lengthValue = params.get('length')
18
+ let dictonary = params.get('dictionary')
19
+
20
+
21
+ // Scrabble Point Counts
22
+ const ScrabbleScore = () => {
23
+ let twl06_sowpods = {
24
+ a: 1,
25
+ e: 1,
26
+ i: 1,
27
+ o: 1,
28
+ u: 1,
29
+ l: 1,
30
+ n: 1,
31
+ r: 1,
32
+ s: 1,
33
+ t: 1,
34
+ d: 2,
35
+ g: 2,
36
+ b: 3,
37
+ c: 3,
38
+ m: 3,
39
+ p: 3,
40
+ f: 4,
41
+ h: 4,
42
+ v: 4,
43
+ w: 4,
44
+ y: 4,
45
+ k: 5,
46
+ j: 8,
47
+ x: 8,
48
+ q: 10,
49
+ z: 10,
50
+ }
51
+
52
+ let wwfScore = {
53
+ a: 1,
54
+ b: 4,
55
+ c: 4,
56
+ d: 2,
57
+ e: 1,
58
+ f: 4,
59
+ g: 3,
60
+ h: 3,
61
+ i: 1,
62
+ j: 10,
63
+ k: 5,
64
+ l: 2,
65
+ m: 4,
66
+ n: 2,
67
+ o: 1,
68
+ p: 4,
69
+ q: 10,
70
+ r: 1,
71
+ s: 1,
72
+ t: 1,
73
+ u: 2,
74
+ v: 5,
75
+ w: 4,
76
+ x: 8,
77
+ y: 3,
78
+ z: 10,
79
+ }
80
+
81
+ if (dictonary === 'wwf') {
82
+ return wwfScore
83
+ } else {
84
+ return twl06_sowpods
85
+ }
86
+ }
87
+
88
+ let tab_link_wrapper = document.querySelector('.tab_link_wrapper')
89
+ tab_link_wrapper.style.display = "none"
90
+
91
+ let home_page_search_result = document.querySelector("#home_page_search_result")
92
+ let homePageSearchResult = `/?search=${serachValue}&dictionary=Dictionary&prefix=&contains=&suffix=&exculde=&inculde=&length=`;
93
+
94
+ txtBox.value = serachValue
95
+
96
+
97
+ if (ablank) {
98
+ if (!serachValue.includes("?")) {
99
+ if (serachValue.length <= letterLen || serachValue.length >= letterLen) {
100
+ serachValue = serachValue + '?'
101
+ txtBox.value = serachValue
102
+ }
103
+ }
104
+ }
105
+ // const filterInputs = document.querySelectorAll('.filter_val');
106
+ // Array.from(filterInputs).forEach((item) => {
107
+ // item.addEventListener("input", (e) => {
108
+ // const inputValue = e.target.value;
109
+ // const parentElement = e.target.parentElement;
110
+ // const imgElement = parentElement.querySelector('img');
111
+ // const tooltipElement = parentElement.querySelector('.filter-tooltip');
112
+
113
+ // if (inputValue == "") {
114
+ // imgElement.src = "/assets/images/questionmark.svg"
115
+ // item.nextElementSibling.setAttribute("data-tip", item.nextElementSibling.id)
116
+ // tooltipElement.style.setProperty('--tooltip-padding', '0.5rem');
117
+ // tooltipElement.style.setProperty('--tooltip-border-style', 'soild');
118
+
119
+ // } else {
120
+ // item.nextElementSibling.removeAttribute("data-tip")
121
+ // imgElement.src = "/assets/images/close-btn.svg"
122
+ // tooltipElement.style.setProperty('--tooltip-padding', '0');
123
+ // tooltipElement.style.setProperty('--tooltip-border-style', 'none');
124
+ // }
125
+ // item.nextElementSibling.addEventListener("click", () => {
126
+ // e.target.value = ""
127
+ // imgElement.src = "/assets/images/questionmark.svg"
128
+ // item.nextElementSibling.setAttribute("data-tip", item.nextElementSibling.id)
129
+ // tooltipElement.style.setProperty('--tooltip-padding', '0.5rem');
130
+ // tooltipElement.style.setProperty('--tooltip-border-style', 'soild');
131
+ // })
132
+ // })
133
+ // })
134
+ // function handleFilterInput(e) {
135
+ // const inputValue = e.target.value;
136
+ // const parentElement = e.target.parentElement;
137
+ // const imgElement = parentElement.querySelector('img');
138
+ // const tooltipElement = parentElement.querySelector('.filter-tooltip');
139
+
140
+ // if (inputValue == "") {
141
+ // imgElement.src = "/assets/images/questionmark.svg"
142
+ // e.target.nextElementSibling.setAttribute("data-tip", e.target.nextElementSibling.id)
143
+ // tooltipElement.style.setProperty('--tooltip-padding', '0.5rem');
144
+ // tooltipElement.style.setProperty('--tooltip-border-style', 'solid');
145
+ // } else {
146
+ // e.target.nextElementSibling.removeAttribute("data-tip")
147
+ // imgElement.src = "/assets/images/close-btn.svg"
148
+ // tooltipElement.style.setProperty('--tooltip-padding', '0');
149
+ // tooltipElement.style.setProperty('--tooltip-border-style', 'none');
150
+ // }
151
+
152
+ // e.target.nextElementSibling.addEventListener("click", () => {
153
+ // e.target.value = ""
154
+ // imgElement.src = "/assets/images/questionmark.svg"
155
+ // e.target.nextElementSibling.setAttribute("data-tip", e.target.nextElementSibling.id)
156
+ // tooltipElement.style.setProperty('--tooltip-padding', '0.5rem');
157
+ // tooltipElement.style.setProperty('--tooltip-border-style', 'solid');
158
+ // });
159
+ // }
160
+ // document.addEventListener("DOMContentLoaded", () => {
161
+ // const filterInputs = document.querySelectorAll('.filter_val');
162
+ // Array.from(filterInputs).forEach((item) => {
163
+ // // Call the function on load
164
+ // handleFilterInput({ target: item });
165
+ // item.addEventListener("input", handleFilterInput);
166
+ // });
167
+ // });
168
+ // let letterCloseButton = document.querySelector('.letter-close-button-commonPage')
169
+ if (serachValue) {
170
+ letterCloseButton.style.display = "block"
171
+ }
172
+ // letterCloseButton.addEventListener("click", () => {
173
+ // txtBox.value = ""
174
+ // letterCloseButton.classList.remove("ltr-cls-btn-commonPage")
175
+ // })
176
+
177
+ // txtBox.addEventListener('input', (e) => {
178
+ // if (e.target.value === "") {
179
+ // letterCloseButton.classList.remove("ltr-cls-btn-commonPage")
180
+ // } else {
181
+ // letterCloseButton.classList.add("ltr-cls-btn-commonPage")
182
+ // }
183
+ // let rangeOfBlankTile = script.dataset.range
184
+ // e.target.value = e.target.value.replace(/[^a-zA-Z? ]/g, '')
185
+ // if (rangeOfBlankTile === '') {
186
+ // rangeOfBlankTile = 3
187
+ // }
188
+ // e.target.value = e.target.value.replace(/ /g, '?')
189
+ // let data = []
190
+ // data = e.target.value.split('').filter((i) => i === '?')
191
+ // // console.log(data)
192
+ // if (data.length > rangeOfBlankTile) {
193
+ // e.target.value = e.target.value.replace(/\?$/, '')
194
+ // }
195
+ // })
196
+
197
+ // function mobileScrollTop(x) {
198
+ // if (x.matches) {
199
+ // txtBox.addEventListener("click", () => {
200
+ // document.documentElement.scrollTop = 350
201
+ // setTimeout(() => {
202
+ // document.documentElement.scrollTop = 350
203
+ // }, 150);
204
+ // })
205
+ // } else {
206
+ // console.log("false");
207
+ // }
208
+ // }
209
+ // var x = window.matchMedia("(max-width: 768px)")
210
+ // mobileScrollTop(x)
211
+ // x.addListener(mobileScrollTop)
212
+
213
+ var theSelect = document.getElementById('select_dropDown')
214
+ const sortup = document.querySelector(".sortup-icon")
215
+ let bool = false
216
+ sortup.addEventListener("click", () => {
217
+ if (bool) {
218
+ theSelect.size = 0
219
+ bool = false
220
+ theSelect.style.display = "none"
221
+ }
222
+ else {
223
+ bool = true
224
+ theSelect.size = 3
225
+ theSelect.style.display = "block"
226
+ }
227
+ })
228
+ document.querySelector('.select_dropDown2').value = dictonary
229
+ const getDiff = (text1, text2) => {
230
+ var diffRange = []
231
+ var currentRange = undefined
232
+ for (var i = 0; i < text1.length; i++) {
233
+ if (text1[i] != text2[i]) {
234
+ if (currentRange == undefined) {
235
+ currentRange = [i]
236
+ }
237
+ }
238
+ if (currentRange != undefined && text1[i] == text2[i]) {
239
+ currentRange.push(i)
240
+ diffRange.push(currentRange)
241
+ currentRange = undefined
242
+ }
243
+ }
244
+ if (currentRange != undefined) {
245
+ currentRange.push(i)
246
+ diffRange.push(currentRange)
247
+ }
248
+ return diffRange
249
+ }
250
+ const getData = async (serachValue) => {
251
+ try {
252
+ errorMsg.innerHTML = ""
253
+ wordCount.innerHTML = ""
254
+ home_page_search_result.innerHTML = ""
255
+ let selectedDictionary = document.querySelector('.select_dropDown2').value
256
+ main.innerHTML = `<main class="placeholder-loader">
257
+ <ul class="o-vertical-spacing o-vertical-spacing--l">
258
+ <li class="blog-post o-media">
259
+ <div class="o-media__body">
260
+ <div class="o-vertical-spacing">
261
+ <p class="m-0">
262
+ <span class="skeleton-box" style="width:40%;"></span>
263
+ </p>
264
+ </div>
265
+ </div>
266
+ </li>
267
+ <li class="blog-post o-media">
268
+ <div class="o-media__figure">
269
+ <span class="skeleton-box" style="width:800px;height:140px;"></span>
270
+ </div>
271
+ </li>
272
+ <li class="blog-post o-media">
273
+ <div class="o-media__figure">
274
+ <span class="skeleton-box" style="width:800px;height:140px;"></span>
275
+ </div>
276
+ </li>
277
+ <li class="blog-post o-media">
278
+ <div class="o-media__figure">
279
+ <span class="skeleton-box" style="width:800px;height:140px;"></span>
280
+ </div>
281
+ </li>
282
+ </ul>
283
+ </main>`;
284
+ const response = await fetch(
285
+ `/.netlify/functions/getWords?name=${serachValue}&selecteddictionary=${selectedDictionary}`
286
+ )
287
+ const data = await response.json()
288
+ main.innerHTML = ''
289
+ x_with_letters(data)
290
+ } catch (error) {
291
+ console.log(error)
292
+ }
293
+ }
294
+ // calling function
295
+ getData(serachValue.toLowerCase())
296
+
297
+ let quesMark = ''
298
+ quesMark = "?"
299
+
300
+
301
+ function logSubmit(event) {
302
+ document.querySelector(".fillterWrapper").classList.add("hide")
303
+
304
+
305
+ const scrollingElement = (document.scrollingElement || document.body);
306
+ scrollingElement.scroll({ top: 0, behavior: 'smooth' });
307
+ if (ablank) {
308
+ if (!txtBox.value.includes("?")) {
309
+ txtBox.value = txtBox.value + quesMark
310
+ }
311
+ }
312
+ let selectedDictionary = document.querySelector('.select_dropDown2').value
313
+ event.preventDefault();
314
+ if (history.pushState) {
315
+ var newurl = window.location.protocol + "//" + window.location.host +
316
+ window.location.pathname + '?' + "search" + "=" + txtBox.value.toLowerCase() + '&' +
317
+ 'dictionary' + '=' + selectedDictionary +
318
+ '&' + 'prefix' + '=' + startsWith.value + '&' + 'contains' + '=' + mustInclude.value +
319
+ '&' + 'suffix' + '=' + endsWith.value + '&' + 'exculde' + '=' + exculdeWith.value +
320
+ '&' + 'include' + '=' + inculdeWith.value + '&' + 'length' + '=' + wordLength.value;
321
+ window.history.pushState({ path: newurl }, '', newurl);
322
+
323
+ const params = new URLSearchParams(window.location.search)
324
+ serachValue = params.get('search')
325
+ prefixValue = params.get('prefix')
326
+ containsValue = params.get('contains')
327
+ suffixValue = params.get('suffix')
328
+ exculdeValue = params.get('exculde')
329
+ includeValue = params.get('include')
330
+ lengthValue = params.get('length')
331
+ dictonary = params.get('dictionary')
332
+
333
+ gtag('event', 'page_view', {
334
+ page_location: window.location.pathname + location.search,
335
+ })
336
+ }
337
+ getData(txtBox.value.toLowerCase())
338
+ // addFilterCount()
339
+
340
+ }
341
+
342
+ let selectedDictionary = document.querySelector('.select_dropDown2')
343
+ selectedDictionary.addEventListener("change", ((e) => {
344
+ logSubmit(e)
345
+ }))
346
+
347
+
348
+ // applyBtn.addEventListener('submit', logSubmit)
349
+ form.addEventListener('submit', logSubmit);
350
+
351
+
352
+ function x_with_letters(data) {
353
+ main.innerHTML = ""
354
+ if (typeof data === 'string') {
355
+ errorMsg.innerHTML = 'No words found'
356
+ wordCount.innerHTML = `<strong>Found 0 words with letters ${serachValue.split(
357
+ ''
358
+ )}</strong>`
359
+ } else {
360
+ let newWordsLength = 0
361
+ let filterData = ''
362
+ let dataArr = []
363
+
364
+
365
+ if (letterLen) {
366
+ filterData = data.filter((item) => item.length == letterLen)
367
+ }
368
+
369
+ if (prefixValue) {
370
+ filterData = filterData.filter((item2) =>
371
+ item2.startsWith(prefixValue.toLowerCase())
372
+ )
373
+ startsWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg"
374
+ startsWith.classList.add('tick')
375
+ startsWith.value = prefixValue
376
+ } else {
377
+ startsWith.classList.remove('tick')
378
+ }
379
+ if (containsValue) {
380
+ filterData = filterData.filter((item) =>
381
+ item.includes(containsValue.toLowerCase())
382
+ )
383
+ mustInclude.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg"
384
+ mustInclude.classList.add('tick')
385
+ mustInclude.value = containsValue
386
+ } else {
387
+ mustInclude.classList.remove('tick')
388
+ }
389
+ if (suffixValue) {
390
+ filterData = filterData.filter((item) =>
391
+ item.endsWith(suffixValue.toLowerCase())
392
+ )
393
+ endsWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg"
394
+ endsWith.classList.add('tick')
395
+ endsWith.value = suffixValue
396
+ } else {
397
+ endsWith.classList.remove('tick')
398
+ }
399
+ if (exculdeValue) {
400
+ let data = []
401
+ filterData.map((item) => {
402
+ let check = false
403
+ for (let e = 0; e < exculdeValue.length; e++) {
404
+ const element = exculdeValue[e].toLowerCase()
405
+ if (item.includes(element)) {
406
+ check = true
407
+ break
408
+ } else {
409
+ check = false
410
+ }
411
+ }
412
+ if (check === false) {
413
+ data.push(item)
414
+ }
415
+ })
416
+ exculdeWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg"
417
+ exculdeWith.classList.add('tick')
418
+ exculdeWith.value = exculdeValue
419
+ filterData = data
420
+ } else {
421
+ exculdeWith.classList.remove('tick')
422
+ }
423
+
424
+ if (includeValue) {
425
+ let data = []
426
+ filterData.map((item) => {
427
+ let check = false
428
+ for (let e = 0; e < includeValue.length; e++) {
429
+ const element = includeValue[e].toLowerCase()
430
+ if (!item.includes(element)) {
431
+ check = true
432
+ break
433
+ } else {
434
+ check = false
435
+ }
436
+ }
437
+ if (check === false) {
438
+ data.push(item)
439
+ }
440
+ })
441
+ inculdeWith.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg"
442
+ inculdeWith.classList.add('tick')
443
+ inculdeWith.value = includeValue
444
+ filterData = data
445
+ } else {
446
+ inculdeWith.classList.remove('tick')
447
+ }
448
+
449
+ if (letterLen) {
450
+ wordLength.nextElementSibling.querySelector("img").src = "/assets/images/close-btn.svg"
451
+ }
452
+
453
+ if (filterData.length === 0) {
454
+ main.innerHTML += ''
455
+ errorMsg.innerHTML = 'No words Found with this length'
456
+ } else {
457
+
458
+ newWordsLength += filterData.length
459
+ let itemLength = ''
460
+ const result = filterData.map((item) => {
461
+ itemLength = item.length
462
+ let ScrabbleLetterScore = ScrabbleScore()
463
+ sum = 0
464
+ item = item.toLowerCase()
465
+ for (let i = 0; i < item.length; i++) {
466
+ sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters
467
+ }
468
+ wordLength.value = itemLength
469
+
470
+ var text1 = serachValue.replace('?', '')
471
+ var text2 = item
472
+ var text3 = item
473
+ function findIndex(str, char) {
474
+ const strLength = str.length
475
+ const indexes = []
476
+ let newStr = str
477
+ while (newStr && newStr.indexOf(char) > -1) {
478
+ indexes.push(newStr.indexOf(char) + strLength - newStr.length)
479
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
480
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
481
+ }
482
+ return indexes
483
+ }
484
+ let chars = text1.split('')
485
+ let indexs = []
486
+ chars.map((i) => {
487
+ let findIndexes = findIndex(text3, i)
488
+ if (findIndexes.length > 0) {
489
+ text3 = text3.split('')
490
+ text3[findIndexes] = '$'
491
+ text3 = text3.join('')
492
+ indexs = [...indexs, ...findIndexes]
493
+ }
494
+ })
495
+ let itemHtml = ''
496
+ text2.split('').map((itemValue, index) => {
497
+ let check = indexs.find((i) => i === index)
498
+ if (check !== undefined) {
499
+ itemHtml += `${itemValue}`
500
+ } else {
501
+ itemHtml += `<span class='highlight'>${itemValue}</span>`
502
+ }
503
+ })
504
+
505
+ dataArr.push(item)
506
+ return `<a class="anchor__style" title="Lookup ${item} in Dictionary" target="_blank" href="/word-meaning?search=${item}">
507
+ <li>${itemHtml}
508
+ <span class="points" value="${sum}" style="position:relative; top:4px; font-size:12px"> ${sum}</span>
509
+ </li></a>`
510
+ })
511
+ home_page_search_result.href = homePageSearchResult
512
+ home_page_search_result.innerHTML = `See words of any length with letters ${serachValue.split("")}`
513
+
514
+
515
+ main.innerHTML += `
516
+ <div class="allGroupWords">
517
+ <div class="wordListHeading">
518
+ <h3 class="lead">${itemLength} Letter Words</h3>
519
+ </div>
520
+ <div class="wordList">
521
+ <ul class="ul list-unstyled">
522
+ ${result.join('')}
523
+ </ul>
524
+ </div>
525
+ </div>
526
+ `
527
+
528
+ // sort eventlistener
529
+ theSelect.addEventListener('change', () => {
530
+ sortValue = theSelect[theSelect.selectedIndex].text
531
+ if (sortValue == 'Z-A') {
532
+ sortBool = true
533
+ sortby(sortBool, dataArr, itemLength)
534
+ } else {
535
+ sortBool = false
536
+ sortby(sortBool, dataArr, itemLength)
537
+ }
538
+ if (sortValue == 'Points') {
539
+ sortBool = true
540
+ sortPointsby(sortBool, dataArr, itemLength)
541
+ }
542
+ })
543
+
544
+ sortValue = theSelect[theSelect.selectedIndex].text
545
+ if (sortValue == 'Z-A') {
546
+ sortby(sortBool, dataArr, itemLength)
547
+ }
548
+ if (sortValue == 'Points') {
549
+ sortPointsby(sortBool, dataArr, itemLength)
550
+ }
551
+
552
+
553
+ }
554
+
555
+ wordCount.innerHTML = `<strong>Found ${newWordsLength} words with letters with ${serachValue.split(
556
+ ''
557
+ )}</strong>`
558
+ }
559
+ }
560
+
561
+ //Handling of filter counter in advanced filter
562
+ function addFilterCount() {
563
+ let filter_val = document.getElementsByClassName('filter_val')
564
+ let filter = document.querySelector('.filter_count')
565
+ let filter_count = 0
566
+
567
+ filter_val[0].value = prefixValue
568
+ filter_val[1].value = containsValue
569
+ filter_val[2].value = suffixValue
570
+ filter_val[3].value = exculdeValue
571
+ filter_val[4].value = includeValue
572
+ filter_val[5].value = lengthValue
573
+
574
+ for (var i = 0; i <= 4; i++) {
575
+ if (filter_val[i].value != '') {
576
+ filter_count += 1
577
+ }
578
+ if (filter_count === 0) {
579
+ filter.style.display = 'none'
580
+ } else {
581
+ filter.style.display = 'inline-block'
582
+ }
583
+
584
+ filter.innerHTML = filter_count
585
+ }
586
+ }
587
+ // addFilterCount()
588
+
589
+ // sorting by points
590
+ function sortPointsby(sortValue, data, i) {
591
+ if (sortValue) {
592
+ main.innerHTML = ''
593
+ let newArray = []
594
+ data.map((item) => {
595
+ let ScrabbleLetterScore = ScrabbleScore()
596
+ let points = 0
597
+ item = item.toLowerCase()
598
+ for (let i = 0; i < item.length; i++) {
599
+ points += ScrabbleLetterScore[item[i]] || 0 // for unknown characters
600
+ }
601
+ const value = {
602
+ words: item,
603
+ points: points,
604
+ }
605
+ newArray.push(value)
606
+ newArray.sort(function (a, b) {
607
+ return b.points - a.points
608
+ })
609
+ })
610
+ const result = newArray.map((item) => {
611
+ var text1 = serachValue.replace('?', '')
612
+ var text2 = item.words
613
+ var text3 = item.words
614
+ function findIndex(str, char) {
615
+ const strLength = str.length
616
+ const indexes = []
617
+ let newStr = str
618
+ while (newStr && newStr.indexOf(char) > -1) {
619
+ indexes.push(newStr.indexOf(char) + strLength - newStr.length)
620
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
621
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
622
+ }
623
+ return indexes
624
+ }
625
+ let chars = text1.split('')
626
+ let indexs = []
627
+ chars.map((i) => {
628
+ let findIndexes = findIndex(text3, i)
629
+ if (findIndexes.length > 0) {
630
+ text3 = text3.split('')
631
+ text3[findIndexes] = '$'
632
+ text3 = text3.join('')
633
+ indexs = [...indexs, ...findIndexes]
634
+ }
635
+ })
636
+ let itemHtml = ''
637
+ text2.split('').map((itemValue, index) => {
638
+ let check = indexs.find((i) => i === index)
639
+ if (check !== undefined) {
640
+ itemHtml += `${itemValue}`
641
+ } else {
642
+ itemHtml += `<span class='highlight'>${itemValue}</span>`
643
+ }
644
+ })
645
+ return `<a class="anchor__style" title="Lookup ${item} in Dictionary" target="_blank" href="/word-meaning?search=${item.words}">
646
+ <li>${itemHtml}
647
+ <span class="points" value="${item.points}" style="position:relative; top:4px; font-size:12px"> ${item.points}</span>
648
+ </li></a>`
649
+ })
650
+
651
+ main.innerHTML += `
652
+ <div class="allGroupWords wordlistContainer" id="alpha_${i}">
653
+ <div class="wordListHeading">
654
+ <h3 class="lead">${i} Letter Words</h3>
655
+ </div>
656
+ <div class="wordList">
657
+ <ul class="ul list-unstyled">
658
+ ${result.join('')}
659
+ </ul>
660
+ </div>
661
+ </div>
662
+ `
663
+ }
664
+ }
665
+ // sort by aplhabets
666
+ function sortby(sortBool, data, i) {
667
+ if (sortBool) {
668
+ main.innerHTML = ''
669
+ data.reverse()
670
+ const result = data.map((item) => {
671
+ let ScrabbleLetterScore = ScrabbleScore()
672
+ let sum = 0
673
+ item = item.toLowerCase()
674
+ for (let i = 0; i < item.length; i++) {
675
+ sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters
676
+ }
677
+
678
+ var text1 = serachValue.replace('?', '')
679
+ var text2 = item
680
+ var text3 = item
681
+ function findIndex(str, char) {
682
+ const strLength = str.length
683
+ const indexes = []
684
+ let newStr = str
685
+ while (newStr && newStr.indexOf(char) > -1) {
686
+ indexes.push(newStr.indexOf(char) + strLength - newStr.length)
687
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
688
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
689
+ }
690
+ return indexes
691
+ }
692
+ let chars = text1.split('')
693
+ let indexs = []
694
+ chars.map((i) => {
695
+ let findIndexes = findIndex(text3, i)
696
+ if (findIndexes.length > 0) {
697
+ text3 = text3.split('')
698
+ text3[findIndexes] = '$'
699
+ text3 = text3.join('')
700
+ indexs = [...indexs, ...findIndexes]
701
+ }
702
+ })
703
+ let itemHtml = ''
704
+ text2.split('').map((itemValue, index) => {
705
+ let check = indexs.find((i) => i === index)
706
+ if (check !== undefined) {
707
+ itemHtml += `${itemValue}`
708
+ } else {
709
+ itemHtml += `<span class='highlight'>${itemValue}</span>`
710
+ }
711
+ })
712
+
713
+ return `<a class="anchor__style" title="Lookup ${item} in Dictionary" target="_blank" href="/word-meaning?search=${item}">
714
+ <li>${itemHtml}
715
+ <span class="points" value="${sum}" style="position:relative; top:4px; font-size:12px"> ${sum}</span>
716
+ </li></a>`
717
+ })
718
+
719
+ main.innerHTML += `
720
+ <div class="allGroupWords wordlistContainer" id="alpha_${i}">
721
+ <div class="wordListHeading">
722
+ <h3 class="lead">${i} Letter Words</h3>
723
+ </div>
724
+ <div class="wordList">
725
+ <ul class="ul list-unstyled">
726
+ ${result.join('')}
727
+ </ul>
728
+ </div>
729
+ </div>
730
+
731
+ `
732
+ } else {
733
+ main.innerHTML = ''
734
+ data.sort()
735
+ const result = data.map((item) => {
736
+ let ScrabbleLetterScore = ScrabbleScore()
737
+ let sum = 0
738
+ item = item.toLowerCase()
739
+ for (let i = 0; i < item.length; i++) {
740
+ sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters
741
+ }
742
+
743
+ var text1 = serachValue.replace('?', '')
744
+ var text2 = item
745
+ var text3 = item
746
+ function findIndex(str, char) {
747
+ const strLength = str.length
748
+ const indexes = []
749
+ let newStr = str
750
+ while (newStr && newStr.indexOf(char) > -1) {
751
+ indexes.push(newStr.indexOf(char) + strLength - newStr.length)
752
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
753
+ newStr = newStr.substring(newStr.indexOf(char) + 1)
754
+ }
755
+ return indexes
756
+ }
757
+ let chars = text1.split('')
758
+ let indexs = []
759
+ chars.map((i) => {
760
+ let findIndexes = findIndex(text3, i)
761
+ if (findIndexes.length > 0) {
762
+ text3 = text3.split('')
763
+ text3[findIndexes] = '$'
764
+ text3 = text3.join('')
765
+ indexs = [...indexs, ...findIndexes]
766
+ }
767
+ })
768
+ let itemHtml = ''
769
+ text2.split('').map((itemValue, index) => {
770
+ let check = indexs.find((i) => i === index)
771
+ if (check !== undefined) {
772
+ itemHtml += `${itemValue}`
773
+ } else {
774
+ itemHtml += `<span class='highlight'>${itemValue}</span>`
775
+ }
776
+ })
777
+
778
+ return `<a class="anchor__style" title="Lookup ${item} in Dictionary" target="_blank" href="/word-meaning?search=${item}">
779
+ <li>${itemHtml}
780
+ <span class="points" value="${sum}" style="position:relative; top:4px; font-size:12px"> ${sum}</span>
781
+ </li></a>`
782
+ })
783
+
784
+ main.innerHTML += `
785
+ <div class="allGroupWords wordlistContainer" id="alpha_${i}">
786
+ <div class="wordListHeading">
787
+ <h3 class="lead">${i} Letter Words</h3>
788
+ </div>
789
+ <div class="wordList">
790
+ <ul class="ul list-unstyled">
791
+ ${result.join('')}
792
+ </ul>
793
+ </div>
794
+ </div>
795
+
796
+ `
797
+ }
798
+ }
799
+
800
+ // Implement Active class
801
+ // const addFilter = () => {
802
+ // let tabs = document.getElementsByClassName('tab_link')
803
+ // tabs[0] ? tabs[0].classList.add('active-tab') : ''
804
+
805
+ // Array.from(tabs).map((item) => {
806
+ // item.classList.remove('active-tab')
807
+ // })
808
+ // main.innerHTML += ``
809
+ // let activeLetter = event.target
810
+ // // console.log(activeLetter)
811
+ // activeLetter.classList.add('active-tab')
812
+ // }