PageSourceSearch

https://www.stringkick.com/wp-content/themes/sk-genesis/js/sk-mobi…?ver=1774087833&sb-version=1774087833

js stringkick.com collected 2026-10-03 22:45:44 UTC 4,366 bytes, 138 lines download raw bytes

1(function () {
2  'use strict';
3
4  var menus = {
5    'all-access': [
6      { label: 'Games', url: '/guitar-games/' },
7      { label: 'Roadmap', url: '/course-roadmap/' },
8      { label: 'Courses', url: '/guitar-courses/' },
9      { label: 'Articles', url: '/articles/' },
10      { label: 'Coaching', url: '/support/' },
11      { label: 'My Account', url: '/my-account/' }
12    ],
13    'logged': [
14      { label: 'Games', url: '/guitar-games/' },
15      { label: 'Roadmap', url: '/course-roadmap/' },
16      { label: 'Courses', url: '/guitar-courses/' },
17      { label: 'Articles', url: '/articles/' },
18      { label: 'Questions', url: '/questions/' },
19      { label: 'Account', url: '/my-account/' },
20      { label: 'All Access', url: '/join/' }
21    ],
22    'logged-enroll': [
23      { label: 'My Account', url: '/my-account/' },
24      { label: 'Support', url: '/support/' }
25    ],
26    'public': [
27      { label: 'Games', url: '/guitar-games/' },
28      { label: 'Roadmap', url: '/course-roadmap/' },
29      { label: 'Courses', url: '/guitar-courses/' },
30      { label: 'Articles', url: '/articles/' },
31      { label: 'About', url: '/about/' },
32      { label: 'Log in', url: '/login/' },
33      { label: 'Join Now', url: '/join/' }
34    ],
35    'logged-out-enroll': [
36      { label: 'Log in', url: '/login/' },
37      { label: 'Contact', url: '/contact/' }
38    ]
39  };
40
41  function init() {
42    var container = document.getElementById('sk-mobile-menu');
43    if (!container) {
44      return;
45    }
46
47    var context = container.getAttribute('data-menu-context') || 'public';
48    var items = menus[context] || menus['public'];
49    var burger = container.querySelector('.sk-menu-burger');
50    var overlay = container.querySelector('.sk-menu-overlay');
51    var nav = container.querySelector('.sk-menu-overlay__nav');
52
53    var isOpen = false;
54    var currentPath = window.location.pathname;
55
56    // Render menu links
57    function renderLinks() {
58      var fragment = document.createDocumentFragment();
59      for (var i = 0; i < items.length; i++) {
60        var item = items[i];
61        var link = document.createElement('a');
62        link.href = item.url;
63        link.className = 'sk-menu-overlay__link';
64        link.textContent = item.label;
65
66        // Mark current page link as active
67        if (currentPath === item.url) {
68          link.className += ' sk-menu-overlay__link--active';
69        }
70
71        // CTA button style for join link
72        if (item.url === '/join/') {
73          link.className += ' sk-menu-overlay__link--cta';
74        }
75
76        fragment.appendChild(link);
77      }
78      nav.appendChild(fragment);
79    }
80
81    // Let link clicks navigate immediately — no close animation.
82    // The page load replaces the screen, so the close animation would
83    // just show the current page briefly before navigating away.
84    // Close animation is only for burger toggle and Escape key.
85
86    function openMenu() {
87      isOpen = true;
88      container.classList.add('sk-menu--open');
89      overlay.classList.add('sk-menu--open');
90      burger.setAttribute('aria-expanded', 'true');
91      overlay.setAttribute('aria-hidden', 'false');
92      document.documentElement.classList.add('sk-menu-noscroll');
93    }
94
95    function closeMenu() {
96      isOpen = false;
97      container.classList.remove('sk-menu--open');
98      overlay.classList.remove('sk-menu--open');
99      overlay.classList.add('sk-menu--closing');
100      burger.setAttribute('aria-expanded', 'false');
101      overlay.setAttribute('aria-hidden', 'true');
102      document.documentElement.classList.remove('sk-menu-noscroll');
103
104      overlay.addEventListener('animationend', function onEnd(e) {
105        if (e.target !== overlay) return;
106        overlay.removeEventListener('animationend', onEnd);
107        overlay.classList.remove('sk-menu--closing');
108      });
109    }
110
111    function toggleMenu() {
112      if (isOpen) {
113        closeMenu();
114      } else {
115        openMenu();
116      }
117    }
118
119    // Hamburger click handler
120    burger.addEventListener('click', toggleMenu);
121
122    // Close on Escape key
123    document.addEventListener('keydown', function (e) {
124      if (e.key === 'Escape' && isOpen) {
125        closeMenu();
126      }
127    });
128
129    // Render the links on load
130    renderLinks();
131  }
132
133  if (document.readyState === 'loading') {
134    document.addEventListener('DOMContentLoaded', init);
135  } else {
136    init();
137  }
138})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.