{"version":3,"sources":["jsdelivr-header.js","/npm/leaflet.fullscreen@5.1.1/dist/Control.FullScreen.umd.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;CCAA,SAAW,EAAQ,GACC,iBAAZ,SAA0C,oBAAX,OAAyB,OAAO,QAAU,EAAQ,QAAQ,YAC9E,mBAAX,QAAyB,OAAO,IAAM,OAAO,CAAC,WAAY,KAChE,EAA+B,oBAAf,WAA6B,WAAa,GAAU,MAAc,EAAI,EAAO,GAAK,CAAC,EAAG,EAAO,EAAE,QAAU,EAAO,EAAE,SAAW,CAAC,EAAG,EAAO,EAAE,QAAQ,WAAa,EAAQ,EAAO,GAC/L,CAJD,CAIG,MAAM,SAAW,GAAW,aAEN,oBAAb,UACV,QAAQ,KAAK,6FAGd,MAAM,EAAY,MACjB,MAAM,EAAY,CAEjB,CACC,oBACA,iBACA,oBACA,oBACA,mBACA,mBAGD,CACC,0BACA,uBACA,0BACA,0BACA,yBACA,0BAII,EAAW,EAAU,GACrB,EAAM,CAAC,EAEb,IAAK,MAAM,KAAc,EACxB,GAAI,EAAW,KAAM,SAAU,CAC9B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAW,OAAQ,IACtC,EAAI,EAAS,IAAM,EAAW,GAE/B,OAAO,CACR,CAGD,OAAO,CACP,EAnCiB,GAqCZ,EAAe,CACpB,OAAQ,EAAU,iBAClB,MAAO,EAAU,iBAGZ,EAAgB,CAErB,aAAM,CAAQ,EAAS,GACtB,EAAU,GAAW,SAAS,gBAC9B,MAAM,EAAgB,EAAU,wBAE1B,KAAK,aAAY,IACf,EAAQ,GAAe,IAEhC,EAEA,UAAM,GACL,IAAK,KAAK,aACT,OAED,MAAM,EAAa,EAAU,qBAEvB,KAAK,aAAY,IACf,SAAS,MAElB,EAEA,iBAAM,CAAY,GACjB,MAAM,EAAS,IAGX,aAAkB,cACf,QAKD,IAAI,SAAS,IAClB,MAAM,EAAW,KAChB,KAAK,IAAI,SAAU,GACnB,GAAS,EAEV,KAAK,GAAG,SAAU,EAAS,GAE7B,EAEA,EAAA,CAAG,EAAO,GACT,MAAM,EAAY,EAAa,GAC3B,GACH,SAAS,iBAAiB,EAAW,EAEvC,EAEA,GAAA,CAAI,EAAO,GACV,MAAM,EAAY,EAAa,GAC3B,GACH,SAAS,oBAAoB,EAAW,EAE1C,EACA,UAAW,GAGZ,OAAO,iBAAiB,EAAe,CACtC,aAAc,CACb,IAAG,IACK,QAAQ,SAAS,EAAU,qBAGpC,UAAW,CACV,YAAY,EACZ,IAAG,IAEK,QAAQ,SAAS,EAAU,uBAKrC,MAAM,EAAa,EAAQ,QAAQ,OAAO,CACzC,QAAS,CACR,SAAU,UACV,MAAO,cACP,YAAa,mBACb,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GAGpB,YAAa,EAEb,KAAA,CAAM,GACL,IACI,EADA,EAAY,kCAEZ,EAAU,GAmBd,OAhBC,EADG,EAAI,cAAgB,KAAK,QAAQ,oBACxB,EAAI,YAAY,WAEhB,EAAQ,QAAQ,OAAO,MAAO,eAGvC,KAAK,QAAQ,QAChB,EAAU,KAAK,QAAQ,QAEvB,GAAa,2BAGd,KAAK,cAAc,KAAK,QAAQ,MAAO,EAAW,EAAS,EAAW,KAAK,iBAAkB,MAC7F,KAAK,KAAK,kBAAoB,KAE9B,KAAK,KAAK,GAAG,iCAAkC,KAAK,aAAc,MAE3D,CACR,EAEA,QAAA,GACC,EAAQ,SACN,IAAI,KAAK,KAAM,QAAS,EAAQ,SAAS,MACzC,IAAI,KAAK,KAAM,QAAS,KAAK,iBAAkB,MAE7C,KAAK,YAAY,YACpB,EAAQ,SACN,IAAI,KAAK,WAAY,KAAK,YAAY,UAAU,iBAAkB,EAAQ,SAAS,MACnF,IAAI,KAAK,WAAY,KAAK,YAAY,UAAU,iBAAkB,KAAK,wBAAyB,MAElG,EAAQ,SACN,IAAI,SAAU,KAAK,YAAY,UAAU,iBAAkB,EAAQ,SAAS,MAC5E,IAAI,SAAU,KAAK,YAAY,UAAU,iBAAkB,KAAK,wBAAyB,MAE7F,EAEA,aAAA,CAAc,EAAO,EAAW,EAAS,EAAW,EAAI,GAyBvD,OAxBA,KAAK,KAAO,EAAQ,QAAQ,OAAO,IAAK,EAAW,GACnD,KAAK,KAAK,KAAO,IACjB,KAAK,KAAK,MAAQ,EAClB,KAAK,KAAK,UAAY,EAEtB,KAAK,KAAK,aAAa,OAAQ,UAC/B,KAAK,KAAK,aAAa,aAAc,GAErC,EAAQ,SAAS,wBAAwB,GAEzC,EAAQ,SACN,GAAG,KAAK,KAAM,QAAS,EAAQ,SAAS,MACxC,GAAG,KAAK,KAAM,QAAS,EAAI,GAEzB,KAAK,YAAY,YACpB,EAAQ,SACN,GAAG,EAAW,KAAK,YAAY,UAAU,iBAAkB,EAAQ,SAAS,MAC5E,GAAG,EAAW,KAAK,YAAY,UAAU,iBAAkB,KAAK,wBAAyB,GAE3F,EAAQ,SACN,GAAG,SAAU,KAAK,YAAY,UAAU,iBAAkB,EAAQ,SAAS,MAC3E,GAAG,SAAU,KAAK,YAAY,UAAU,iBAAkB,KAAK,wBAAyB,IAGpF,KAAK,IACb,EAEA,gBAAA,GACC,MAAM,EAAM,KAAK,KAEjB,GADA,EAAI,YAAa,EACb,EAAI,cAAe,CACtB,GAAI,KAAK,YAAY,YAAc,KAAK,QAAQ,sBAC/C,KAAK,YAAY,OAAO,MAAK,IAAM,EAAI,uBACjC,CACN,MAAM,EAAc,KAAK,QAAQ,kBAC9B,KAAK,QAAQ,kBACb,EAAI,WACH,GAAe,EAAY,WAC9B,EAAY,UAAU,OAAO,6BAE9B,EAAI,gBACL,CACA,EAAI,KAAK,kBACT,EAAI,YAAa,EACjB,EAAI,eAAgB,CACrB,KAAO,CACN,GAAI,KAAK,YAAY,YAAc,KAAK,QAAQ,sBAC/C,KAAK,YAAY,QAAQ,KAAK,QAAQ,kBACnC,KAAK,QAAQ,kBACb,EAAI,YAAY,MAAK,IAAM,EAAI,uBAC5B,CACN,MAAM,EAAe,KAAK,QAAQ,kBAC/B,KAAK,QAAQ,kBACb,EAAI,WACH,GAAgB,EAAa,WAChC,EAAa,UAAU,IAAI,6BAE5B,EAAI,gBACL,CACA,EAAI,KAAK,mBACT,EAAI,eAAgB,CACrB,CACD,EAEA,YAAA,GACC,KAAK,KAAK,MAAQ,KAAK,KAAK,cACzB,KAAK,QAAQ,MACb,KAAK,QAAQ,YACZ,KAAK,MAAQ,KAAK,KAAK,YACtB,KAAK,KAAK,cACb,KAAK,KAAK,UAAU,OAAO,yBAE3B,KAAK,KAAK,UAAU,IAAI,yBAG3B,EAEA,uBAAA,CAAwB,GACvB,MAAM,EAAM,KAAK,KACX,EAAgB,KAAK,QAAQ,mBAAqB,EAAI,eAGtD,EAAe,EAAG,SAAW,EAC7B,GAAuB,KAAK,YAAY,eAAiB,EAAI,WAE/D,GAAgB,IAEnB,EAAI,YAAa,EAGjB,EAAI,KAAK,kBACT,EAAI,eAAgB,EACpB,KAAK,YAAY,OAAO,MAAK,IAAM,EAAI,mBAEzC,IASD,OANA,EAAQ,IAAI,QAAQ,CACnB,gBAAA,GACC,KAAK,kBAAkB,kBACxB,IAGM,CAEP","file":"/npm/leaflet.fullscreen@5.1.1/dist/Control.FullScreen.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/leaflet.fullscreen@5.1.1/dist/Control.FullScreen.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * leaflet.fullscreen\n * (c) Bruno B.; MIT License\n * https://github.com/brunob/leaflet.fullscreen\n */\n/*! GENERATED FILE - DO NOT EDIT DIRECTLY. Edit files in src/ and run 'npm run build' */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('leaflet')) :\n\ttypeof define === 'function' && define.amd ? define(['leaflet'], factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.L = global.L || {}, global.L.Control = global.L.Control || {}, global.L.Control.FullScreen = factory(global.L)));\n})(this, (function (leaflet) { 'use strict';\n\n\tif (typeof document === 'undefined') {\n\t\tconsole.warn('\"window.document\" is undefined; leaflet.fullscreen requires this object to access the DOM');\n\t}\n\n\tconst nativeAPI = (() => {\n\t\tconst methodMap = [\n\t\t\t// Standard\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\t\t\t]\n\t\t];\n\n\t\tconst baseList = methodMap[0];\n\t\tconst ret = {};\n\n\t\tfor (const methodList of methodMap) {\n\t\t\tif (methodList[1] in document) {\n\t\t\t\tfor (let i = 0; i < methodList.length; i++) {\n\t\t\t\t\tret[baseList[i]] = methodList[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tconst eventNameMap = {\n\t\tchange: nativeAPI.fullscreenchange,\n\t\terror: nativeAPI.fullscreenerror,\n\t};\n\n\tconst fullscreenAPI = {\n\t\t// Request fullscreen for a specific element\n\t\tasync request(element, options) {\n\t\t\telement = element || document.documentElement;\n\t\t\tconst requestMethod = nativeAPI.requestFullscreen;\n\n\t\t\tawait this._callNative(() => {\n\t\t\t\treturn element[requestMethod](options);\n\t\t\t});\n\t\t},\n\t\t// Exit fullscreen mode\n\t\tasync exit() {\n\t\t\tif (!this.isFullscreen) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst exitMethod = nativeAPI.exitFullscreen;\n\n\t\t\tawait this._callNative(() => {\n\t\t\t\treturn document[exitMethod]();\n\t\t\t});\n\t\t},\n\t\t// Helper to handle browser differences (Promise vs Event)\n\t\tasync _callNative(action) {\n\t\t\tconst result = action();\n\n\t\t\t// Modern browsers return a Promise from requestFullscreen/exitFullscreen\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tawait result;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Fallback for Safari < 16.4 (March 2023) which doesn't return a Promise\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\tconst listener = () => {\n\t\t\t\t\tthis.off('change', listener);\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tthis.on('change', listener);\n\t\t\t});\n\t\t},\n\t\t// Add event listener for fullscreen changes\n\t\ton(event, callback) {\n\t\t\tconst eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback);\n\t\t\t}\n\t\t},\n\t\t// Remove event listener\n\t\toff(event, callback) {\n\t\t\tconst eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback);\n\t\t\t}\n\t\t},\n\t\tnativeAPI: nativeAPI\n\t};\n\n\tObject.defineProperties(fullscreenAPI, {\n\t\tisFullscreen: {\n\t\t\tget() {\n\t\t\t\treturn Boolean(document[nativeAPI.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[nativeAPI.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst FullScreen = leaflet.Control.extend({\n\t\toptions: {\n\t\t\tposition: 'topleft',\n\t\t\ttitle: 'Full Screen',\n\t\t\ttitleCancel: 'Exit Full Screen',\n\t\t\tforceSeparateButton: false,\n\t\t\tforcePseudoFullscreen: false,\n\t\t\tfullscreenElement: false\n\t\t},\n\n\t\t_screenfull: fullscreenAPI,\n\n\t\tonAdd(map) {\n\t\t\tlet className = 'leaflet-control-zoom-fullscreen';\n\t\t\tlet container;\n\t\t\tlet content = '';\n\n\t\t\tif (map.zoomControl && !this.options.forceSeparateButton) {\n\t\t\t\tcontainer = map.zoomControl._container;\n\t\t\t} else {\n\t\t\t\tcontainer = leaflet.DomUtil.create('div', 'leaflet-bar');\n\t\t\t}\n\n\t\t\tif (this.options.content) {\n\t\t\t\tcontent = this.options.content;\n\t\t\t} else {\n\t\t\t\tclassName += ' leaflet-fullscreen-icon';\n\t\t\t}\n\n\t\t\tthis._createButton(this.options.title, className, content, container, this.toggleFullScreen, this);\n\t\t\tthis._map.fullscreenControl = this;\n\n\t\t\tthis._map.on('enterFullscreen exitFullscreen', this._toggleState, this);\n\n\t\t\treturn container;\n\t\t},\n\n\t\tonRemove() {\n\t\t\tleaflet.DomEvent\n\t\t\t\t.off(this.link, 'click', leaflet.DomEvent.stop)\n\t\t\t\t.off(this.link, 'click', this.toggleFullScreen, this);\n\n\t\t\tif (this._screenfull.isEnabled) {\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.off(this._container, this._screenfull.nativeAPI.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.off(this._container, this._screenfull.nativeAPI.fullscreenchange, this._handleFullscreenChange, this);\n\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.off(document, this._screenfull.nativeAPI.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.off(document, this._screenfull.nativeAPI.fullscreenchange, this._handleFullscreenChange, this);\n\t\t\t}\n\t\t},\n\n\t\t_createButton(title, className, content, container, fn, context) {\n\t\t\tthis.link = leaflet.DomUtil.create('a', className, container);\n\t\t\tthis.link.href = '#';\n\t\t\tthis.link.title = title;\n\t\t\tthis.link.innerHTML = content;\n\n\t\t\tthis.link.setAttribute('role', 'button');\n\t\t\tthis.link.setAttribute('aria-label', title);\n\n\t\t\tleaflet.DomEvent.disableClickPropagation(container);\n\n\t\t\tleaflet.DomEvent\n\t\t\t\t.on(this.link, 'click', leaflet.DomEvent.stop)\n\t\t\t\t.on(this.link, 'click', fn, context);\n\n\t\t\tif (this._screenfull.isEnabled) {\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.on(container, this._screenfull.nativeAPI.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.on(container, this._screenfull.nativeAPI.fullscreenchange, this._handleFullscreenChange, context);\n\n\t\t\t\tleaflet.DomEvent\n\t\t\t\t\t.on(document, this._screenfull.nativeAPI.fullscreenchange, leaflet.DomEvent.stop)\n\t\t\t\t\t.on(document, this._screenfull.nativeAPI.fullscreenchange, this._handleFullscreenChange, context);\n\t\t\t}\n\n\t\t\treturn this.link;\n\t\t},\n\n\t\ttoggleFullScreen() {\n\t\t\tconst map = this._map;\n\t\t\tmap._exitFired = false;\n\t\t\tif (map._isFullscreen) {\n\t\t\t\tif (this._screenfull.isEnabled && !this.options.forcePseudoFullscreen) {\n\t\t\t\t\tthis._screenfull.exit().then(() => map.invalidateSize());\n\t\t\t\t} else {\n\t\t\t\t\tconst _targetExit = this.options.fullscreenElement\n\t\t\t\t\t\t? this.options.fullscreenElement\n\t\t\t\t\t\t: map._container;\n\t\t\t\t\tif (_targetExit && _targetExit.classList) {\n\t\t\t\t\t\t_targetExit.classList.remove('leaflet-pseudo-fullscreen');\n\t\t\t\t\t}\n\t\t\t\t\tmap.invalidateSize();\n\t\t\t\t}\n\t\t\t\tmap.fire('exitFullscreen');\n\t\t\t\tmap._exitFired = true;\n\t\t\t\tmap._isFullscreen = false;\n\t\t\t} else {\n\t\t\t\tif (this._screenfull.isEnabled && !this.options.forcePseudoFullscreen) {\n\t\t\t\t\tthis._screenfull.request(this.options.fullscreenElement\n\t\t\t\t\t\t? this.options.fullscreenElement\n\t\t\t\t\t\t: map._container).then(() => map.invalidateSize());\n\t\t\t\t} else {\n\t\t\t\t\tconst _targetEnter = this.options.fullscreenElement\n\t\t\t\t\t\t? this.options.fullscreenElement\n\t\t\t\t\t\t: map._container;\n\t\t\t\t\tif (_targetEnter && _targetEnter.classList) {\n\t\t\t\t\t\t_targetEnter.classList.add('leaflet-pseudo-fullscreen');\n\t\t\t\t\t}\n\t\t\t\t\tmap.invalidateSize();\n\t\t\t\t}\n\t\t\t\tmap.fire('enterFullscreen');\n\t\t\t\tmap._isFullscreen = true;\n\t\t\t}\n\t\t},\n\n\t\t_toggleState() {\n\t\t\tthis.link.title = this._map._isFullscreen\n\t\t\t\t? this.options.title\n\t\t\t\t: this.options.titleCancel;\n\t\t\tif (this.link && this.link.classList) {\n\t\t\t\tif (this._map._isFullscreen) {\n\t\t\t\t\tthis.link.classList.remove('leaflet-fullscreen-on');\n\t\t\t\t} else {\n\t\t\t\t\tthis.link.classList.add('leaflet-fullscreen-on');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_handleFullscreenChange(ev) {\n\t\t\tconst map = this._map;\n\t\t\tconst targetElement = this.options.fullscreenElement || map.getContainer();\n\n\t\t\t// Check if the event is for our element and fullscreen was exited via browser (ESC or UI)\n\t\t\tconst isOurElement = ev.target === targetElement;\n\t\t\tconst wasExitedExternally = !this._screenfull.isFullscreen && !map._exitFired;\n\n\t\t\tif (isOurElement && wasExitedExternally) {\n\t\t\t\t// Sync internal state with browser state\n\t\t\t\tmap._exitFired = true;\n\n\t\t\t\t// Notify listeners and adjust map size\n\t\t\t\tmap.fire('exitFullscreen');\n\t\t\t\tmap._isFullscreen = false;\n\t\t\t\tthis._screenfull.exit().then(() => map.invalidateSize());\n\t\t\t}\n\t\t}\n\t});\n\n\tleaflet.Map.include({\n\t\ttoggleFullscreen() {\n\t\t\tthis.fullscreenControl.toggleFullScreen();\n\t\t}\n\t});\n\n\treturn FullScreen;\n\n}));\n"]}