/* eslint-disable */
|
const init = (L) => {
|
(function (factory) {
|
if (typeof define === 'function' && define.amd) {
|
// AMD
|
define(['leaflet'], factory)
|
} else if (typeof module !== 'undefined') {
|
// Node/CommonJS
|
// module.exports = factory(require('leaflet'))
|
factory(L)
|
} else {
|
// Browser globals
|
if (typeof window.L === 'undefined') {
|
throw new Error('Leaflet must be loaded first')
|
}
|
factory(window.L)
|
}
|
}(function (L) {
|
L.Control.Fullscreen = L.Control.extend({
|
options: {
|
position: 'topleft',
|
title: {
|
false: 'View Fullscreen',
|
true: 'Exit Fullscreen'
|
}
|
},
|
|
onAdd: function (map) {
|
var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control')
|
|
this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container)
|
this.link.href = '#'
|
|
this._map = map
|
this._map.on('fullscreenchange', this._toggleTitle, this)
|
this._toggleTitle()
|
|
L.DomEvent.on(this.link, 'click', this._click, this)
|
|
return container
|
},
|
|
_click: function (e) {
|
L.DomEvent.stopPropagation(e)
|
L.DomEvent.preventDefault(e)
|
this._map.toggleFullscreen(this.options)
|
},
|
|
_toggleTitle: function () {
|
this.link.title = this.options.title[this._map.isFullscreen()]
|
}
|
})
|
|
L.Map.include({
|
isFullscreen: function () {
|
return this._isFullscreen || false
|
},
|
|
toggleFullscreen: function (options) {
|
var container = this.getContainer()
|
if (this.isFullscreen()) {
|
if (options && options.pseudoFullscreen) {
|
this._disablePseudoFullscreen(container)
|
} else if (document.exitFullscreen) {
|
document.exitFullscreen()
|
} else if (document.mozCancelFullScreen) {
|
document.mozCancelFullScreen()
|
} else if (document.webkitCancelFullScreen) {
|
document.webkitCancelFullScreen()
|
} else if (document.msExitFullscreen) {
|
document.msExitFullscreen()
|
} else {
|
this._disablePseudoFullscreen(container)
|
}
|
} else {
|
if (options && options.pseudoFullscreen) {
|
this._enablePseudoFullscreen(container)
|
} else if (container.requestFullscreen) {
|
container.requestFullscreen()
|
} else if (container.mozRequestFullScreen) {
|
container.mozRequestFullScreen()
|
} else if (container.webkitRequestFullscreen) {
|
container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)
|
} else if (container.msRequestFullscreen) {
|
container.msRequestFullscreen()
|
} else {
|
this._enablePseudoFullscreen(container)
|
}
|
}
|
},
|
|
_enablePseudoFullscreen: function (container) {
|
L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen')
|
this._setFullscreen(true)
|
this.fire('fullscreenchange')
|
},
|
|
_disablePseudoFullscreen: function (container) {
|
L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen')
|
this._setFullscreen(false)
|
this.fire('fullscreenchange')
|
},
|
|
_setFullscreen: function (fullscreen) {
|
this._isFullscreen = fullscreen
|
var container = this.getContainer()
|
if (fullscreen) {
|
L.DomUtil.addClass(container, 'leaflet-fullscreen-on')
|
} else {
|
L.DomUtil.removeClass(container, 'leaflet-fullscreen-on')
|
}
|
this.invalidateSize()
|
},
|
|
_onFullscreenChange: function (e) {
|
var fullscreenElement =
|
document.fullscreenElement ||
|
document.mozFullScreenElement ||
|
document.webkitFullscreenElement ||
|
document.msFullscreenElement
|
|
if (fullscreenElement === this.getContainer() && !this._isFullscreen) {
|
this._setFullscreen(true)
|
this.fire('fullscreenchange')
|
} else if (fullscreenElement !== this.getContainer() && this._isFullscreen) {
|
this._setFullscreen(false)
|
this.fire('fullscreenchange')
|
}
|
}
|
})
|
|
L.Map.mergeOptions({
|
fullscreenControl: false
|
})
|
|
L.Map.addInitHook(function () {
|
if (this.options.fullscreenControl) {
|
this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl)
|
this.addControl(this.fullscreenControl)
|
}
|
|
var fullscreenchange
|
|
if ('onfullscreenchange' in document) {
|
fullscreenchange = 'fullscreenchange'
|
} else if ('onmozfullscreenchange' in document) {
|
fullscreenchange = 'mozfullscreenchange'
|
} else if ('onwebkitfullscreenchange' in document) {
|
fullscreenchange = 'webkitfullscreenchange'
|
} else if ('onmsfullscreenchange' in document) {
|
fullscreenchange = 'MSFullscreenChange'
|
}
|
|
if (fullscreenchange) {
|
var onFullscreenChange = L.bind(this._onFullscreenChange, this)
|
|
this.whenReady(function () {
|
L.DomEvent.on(document, fullscreenchange, onFullscreenChange)
|
})
|
|
this.on('unload', function () {
|
L.DomEvent.off(document, fullscreenchange, onFullscreenChange)
|
})
|
}
|
})
|
|
L.control.fullscreen = function (options) {
|
return new L.Control.Fullscreen(options)
|
}
|
}))
|
}
|
export default {
|
init
|
}
|