sgb13-navbar 2.0.0

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.
package/README.md ADDED
@@ -0,0 +1,181 @@
1
+
2
+ # Float Container Configuration Guide
3
+
4
+ This document explains how to easily configure the float navigation system without having to modify the core implementation files. It also covers how to manage the styling with the included CSS utilities.
5
+
6
+ ## Configuration Approach
7
+
8
+ The navigation system now uses a configuration-driven approach where all navigation items, links, and UI elements are defined in a single centralized configuration file.
9
+
10
+ ## Files Overview
11
+
12
+ * `navigation-config.js` - Contains all the configurable navigation elements
13
+ * `config.js` - Contains general system configuration settings
14
+ * `float-ui.js` - Implementation that reads from configuration
15
+ * `css-utils.js` - Utilities for managing the navbar CSS styles
16
+ * `main.js` - Entry point and initialization
17
+
18
+ ## How to Update Navigation Elements
19
+
20
+ ### 1. Updating Navigation Links
21
+
22
+ To update the navigation links (Game Tips, Download App, etc.), edit the `navLinks` array in `navigation-config.js`:
23
+
24
+ ```javascript
25
+ navLinks: [
26
+ {
27
+ href: '/new-url', // Change the URL
28
+ translationKey: 'gameTips', // Reference to translations.js
29
+ iconClass: 'fa-solid fa-gamepad' // FontAwesome icon class
30
+ },
31
+ // Add or remove items as needed
32
+ ]
33
+ ```
34
+
35
+ ### 2. Updating Grid Items
36
+
37
+ To update the grid items (Fortune Wheel, VIP Program, etc.), edit the `gridItems` array:
38
+
39
+ ```javascript
40
+ gridItems: [
41
+ {
42
+ href: 'https://example.com',
43
+ imgSrc: '/path/to/image.png',
44
+ text: 'Display Text',
45
+ translationKey: 'translationKey',
46
+ target: '_self'
47
+ },
48
+ // Add or remove items as needed
49
+ ]
50
+ ```
51
+
52
+ ### 3. Updating Dropdown Menus
53
+
54
+ To update dropdown menus (Follow Us, etc.), edit the `dropdownMenus` array:
55
+
56
+ ```javascript
57
+ dropdownMenus: [
58
+ {
59
+ translationKey: 'menuTitle',
60
+ iconClass: 'fa-solid fa-users',
61
+ subItems: [
62
+ {
63
+ href: 'https://example.com',
64
+ translationKey: 'subItemText',
65
+ iconClass: 'fa-brands fa-example',
66
+ target: '_blank'
67
+ },
68
+ // Add or remove sub-items as needed
69
+ ]
70
+ }
71
+ ]
72
+ ```
73
+
74
+ ### 4. Updating Logo and Partnership Logo
75
+
76
+ To update the logo or partnership logo:
77
+
78
+ ```javascript
79
+ logo: {
80
+ src: '/path/to/new-logo.png',
81
+ alt: 'Logo Alt Text'
82
+ },
83
+
84
+ partnershipLogo: {
85
+ href: 'https://partner-site.com',
86
+ imgSrc: '/path/to/partner-logo.png',
87
+ imgAlt: 'Partner Logo Alt Text'
88
+ }
89
+ ```
90
+
91
+ ## Programmatically Updating Configuration
92
+
93
+ You can also update the configuration programmatically using the exported function:
94
+
95
+ ```javascript
96
+ import { updateNavigationConfig } from './float-ui.js';
97
+
98
+ // Update specific parts of the navigation
99
+ updateNavigationConfig({
100
+ navLinks: [
101
+ // New set of navigation links
102
+ ],
103
+ logo: {
104
+ src: '/path/to/new-logo.png'
105
+ }
106
+ });
107
+ ```
108
+
109
+ ## Managing CSS Styles
110
+
111
+ The system includes built-in CSS management utilities that allow you to control the styling of the navbar.
112
+
113
+ ### Enabling/Disabling CSS Injection
114
+
115
+ In `config.js`, you can control whether the CSS is automatically injected:
116
+
117
+ ```javascript
118
+ features: {
119
+ enabled: true,
120
+ // ...
121
+ injectCSS: true // Set to false to disable CSS injection
122
+ }
123
+ ```
124
+
125
+ ### CSS Utility Functions
126
+
127
+ You can also manipulate the CSS programmatically:
128
+
129
+ ```javascript
130
+ import { injectNavbarCSS, removeNavbarCSS, toggleNavbarCSS, updateNavbarCSS } from './css-utils.js';
131
+
132
+ // Inject the default CSS
133
+ injectNavbarCSS();
134
+
135
+ // Remove the CSS
136
+ removeNavbarCSS();
137
+
138
+ // Toggle CSS based on a condition
139
+ toggleNavbarCSS(true); // Enable
140
+ toggleNavbarCSS(false); // Disable
141
+
142
+ // Update with custom CSS
143
+ updateNavbarCSS(`
144
+ /* Your custom CSS here */
145
+ .sidenav {
146
+ background-color: #333;
147
+ color: white;
148
+ }
149
+ `);
150
+ ```
151
+
152
+ ## Translation Keys
153
+
154
+ All text elements use translation keys that reference the translation system. To add or update translations:
155
+
156
+ 1. Add the translation key to `navigation-config.js`
157
+ 2. Make sure the corresponding keys exist in the `translations.js` file
158
+
159
+ ## Adding New Navigation Elements Dynamically
160
+
161
+ You can also add new navigation links or dropdown menus dynamically after initialization:
162
+
163
+ ```javascript
164
+ import { addNavLink, addDropdownMenu } from './float-ui.js';
165
+
166
+ // Add a new navigation link
167
+ addNavLink({
168
+ href: '/new-page',
169
+ translationKey: 'newPageName',
170
+ iconClass: 'fa-solid fa-star'
171
+ });
172
+
173
+ // Add a new dropdown menu
174
+ addDropdownMenu({
175
+ translationKey: 'newDropdown',
176
+ iconClass: 'fa-solid fa-list',
177
+ subItems: [
178
+ // Array of sub-items
179
+ ]
180
+ });
181
+ ```
@@ -0,0 +1 @@
1
+ !function(){"use strict";const n={enabled:!0,showLanguageSelector:!0,showPromotions:!0,injectCSS:!0},e={floatContainer:"navbar-container",sidebar:"mySidenav"},t={enabled:!1,logLevel:"info"},o={enableLogging:!1};function a(n,e="log"){if(!o.enableLogging)return;const t="[Float System]";switch(e){case"warn":console.warn(`${t} ${n}`);break;case"error":console.error(`${t} ${n}`);break;default:console.log(`${t} ${n}`)}}function i(){const n=document.getElementById("navbar-css");return!!n&&(n.parentNode.removeChild(n),a("Navbar CSS removed"),!0)}function r(e){return(void 0!==e?e:n.injectCSS)?(function(n){i();const e=document.createElement("style");e.id="navbar-css",e.type="text/css",e.textContent=n||"@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.1/css/all.min.css');\n.burger-button-wrapper {\n position: fixed;\n z-index: 2;\n top: 8px;\n left: 15px;\n}\n\n.openbtn {\n font-size: 20px;\n cursor: pointer;\n color: black;\n border: none;\n margin: 0;\n position: relative;\n}\n\n.burger-new-indicator {\n position: absolute;\n top: -5px;\n right: -55px;\n width: 30px;\n height: 30px;\n z-index: 3;\n pointer-events: none;\n animation: pulse 1.5s infinite;\n}\n\n@keyframes pulse {\n 0% { transform: scale(0.95); }\n 50% { transform: scale(1.05); }\n 100% { transform: scale(0.95); }\n}\n\n.sidebar-video-container {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 56.25%; /* 16:9 aspect ratio */\n margin-top: 10px;\n margin-bottom: 10px;\n overflow: hidden;\n border-radius: 8px;\n}\n\n.sidebar-video-container iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: none;\n}\n\n/* Action Buttons Styles */\n.action-buttons-container {\n display: flex;\n justify-content: space-between;\n width: 100%;\n gap: 0px;\n}\n\n.action-button {\n flex: 1;\n text-align: center;\n transition: transform 0.2s ease;\n padding-bottom: 10px !important;\n padding-top: 0px !important;\n}\n\n.action-button:hover {\n transform: scale(1.05);\n}\n\n.action-button-img {\n width: 100%;\n max-height: 50px;\n object-fit: contain;\n border-radius: 8px;\n}\n\n.icon-style {\n color: #fcd34d;\n font-weight: bold;\n position: relative;\n text-shadow: 1px 1px 0 #e0aa00, 2px 2px 0 #c68600, 3px 3px 2px rgba(0, 0, 0, 0.4);\n background: linear-gradient(to top, #fcd34d 60%, #fff59d 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n.burger-menu-button {\n background-color: #f7de4d;\n border: none;\n border-radius: 8px;\n font-size: 15px;\n height: 30px;\n width: 30px;\n color: #e8567d;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\n\n\n.dropdown-btn.selected-dropdown {\n border: 4px solid #eae139;\n border-radius: 8px;\n}\n.dropdown-btn {\n padding: 0 4px;\n margin: 2px 0;\n transition: all 0.2s ease-in-out; /* Smooth transition for border and background */\n}\n.dropdown-btn.selected-dropdown + .dropdown-container {\n display: block;\n}\n\n.dropdown-btn.selected-dropdown + .dropdown-container {\n margin-left: 10px;\n padding-left: 15px;\n}\n\n.nav-icon-img-only {\n width: 150px;\n margin-left: 120px;\n}\n\n.nav-text {\n font-weight: 600;\n}\n\n.nav-icon-img {\n width: 40px;\n height: 40px;\n object-fit: contain;\n display: block;\n}\n\n.sidenav .icon {\n font-size: 25px;\n padding: 0px 20px;\n width: 73px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.dropdown-container .icon {\n padding-left: 40px;\n}\n\n.burger-menu-container {\n height: 30px;\n width: 30px;\n}\n\n.burger-menu-icon {\n width: 25px;\n height: 100%;\n display: block;\n object-fit: contain;\n}\n\n.sidebar-close {\n background-color: transparent;\n border: none;\n border-radius: 8px;\n font-size: 30px;\n height: 30px;\n width: 30px;\n color: #000;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\n\n#header .link i {\n display: none;\n line-height: 32px;\n font-size: 28px;\n}\n#header .link.currency {\n right: 0px;\n}\n\n.sidebar-grid-nav {\n width: 100%;\n padding: 10px 5px;\n margin: 5px 0;\n}\n\n.sidebar-grid-item {\n border-radius: 8px;\n padding: 8px 4px;\n transition: all 0.3s ease;\n height: 30px;\n background: linear-gradient(to top, #fcd34d, #fff59d);\n box-shadow: 0 4px 0 #c68600, 0 6px 6px rgba(0, 0, 0, 0.3);\n}\n\n.sidebar-grid-item:hover {\n transform: translateY(-2px);\n}\n\n.sidebar-grid-img {\n width: 40px;\n height: 40px;\n object-fit: contain;\n}\n\n.sidebar-grid-text {\n color: #000;\n font-size: 8px !important;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n white-space: nowrap;\n}\n\n/* For smaller screens */\n@media (max-width: 320px) {\n .sidebar-grid-img {\n width: 32px;\n height: 32px;\n }\n}\n\n.fa-facebook {\n color: #1877F2;\n}\n\n.fa-telegram {\n color: #0088cc;\n}\n\n.fa-whatsapp {\n color: #25D366; \n}\n\n.fa-instagram {\n color: #E4405F;\n}\n\n.fa-twitter {\n color: #1DA1F2;\n}\n\n.dropdown-container {\n display: none;\n}\n\n.dropdown-btn.active {\n background-color: #2fee63;\n color: black;\n border-radius: 8px;\n}\n\n.dropdown-visible {\n display: block;\n}\n\n.dropdown-btn .nav-text {\n margin-right: 10px;\n}\n\n.sidenav {\n height: 100%;\n width: 250px;\n position: fixed;\n z-index: 3;\n top: 0;\n left: -251px;\n background-image: url(https://spongebob13.bet/media/9d1de25ca9a764c6b7d01.png);\n background-size: cover;\n overflow-x: hidden;\n transition: 0.5s;\n padding-top: 20px;\n padding-bottom: 100px;\n border-right: 2px solid #111d3f;\n box-sizing: border-box;\n}\n\n\n\n.open {\n right: calc(100% - 250px);\n}\n\n.dropdown-btn {\n border: none;\n background: none;\n width: 100%;\n cursor: pointer;\n outline: none;\n}\n\n.sidenav a, .dropdown-btn {\n text-decoration: none;\n color: #fff;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 15px 0px;\n text-transform: none;\n font-size: 15px;\n color: #ff4f81;\n position: relative;\n text-shadow: 1px 1px 0 #e03a6e, 1px 1px 0 #c92e5d, 1px 1px 0 #b81f4b;\n background: linear-gradient(145deg, #ff6a98, #ff3c77);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-family: inherit;\n}\n\n.dropdown-btn {\n height: 60px;\n}\n\n.mybox {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.sidenav .closebtn {\n position: absolute;\n top: 3px;\n right: 10px;\n font-size: 20px;\n margin-left: 50px;\n}\n\n.openbtn {\n font-size: 20px;\n cursor: pointer;\n color: black;\n border: none;\n margin: 5px;\n margin-left: 15px;\n position: fixed;\n z-index: 2;\n top: 8px;\n}\n\n.menu-list-icon {\n width: 24px;\n height: 24px;\n}\n\n.menu-list-icon-partner {\n width: 70%;\n}\n\n.dropdown-container {\n display: none;\n padding-left: 8px;\n}\n\n.dropdown-container a {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 10px;\n padding: 5px;\n margin-top: 5px;\n}\n.fa-caret-down {\n float: right;\n padding-right: 8px;\n}\n\n.unused {\n background-color: #dad6d6 !important;\n margin-top: 10px;\n padding-right: 10px;\n color: #4d4d4d !important;\n border-radius: 8px;\n}\n\n.logo {\n height: 55px;\n margin: 20px auto;\n margin-top: 30px;\n}\n\n.hr-style {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n width: 100%;\n height: 2px;\n background-color: #000;\n display: block;\n}\n\n.hr-gray-style {\n background-image: linear-gradient(to right, #eed792, #f9de8d, #eed792);\n}\n\n#marquee {\n z-index: 1 !important;\n padding: 4px !important;\n}\n#header {\n z-index: 1 !important;\n}\n@media screen and (max-height: 450px) {\n .sidenav {\n padding-top: 15px;\n }\n .sidenav a {\n font-size: 18px;\n }\n}\n\n.special-menu {\n margin-top: 10px;\n}\n\n.special-menu a {\n font-size: 10px;\n padding: 5px;\n margin: 2px;\n}\n\n.special-menu a .logo {\n height: 30px;\n /* animation: mymove 0.8s infinite; */\n}\n\n.download-app {\n position: fixed;\n bottom: 0;\n font-size: 11px !important;\n font-weight: 700 !important;\n padding: 10px;\n width: 250px;\n box-sizing: border-box;\n}\n\n.download-app-image {\n width: 90%;\n}\n\n.sidebar-backdrop {\n position: fixed;\n inset: 0;\n z-index: 3;\n}\n\n\n.fortune-wheel-image {\n width: 100%;\n}\n\n.free-angpao {\n width: 90px;\n}\n\n.active {\n background-color: #ea3323;\n color: black;\n border-radius: 8px;\n}\n\n.partnership-logo-container {\n text-align: center;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.partnership-logo {\n max-height: 55px;\n display: inline-block;\n}\n",document.head.appendChild(e),a("Navbar CSS injected successfully")}(),!0):(i(),!1)}window.closePopup=function(n){const e=document.getElementById("checkin-popup-overlay");e&&(n&&n.target===e?e.style.display="none":n||(e.style.display="none"))};const s={EN:{sidebar:{gameTips:"Game Tips",language:"Language",promotion:"Promotion",vip:"VIP",followUs:"Follow Us",telegram:"Telegram",backupLink:"Backup Link",moreLink:"More Link",downloadApp:"Download App",telegram:"Telegram",facebook:"Facebook",whatsapp:"WhatsApp",twitter:"Twitter",instagram:"Instagram",newPartnership:"New Partnership",ausPartnership:"AUS Partnership",partnership:"Partnership",goldenEgg:"Golden Egg",fortuneWheel:"Fortune Wheel",vipProgram:"VIP Program",dailyCheckin:"Daily Check In"}},ZH:{sidebar:{gameTips:"游戏攻略",language:"语言",promotion:"优惠活动",vip:"贵宾专区",followUs:"关注我们",telegram:"电报",backupLink:"备用链接",moreLink:"更多链接",downloadApp:"下载应用",telegram:"Telegram",facebook:"Facebook",whatsapp:"WhatsApp",twitter:"Twitter",instagram:"Instagram",newPartnership:"New Partnership",ausPartnership:"AUS 澳洲联盟",partnership:"合作伙伴",goldenEgg:"黄金彩蛋",fortuneWheel:"幸运转盘",vipProgram:"贵宾计划",dailyCheckin:"每日签到"}}};function d(n){const e=(localStorage.getItem("LANGUAGE")||"EN").replace(/['"]/g,"");return s[e]?.[n]||s.EN[n]}function c(n,e){return d(n)[e]||s.EN[n][e]}let l={};const p={new:["doraemon13","mickey13"],regular:["gucci9","dior13","lvspin"]},m=n=>p[n].map((n=>{const e=l[n];return e?{href:e.href,translationKey:"",icon:{imgSrc:e.imgSrc,className:"nav-icon-img-only"},target:"_blank"}:null})).filter((n=>null!==n)),g={logo:{src:"https://spongebob13.net/media/4732e1a117a7690841006.png",alt:"Logo"},burgerMenu:{showNewIndicator:!0,newIndicatorUrl:"https://static.gwvkyk.com/media/4839064235e7686882c04.png",imgSrc:"",imgAlt:"Menu"},video:{url:"https://streamable.com/e/u4ann5?autoplay=1"},actionButtons:{deposit:{imgSrc:"https://spongebob13.bet/media/490dca4b88a762d1ee296.png",imgAlt:"Deposit",href:"/deposit",translationKey:"deposit"},withdraw:{imgSrc:"https://spongebob13.bet/media/1260e05b88a76b97fe97e.png",imgAlt:"Withdraw",href:"/withdraw",translationKey:"withdraw"}},gridItems:[{onClick:"navigateToPromoPage(2)",imgSrc:"https://static.gwvkyk.com/media/23369e5273f769079daf2.png",imgAlt:"Fortune Wheel",text:"Fortune Wheel",translationKey:"fortuneWheel"},{onClick:"navigateToPromoPage(3)",imgSrc:"https://static.gwvkyk.com/media/5808d29273f760003ec4b.jpg",imgAlt:"VIP Program",text:"VIP Program",translationKey:"vipProgram"},{onClick:"navigateToPromoPage(4)",imgSrc:"https://static.gwvkyk.com/media/1dc89bd273f7633f39208.png",imgAlt:"Check In Bonus",text:"Daily Check In",translationKey:"dailyCheckin"},{onClick:"navigateToPromoPage(5)",imgSrc:"https://static.gwvkyk.com/media/601ca40373f76c23655d4.png",imgAlt:"Smash The Golden Egg",text:"Smash The Golden Egg",translationKey:"goldenEgg",target:"_self"}],navLinks:[{href:"/leaderboard",translationKey:"gameTips",iconClass:"fa-solid icon-style fa-gamepad"},{href:"https://www.spongebob13auh5api.live/uploads/appwrap.html",translationKey:"downloadApp",iconClass:"fa-solid icon-style fa-download"},{href:"javascript:void(0)",translationKey:"language",iconClass:"fa-solid icon-style fa-language",id:"changelanguage",className:"link language"}],dropdownMenus:[{translationKey:"followUs",iconClass:"fa-solid icon-style fa-users",subItems:[{href:"https://www.facebook.com/Spongebob13au",translationKey:"facebook",iconClass:"fa-brands fa-facebook",target:"_blank"},{href:"https://t.me/Spongebob13Channel",translationKey:"telegram",iconClass:"fa-brands fa-telegram",target:"_blank"},{href:"https://wa.me/60142400931",translationKey:"whatsapp",iconClass:"fa-brands fa-whatsapp",target:"_blank"}]},{translationKey:"newPartnership",iconClass:"fa-solid icon-style fa-web-awesome",getSubItems:()=>m("new")},{translationKey:"partnership",iconClass:"fa-solid icon-style fa-handshake",getSubItems:()=>m("regular")}],gridConfig:{columns:2,containerClass:"sidebar-grid-nav",itemClass:"sidebar-grid-item",imgClass:"sidebar-grid-img"},async loadPartnerships(){try{const n=await fetch("https://gist.githubusercontent.com/jessy8768/4ad263e177046edada29ccd4386318c8/raw/aus",{headers:{Accept:"application/json"},cache:"no-store"});if(!n.ok)throw new Error(`HTTP error! Status: ${n.status}`);const e=await n.json();return l=e,window.refreshFloatNavigation&&window.refreshFloatNavigation(),!0}catch(n){return console.error("Error loading partnerships:",n),l={doraemon13:{name:"Doraemon13",href:"https://doraemon13.com/RFAUSPARSHIP",imgSrc:"https://static.gwvkyk.com/media/a02d13e272d76ad1c998a.png"},mickey13:{name:"Mickey13",href:"https://micky13.net/RFMENUBARMICKY",imgSrc:"https://static.gwvkyk.com/media/f3e2fbe272d7628b1b703.png"},gucci9:{name:"Gucci",href:"https://gucci9.vip/RFMENUGUCCI",imgSrc:"https://static.gwvkyk.com/media/49dd379572d769e78b8d2.png"},dior13:{name:"Dior13",href:"https://dior13.net/RFMENUBARDIOR",imgSrc:"https://static.gwvkyk.com/media/9ff84d9572d761de03a3b.png"},lvspin:{name:"Lvspin",href:"https://lvspin13.net/RFMENULV",imgSrc:"https://static.gwvkyk.com/media/108093a572d76730d34fa.png"},me99:{name:"Me99",href:"https://me99aud.com/RFMENUME",imgSrc:"https://static.gwvkyk.com/media/a04f213772d76f91afac9.png"},rainbow13:{name:"Rainbow13",href:"https://rainbow13.com/RFMENURAINBOW",imgSrc:"https://static.gwvkyk.com/media/5880183772d7698cb7c99.png"},pokemon13:{name:"Pokemon13",href:"https://pokemon13.com/RFMENUBAR",imgSrc:"https://static.gwvkyk.com/media/c1503f3772d769e3ba3e3.png"},lotso13:{name:"Lotso13",href:"https://lotso13.net/RFMENUBARLOTSO",imgSrc:"https://static.gwvkyk.com/media/8896a74772d7695e514cd.png"},mrbean9:{name:"Mrbean9",href:"https://mrbean9.com/RFMENUMR9",imgSrc:"https://static.gwvkyk.com/media/41b88c4772d7652b37ca3.png"},bigpay77:{name:"Bigpay77",href:"https://bigpay77.net/RFMENUB7",imgSrc:"https://static.gwvkyk.com/media/13e1975772d76cec03cef.png"},avengers9:{name:"Avengers",href:"https://avengers9.net/RFMENUAV9",imgSrc:"https://static.gwvkyk.com/media/cc37859772d76977fd400.png"}},window.refreshFloatNavigation&&window.refreshFloatNavigation(),!1}},get partnershipRepository(){return l},selectedPartnerships:p};function u(n){const{href:e,translationKey:t,defaultText:o,iconClass:a,icon:i,id:r,className:s,target:d}=n,l=document.createElement("a");l.href=e||"javascript:void(0)",d&&(l.target=d),r&&(l.id=r),s&&(l.className=s),t&&(l.dataset.translationKey=t);const p=document.createElement("div");if(p.className="icon",i&&i.imgSrc){const n=document.createElement("img");n.src=i.imgSrc,n.alt=i.imgAlt||"",n.className=i.className||"nav-icon-img",p.appendChild(n)}else if(a){const n=document.createElement("i");n.className=a,p.appendChild(n)}const m=document.createElement("div"),g=t?c("sidebar",t):o||"";return m.textContent=g,m.className="nav-text",l.appendChild(p),l.appendChild(m),l}function h(n){if(!n)return a("Float container not found","error"),!1;const e=document.createElement("div");e.className="sidenav",e.id="mySidenav",e.style.left="-251px";const t=document.createElement("div");t.className="mybox";const o=document.createElement("img");o.className="logo",o.src=g.logo.src,o.alt=g.logo.alt||"Logo",t.appendChild(o);const i=document.createElement("div");i.className="hr-style",t.appendChild(i);const r=document.createElement("a");r.href="javascript:void(0)",r.className="closebtn",r.onclick=function(){window.closeNav()};const s=document.createElement("button");s.className="sidebar-close";const d=document.createElement("i");if(d.className="fa-solid fa-xmark",s.appendChild(d),r.appendChild(s),t.appendChild(r),g.video&&g.video.url){const n=document.createElement("div");n.style.position="relative",n.style.width="100%",n.style.height="0px",n.style.paddingBottom="56.250%",n.style.marginTop="10px",n.style.marginBottom="10px";const e=document.createElement("iframe");e.src=g.video.url,e.width="100%",e.height="100%",e.style.border="none",e.style.position="absolute",e.style.left="0px",e.style.top="0px",e.style.overflow="hidden",e.allowFullscreen=!0,e.setAttribute("muted",""),e.allow="fullscreen;autoplay;muted",n.appendChild(e),t.appendChild(n)}const l=function(n,e={}){const{columns:t=2,containerClass:o="nav-grid-container",itemClass:a="nav-grid-item",imgClass:i="nav-grid-img",textClass:r="sidebar-grid-text"}=e,s=document.createElement("div");return s.className=o,s.style.display="grid",s.style.gridTemplateColumns=`repeat(${t}, 1fr)`,s.style.gap="10px",s.style.padding="10px 0",n.forEach((n=>{const e=void 0!==n.onClick,t=document.createElement("div");if(e?(t.style.cursor="pointer","function"==typeof n.onClick?t.onclick=n.onClick:"string"==typeof n.onClick&&t.setAttribute("onclick",n.onClick)):n.href&&(t.style.cursor="pointer",t.onclick=function(){"_blank"===n.target?window.open(n.href,"_blank"):window.location.href=n.href}),t.className=a,t.style.textDecoration="none",t.style.textAlign="center",t.style.display="flex",t.style.alignItems="center",t.style.justifyContent="center",n.id&&(t.id=n.id),n.imgSrc){const e=document.createElement("img");e.src=n.imgSrc,e.alt=n.imgAlt||"",e.className=i,e.style.width=n.imgWidth||"30px",e.style.height=n.imgHeight||"auto",e.style.marginBottom="5px",t.appendChild(e)}else if(n.iconClass){const e=document.createElement("div");e.className="icon";const o=document.createElement("i");o.className=n.iconClass,o.style.fontSize=n.iconSize||"24px",o.style.marginBottom="5px",e.appendChild(o),t.appendChild(e)}if(n.text){const e=document.createElement("span");e.textContent=n.text,e.className=r,e.style.fontSize=n.fontSize||"12px",n.translationKey&&(e.dataset.translationKey=n.translationKey,e.textContent=c("sidebar",n.translationKey)||n.text),t.appendChild(e)}s.appendChild(t)})),s}(g.gridItems,g.gridConfig);if(t.appendChild(l),g.actionButtons){const n=function(n){const e=document.createElement("div");if(e.className="action-buttons-container",n.deposit){const t=document.createElement("a");t.href="javascript:void(0)",t.className="action-button deposit-button",t.onclick=function(){try{const e=localStorage.getItem("USER"),t=e?JSON.parse(e):null;t&&t.username?window.location.href=n.deposit.href:window.location.href="/login"}catch(n){window.location.href="/login"}};const o=document.createElement("img");o.src=n.deposit.imgSrc,o.alt=n.deposit.imgAlt||"Deposit",o.className="action-button-img",n.deposit.translationKey&&(t.dataset.translationKey=n.deposit.translationKey),t.appendChild(o),e.appendChild(t)}if(n.withdraw){const t=document.createElement("a");t.href="javascript:void(0)",t.className="action-button withdraw-button",t.onclick=function(){try{const e=localStorage.getItem("USER"),t=e?JSON.parse(e):null;t&&t.username?window.location.href=n.withdraw.href:window.location.href="/login"}catch(n){window.location.href="/login"}};const o=document.createElement("img");o.src=n.withdraw.imgSrc,o.alt=n.withdraw.imgAlt||"Withdraw",o.className="action-button-img",n.withdraw.translationKey&&(t.dataset.translationKey=n.withdraw.translationKey),t.appendChild(o),e.appendChild(t)}return e}(g.actionButtons);t.appendChild(n)}var p;return g.navLinks.forEach(((n,e)=>{t.appendChild(u(n))})),g.dropdownMenus.forEach((n=>{const e=function(n){const{translationKey:e,iconClass:t,icon:o,subItems:i=[],getSubItems:r}=n,s=document.createDocumentFragment(),d=document.createElement("button");d.className="dropdown-btn",e&&(d.dataset.translationKey=e);const l=document.createElement("div");if(l.className="icon",o&&o.imgSrc){const n=document.createElement("img");n.src=o.imgSrc,n.alt=o.imgAlt||"",n.className=o.className||"nav-icon-img",l.appendChild(n)}else if(t){const n=document.createElement("i");n.className=t,l.appendChild(n)}const p=document.createElement("div"),m=e?c("sidebar",e):n.defaultText||"";p.textContent=m,p.className="nav-text";const g=document.createElement("i");g.className="fa-solid fa-angle-down",d.appendChild(l),d.appendChild(p),d.appendChild(g);const h=document.createElement("div");return h.className="dropdown-container",(r?r():i).forEach((n=>{if("custom"===n.type&&n.html){const e=document.createElement("div");e.className="dropdown-item-container","string"==typeof n.html?e.innerHTML=n.html:n.html instanceof HTMLElement&&e.appendChild(n.html),h.appendChild(e)}else if("raw"===n.type&&n.element)h.appendChild(n.element);else{const e=u(n);h.appendChild(e)}})),d.addEventListener("click",(function(){const n=this.classList.contains("active");document.querySelectorAll(".dropdown-btn").forEach((n=>{n.classList.remove("active","selected-dropdown");const e=n.nextElementSibling;e&&e.classList.contains("dropdown-container")&&e.classList.remove("dropdown-visible")})),n||(this.classList.add("active","selected-dropdown"),h.classList.add("dropdown-visible")),a("Dropdown toggled using improved class approach")})),s.appendChild(d),s.appendChild(h),s}(n);t.appendChild(e)})),e.appendChild(t),n.appendChild(e),p=f,window.addEventListener("storage",(n=>{"LANGUAGE"!==n.key&&"selectedLanguage"!==n.key||"function"==typeof p&&p()})),document.addEventListener("languageChange",(()=>{"function"==typeof p&&p()})),a("Sidebar created successfully"),!0}function f(){a("Updating sidebar translations");document.querySelectorAll("[data-translation-key]").forEach((n=>{const e=n.dataset.translationKey;if("BUTTON"===n.tagName){const t=n.querySelector(".nav-text");t&&e&&(t.textContent=c("sidebar",e))}else if("SPAN"===n.tagName)n.textContent=c("sidebar",e);else{const t=n.querySelector(".nav-text");t&&e&&(t.textContent=c("sidebar",e))}}))}function b(){const n=document.createElement("div");n.className="burger-button-wrapper";const e=document.createElement("span");e.className="openbtn",e.onclick=function(){window.openNav()};const t=document.createElement("div");t.className="burger-menu-container",t.role="button",t.tabIndex=0;const o=g.burgerMenu||{};if(o.imgSrc){const n=document.createElement("img");n.src=o.imgSrc,n.alt=o.imgAlt||"Menu",n.className=o.className||"burger-menu-icon",t.appendChild(n)}else{const n=document.createElement("div");n.className="burger-menu-button";const e=document.createElement("i");e.className="fa-solid fa-bars",n.appendChild(e),t.appendChild(n)}if(e.appendChild(t),n.appendChild(e),o.showNewIndicator&&o.newIndicatorUrl){const e=document.createElement("img");e.src=o.newIndicatorUrl,e.alt="New",e.className="burger-new-indicator",n.appendChild(e)}return n}function w(){const n=document.getElementById("navbar-container");return n?(n.innerHTML="",h(n),n.appendChild(b()),a("UI refreshed with updated configuration"),!0):(a("Float container not found for refreshing UI","error"),!1)}function x(){window.openNav=function(){const n=document.getElementById("mySidenav"),e=document.querySelector(".sidebar-container")||document.getElementById("floatcontainer");if(!n||!e)return void a("Navigation elements not found","error");const t=document.createElement("div");t.classList.add("sidebar-backdrop"),t.addEventListener("click",window.closeNav),e.prepend(t),n.style.left="0",a("Sidebar opened")},window.closeNav=function(){const n=document.getElementById("mySidenav"),e=document.querySelector(".sidebar-backdrop");n&&(n.style.left="-251px"),e&&e.remove(),a("Sidebar closed")},window.toggleLanguagePopup=function(){const n=document.querySelector("#changelanguage");n&&(window.closeNav(),n.click(),a("Language popup toggled"),setTimeout((()=>{const n=new Event("languageChange");document.dispatchEvent(n)}),500))},a("Navigation functions initialized"),setTimeout((()=>{const n=document.getElementsByClassName("dropdown-btn");for(let e=0;e<n.length;e++)n[e].addEventListener("click",(function(){this.classList.toggle("active");const n=this.nextElementSibling;"block"===n.style.display?n.style.display="none":n.style.display="block",a(`Dropdown ${e+1} toggled`)}));a("Dropdowns configured")}),100)}function y(){var n;n=t.enabled,o.enableLogging=n,a("Logging "+(n?"enabled":"disabled")),r(!0);const i=document.getElementById(e.floatContainer);return i?!!h(i)&&(i.appendChild(b()),x(),a("Float container initialized successfully"),!0):(a("Float container element not found","error"),!1)}g.loadPartnerships(),window.floatNavConfig=g,window.updateFloatNavConfig=function(n){try{return n.logo&&Object.assign(g.logo,n.logo),n.gridItems&&(g.gridItems=n.gridItems),n.navLinks&&(g.navLinks=n.navLinks),n.dropdownMenus&&(g.dropdownMenus=n.dropdownMenus),n.partnershipLogo&&Object.assign(g.partnershipLogo,n.partnershipLogo),n.gridConfig&&Object.assign(g.gridConfig,n.gridConfig),w(),a("Navigation configuration updated successfully"),!0}catch(n){return a(`Error updating navigation config: ${n.message}`,"error"),!1}},window.refreshFloatNavigation=function(){return w()},window.navigateToPromoPage=function(n){const e=document.getElementById("promoUserID").value;if(""===e.trim())return void alert("Please login first!");let t,o,a=document.getElementById("testUserID");a?(t=document.querySelector('input[id="testUserID"]').getAttribute("ref"),o=a.value):(t=document.querySelector('input[id="promoUserID"]').getAttribute("ref"),o=e);const i=btoa(t+"="+o),r=document.createElement("form");r.setAttribute("method","POST"),r.setAttribute("action",`https://spongebob13.gme1.co/p${n}.aspx`);const s=document.createElement("input");s.setAttribute("type","hidden"),s.setAttribute("name","userData"),s.setAttribute("value",i),r.appendChild(s),document.body.appendChild(r),r.submit()},window.floatContainerInitialized=!1,document.addEventListener("DOMContentLoaded",(function(){(function(){if(window.floatContainerInitialized)return!0;if(document.getElementById(e.floatContainer)){window.floatContainerInitialized=!0;const n=y();return window.floatObserverInstance&&window.floatObserverInstance.disconnect(),n}return!1})()||(!function(){const n=new MutationObserver(((n,t)=>{window.floatContainerInitialized||document.getElementById(e.floatContainer)&&(window.floatContainerInitialized=!0,y(),t.disconnect(),a("Float container initialized via observer"))}));window.floatObserverInstance&&window.floatObserverInstance.disconnect(),function e(){document.body?(n.observe(document.body,{childList:!0,subtree:!0}),window.floatObserverInstance=n,a("Observer started watching for DOM changes")):setTimeout(e,50)}()}(),a("Observer setup as initialization fallback"))}))}();
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "sgb13-navbar",
3
+ "version": "2.0.0",
4
+ "main": "dist/index.min.js",
5
+ "files": [
6
+ "dist/index.min.js"
7
+ ],
8
+ "scripts": {
9
+ "build": "rollup -c",
10
+ "prepublishOnly": "npm run build"
11
+ },
12
+ "author": "",
13
+ "license": "MIT",
14
+ "devDependencies": {
15
+ "@rollup/plugin-node-resolve": "^13.3.0",
16
+ "rollup": "^2.79.1",
17
+ "rollup-plugin-terser": "^7.0.2"
18
+ }
19
+ }