{"_id":"@deciosfernandes/mapbox-v3-gl-style-switcher","_rev":"3-fbf97f26e868b4d446b7205334b70458","name":"@deciosfernandes/mapbox-v3-gl-style-switcher","dist-tags":{"latest":"1.2.1"},"versions":{"1.1.0":{"name":"@deciosfernandes/mapbox-v3-gl-style-switcher","version":"1.1.0","keywords":["mapbox","mapbox-gl-js","style-switcher","typescript","map-control","style-control","dropdown","ui-component"],"author":{"name":"Decio Fernandes"},"license":"GPL-3.0","_id":"@deciosfernandes/mapbox-v3-gl-style-switcher@1.1.0","maintainers":[{"name":"deciosfernandes","email":"gatofki@gmail.com"}],"homepage":"https://github.com/deciosfernandes/style-switcher#readme","bugs":{"url":"https://github.com/deciosfernandes/style-switcher/issues"},"dist":{"shasum":"d00137ee32f70303ba87b29055beb720c1741a5d","tarball":"https://registry.npmjs.org/@deciosfernandes/mapbox-v3-gl-style-switcher/-/mapbox-v3-gl-style-switcher-1.1.0.tgz","fileCount":8,"integrity":"sha512-HV8OFfpBKMtUttL5/1vbOVVEZAcXpFo3SOEwRkldfVPmU/CQ7QSNiSxmvyaAf1iwiD2IL0TMZAtHlX/VscjetQ==","signatures":[{"sig":"MEUCICzxdEXq1ZaNjpcaeDKwv3xueyXl+V0VeHteCosma8qzAiEA3vP0NvkrosL2cXYKgpAifz2URMVH2Pr4FyE6ZQ+lV50=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70360},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e4a298957c1ff41c54b365df7e0e308c60efd023","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deciosfernandes","email":"gatofki@gmail.com"},"repository":{"url":"git+https://github.com/deciosfernandes/style-switcher.git","type":"git"},"_npmVersion":"11.6.2","description":"A modern, fully-typed TypeScript control for Mapbox GL JS with dropdown-style interface for switching between map styles","directories":{},"_nodeVersion":"24.11.1","dependencies":{"mapbox-gl":"^3.14.0"},"_hasShrinkwrap":false,"devDependencies":{"minimist":"^1.2.8","typescript":"^5.9.3","@types/mapbox-gl":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/mapbox-v3-gl-style-switcher_1.1.0_1763399339766_0.5315614273557772","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@deciosfernandes/mapbox-v3-gl-style-switcher","version":"1.2.0","keywords":["mapbox","mapbox-gl-js","style-switcher","typescript","map-control","style-control","dropdown","ui-component"],"author":{"name":"Decio Fernandes"},"license":"GPL-3.0","_id":"@deciosfernandes/mapbox-v3-gl-style-switcher@1.2.0","maintainers":[{"name":"deciosfernandes","email":"gatofki@gmail.com"}],"homepage":"https://github.com/deciosfernandes/style-switcher#readme","bugs":{"url":"https://github.com/deciosfernandes/style-switcher/issues"},"dist":{"shasum":"aba1b37c4a313b19116d715965c2efd636e8da21","tarball":"https://registry.npmjs.org/@deciosfernandes/mapbox-v3-gl-style-switcher/-/mapbox-v3-gl-style-switcher-1.2.0.tgz","fileCount":8,"integrity":"sha512-3TD4Upyo34tdJ07HCbRi6lOpdC8Be15NfWBVpkTHakZ20mFShNaW1NFf1nJauedobN0yTClAdVrxlDqoq5gerw==","signatures":[{"sig":"MEYCIQCeBnDRskWqs0To6rjAig/us2LkcwmtXj7uL0OEmtVoDQIhAJMH58ZnsptlHoWGcDYvdwARQzsoBMfSQuJsjkiKh4i/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69812},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"551a77af232695a7cc69da083c3aee4c01d3b68b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deciosfernandes","email":"gatofki@gmail.com"},"repository":{"url":"git+https://github.com/deciosfernandes/style-switcher.git","type":"git"},"_npmVersion":"11.10.1","description":"A modern, fully-typed TypeScript control for Mapbox GL JS with dropdown-style interface for switching between map styles","directories":{},"_nodeVersion":"24.13.1","dependencies":{"mapbox-gl":"^3.14.0"},"_hasShrinkwrap":false,"devDependencies":{"minimist":"^1.2.8","typescript":"^5.9.3","@types/mapbox-gl":"^3.4.1"},"_npmOperationalInternal":{"tmp":"tmp/mapbox-v3-gl-style-switcher_1.2.0_1772052268552_0.35136731229006557","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@deciosfernandes/mapbox-v3-gl-style-switcher","version":"1.2.1","description":"A modern, fully-typed TypeScript control for Mapbox GL JS with dropdown-style interface for switching between map styles","type":"module","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./styles.css":"./styles.css"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"vitest run"},"repository":{"type":"git","url":"git+https://github.com/deciosfernandes/style-switcher.git"},"keywords":["mapbox","mapbox-gl-js","style-switcher","typescript","map-control","style-control","dropdown","ui-component"],"author":{"name":"Decio Fernandes"},"license":"GPL-3.0","bugs":{"url":"https://github.com/deciosfernandes/style-switcher/issues"},"homepage":"https://github.com/deciosfernandes/style-switcher#readme","peerDependencies":{"mapbox-gl":"^3.x"},"devDependencies":{"@types/mapbox-gl":"^3.4.1","jsdom":"^26.0.0","mapbox-gl":"^3.14.0","typescript":"^5.9.3","vitest":"^3.0.0"},"gitHead":"d156b7843da6b937299a210741641239f4e13b2b","_id":"@deciosfernandes/mapbox-v3-gl-style-switcher@1.2.1","_nodeVersion":"24.13.1","_npmVersion":"11.10.1","dist":{"integrity":"sha512-GkpPZubf2Sn+ySTy/fdnpEPGeinvKY2TU+yM2z1yyhbWYNaLQH2PvuByi0yQBI1+xHXbX531d22g0sbcq4hFig==","shasum":"109e109ac18b53528540c814707ba181cc5f088a","tarball":"https://registry.npmjs.org/@deciosfernandes/mapbox-v3-gl-style-switcher/-/mapbox-v3-gl-style-switcher-1.2.1.tgz","fileCount":7,"unpackedSize":70743,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCtY/EvT8jn4nwFa7v9lR1QNQBwb9DzXgFRSIXonhB7XwIhAIPMYJjAfHQm4ebNBMd7KuSSEiM8oY+vEn2QE1fUo6ce"}]},"_npmUser":{"name":"deciosfernandes","email":"gatofki@gmail.com"},"directories":{},"maintainers":[{"name":"deciosfernandes","email":"gatofki@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mapbox-v3-gl-style-switcher_1.2.1_1772053285076_0.38812712426905627"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-17T17:08:59.654Z","modified":"2026-02-25T21:01:25.400Z","1.1.0":"2025-11-17T17:08:59.958Z","1.2.0":"2026-02-25T20:44:28.709Z","1.2.1":"2026-02-25T21:01:25.296Z"},"bugs":{"url":"https://github.com/deciosfernandes/style-switcher/issues"},"author":{"name":"Decio Fernandes"},"license":"GPL-3.0","homepage":"https://github.com/deciosfernandes/style-switcher#readme","keywords":["mapbox","mapbox-gl-js","style-switcher","typescript","map-control","style-control","dropdown","ui-component"],"repository":{"type":"git","url":"git+https://github.com/deciosfernandes/style-switcher.git"},"description":"A modern, fully-typed TypeScript control for Mapbox GL JS with dropdown-style interface for switching between map styles","maintainers":[{"name":"deciosfernandes","email":"gatofki@gmail.com"}],"readme":"# Mapbox GL JS Style Switcher\r\n\r\nA modern, fully-typed TypeScript control for Mapbox GL JS that provides an intuitive dropdown-style interface for switching between map styles.\r\n\r\n[![Bundle Size](https://img.shields.io/bundlephobia/min/@deciosfernandes/mapbox-v3-gl-style-switcher)](https://bundlephobia.com/package/@deciosfernandes/mapbox-v3-gl-style-switcher)\r\n[![npm version](https://img.shields.io/npm/v/@deciosfernandes/mapbox-v3-gl-style-switcher)](https://www.npmjs.com/package/@deciosfernandes/mapbox-v3-gl-style-switcher)\r\n[![TypeScript](https://img.shields.io/npm/types/@deciosfernandes/mapbox-v3-gl-style-switcher)](https://www.typescriptlang.org/)\r\n[![License](https://img.shields.io/npm/l/@deciosfernandes/mapbox-v3-gl-style-switcher)](https://github.com/deciosfernandes/style-switcher/blob/master/LICENSE)\r\n\r\n## ✨ Features\r\n\r\n- 🎨 **Pre-configured styles** - Comes with 5 popular Mapbox styles out of the box\r\n- 🔧 **Fully customizable** - Use your own styles and configurations\r\n- 🎯 **TypeScript first** - Built with modern TypeScript, full type safety\r\n- 📱 **Responsive design** - Works seamlessly on desktop and mobile\r\n- 🎪 **Event-driven** - Rich event system for custom interactions\r\n- 🚀 **Modern syntax** - Leverages optional chaining and nullish coalescing\r\n- 🛡️ **Error resilient** - Robust error handling and validation\r\n- 📦 **Zero dependencies** - Only requires Mapbox GL JS\r\n\r\n## 🚀 Installation\r\n\r\n```bash\r\nnpm i @deciosfernandes/mapbox-v3-gl-style-switcher --save\r\n```\r\n\r\n```bash\r\nyarn add @deciosfernandes/mapbox-v3-gl-style-switcher\r\n```\r\n\r\n```bash\r\npnpm add @deciosfernandes/mapbox-v3-gl-style-switcher\r\n```\r\n\r\n## 📋 Requirements\r\n\r\n- **Mapbox GL JS** v3.x\r\n- **TypeScript** 5.0+ (for TypeScript projects)\r\n- **Node.js** 16+ (for development)\r\n\r\n## 🎯 Quick Start\r\n\r\n```typescript\r\nimport { MapboxStyleSwitcherControl } from '@deciosfernandes/mapbox-v3-gl-style-switcher';\r\nimport { Map as MapboxMap } from 'mapbox-gl';\r\n\r\n// Import the CSS styles\r\nimport '@deciosfernandes/mapbox-v3-gl-style-switcher/styles.css';\r\n\r\n// Create your map\r\nconst map = new MapboxMap({\r\n    container: 'map',\r\n    accessToken: 'your-mapbox-token',\r\n    style: 'mapbox://styles/mapbox/streets-v12',\r\n    center: [-74.5, 40],\r\n    zoom: 9,\r\n});\r\n\r\n// Add the style switcher control\r\nmap.addControl(new MapboxStyleSwitcherControl());\r\n```\r\n\r\n## 🎨 Default Styles\r\n\r\nThe control includes these pre-configured Mapbox styles:\r\n\r\n| Style Name    | Description                    | URI                                            |\r\n| ------------- | ------------------------------ | ---------------------------------------------- |\r\n| **Streets**   | Standard street map (default)  | `mapbox://styles/mapbox/streets-v12`           |\r\n| **Light**     | Clean, minimal light theme     | `mapbox://styles/mapbox/light-v11`             |\r\n| **Dark**      | Elegant dark theme             | `mapbox://styles/mapbox/dark-v11`              |\r\n| **Outdoors**  | Perfect for outdoor activities | `mapbox://styles/mapbox/outdoors-v12`          |\r\n| **Satellite** | Satellite imagery with streets | `mapbox://styles/mapbox/satellite-streets-v12` |\r\n\r\n## 🔧 Configuration\r\n\r\n### Custom Styles\r\n\r\n```typescript\r\nimport { MapboxStyleDefinition, MapboxStyleSwitcherControl } from '@deciosfernandes/mapbox-v3-gl-style-switcher';\r\n\r\nconst customStyles: MapboxStyleDefinition[] = [\r\n    {\r\n        title: 'Custom Dark',\r\n        uri: 'mapbox://styles/your-username/your-dark-style-id',\r\n    },\r\n    {\r\n        title: 'Custom Light',\r\n        uri: 'mapbox://styles/your-username/your-light-style-id',\r\n    },\r\n    {\r\n        title: 'Vintage',\r\n        uri: 'mapbox://styles/your-username/vintage-style-id',\r\n    },\r\n];\r\n\r\nmap.addControl(new MapboxStyleSwitcherControl(customStyles));\r\n```\r\n\r\n### Advanced Configuration\r\n\r\n```typescript\r\nimport { MapboxStyleSwitcherOptions } from '@deciosfernandes/mapbox-v3-gl-style-switcher';\r\n\r\nconst options: MapboxStyleSwitcherOptions = {\r\n    defaultStyle: 'Custom Dark',\r\n    eventListeners: {\r\n        onOpen: (event) => {\r\n            console.log('Style selector opened');\r\n            // Return true to prevent default behavior\r\n            return false;\r\n        },\r\n        onSelect: (event) => {\r\n            console.log('Style button clicked');\r\n            return false;\r\n        },\r\n        onChange: (event, styleUri) => {\r\n            console.log(`Map style changed to: ${styleUri}`);\r\n            // Analytics tracking example\r\n            analytics.track('style_changed', { style: styleUri });\r\n        },\r\n    },\r\n};\r\n\r\nmap.addControl(new MapboxStyleSwitcherControl(customStyles, options));\r\n```\r\n\r\n### Backward Compatible Syntax\r\n\r\n```typescript\r\n// Simple string-based default style (legacy support)\r\nmap.addControl(new MapboxStyleSwitcherControl(customStyles, 'Dark'));\r\n```\r\n\r\n## 📖 API Reference\r\n\r\n### `MapboxStyleSwitcherControl`\r\n\r\n#### Constructor\r\n\r\n```typescript\r\nconstructor(\r\n    styles?: MapboxStyleDefinition[],\r\n    options?: MapboxStyleSwitcherOptions | string\r\n)\r\n```\r\n\r\n**Parameters:**\r\n\r\n- `styles` - Optional array of custom style definitions. Defaults to built-in Mapbox styles\r\n- `options` - Configuration options object, or string for backward compatibility (default style name)\r\n\r\n#### Public Methods\r\n\r\n##### `getCurrentStyle(): MapboxStyleDefinition | null`\r\n\r\nReturns the currently active style definition.\r\n\r\n```typescript\r\nconst control = new MapboxStyleSwitcherControl();\r\nmap.addControl(control);\r\n\r\n// Later in your code\r\nconst currentStyle = control.getCurrentStyle();\r\nconsole.log(`Current style: ${currentStyle?.title}`);\r\n```\r\n\r\n##### `setStyle(styleName: string): boolean`\r\n\r\nProgrammatically changes the map style.\r\n\r\n```typescript\r\nconst success = control.setStyle('Dark');\r\nif (success) {\r\n    console.log('Style changed successfully');\r\n} else {\r\n    console.log('Style not found or change failed');\r\n}\r\n```\r\n\r\n##### `getStyles(): ReadonlyArray<MapboxStyleDefinition>`\r\n\r\nReturns all available style definitions.\r\n\r\n```typescript\r\nconst availableStyles = control.getStyles();\r\nconsole.log(\r\n    'Available styles:',\r\n    availableStyles.map((s) => s.title),\r\n);\r\n```\r\n\r\n##### `getDefaultPosition(): ControlPosition`\r\n\r\nReturns the default control position ('top-right').\r\n\r\n### Interfaces\r\n\r\n#### `MapboxStyleDefinition`\r\n\r\n```typescript\r\ninterface MapboxStyleDefinition {\r\n    /** Display title for the style */\r\n    title: string;\r\n    /** Mapbox style URI */\r\n    uri: string;\r\n}\r\n```\r\n\r\n#### `MapboxStyleSwitcherOptions`\r\n\r\n```typescript\r\ninterface MapboxStyleSwitcherOptions {\r\n    /** Default style to be selected on initialization */\r\n    defaultStyle?: string;\r\n    /** Event listeners for style switcher interactions */\r\n    eventListeners?: MapboxStyleSwitcherEvents;\r\n}\r\n```\r\n\r\n#### `MapboxStyleSwitcherEvents`\r\n\r\n```typescript\r\ninterface MapboxStyleSwitcherEvents {\r\n    /** Fired when the style selector is opened */\r\n    onOpen?: (event: MouseEvent) => boolean;\r\n    /** Fired when a style button is clicked */\r\n    onSelect?: (event: MouseEvent) => boolean;\r\n    /** Fired after the map style is changed */\r\n    onChange?: (event: MouseEvent, style: string) => void;\r\n}\r\n```\r\n\r\n**Event Handler Return Values (`onOpen`, `onSelect`):**\r\n\r\n- Return `true` to prevent the default behavior\r\n- Return `false` or `undefined` to allow normal processing\r\n\r\n> `onChange` fires **after** the style has already changed and has no return value.\r\n\r\n## 💡 Advanced Examples\r\n\r\n### Dynamic Style Management\r\n\r\n```typescript\r\nclass MapManager {\r\n    private map: MapboxMap;\r\n    private styleControl: MapboxStyleSwitcherControl;\r\n\r\n    constructor() {\r\n        this.map = new MapboxMap({\r\n            /* config */\r\n        });\r\n        this.styleControl = new MapboxStyleSwitcherControl(this.getCustomStyles(), {\r\n            defaultStyle: 'Corporate',\r\n            eventListeners: {\r\n                onChange: this.handleStyleChange.bind(this),\r\n            },\r\n        });\r\n\r\n        this.map.addControl(this.styleControl);\r\n    }\r\n\r\n    private getCustomStyles(): MapboxStyleDefinition[] {\r\n        return [\r\n            { title: 'Corporate', uri: 'mapbox://styles/company/corporate' },\r\n            { title: 'Presentation', uri: 'mapbox://styles/company/presentation' },\r\n            { title: 'Analysis', uri: 'mapbox://styles/company/analysis' },\r\n        ];\r\n    }\r\n\r\n    private handleStyleChange(event: MouseEvent, styleUri: string): void {\r\n        // Custom logic when style changes\r\n        this.updateUI(styleUri);\r\n        this.saveUserPreference(styleUri);\r\n    }\r\n\r\n    public switchToAnalysisMode(): void {\r\n        this.styleControl.setStyle('Analysis');\r\n    }\r\n}\r\n```\r\n\r\n### Integration with UI Frameworks\r\n\r\n#### React Example\r\n\r\n```tsx\r\nimport React, { useEffect, useRef } from 'react';\r\nimport mapboxgl from 'mapbox-gl';\r\nimport { MapboxStyleSwitcherControl } from '@deciosfernandes/mapbox-v3-gl-style-switcher';\r\n\r\nconst MapComponent: React.FC = () => {\r\n    const mapContainer = useRef<HTMLDivElement>(null);\r\n    const map = useRef<mapboxgl.Map | null>(null);\r\n\r\n    useEffect(() => {\r\n        if (!mapContainer.current) return;\r\n\r\n        map.current = new mapboxgl.Map({\r\n            container: mapContainer.current,\r\n            style: 'mapbox://styles/mapbox/streets-v12',\r\n            center: [-74.5, 40],\r\n            zoom: 9,\r\n        });\r\n\r\n        const styleControl = new MapboxStyleSwitcherControl(undefined, {\r\n            defaultStyle: 'Streets',\r\n            eventListeners: {\r\n                onChange: (event, style) => {\r\n                    console.log('React: Style changed to', style);\r\n                },\r\n            },\r\n        });\r\n\r\n        map.current.addControl(styleControl);\r\n\r\n        return () => {\r\n            map.current?.remove();\r\n        };\r\n    }, []);\r\n\r\n    return (\r\n        <div\r\n            ref={mapContainer}\r\n            style={{ width: '100%', height: '400px' }}\r\n        />\r\n    );\r\n};\r\n\r\nexport default MapComponent;\r\n```\r\n\r\n#### Vue Example\r\n\r\n```vue\r\n<template>\r\n    <div\r\n        ref=\"mapContainer\"\r\n        class=\"map-container\"></div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, onMounted, onUnmounted } from 'vue';\r\nimport mapboxgl from 'mapbox-gl';\r\nimport { MapboxStyleSwitcherControl } from '@deciosfernandes/mapbox-v3-gl-style-switcher';\r\n\r\nconst mapContainer = ref<HTMLDivElement>();\r\nlet map: mapboxgl.Map | null = null;\r\n\r\nonMounted(() => {\r\n    if (!mapContainer.value) return;\r\n\r\n    map = new mapboxgl.Map({\r\n        container: mapContainer.value,\r\n        style: 'mapbox://styles/mapbox/streets-v12',\r\n        center: [-74.5, 40],\r\n        zoom: 9,\r\n    });\r\n\r\n    const styleControl = new MapboxStyleSwitcherControl();\r\n    map.addControl(styleControl);\r\n});\r\n\r\nonUnmounted(() => {\r\n    map?.remove();\r\n});\r\n</script>\r\n\r\n<style scoped>\r\n.map-container {\r\n    width: 100%;\r\n    height: 400px;\r\n}\r\n</style>\r\n```\r\n\r\n## 🎨 Styling & CSS\r\n\r\nThe control uses CSS classes that can be customized:\r\n\r\n```css\r\n/* Main control container */\r\n.mapboxgl-ctrl.mapboxgl-ctrl-group {\r\n    /* Your custom styles */\r\n}\r\n\r\n/* Style switcher button */\r\n.mapboxgl-style-switcher {\r\n    /* Button styles */\r\n}\r\n\r\n/* Style list dropdown */\r\n.mapboxgl-style-list {\r\n    /* Dropdown styles */\r\n}\r\n\r\n/* Individual style buttons */\r\n.mapboxgl-style-list button {\r\n    /* Style button styles */\r\n}\r\n\r\n/* Active style button */\r\n.mapboxgl-style-list button.active {\r\n    /* Active state styles */\r\n}\r\n```\r\n\r\n## 🛠️ Development\r\n\r\n### Setup\r\n\r\n```bash\r\ngit clone https://github.com/deciosfernandes/style-switcher.git\r\ncd style-switcher\r\nnpm install\r\n```\r\n\r\n### Build\r\n\r\n```bash\r\nnpm run build\r\n```\r\n\r\n### Development Workflow\r\n\r\nThe project uses modern TypeScript 5.9.3 with:\r\n\r\n- Optional chaining and nullish coalescing\r\n- Strict type checking\r\n- ES2020 target with full ES2020 library features\r\n- Comprehensive JSDoc documentation\r\n\r\n## 🤝 Contributing\r\n\r\nContributions are welcome! Please read our contributing guidelines:\r\n\r\n1. **Fork** the repository\r\n2. **Create** a feature branch: `git checkout -b feature/amazing-feature`\r\n3. **Commit** your changes: `git commit -m 'Add amazing feature'`\r\n4. **Push** to the branch: `git push origin feature/amazing-feature`\r\n5. **Open** a Pull Request\r\n\r\n### Development Guidelines\r\n\r\n- Follow TypeScript strict mode conventions\r\n- Add JSDoc comments for public APIs\r\n- Include unit tests for new features\r\n- Update documentation for API changes\r\n- Ensure backward compatibility when possible\r\n\r\n## 📄 License\r\n\r\nThis project is licensed under the GPL-3.0 License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## 🙏 Acknowledgments\r\n\r\n- Original concept by [Eliz Kilic](https://github.com/el/)\r\n- Built for the [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js/) ecosystem\r\n- TypeScript definitions inspired by the Mapbox GL JS type definitions\r\n\r\n---\r\n\r\n**Made with ❤️ for the Mapbox community**\r\n","readmeFilename":"README.md"}