browser-selection 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- .wrapper{max-width:600px;box-sizing:border-box;scroll-behavior:smooth;scrollbar-width:none;font-family:"Plus Jakarta Sans",sans-serif;font-size:16px;color:#212529;background-color:rgba(0,0,0,0);margin:0;padding:0;line-height:1.5}@font-face{font-family:"Plus Jakarta Sans";src:url("./fonts/PlusJakartaSans-VariableFont_wght.ttf") format("truetype");font-weight:100 900;font-style:normal;font-display:swap}.dropdown{border:1px solid #cbd5e1;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;cursor:pointer;position:relative;background-color:#fff}.dropdown__arrow{position:absolute;z-index:100}.dropdown__item{position:relative;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.dropdown__item:hover{background-color:#cbd5e1}.dropdown__icon{display:inline-block;margin:11px 10px 0 11px}.dropdown__text{display:inline-block;position:absolute;top:12px;font-weight:500;font-size:14px;white-space:nowrap}.dropdown__slider{display:none;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;max-height:200px;overflow-x:hidden;border:1px solid #cbd5e1;position:absolute;background-color:#fff;z-index:9999}@media(max-width: 767px){.dropdown{width:100% !important}.dropdown__text,.dropdown__item,.dropdown__slider,.dropdown__selected{width:100% !important}}.group{display:flex;align-items:stretch}.group__input{display:flex;border-radius:8px 0 0 8px;align-items:center;position:relative;margin-bottom:1rem;gap:8px;padding:8px 8px 8px 16px;border:1px solid #e4e4e7;border-radius:8px;background-color:#fff}.group__input input{font:inherit;color:#333;width:100%;border:none;outline:none}.group__input button{flex-shrink:0;white-space:nowrap;display:inline-block;line-height:1.6rem;text-align:center;color:#fff;font-size:16px;font-weight:500;font-family:"Plus Jakarta Sans",sans-serif;background-color:#2b3b80;text-align:center;cursor:pointer;padding:.6rem 1.5rem;border-radius:8px;border-color:#2b3b80;transition:background-color .2s ease}.group__input button:hover{background-color:rgb(36.55,50.15,108.8)}@media(max-width: 576px){.group__input{flex-direction:column;align-items:stretch;padding:.75rem;gap:.75rem}}.group__list{padding:0;margin:0;border:1px solid #cbd5e1;border-radius:8px;max-height:456px}.group__list .list{border:none;border-radius:0;border-bottom:1px solid #cbd5e1}.group__list .lists{margin:0;padding:0;max-height:calc(350px - 40px);overflow-y:scroll}.group__list .list:last-child{border:none}.group__list-heading{font-weight:500;font-size:14px;color:#506466}.group__dropdown{display:flex;border-radius:8px}.group__dropdown .dropdown__item,.group__dropdown .dropdown__slider{border-radius:0}.group__dropdown div[id]:nth-child(1) .dropdown{border-radius:8px 0 0 8px}.group__dropdown div[id]:nth-child(2) .dropdown{border-radius:0}.group__dropdown div[id]:nth-child(3) .dropdown{border-radius:0 8px 8px 0}@media(max-width: 767px){.group{width:100% !important}.group__dropdown{flex-direction:column;gap:8px}.group__dropdown .dropdown{border-radius:6px !important}}
1
+ .wdd-wrapper{max-width:600px;box-sizing:border-box;scroll-behavior:smooth;scrollbar-width:none;font-family:"Plus Jakarta Sans",sans-serif;font-size:16px;color:#212529;background-color:rgba(0,0,0,0);margin:0;padding:0;line-height:1.5}@font-face{font-family:"Plus Jakarta Sans";src:url("./fonts/PlusJakartaSans-VariableFont_wght.ttf") format("truetype");font-weight:100 900;font-style:normal;font-display:swap}.wdd-dropdown{border:1px solid #cbd5e1;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;cursor:pointer;position:relative;background-color:#fff}.wdd-dropdown__arrow{position:absolute;z-index:100}.wdd-dropdown__item{position:relative;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.wdd-dropdown__item:hover{background-color:#cbd5e1}.wdd-dropdown__icon{display:inline-block;margin:11px 10px 0 11px}.wdd-dropdown__text{display:inline-block;position:absolute;top:12px;font-weight:500;font-size:14px;white-space:nowrap}.wdd-dropdown__slider{display:none;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;max-height:200px;overflow-x:hidden;border:1px solid #cbd5e1;position:absolute;background-color:#fff;z-index:9999}@media(max-width: 767px){.wdd-dropdown{width:100% !important}.wdd-dropdown__text,.wdd-dropdown__item,.wdd-dropdown__slider,.wdd-dropdown__selected{width:100% !important}}.wdd-group{display:flex;align-items:stretch}.wdd-group__input{display:flex;border-radius:8px 0 0 8px;align-items:center;position:relative;margin-bottom:1rem;gap:8px;padding:8px 8px 8px 16px;border:1px solid #e4e4e7;border-radius:8px;background-color:#fff}.wdd-group__input input{font:inherit;color:#333;width:100%;border:none;outline:none}.wdd-group__input button{flex-shrink:0;white-space:nowrap;display:inline-block;line-height:1.6rem;text-align:center;color:#fff;font-size:16px;font-weight:500;font-family:"Plus Jakarta Sans",sans-serif;background-color:#2b3b80;text-align:center;cursor:pointer;padding:.6rem 1.5rem;border-radius:8px;border-color:#2b3b80;transition:background-color .2s ease}.wdd-group__input button:hover{background-color:rgb(36.55,50.15,108.8)}@media(max-width: 576px){.wdd-group__input{flex-direction:column;align-items:stretch;padding:.75rem;gap:.75rem}}.wdd-group__list{padding:0;margin:0;border:1px solid #cbd5e1;border-radius:8px;max-height:456px}.wdd-group__list .wdd-list{border:none;border-radius:0;border-bottom:1px solid #cbd5e1}.wdd-group__list .wdd-lists{margin:0;padding:0;max-height:calc(350px - 40px);overflow-y:scroll}.wdd-group__list .wdd-list:last-child{border:none}.wdd-group__list-heading{font-weight:500;font-size:14px;color:#506466}.wdd-group__dropdown{display:flex;border-radius:8px}.wdd-group__dropdown .wdd-dropdown__item,.wdd-group__dropdown .wdd-dropdown__slider{border-radius:0}.wdd-group__dropdown div[id]:nth-child(1) .wdd-dropdown{border-radius:8px 0 0 8px}.wdd-group__dropdown div[id]:nth-child(2) .wdd-dropdown{border-radius:0}.wdd-group__dropdown div[id]:nth-child(3) .wdd-dropdown{border-radius:0 8px 8px 0}@media(max-width: 767px){.wdd-group{width:100% !important}.wdd-group__dropdown{flex-direction:column;gap:8px}.wdd-group__dropdown .wdd-dropdown{border-radius:6px !important}}
@@ -48,17 +48,17 @@ function MainFc() {
48
48
  var containerElem = document.getElementById("browserling-dropdown-container");
49
49
 
50
50
  var wddWrapper = createDiv({
51
- id: "wrapper",
52
- class: "wrapper",
51
+ id: "wdd-wrapper",
52
+ class: "wdd-wrapper",
53
53
  innerHTML:
54
- '<div class="group__input" id="run">' +
55
- '<input id="input" type="text" class="input" placeholder="https://" />' +
56
- '<button id="button" class="button">Test Now</button>' +
54
+ '<div class="wdd-group__input" id="wdd-run">' +
55
+ '<input id="wdd-input" type="text" class="wdd-input" placeholder="https://" />' +
56
+ '<button id="wdd-button" class="wdd-button">Test Now</button>' +
57
57
  "</div>" +
58
- '<div id="group__dropdown" class="group__dropdown">' +
59
- '<div id="platform"></div>' +
60
- '<div id="browser"></div>' +
61
- '<div id="version"></div>' +
58
+ '<div id="wdd-group__dropdown" class="wdd-group__dropdown">' +
59
+ '<div id="wdd-platform"></div>' +
60
+ '<div id="wdd-browser"></div>' +
61
+ '<div id="wdd-version"></div>' +
62
62
  "</div>"
63
63
  });
64
64
 
@@ -266,7 +266,7 @@ function MainFc() {
266
266
 
267
267
  function generateLink(url) {
268
268
  var platformVersion = document.querySelector(
269
- "#platform .dropdown__selected .dropdown__text"
269
+ "#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text"
270
270
  );
271
271
 
272
272
  if (platformVersion) {
@@ -280,7 +280,7 @@ function MainFc() {
280
280
  platformVersion = platformVersionToShortName(platformVersion);
281
281
 
282
282
  var browser = document.querySelector(
283
- "#browser .dropdown__selected .dropdown__text"
283
+ "#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text"
284
284
  );
285
285
 
286
286
  if (browser) {
@@ -290,7 +290,7 @@ function MainFc() {
290
290
  }
291
291
 
292
292
  var version = document.querySelector(
293
- "#version .dropdown__selected .dropdown__text"
293
+ "#wdd-version .wdd-dropdown__selected .wdd-dropdown__text"
294
294
  );
295
295
 
296
296
  if (version) {
@@ -399,7 +399,7 @@ function MainFc() {
399
399
 
400
400
  function lastChanges(data) {
401
401
  var platform = document.querySelector(
402
- "#platform .dropdown__selected .dropdown__text"
402
+ "#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text"
403
403
  );
404
404
  if (platform) {
405
405
  platform = platform.textContent;
@@ -408,7 +408,7 @@ function MainFc() {
408
408
  }
409
409
 
410
410
  var browser = document.querySelector(
411
- "#browser .dropdown__selected .dropdown__text"
411
+ "#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text"
412
412
  );
413
413
  if (browser) {
414
414
  browser = browser.textContent;
@@ -417,7 +417,7 @@ function MainFc() {
417
417
  }
418
418
 
419
419
  var version = document.querySelector(
420
- "#version .dropdown__selected .dropdown__text"
420
+ "#wdd-version .wdd-dropdown__selected .wdd-dropdown__text"
421
421
  );
422
422
  if (version) {
423
423
  version = version.textContent;
@@ -464,7 +464,7 @@ function MainFc() {
464
464
  versionDropdown.update(data[2]);
465
465
  if (version) {
466
466
  document.querySelector(
467
- "#version .dropdown__selected .dropdown__item .dropdown__text"
467
+ "#wdd-version .wdd-dropdown__selected .wdd-dropdown__item .wdd-dropdown__text"
468
468
  ).textContent = version;
469
469
  }
470
470
 
@@ -516,15 +516,17 @@ function MainFc() {
516
516
  callback: function (selected) {
517
517
  var data = init(
518
518
  document.querySelector(
519
- "#platform .dropdown__selected .dropdown__text"
519
+ "#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text"
520
520
  )
521
521
  ? document.querySelector(
522
- "#platform .dropdown__selected .dropdown__text"
522
+ "#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text"
523
523
  ).textContent
524
524
  : "",
525
- document.querySelector("#browser .dropdown__selected .dropdown__text")
525
+ document.querySelector(
526
+ "#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text"
527
+ )
526
528
  ? document.querySelector(
527
- "#browser .dropdown__selected .dropdown__text"
529
+ "#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text"
528
530
  ).textContent
529
531
  : "",
530
532
  selected
@@ -533,7 +535,9 @@ function MainFc() {
533
535
  }
534
536
  });
535
537
 
536
- document.querySelector("#version").appendChild(versionDropdown.create());
538
+ document
539
+ .querySelector("#wdd-version")
540
+ .appendChild(versionDropdown.create());
537
541
 
538
542
  browserDropdown = new Dropdown({
539
543
  width: 200,
@@ -544,10 +548,10 @@ function MainFc() {
544
548
  callback: function (selected) {
545
549
  var data = init(
546
550
  document.querySelector(
547
- "#platform .dropdown__selected .dropdown__text"
551
+ "#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text"
548
552
  )
549
553
  ? document.querySelector(
550
- "#platform .dropdown__selected .dropdown__text"
554
+ "#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text"
551
555
  ).textContent
552
556
  : "",
553
557
  selected
@@ -556,7 +560,9 @@ function MainFc() {
556
560
  }
557
561
  });
558
562
 
559
- document.querySelector("#browser").appendChild(browserDropdown.create());
563
+ document
564
+ .querySelector("#wdd-browser")
565
+ .appendChild(browserDropdown.create());
560
566
 
561
567
  platformDropdown = new Dropdown({
562
568
  width: 200,
@@ -570,7 +576,9 @@ function MainFc() {
570
576
  }
571
577
  });
572
578
 
573
- document.querySelector("#platform").appendChild(platformDropdown.create());
579
+ document
580
+ .querySelector("#wdd-platform")
581
+ .appendChild(platformDropdown.create());
574
582
 
575
583
  localStorageGet(
576
584
  ["platformName", "browserName", "version", "browsers", "cacheTime"],
@@ -589,13 +597,13 @@ function MainFc() {
589
597
  init(items.platformName, items.browserName);
590
598
 
591
599
  var nodes = document.querySelectorAll(
592
- "#version .dropdown__slider .dropdown__item"
600
+ "#wdd-version .wdd-dropdown__slider .wdd-dropdown__item"
593
601
  );
594
602
 
595
603
  for (var i = 0; i < nodes.length; i++) {
596
604
  if (nodes[i].textContent === items.version) {
597
605
  var el = document.querySelector(
598
- "#version .dropdown__selected .dropdown__text"
606
+ "#wdd-version .wdd-dropdown__selected .wdd-dropdown__text"
599
607
  );
600
608
  if (el) {
601
609
  el.textContent = nodes[i].textContent;
@@ -610,13 +618,15 @@ function MainFc() {
610
618
  });
611
619
 
612
620
  // make run work
613
- document.querySelector("#run button").addEventListener("click", function () {
614
- var url = document.querySelector("#run input").value;
615
- openUrl(url);
616
- });
621
+ document
622
+ .querySelector("#wdd-run button")
623
+ .addEventListener("click", function () {
624
+ var url = document.querySelector("#wdd-run input").value;
625
+ openUrl(url);
626
+ });
617
627
 
618
628
  // fill url field with current tab's url
619
- document.querySelector("#run input").value = window.location.href;
629
+ document.querySelector("#wdd-run input").value = window.location.href;
620
630
  }
621
631
 
622
632
  function Dropdown(opts) {
@@ -628,24 +638,26 @@ function Dropdown(opts) {
628
638
  var slider;
629
639
 
630
640
  function appendItem(x) {
631
- var item = createDiv({ class: "dropdown__item" });
641
+ var item = createDiv({ class: "wdd-dropdown__item" });
632
642
 
633
643
  item.addEventListener("click", function () {
634
644
  // update selection
635
645
  if (x.icon) {
636
646
  selected
637
- .querySelector(".dropdown__icon img")
647
+ .querySelector(".wdd-dropdown__icon img")
638
648
  .setAttribute("src", x.icon);
639
649
  }
640
650
 
641
651
  if (typeof x === "object") {
642
- selected.querySelector(".dropdown__text").textContent = x.text;
652
+ selected.querySelector(".wdd-dropdown__text").textContent = x.text;
643
653
  } else if (typeof x === "number" || typeof x === "string") {
644
- selected.querySelector(".dropdown__text").textContent = x;
654
+ selected.querySelector(".wdd-dropdown__text").textContent = x;
645
655
  }
646
656
 
647
657
  if (opts.callback) {
648
- opts.callback(selected.querySelector(".dropdown__text").textContent);
658
+ opts.callback(
659
+ selected.querySelector(".wdd-dropdown__text").textContent
660
+ );
649
661
  }
650
662
 
651
663
  selected.click();
@@ -655,7 +667,7 @@ function Dropdown(opts) {
655
667
  item.style.height = opts.height + "px";
656
668
 
657
669
  if (x.icon) {
658
- var icon = createDiv({ class: "dropdown__icon" });
670
+ var icon = createDiv({ class: "wdd-dropdown__icon" });
659
671
  var img = document.createElement("img");
660
672
  img.src = x.icon;
661
673
 
@@ -666,7 +678,7 @@ function Dropdown(opts) {
666
678
  item.appendChild(icon);
667
679
  }
668
680
 
669
- var text = createDiv({ class: "dropdown__text" });
681
+ var text = createDiv({ class: "wdd-dropdown__text" });
670
682
 
671
683
  if (typeof x === "object") {
672
684
  text.textContent = x.text;
@@ -711,7 +723,7 @@ function Dropdown(opts) {
711
723
  }
712
724
 
713
725
  self.update = function (data) {
714
- var nodes = dropdown.querySelectorAll(".dropdown__item");
726
+ var nodes = dropdown.querySelectorAll(".wdd-dropdown__item");
715
727
  for (var i = 0; i < nodes.length; i++) {
716
728
  nodes[i].parentNode.removeChild(nodes[i]);
717
729
  }
@@ -721,9 +733,9 @@ function Dropdown(opts) {
721
733
  self.create = function () {
722
734
  var data = opts.data;
723
735
 
724
- dropdown = createDiv({ class: "dropdown" });
736
+ dropdown = createDiv({ class: "wdd-dropdown" });
725
737
 
726
- var arrow = createDiv({ class: "dropdown__arrow" });
738
+ var arrow = createDiv({ class: "wdd-dropdown__arrow" });
727
739
  var arrowImg = document.createElement("img");
728
740
  arrowImg.src = basePath + "/images/dropdown-arrow-down.svg";
729
741
  arrow.appendChild(arrowImg);
@@ -737,10 +749,10 @@ function Dropdown(opts) {
737
749
  dropdown.style.backgroundColor = opts.backgroundColor;
738
750
  }
739
751
 
740
- selected = createDiv({ class: "dropdown__selected" });
752
+ selected = createDiv({ class: "wdd-dropdown__selected" });
741
753
  dropdown.appendChild(selected);
742
754
 
743
- slider = createDiv({ class: "dropdown__slider" });
755
+ slider = createDiv({ class: "wdd-dropdown__slider" });
744
756
  dropdown.appendChild(slider);
745
757
 
746
758
  appendAllItems(data);
@@ -751,13 +763,13 @@ function Dropdown(opts) {
751
763
  if (opts.onClick) opts.onClick("hidden");
752
764
  slider.style.display = "none";
753
765
  dropdown
754
- .querySelector(".dropdown__arrow img")
766
+ .querySelector(".wdd-dropdown__arrow img")
755
767
  .setAttribute("src", basePath + "/images/dropdown-arrow-down.svg");
756
768
  } else {
757
769
  if (opts.onClick) opts.onClick("visible");
758
770
  slider.style.display = "block";
759
771
  dropdown
760
- .querySelector(".dropdown__arrow img")
772
+ .querySelector(".wdd-dropdown__arrow img")
761
773
  .setAttribute("src", basePath + "/images/dropdown-arrow-up.svg");
762
774
  }
763
775
  });
@@ -1 +1 @@
1
- var script=document.currentScript||(function(){var o=document.getElementsByTagName("script");return o[o.length-1]})(),scriptSrc=script?script.src:null;const basePath=scriptSrc?scriptSrc.replace(/\/js\/browser-selection(\.min)?\.js$/,""):"";document.readyState==="loading"?document.addEventListener("DOMContentLoaded",MainFc):MainFc();function MainFc(){if(window.__browserSelectionInitialized)return;window.__browserSelectionInitialized=!0;function o(r,e){var t=new XMLHttpRequest;t.open("GET",r,!0),t.onreadystatechange=function(){if(t.readyState===4)if(t.status===200)try{e(JSON.parse(t.responseText))}catch{e(null)}else e(null)},t.onerror=function(){e(null)},t.send()}var w=document.getElementById("browserling-dropdown-container"),u=createDiv({id:"wrapper",class:"wrapper",innerHTML:'<div class="group__input" id="run"><input id="input" type="text" class="input" placeholder="https://" /><button id="button" class="button">Test Now</button></div><div id="group__dropdown" class="group__dropdown"><div id="platform"></div><div id="browser"></div><div id="version"></div></div>'});w.appendChild(u);var p,f={},x,y;y=["edge","ie","chrome","firefox","opera","brave","vivaldi","tor","safari","browser","mypal","supermium","orion","ddg","brave"];var i=["macOS 26 Tahoe","macOS 15 Sequoia","macOS 14 Sonoma","macOS 13 Ventura","macOS 12 Monterey","Windows 11","Windows 10","Windows 8.1","Windows 8","Windows 7","Windows Vista","Windows XP","Android 15","Android 14","Android 13","Android 12.1","Android 12","Android 11","Android 10","Android 9 Pie","Android 8.1 Oreo","Android 8.0 Oreo","Android 7.1 Nougat","Android 7.0 Nougat","Android 6.0 Marshmallow","Android 5.1 Lollipop","Android 5.0 Lollipop","Android 4.4 KitKat","iOS 26","iOS 18","iOS 17","iOS 16","iOS 15"];p=[],i.forEach(function(r){var e=r.split(" ")[0],t=r.split(" ")[1].toLowerCase(),n=e==="Android"?"android":e.toLowerCase().slice(0,3),d=r==="Android 12.1"?basePath+"/images/os-icons/android-12.png":basePath+"/images/os-icons/"+e.toLowerCase()+"-"+t.replace(".","")+".png",c={name:n,version:t,text:r,icon:d};r==="Windows 10"&&(c.selected=!0),p.push(c)}),x={ie:{text:"Internet Explorer",icon:basePath+"/images/browser-icons/ie.png"},chrome:{text:"Chrome",icon:basePath+"/images/browser-icons/chrome.png"},firefox:{text:"Firefox",icon:basePath+"/images/browser-icons/firefox.png"},opera:{text:"Opera",icon:basePath+"/images/browser-icons/opera.png"},safari:{text:"Safari",icon:basePath+"/images/browser-icons/safari.png"},edge:{text:"Edge",icon:basePath+"/images/browser-icons/edge.png"},brave:{text:"Brave",icon:basePath+"/images/browser-icons/brave.png"},vivaldi:{text:"Vivaldi",icon:basePath+"/images/browser-icons/vivaldi.png"},tor:{text:"Tor Browser",icon:basePath+"/images/browser-icons/tor.png"},browser:{text:"Default Browser",icon:basePath+"/images/browser-icons/android.png"},mypal:{text:"Mypal",icon:basePath+"/images/browser-icons/mypal.png"},supermium:{text:"Supermium",icon:basePath+"/images/browser-icons/supermium.png"},ddg:{text:"DuckDuckGo",icon:basePath+"/images/browser-icons/ddg.png"},orion:{text:"Orion",icon:basePath+"/images/browser-icons/orion.png"}};function a(r){return r.split(" ")[1].toLowerCase()}function v(r){return r=="Internet Explorer"?r="ie":r=="Tor Browser"?r="tor":r=="DuckDuckGo"?r="ddg":r=r.toLowerCase(),r}function h(r){var e="win";return/android/i.test(r)?e="android":/mac/i.test(r)?e="mac":/ios/i.test(r)&&(e="ios"),e}function b(r){var e={};return Object.keys(r).forEach(function(t){var n=Object.keys(r[t]);n.forEach(function(d){e[t+d]={};var c=Object.keys(r[t][d]);c.forEach(function(m){var s=[];r[t][d][m].forEach(function(l){/^\d+/.test(l)?s.push(l):s.unshift(l)});var g=s[s.length-1];g={text:g,selected:!0},s[s.length-1]=g,e[t+d][m]=s})})}),e}function T(r){var e=document.querySelector("#platform .dropdown__selected .dropdown__text");e?e=e.textContent:e="";var t=h(e);e=a(e);var n=document.querySelector("#browser .dropdown__selected .dropdown__text");n?n=v(n.textContent):n="";var d=document.querySelector("#version .dropdown__selected .dropdown__text");d?d=d.textContent:d="";var c="https://www.browserling.com/browse/"+t+e+"/"+n+d+"/"+encodeURIComponent(r);return c}function B(r){var e=T(r);console.log("open",e),window.open(e)}function j(r){var e=a(r),t=h(r);r=t+e;for(var n=JSON.parse(JSON.stringify(p)),d=JSON.parse(JSON.stringify(f)),c=[],m=JSON.parse(JSON.stringify(x)),s=Object.keys(d[r]),g=[],l=0;y.length>l;l++)s.indexOf(y[l])!==-1&&g.push(y[l]);for(var l=0;l<g.length;l++)c.push(m[g[l]]);return[n.map(function(_){return _.name+_.version===r?_.selected=!0:delete _.selected,_}),c,r]}function L(r,e){var t=a(r),n=h(r);r=n+t;for(var d=JSON.parse(JSON.stringify(x)),c=Object.keys(d),m=Object.keys(f[r]),s=0;s<c.length;s++)m.indexOf(c[s])==-1&&delete d[c[s]];for(var g=Object.keys(d).map(function(D){var C=d[D];return C.selected=C.text===e?!0:(delete C.selected,void 0),C}),l,_=Object.keys(d),s=0;s<_.length;s++)if(d[_[s]].selected){l=_[s];break}return[g,l]}function W(r,e){var t=JSON.parse(JSON.stringify(f[r][e]));return t.reverse(),t}function O(r){var e=document.querySelector("#platform .dropdown__selected .dropdown__text");e?e=e.textContent:e="";var t=document.querySelector("#browser .dropdown__selected .dropdown__text");t?t=t.textContent:t="";var n=document.querySelector("#version .dropdown__selected .dropdown__text");n?n=n.textContent:n="";var d=r[0][2]+"/"+r[1][1]+n;E({platformName:e,browserName:t,version:n,url:d})}function N(r){r===void 0&&(r=!1),o("https://www.browserling.com/browsers.json",function(e){if(e){var t=b(e);f=t,r&&S("Windows 10","Chrome"),E({browsers:t,cacheTime:Date.now()})}})}function S(r,e,t){var n=j(r);e||(e=n[1][0].text);var d=L(r,e),c=W(n[2],d[1]),m=[n,d,c];return q.update(m[0][0]),A.update(m[1][0]),k.update(m[2]),t&&(document.querySelector("#version .dropdown__selected .dropdown__item .dropdown__text").textContent=t),m}function J(r,e){var t={};if(Array.isArray(r))r.forEach(function(d){var c=localStorage.getItem(d);if(c)try{c=JSON.parse(c)}catch{}t[d]=c});else{var n=localStorage.getItem(r);try{n=JSON.parse(n)}catch{}t[r]=n}e(t)}function E(r){Object.keys(r).forEach(function(e){localStorage.setItem(e,JSON.stringify(r[e]))})}var k,A,q;o(basePath+"/data/browsers.json",function(r){f=b(r),k=new Dropdown({width:90,height:45,iconWidth:20,iconHeight:20,center:!0,data:[],callback:function(e){var t=S(document.querySelector("#platform .dropdown__selected .dropdown__text")?document.querySelector("#platform .dropdown__selected .dropdown__text").textContent:"",document.querySelector("#browser .dropdown__selected .dropdown__text")?document.querySelector("#browser .dropdown__selected .dropdown__text").textContent:"",e);O(t)}}),document.querySelector("#version").appendChild(k.create()),A=new Dropdown({width:200,height:45,iconWidth:23,iconHeight:23,data:[],callback:function(e){var t=S(document.querySelector("#platform .dropdown__selected .dropdown__text")?document.querySelector("#platform .dropdown__selected .dropdown__text").textContent:"",e);O(t)}}),document.querySelector("#browser").appendChild(A.create()),q=new Dropdown({width:200,height:45,iconWidth:23,iconHeight:23,data:[],callback:function(e){var t=S(e);O(t)}}),document.querySelector("#platform").appendChild(q.create()),J(["platformName","browserName","version","browsers","cacheTime"],function(e){if(e.browsers&&e.cacheTime?Date.now()-e.cacheTime>3*3600*1e3?N():f=e.browsers:N(!0),e.platformName&&e.browserName&&e.version){S(e.platformName,e.browserName);for(var t=document.querySelectorAll("#version .dropdown__slider .dropdown__item"),n=0;n<t.length;n++)if(t[n].textContent===e.version){var d=document.querySelector("#version .dropdown__selected .dropdown__text");d&&(d.textContent=t[n].textContent)}}else S("Windows 10","Chrome")})}),document.querySelector("#run button").addEventListener("click",function(){var r=document.querySelector("#run input").value;B(r)}),document.querySelector("#run input").value=window.location.href}function Dropdown(o){if(!(this instanceof Dropdown))return new Dropdown(o);var w=this,u,p,f;function x(i){var a=createDiv({class:"dropdown__item"});if(a.addEventListener("click",function(){i.icon&&p.querySelector(".dropdown__icon img").setAttribute("src",i.icon),typeof i=="object"?p.querySelector(".dropdown__text").textContent=i.text:(typeof i=="number"||typeof i=="string")&&(p.querySelector(".dropdown__text").textContent=i),o.callback&&o.callback(p.querySelector(".dropdown__text").textContent),p.click()}),a.style.width=o.width+"px",a.style.height=o.height+"px",i.icon){var v=createDiv({class:"dropdown__icon"}),h=document.createElement("img");h.src=i.icon,o.iconWidth&&(h.width=o.iconWidth),o.iconHeight&&(h.height=o.iconHeight),v.appendChild(h),a.appendChild(v)}var b=createDiv({class:"dropdown__text"});typeof i=="object"?b.textContent=i.text:(typeof i=="number"||typeof i=="string")&&(b.textContent=i),(i.center||o.center)&&(b.style.left=o.width/2-20+"px"),a.appendChild(b),f.appendChild(a),i.selected&&p.appendChild(a.cloneNode(!0))}function y(i){i=Object.keys(i).map(function(a){return i[a]}),i.length&&(i.some(function(a){return a.selected})||(typeof i[0]=="object"?i[0].selected=!0:i[0]={text:i[0],selected:!0}),i.forEach(function(a){x(a)}))}w.update=function(i){for(var a=u.querySelectorAll(".dropdown__item"),v=0;v<a.length;v++)a[v].parentNode.removeChild(a[v]);y(i)},w.create=function(){var i=o.data;u=createDiv({class:"dropdown"});var a=createDiv({class:"dropdown__arrow"}),v=document.createElement("img");return v.src=basePath+"/images/dropdown-arrow-down.svg",a.appendChild(v),a.style.top=o.height/2-15+"px",a.style.right="14px",u.appendChild(a),o.backgroundColor&&(u.style.backgroundColor=o.backgroundColor),p=createDiv({class:"dropdown__selected"}),u.appendChild(p),f=createDiv({class:"dropdown__slider"}),u.appendChild(f),y(i),p.addEventListener("click",function(){f.style.display==="block"?(o.onClick&&o.onClick("hidden"),f.style.display="none",u.querySelector(".dropdown__arrow img").setAttribute("src",basePath+"/images/dropdown-arrow-down.svg")):(o.onClick&&o.onClick("visible"),f.style.display="block",u.querySelector(".dropdown__arrow img").setAttribute("src",basePath+"/images/dropdown-arrow-up.svg"))}),a.addEventListener("click",function(){p.click()}),u}}function createDiv(o){o=o||{};var w=document.createElement("div");if("id"in o&&(w.id=o.id),"class"in o&&(w.className=o.class),"innerHTML"in o&&(w.innerHTML=o.innerHTML),"text"in o&&(w.textContent=o.text),"click"in o&&w.addEventListener("click",o.click),"attributes"in o)for(var u in o.attributes)w.setAttribute(u,o.attributes[u]);return w}
1
+ var script=document.currentScript||(function(){var o=document.getElementsByTagName("script");return o[o.length-1]})(),scriptSrc=script?script.src:null;const basePath=scriptSrc?scriptSrc.replace(/\/js\/browser-selection(\.min)?\.js$/,""):"";document.readyState==="loading"?document.addEventListener("DOMContentLoaded",MainFc):MainFc();function MainFc(){if(window.__browserSelectionInitialized)return;window.__browserSelectionInitialized=!0;function o(r,e){var t=new XMLHttpRequest;t.open("GET",r,!0),t.onreadystatechange=function(){if(t.readyState===4)if(t.status===200)try{e(JSON.parse(t.responseText))}catch{e(null)}else e(null)},t.onerror=function(){e(null)},t.send()}var f=document.getElementById("browserling-dropdown-container"),w=createDiv({id:"wdd-wrapper",class:"wdd-wrapper",innerHTML:'<div class="wdd-group__input" id="wdd-run"><input id="wdd-input" type="text" class="wdd-input" placeholder="https://" /><button id="wdd-button" class="wdd-button">Test Now</button></div><div id="wdd-group__dropdown" class="wdd-group__dropdown"><div id="wdd-platform"></div><div id="wdd-browser"></div><div id="wdd-version"></div></div>'});f.appendChild(w);var u,p={},x,y;y=["edge","ie","chrome","firefox","opera","brave","vivaldi","tor","safari","browser","mypal","supermium","orion","ddg","brave"];var d=["macOS 26 Tahoe","macOS 15 Sequoia","macOS 14 Sonoma","macOS 13 Ventura","macOS 12 Monterey","Windows 11","Windows 10","Windows 8.1","Windows 8","Windows 7","Windows Vista","Windows XP","Android 15","Android 14","Android 13","Android 12.1","Android 12","Android 11","Android 10","Android 9 Pie","Android 8.1 Oreo","Android 8.0 Oreo","Android 7.1 Nougat","Android 7.0 Nougat","Android 6.0 Marshmallow","Android 5.1 Lollipop","Android 5.0 Lollipop","Android 4.4 KitKat","iOS 26","iOS 18","iOS 17","iOS 16","iOS 15"];u=[],d.forEach(function(r){var e=r.split(" ")[0],t=r.split(" ")[1].toLowerCase(),n=e==="Android"?"android":e.toLowerCase().slice(0,3),i=r==="Android 12.1"?basePath+"/images/os-icons/android-12.png":basePath+"/images/os-icons/"+e.toLowerCase()+"-"+t.replace(".","")+".png",c={name:n,version:t,text:r,icon:i};r==="Windows 10"&&(c.selected=!0),u.push(c)}),x={ie:{text:"Internet Explorer",icon:basePath+"/images/browser-icons/ie.png"},chrome:{text:"Chrome",icon:basePath+"/images/browser-icons/chrome.png"},firefox:{text:"Firefox",icon:basePath+"/images/browser-icons/firefox.png"},opera:{text:"Opera",icon:basePath+"/images/browser-icons/opera.png"},safari:{text:"Safari",icon:basePath+"/images/browser-icons/safari.png"},edge:{text:"Edge",icon:basePath+"/images/browser-icons/edge.png"},brave:{text:"Brave",icon:basePath+"/images/browser-icons/brave.png"},vivaldi:{text:"Vivaldi",icon:basePath+"/images/browser-icons/vivaldi.png"},tor:{text:"Tor Browser",icon:basePath+"/images/browser-icons/tor.png"},browser:{text:"Default Browser",icon:basePath+"/images/browser-icons/android.png"},mypal:{text:"Mypal",icon:basePath+"/images/browser-icons/mypal.png"},supermium:{text:"Supermium",icon:basePath+"/images/browser-icons/supermium.png"},ddg:{text:"DuckDuckGo",icon:basePath+"/images/browser-icons/ddg.png"},orion:{text:"Orion",icon:basePath+"/images/browser-icons/orion.png"}};function a(r){return r.split(" ")[1].toLowerCase()}function v(r){return r=="Internet Explorer"?r="ie":r=="Tor Browser"?r="tor":r=="DuckDuckGo"?r="ddg":r=r.toLowerCase(),r}function h(r){var e="win";return/android/i.test(r)?e="android":/mac/i.test(r)?e="mac":/ios/i.test(r)&&(e="ios"),e}function b(r){var e={};return Object.keys(r).forEach(function(t){var n=Object.keys(r[t]);n.forEach(function(i){e[t+i]={};var c=Object.keys(r[t][i]);c.forEach(function(m){var s=[];r[t][i][m].forEach(function(l){/^\d+/.test(l)?s.push(l):s.unshift(l)});var g=s[s.length-1];g={text:g,selected:!0},s[s.length-1]=g,e[t+i][m]=s})})}),e}function T(r){var e=document.querySelector("#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text");e?e=e.textContent:e="";var t=h(e);e=a(e);var n=document.querySelector("#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text");n?n=v(n.textContent):n="";var i=document.querySelector("#wdd-version .wdd-dropdown__selected .wdd-dropdown__text");i?i=i.textContent:i="";var c="https://www.browserling.com/browse/"+t+e+"/"+n+i+"/"+encodeURIComponent(r);return c}function B(r){var e=T(r);console.log("open",e),window.open(e)}function j(r){var e=a(r),t=h(r);r=t+e;for(var n=JSON.parse(JSON.stringify(u)),i=JSON.parse(JSON.stringify(p)),c=[],m=JSON.parse(JSON.stringify(x)),s=Object.keys(i[r]),g=[],l=0;y.length>l;l++)s.indexOf(y[l])!==-1&&g.push(y[l]);for(var l=0;l<g.length;l++)c.push(m[g[l]]);return[n.map(function(_){return _.name+_.version===r?_.selected=!0:delete _.selected,_}),c,r]}function L(r,e){var t=a(r),n=h(r);r=n+t;for(var i=JSON.parse(JSON.stringify(x)),c=Object.keys(i),m=Object.keys(p[r]),s=0;s<c.length;s++)m.indexOf(c[s])==-1&&delete i[c[s]];for(var g=Object.keys(i).map(function(D){var C=i[D];return C.selected=C.text===e?!0:(delete C.selected,void 0),C}),l,_=Object.keys(i),s=0;s<_.length;s++)if(i[_[s]].selected){l=_[s];break}return[g,l]}function W(r,e){var t=JSON.parse(JSON.stringify(p[r][e]));return t.reverse(),t}function O(r){var e=document.querySelector("#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text");e?e=e.textContent:e="";var t=document.querySelector("#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text");t?t=t.textContent:t="";var n=document.querySelector("#wdd-version .wdd-dropdown__selected .wdd-dropdown__text");n?n=n.textContent:n="";var i=r[0][2]+"/"+r[1][1]+n;E({platformName:e,browserName:t,version:n,url:i})}function N(r){r===void 0&&(r=!1),o("https://www.browserling.com/browsers.json",function(e){if(e){var t=b(e);p=t,r&&S("Windows 10","Chrome"),E({browsers:t,cacheTime:Date.now()})}})}function S(r,e,t){var n=j(r);e||(e=n[1][0].text);var i=L(r,e),c=W(n[2],i[1]),m=[n,i,c];return q.update(m[0][0]),A.update(m[1][0]),k.update(m[2]),t&&(document.querySelector("#wdd-version .wdd-dropdown__selected .wdd-dropdown__item .wdd-dropdown__text").textContent=t),m}function J(r,e){var t={};if(Array.isArray(r))r.forEach(function(i){var c=localStorage.getItem(i);if(c)try{c=JSON.parse(c)}catch{}t[i]=c});else{var n=localStorage.getItem(r);try{n=JSON.parse(n)}catch{}t[r]=n}e(t)}function E(r){Object.keys(r).forEach(function(e){localStorage.setItem(e,JSON.stringify(r[e]))})}var k,A,q;o(basePath+"/data/browsers.json",function(r){p=b(r),k=new Dropdown({width:90,height:45,iconWidth:20,iconHeight:20,center:!0,data:[],callback:function(e){var t=S(document.querySelector("#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text")?document.querySelector("#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text").textContent:"",document.querySelector("#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text")?document.querySelector("#wdd-browser .wdd-dropdown__selected .wdd-dropdown__text").textContent:"",e);O(t)}}),document.querySelector("#wdd-version").appendChild(k.create()),A=new Dropdown({width:200,height:45,iconWidth:23,iconHeight:23,data:[],callback:function(e){var t=S(document.querySelector("#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text")?document.querySelector("#wdd-platform .wdd-dropdown__selected .wdd-dropdown__text").textContent:"",e);O(t)}}),document.querySelector("#wdd-browser").appendChild(A.create()),q=new Dropdown({width:200,height:45,iconWidth:23,iconHeight:23,data:[],callback:function(e){var t=S(e);O(t)}}),document.querySelector("#wdd-platform").appendChild(q.create()),J(["platformName","browserName","version","browsers","cacheTime"],function(e){if(e.browsers&&e.cacheTime?Date.now()-e.cacheTime>3*3600*1e3?N():p=e.browsers:N(!0),e.platformName&&e.browserName&&e.version){S(e.platformName,e.browserName);for(var t=document.querySelectorAll("#wdd-version .wdd-dropdown__slider .wdd-dropdown__item"),n=0;n<t.length;n++)if(t[n].textContent===e.version){var i=document.querySelector("#wdd-version .wdd-dropdown__selected .wdd-dropdown__text");i&&(i.textContent=t[n].textContent)}}else S("Windows 10","Chrome")})}),document.querySelector("#wdd-run button").addEventListener("click",function(){var r=document.querySelector("#wdd-run input").value;B(r)}),document.querySelector("#wdd-run input").value=window.location.href}function Dropdown(o){if(!(this instanceof Dropdown))return new Dropdown(o);var f=this,w,u,p;function x(d){var a=createDiv({class:"wdd-dropdown__item"});if(a.addEventListener("click",function(){d.icon&&u.querySelector(".wdd-dropdown__icon img").setAttribute("src",d.icon),typeof d=="object"?u.querySelector(".wdd-dropdown__text").textContent=d.text:(typeof d=="number"||typeof d=="string")&&(u.querySelector(".wdd-dropdown__text").textContent=d),o.callback&&o.callback(u.querySelector(".wdd-dropdown__text").textContent),u.click()}),a.style.width=o.width+"px",a.style.height=o.height+"px",d.icon){var v=createDiv({class:"wdd-dropdown__icon"}),h=document.createElement("img");h.src=d.icon,o.iconWidth&&(h.width=o.iconWidth),o.iconHeight&&(h.height=o.iconHeight),v.appendChild(h),a.appendChild(v)}var b=createDiv({class:"wdd-dropdown__text"});typeof d=="object"?b.textContent=d.text:(typeof d=="number"||typeof d=="string")&&(b.textContent=d),(d.center||o.center)&&(b.style.left=o.width/2-20+"px"),a.appendChild(b),p.appendChild(a),d.selected&&u.appendChild(a.cloneNode(!0))}function y(d){d=Object.keys(d).map(function(a){return d[a]}),d.length&&(d.some(function(a){return a.selected})||(typeof d[0]=="object"?d[0].selected=!0:d[0]={text:d[0],selected:!0}),d.forEach(function(a){x(a)}))}f.update=function(d){for(var a=w.querySelectorAll(".wdd-dropdown__item"),v=0;v<a.length;v++)a[v].parentNode.removeChild(a[v]);y(d)},f.create=function(){var d=o.data;w=createDiv({class:"wdd-dropdown"});var a=createDiv({class:"wdd-dropdown__arrow"}),v=document.createElement("img");return v.src=basePath+"/images/dropdown-arrow-down.svg",a.appendChild(v),a.style.top=o.height/2-15+"px",a.style.right="14px",w.appendChild(a),o.backgroundColor&&(w.style.backgroundColor=o.backgroundColor),u=createDiv({class:"wdd-dropdown__selected"}),w.appendChild(u),p=createDiv({class:"wdd-dropdown__slider"}),w.appendChild(p),y(d),u.addEventListener("click",function(){p.style.display==="block"?(o.onClick&&o.onClick("hidden"),p.style.display="none",w.querySelector(".wdd-dropdown__arrow img").setAttribute("src",basePath+"/images/dropdown-arrow-down.svg")):(o.onClick&&o.onClick("visible"),p.style.display="block",w.querySelector(".wdd-dropdown__arrow img").setAttribute("src",basePath+"/images/dropdown-arrow-up.svg"))}),a.addEventListener("click",function(){u.click()}),w}}function createDiv(o){o=o||{};var f=document.createElement("div");if("id"in o&&(f.id=o.id),"class"in o&&(f.className=o.class),"innerHTML"in o&&(f.innerHTML=o.innerHTML),"text"in o&&(f.textContent=o.text),"click"in o&&f.addEventListener("click",o.click),"attributes"in o)for(var w in o.attributes)f.setAttribute(w,o.attributes[w]);return f}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browser-selection",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Browser and OS selection widget",
5
5
  "main": "dist/js/browser-selection.js",
6
6
  "unpkg": "dist/js/browser-selection.min.js",