/** * Centralized Mapbox Configuration * * This configuration ensures all globe visualizations use a valid token * and provides helpful validation and debugging. */ export const MAPBOX_CONFIG = { // Primary working token (from globe_14) accessToken: 'pk.eyJ1IjoibGludXhpc2Nvb2wiLCJhIjoiY2w3ajM1MnliMDV4NDNvb2J5c3V5dzRxZyJ9.wJukH5hVSiO74GM_VSJR3Q', /** * Validate that the token is properly configured * @returns {boolean} True if token is valid, false otherwise */ validateToken() { if (!this.accessToken) { console.error('❌ MAPBOX TOKEN ERROR: No token configured!'); console.error('Please set MAPBOX_CONFIG.accessToken in mapbox-config.js'); return false; } // Check for placeholder tokens const placeholders = ['yourtokenstring', 'YOUR_TOKEN', 'yourtoken', 'yourusername']; const hasPlaceholder = placeholders.some(p => this.accessToken.includes(p)); if (hasPlaceholder) { console.error('❌ MAPBOX TOKEN ERROR: Invalid placeholder token detected!'); console.error('Current token:', this.accessToken); console.error('This token will not work. Please use a real Mapbox access token.'); console.error('Get a free token at: https://account.mapbox.com/'); return false; } // Check token format (should start with pk.) if (!this.accessToken.startsWith('pk.')) { console.warn('⚠️ MAPBOX TOKEN WARNING: Token does not start with "pk."'); console.warn('This may not be a valid public token.'); } console.log('✅ Mapbox token validated successfully'); return true; }, /** * Apply token to Mapbox GL JS * @returns {boolean} True if successful, false if validation failed */ applyToken() { if (!this.validateToken()) { // Show user-friendly error in the page this.showTokenError(); return false; } if (typeof mapboxgl !== 'undefined') { mapboxgl.accessToken = this.accessToken; console.log('✅ Mapbox token applied to mapboxgl'); return true; } else { console.error('❌ ERROR: mapboxgl library not loaded!'); console.error('Make sure Mapbox GL JS script is loaded before this configuration.'); return false; } }, /** * Show a user-friendly error message on the page */ showTokenError() { const errorDiv = document.createElement('div'); errorDiv.id = 'mapbox-token-error'; errorDiv.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(220, 38, 38, 0.95); color: white; padding: 30px 40px; border-radius: 12px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5); max-width: 500px; z-index: 10000; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; `; errorDiv.innerHTML = `
This visualization requires a valid Mapbox access token to display the globe.
To fix this:
1. Visit account.mapbox.com
2. Create a free account (50,000 map loads/month)
3. Copy your access token
4. Update shared/mapbox-config.js