topMenu.html 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <nav class="responsiveWidth " id="topmenu">
  2. <div class="expandable">
  3. <a href="https://jmonkeyengine.org/" alt-href="https://jmonkeyengine.org/tags,https://jmonkeyengine.org/authors,https://jmonkeyengine.org/devlog,https://jmonkeyengine.org/blog,,https://jmonkeyengine.org/communitylog">
  4. <button class="genericCl responsiveIcon expandable ">
  5. <i class="fas fa-home"></i> <span>Home</span>
  6. </button>
  7. </a>
  8. <a href="https://jmonkeyengine.org/tags/showcase" alt-href="https://jmonkeyengine.org/showcase">
  9. <button class="genericCl responsiveIcon expandable ">
  10. <i class="fas fa-images"></i> <span>Showcase</span>
  11. </button>
  12. </a>
  13. <a href="https://hub.jmonkeyengine.org">
  14. <button class="genericCl responsiveIcon expandable ">
  15. <i class="fab fa-discourse"></i> <span>Discussions</span>
  16. </button>
  17. </a>
  18. <a href="https://library.jmonkeyengine.org" >
  19. <button class="genericCl responsiveIcon expandable ">
  20. <i class="fas fa-puzzle-piece"></i> <span>Library</span>
  21. </button>
  22. </a>
  23. <a href="https://jmonkeyengine.org/docs">
  24. <button class="genericCl responsiveIcon expandable ">
  25. <i class="fas fa-book"></i> <span>Docs</span>
  26. </button>
  27. </a>
  28. <a href="https://jmonkeyengine.org/license">
  29. <button class="genericCl responsiveIcon expandable toggleable toggledOffPortrait">
  30. <i class="fas fa-balance-scale-right"></i> <span>License</span>
  31. </button>
  32. </a>
  33. </div>
  34. <div class="toggleable toggledOffPortrait expandable">
  35. <a href="https://github.com/jMonkeyEngine/jmonkeyengine" rel='noopener noreferrer' target="_blank">
  36. <button class="icon toggleable toggledOffPortrait codeCl expandable " title="Github">
  37. <i class="fab fa-github-square"></i> <span>Github</span>
  38. </button>
  39. </a>
  40. <a href="https://twitter.com/jmonkeyengine" rel='noopener noreferrer' target="_blank">
  41. <button class="icon twitterCl toggleable toggledOffPortrait expandable " title="Follow on Twitter">
  42. <i class="fab fa-twitter"></i> <span>Twitter</span>
  43. </button>
  44. </a>
  45. <a href="https://www.youtube.com/channel/UC-Fs3R5Q6wW_XYspOXGZgPw" rel='noopener noreferrer'
  46. target="_blank">
  47. <button class="icon youtubeCl toggleable toggledOffPortrait expandable " title="Follow on Youtube">
  48. <i class="fab fa-youtube"></i> <span>Youtube</span>
  49. </button>
  50. </a>
  51. <!-- <a href="https://jmonkeyengine.itch.io/jMonkeyEngine" rel='noopener noreferrer' target="_blank">
  52. <button class="icon itchCl toggleable toggledOffPortrait expandable " title="Itch.io">
  53. <i class="fab fa-itch-io"></i> <span>Itch.io</span>
  54. </button>
  55. </a> -->
  56. <a href="https://discord.gg/Rv8sfVu" rel='noopener noreferrer' target="_blank">
  57. <button class="icon discordCl toggleable toggledOffPortrait expandable " title="Discord">
  58. <i class="fab fa-discord"></i> <span>Discord</span>
  59. </button>
  60. </a>
  61. <a href="https://jmonkeyengine.org/donate" >
  62. <button class="icon donateCl toggleable toggledOffPortrait expandable " title="Donate">
  63. <i class="fas fa-donate"></i> <span>Donate!</span>
  64. </button>
  65. </a>
  66. </div>
  67. </nav>
  68. <script>
  69. // https://github.com/aceakash/string-similarity/blob/master/LICENSE
  70. !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.stringSimilarity=e():t.stringSimilarity=e()}(self,(function(){return t={138:t=>{function e(t,e){if((t=t.replace(/\s+/g,""))===(e=e.replace(/\s+/g,"")))return 1;if(t.length<2||e.length<2)return 0;let r=new Map;for(let e=0;e<t.length-1;e++){const n=t.substring(e,e+2),o=r.has(n)?r.get(n)+1:1;r.set(n,o)}let n=0;for(let t=0;t<e.length-1;t++){const o=e.substring(t,t+2),s=r.has(o)?r.get(o):0;s>0&&(r.set(o,s-1),n++)}return 2*n/(t.length+e.length-2)}t.exports={compareTwoStrings:e,findBestMatch:function(t,r){if(!function(t,e){return"string"==typeof t&&!!Array.isArray(e)&&!!e.length&&!e.find((function(t){return"string"!=typeof t}))}(t,r))throw new Error("Bad arguments: First argument should be a string, second should be an array of strings");const n=[];let o=0;for(let s=0;s<r.length;s++){const i=r[s],f=e(t,i);n.push({target:i,rating:f}),f>n[o].rating&&(o=s)}return{ratings:n,bestMatch:n[o],bestMatchIndex:o}}}}},e={},function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}(138);var t,e}));
  71. //
  72. // mark current active item
  73. window.initJmeMenu=function () {
  74. const selectionClass= window.selectedTopMenuClass || "highlightedCl";
  75. const topmenu = document.querySelector('#topmenu');
  76. if (window.location.href.startsWith("http://localhost:1313")) {
  77. for (const a of topmenu.querySelectorAll("a")) {
  78. a.href = a.href.replace("https://jmonkeyengine.org", "http://localhost:1313");
  79. }
  80. }
  81. const likelyScore=[];
  82. for (const a of topmenu.querySelectorAll("a")) {
  83. const pageUrl=window.location.href.endsWith("/")?window.location.href.substring(0,window.location.href.length-1):window.location.href;
  84. const process = (linkUrls) => {
  85. if(!linkUrls)return;
  86. for(let linkUrl of linkUrls){
  87. if (linkUrl != null) {
  88. if (window.location.href.startsWith("http://localhost:1313")) {
  89. linkUrl = linkUrl.replace("https://jmonkeyengine.org", "http://localhost:1313");
  90. }
  91. if (linkUrl.endsWith("/")) {
  92. linkUrl = linkUrl.substring(0, linkUrl.length - 1);
  93. }
  94. const score = stringSimilarity.compareTwoStrings(linkUrl, pageUrl);
  95. likelyScore.push(
  96. {
  97. score: score,
  98. el: a.querySelector("button")
  99. }
  100. );
  101. }
  102. }
  103. }
  104. process([a.href]);
  105. process(a.getAttribute("alt-href")?a.getAttribute("alt-href").split(","):undefined);
  106. }
  107. likelyScore.sort((a, b) => b.score - a.score);
  108. likelyScore.forEach(el=>el.el.classList.remove(selectionClass));
  109. likelyScore[0].el.classList.add(selectionClass);
  110. };
  111. document.addEventListener('DOMContentLoaded', function(){
  112. window.initJmeMenu();
  113. });
  114. </script>