vendor: 6,025 bytes, lines 1-168
1(function (factory) { 2 if (typeof define === 'function' && define.amd) { 3 // AMD 4 define(['leaflet'], factory); 5 } else if (typeof module !== 'undefined') { 6 // Node/CommonJS 7 module.exports = factory(require('leaflet')); 8 } else { 9 // Browser globals 10 if (typeof window.L === 'undefined') { 11 throw new Error('Leaflet must be loaded first'); 12 } 13 factory(window.L); 14 } 15}(function (L) { 16 L.Control.Fullscreen = L.Control.extend({ 17 options: { 18 position: 'topleft', 19 title: { 20 'false': 'View Fullscreen', 21 'true': 'Exit Fullscreen' 22 } 23 }, 24 25 onAdd: function (map) { 26 var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control'); 27 28 this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container); 29 this.link.href = '#'; 30 31 this._map = map; 32 this._map.on('fullscreenchange', this._toggleTitle, this); 33 this._toggleTitle(); 34 35 L.DomEvent.on(this.link, 'click', this._click, this); 36 37 return container; 38 }, 39 40 _click: function (e) { 41 L.DomEvent.stopPropagation(e); 42 L.DomEvent.preventDefault(e); 43 this._map.toggleFullscreen(this.options); 44 }, 45 46 _toggleTitle: function() { 47 this.link.title = this.options.title[this._map.isFullscreen()]; 48 } 49 }); 50 51 L.Map.include({ 52 isFullscreen: function () { 53 return this._isFullscreen || false; 54 }, 55 56 toggleFullscreen: function (options) { 57 var container = this.getContainer(); 58 if (this.isFullscreen()) { 59 if (options && options.pseudoFullscreen) { 60 this._disablePseudoFullscreen(container); 61 } else if (document.exitFullscreen) { 62 document.exitFullscreen(); 63 } else if (document.mozCancelFullScreen) { 64 document.mozCancelFullScreen(); 65 } else if (document.webkitCancelFullScreen) { 66 document.webkitCancelFullScreen(); 67 } else if (document.msExitFullscreen) { 68 document.msExitFullscreen(); 69 } else { 70 this._disablePseudoFullscreen(container); 71 } 72 } else { 73 if (options && options.pseudoFullscreen) { 74 this._enablePseudoFullscreen(container); 75 } else if (container.requestFullscreen) { 76 container.requestFullscreen(); 77 } else if (container.mozRequestFullScreen) { 78 container.mozRequestFullScreen(); 79 } else if (container.webkitRequestFullscreen) { 80 container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); 81 } else if (container.msRequestFullscreen) { 82 container.msRequestFullscreen(); 83 } else { 84 this._enablePseudoFullscreen(container); 85 } 86 } 87 88 }, 89 90 _enablePseudoFullscreen: function (container) { 91 L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen'); 92 this._setFullscreen(true); 93 this.fire('fullscreenchange'); 94 }, 95 96 _disablePseudoFullscreen: function (container) { 97 L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen'); 98 this._setFullscreen(false); 99 this.fire('fullscreenchange'); 100 }, 101 102 _setFullscreen: function(fullscreen) { 103 this._isFullscreen = fullscreen; 104 var container = this.getContainer(); 105 if (fullscreen) { 106 L.DomUtil.addClass(container, 'leaflet-fullscreen-on'); 107 } else { 108 L.DomUtil.removeClass(container, 'leaflet-fullscreen-on'); 109 } 110 this.invalidateSize(); 111 }, 112 113 _onFullscreenChange: function (e) { 114 var fullscreenElement = 115 document.fullscreenElement || 116 document.mozFullScreenElement || 117 document.webkitFullscreenElement || 118 document.msFullscreenElement; 119 120 if (fullscreenElement === this.getContainer() && !this._isFullscreen) { 121 this._setFullscreen(true); 122 this.fire('fullscreenchange'); 123 } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) { 124 this._setFullscreen(false); 125 this.fire('fullscreenchange'); 126 } 127 } 128 }); 129 130 L.Map.mergeOptions({ 131 fullscreenControl: false 132 }); 133 134 L.Map.addInitHook(function () { 135 if (this.options.fullscreenControl) { 136 this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl); 137 this.addControl(this.fullscreenControl); 138 } 139 140 var fullscreenchange; 141 142 if ('onfullscreenchange' in document) { 143 fullscreenchange = 'fullscreenchange'; 144 } else if ('onmozfullscreenchange' in document) { 145 fullscreenchange = 'mozfullscreenchange'; 146 } else if ('onwebkitfullscreenchange' in document) { 147 fullscreenchange = 'webkitfullscreenchange'; 148 } else if ('onmsfullscreenchange' in document) { 149 fullscreenchange = 'MSFullscreenChange'; 150 } 151 152 if (fullscreenchange) { 153 var onFullscreenChange = L.bind(this._onFullscreenChange, this); 154 155 this.whenReady(function () { 156 L.DomEvent.on(document, fullscreenchange, onFullscreenChange); 157 }); 158 159 this.on('unload', function () { 160 L.DomEvent.off(document, fullscreenchange, onFullscreenChange); 161 }); 162 } 163 }); 164 165 L.control.fullscreen = function (options) { 166 return new L.Control.Fullscreen(options); 167 }; 168}));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.