mirror of
https://github.com/netzmacht/contao-leaflet-libraries.git
synced 2025-11-28 19:13:54 +01:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a77d7b36a | ||
|
|
623fc7452b | ||
|
|
54feda21cd | ||
|
|
6e7cd514c1 | ||
|
|
8a15b79623 | ||
|
|
9c3618a521 | ||
|
|
471e89c789 | ||
|
|
0c35742117 | ||
|
|
a5cfd435fe | ||
|
|
461ac3544c | ||
|
|
b49da13abe |
@@ -12,12 +12,12 @@ Contao CMS.
|
||||
|
||||
This package contains following packages:
|
||||
|
||||
- [leaflet 0.7.5](http://leafletjs.com)
|
||||
- [Leaflet-providers 1.0.12](http://leaflet-extras.github.io/leaflet-providers)
|
||||
- [leaflet 0.7.7](http://leafletjs.com)
|
||||
- [Leaflet-providers 1.1.5](http://leaflet-extras.github.io/leaflet-providers)
|
||||
- [Leaflet.markercluster 0.4.0](https://github.com/Leaflet/Leaflet.markercluster)
|
||||
- [Leaflet-omnivore 0.3.2](https://github.com/mapbox/leaflet-omnivore)
|
||||
- [Leaflet.loading 0.1.15](https://github.com/ebrelsford/Leaflet.loading)
|
||||
- [Leaflet.Control.FullScreen 1.1.4](https://github.com/brunob/leaflet.fullscreen)
|
||||
- [Leaflet.loading 0.1.16](https://github.com/ebrelsford/Leaflet.loading)
|
||||
- [Leaflet.Control.FullScreen 1.3.0](https://github.com/brunob/leaflet.fullscreen)
|
||||
- [Leaflet Control Geocoder 1.0.0](https://github.com/perliedman/leaflet-control-geocoder)
|
||||
- [spin.js 2.0.2](http://fgnass.github.io/spin.js)
|
||||
|
||||
|
||||
@@ -1,64 +1,67 @@
|
||||
.leaflet-control-geocoder {
|
||||
border-radius: 4px;
|
||||
background: white;
|
||||
box-shadow: 0 1px 7px rgba(0,0,0,0.65);
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
line-height: 26px;
|
||||
overflow: hidden;
|
||||
min-width: 26px;
|
||||
min-height: 26px;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-geocoder {
|
||||
box-shadow: none;
|
||||
border: 2px solid rgba(0,0,0,0.2);
|
||||
background-clip: padding-box;
|
||||
line-height: 30px;
|
||||
min-width: 30px;
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder a, .leaflet-control-geocoder .leaflet-control-geocoder-icon {
|
||||
border-bottom: none;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder .leaflet-control-geocoder-alternatives a {
|
||||
width: inherit;
|
||||
height: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder a:hover, .leaflet-control-geocoder .leaflet-control-geocoder-icon:hover {
|
||||
border-bottom: none;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-form {
|
||||
display: inline;
|
||||
display: none;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-form input, .leaflet-control-geocoder-form ul, .leaflet-control-geocoder-error {
|
||||
border: 0;
|
||||
color: transparent;
|
||||
background: white;
|
||||
.leaflet-control-geocoder-expanded .leaflet-control-geocoder-form {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-form input {
|
||||
font-size: 16px;
|
||||
width: 0;
|
||||
transition: width 0.125s ease-in;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-geocoder-form input {
|
||||
font-size: 22px;
|
||||
font-size: 120%;
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
width: 246px;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-icon {
|
||||
border-radius: 4px;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
border: none;
|
||||
background-color: white;
|
||||
background-image: url(images/geocoder.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-geocoder-icon {
|
||||
margin-top: 2px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-throbber .leaflet-control-geocoder-icon {
|
||||
background-image: url(images/throbber.gif);
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-expanded input, .leaflet-control-geocoder-error {
|
||||
width: 226px;
|
||||
margin: 0 0 0 4px;
|
||||
padding: 0 0 0 4px;
|
||||
vertical-align: middle;
|
||||
color: #000;
|
||||
.leaflet-control-geocoder-form-no-error {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-form input:focus {
|
||||
@@ -68,73 +71,52 @@
|
||||
.leaflet-control-geocoder-form button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-form-no-error {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-error {
|
||||
margin-top: 8px;
|
||||
margin-left: 8px;
|
||||
display: block;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
ul.leaflet-control-geocoder-alternatives {
|
||||
width: 260px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
transition: height 0.125s ease-in;
|
||||
.leaflet-control-geocoder-alternatives {
|
||||
display: block;
|
||||
width: 272px;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-alternatives-minimized {
|
||||
width: 0 !important;
|
||||
display: none;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-alternatives li {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
padding: 5px 8px;
|
||||
text-overflow: ellipsis;
|
||||
border-bottom: 1px solid #eee;
|
||||
padding: 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-alternatives li a, .leaflet-control-geocoder-alternatives li a:hover {
|
||||
width: inherit;
|
||||
height: inherit;
|
||||
line-height: inherit;
|
||||
background: inherit;
|
||||
border-radius: inherit;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-alternatives li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-alternatives a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
padding: 6px 8px 16px 6px;
|
||||
font-size: 14px;
|
||||
line-height: 1;
|
||||
font-weight: bold;
|
||||
.leaflet-control-geocoder-alternatives li:hover, .leaflet-control-geocoder-selected {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.leaflet-touch .leaflet-control-geocoder-alternatives a {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-alternatives a:hover, .leaflet-control-geocoder-selected {
|
||||
background-color: #ddd;
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-address-detail {
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
|
||||
}
|
||||
|
||||
.leaflet-control-geocoder-address-context {
|
||||
color: #666;
|
||||
font-size: 12px;
|
||||
font-weight: lighter;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
||||
.leaflet-control-geocoder{background:#fff;box-shadow:0 1px 7px rgba(0,0,0,.65);-webkit-border-radius:4px;border-radius:4px;line-height:26px;overflow:hidden}.leaflet-touch .leaflet-control-geocoder{box-shadow:none;border:2px solid rgba(0,0,0,.2);background-clip:padding-box;line-height:30px}.leaflet-control-geocoder-form{display:inline}.leaflet-control-geocoder-error,.leaflet-control-geocoder-form input,.leaflet-control-geocoder-form ul{border:0;color:transparent;background:#fff}.leaflet-control-geocoder-form input{font-size:16px;width:0;transition:width .125s ease-in}.leaflet-touch .leaflet-control-geocoder-form input{font-size:22px}.leaflet-control-geocoder-icon{width:26px;height:26px;background-image:url('images/geocoder.png');background-repeat:no-repeat;background-position:center;float:right;cursor:pointer}.leaflet-touch .leaflet-control-geocoder-icon{margin-top:2px;width:30px}.leaflet-control-geocoder-throbber .leaflet-control-geocoder-icon{background-image:url('images/throbber.gif')}.leaflet-control-geocoder-error,.leaflet-control-geocoder-expanded input{width:226px;margin:0 0 0 4px;padding:0 0 0 4px;vertical-align:middle;color:#000}.leaflet-control-geocoder-form input:focus{outline:0}.leaflet-control-geocoder-form button,.leaflet-control-geocoder-form-no-error{display:none}.leaflet-control-geocoder-error{margin-top:8px;display:block;color:#444}ul.leaflet-control-geocoder-alternatives{width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;list-style:none;padding:0;transition:height .125s ease-in}.leaflet-control-geocoder-alternatives-minimized{width:0!important;height:0;overflow:hidden;margin:0;padding:0}.leaflet-control-geocoder-alternatives li{width:100%;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid #eee;padding:0}.leaflet-control-geocoder-alternatives li:last-child{border-bottom:none}.leaflet-control-geocoder-alternatives a{display:block;text-decoration:none;color:#000;padding:6px 8px 16px 6px;font-size:14px;line-height:1;font-weight:700}.leaflet-touch .leaflet-control-geocoder-alternatives a{font-size:18px}.leaflet-control-geocoder-alternatives a:hover,.leaflet-control-geocoder-selected{background-color:#ddd}.leaflet-control-geocoder-address-detail{font-size:12px;font-weight:400}.leaflet-control-geocoder-address-context{color:#666;font-size:12px;font-weight:lighter}
|
||||
.leaflet-control-geocoder .leaflet-control-geocoder-icon,.leaflet-control-geocoder .leaflet-control-geocoder-icon:hover,.leaflet-control-geocoder a,.leaflet-control-geocoder a:hover{border-bottom:none;display:inline-block}.leaflet-control-geocoder{border-radius:4px;background:#fff;min-width:26px;min-height:26px}.leaflet-touch .leaflet-control-geocoder{min-width:30px;min-height:30px}.leaflet-control-geocoder .leaflet-control-geocoder-alternatives a{width:inherit;height:inherit;line-height:inherit}.leaflet-control-geocoder-form{display:none;vertical-align:middle}.leaflet-control-geocoder-expanded .leaflet-control-geocoder-form{display:inline-block}.leaflet-control-geocoder-form button,.leaflet-control-geocoder-form-no-error{display:none}.leaflet-control-geocoder-form input{font-size:120%;border:0;background-color:transparent;width:246px}.leaflet-control-geocoder-icon{border-radius:4px;width:26px;height:26px;border:none;background-color:#fff;background-image:url('images/geocoder.png');background-repeat:no-repeat;background-position:center}.leaflet-touch .leaflet-control-geocoder-icon{width:30px;height:30px}.leaflet-control-geocoder-throbber .leaflet-control-geocoder-icon{background-image:url('images/throbber.gif')}.leaflet-control-geocoder-form input:focus{outline:0}.leaflet-control-geocoder-error{margin-top:8px;margin-left:8px;display:block;color:#444}.leaflet-control-geocoder-alternatives{display:block;width:272px;list-style:none;padding:0;margin:0}.leaflet-control-geocoder-alternatives-minimized{display:none;height:0}.leaflet-control-geocoder-alternatives li{white-space:nowrap;display:block;overflow:hidden;padding:5px 8px;text-overflow:ellipsis;border-bottom:1px solid #ccc;cursor:pointer}.leaflet-control-geocoder-alternatives li a,.leaflet-control-geocoder-alternatives li a:hover{width:inherit;height:inherit;line-height:inherit;background:inherit;border-radius:inherit;text-align:left}.leaflet-control-geocoder-alternatives li:last-child{border-bottom:none}.leaflet-control-geocoder-alternatives li:hover,.leaflet-control-geocoder-selected{background-color:#f5f5f5}.leaflet-control-geocoder-address-context{color:#666}
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 466 B After Width: | Height: | Size: 490 B |
@@ -1,4 +1,8 @@
|
||||
.leaflet-control-zoom-fullscreen { background-image: url(icon-fullscreen.png); }
|
||||
.leaflet-retina .leaflet-control-zoom-fullscreen { background-image: url(icon-fullscreen-2x.png); background-size: 26px 26px; }
|
||||
.fullscreen-icon { background-image: url(icon-fullscreen.png); }
|
||||
.leaflet-retina .fullscreen-icon { background-image: url(icon-fullscreen-2x.png); background-size: 26px 26px; }
|
||||
/* one selector per rule as explained here : http://www.sitepoint.com/html5-full-screen-api/ */
|
||||
.leaflet-container:-webkit-full-screen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
.leaflet-container:-ms-fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
.leaflet-container:full-screen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
.leaflet-container:fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
.leaflet-pseudo-fullscreen { position: fixed !important; width: 100% !important; height: 100% !important; top: 0px !important; left: 0px !important; z-index: 99999; }
|
||||
95
assets/leaflet-fullscreen/Control.FullScreen.js
vendored
95
assets/leaflet-fullscreen/Control.FullScreen.js
vendored
@@ -1,15 +1,17 @@
|
||||
(function() {
|
||||
(function () {
|
||||
|
||||
L.Control.FullScreen = L.Control.extend({
|
||||
options: {
|
||||
position: 'topleft',
|
||||
title: 'Full Screen',
|
||||
titleCancel: 'Exit Full Screen',
|
||||
forceSeparateButton: false,
|
||||
forcePseudoFullscreen: false
|
||||
forcePseudoFullscreen: false,
|
||||
fullscreenElement: false
|
||||
},
|
||||
|
||||
onAdd: function (map) {
|
||||
var className = 'leaflet-control-zoom-fullscreen', container;
|
||||
var className = 'leaflet-control-zoom-fullscreen', container, content = '';
|
||||
|
||||
if (map.zoomControl && !this.options.forceSeparateButton) {
|
||||
container = map.zoomControl._container;
|
||||
@@ -17,20 +19,29 @@ L.Control.FullScreen = L.Control.extend({
|
||||
container = L.DomUtil.create('div', 'leaflet-bar');
|
||||
}
|
||||
|
||||
this._createButton(this.options.title, className, container, this.toggleFullScreen, this);
|
||||
if (this.options.content) {
|
||||
content = this.options.content;
|
||||
} else {
|
||||
className += ' fullscreen-icon';
|
||||
}
|
||||
|
||||
this._createButton(this.options.title, className, content, container, this.toggleFullScreen, this);
|
||||
|
||||
this._map.on('enterFullscreen exitFullscreen', this._toggleTitle, this);
|
||||
|
||||
return container;
|
||||
},
|
||||
|
||||
_createButton: function (title, className, container, fn, context) {
|
||||
var link = L.DomUtil.create('a', className, container);
|
||||
link.href = '#';
|
||||
link.title = title;
|
||||
_createButton: function (title, className, content, container, fn, context) {
|
||||
this.link = L.DomUtil.create('a', className, container);
|
||||
this.link.href = '#';
|
||||
this.link.title = title;
|
||||
this.link.innerHTML = content;
|
||||
|
||||
L.DomEvent
|
||||
.addListener(link, 'click', L.DomEvent.stopPropagation)
|
||||
.addListener(link, 'click', L.DomEvent.preventDefault)
|
||||
.addListener(link, 'click', fn, context);
|
||||
.addListener(this.link, 'click', L.DomEvent.stopPropagation)
|
||||
.addListener(this.link, 'click', L.DomEvent.preventDefault)
|
||||
.addListener(this.link, 'click', fn, context);
|
||||
|
||||
L.DomEvent
|
||||
.addListener(container, fullScreenApi.fullScreenEventName, L.DomEvent.stopPropagation)
|
||||
@@ -42,7 +53,7 @@ L.Control.FullScreen = L.Control.extend({
|
||||
.addListener(document, fullScreenApi.fullScreenEventName, L.DomEvent.preventDefault)
|
||||
.addListener(document, fullScreenApi.fullScreenEventName, this._handleEscKey, context);
|
||||
|
||||
return link;
|
||||
return this.link;
|
||||
},
|
||||
|
||||
toggleFullScreen: function () {
|
||||
@@ -50,7 +61,7 @@ L.Control.FullScreen = L.Control.extend({
|
||||
map._exitFired = false;
|
||||
if (map._isFullscreen) {
|
||||
if (fullScreenApi.supportsFullScreen && !this.options.forcePseudoFullscreen) {
|
||||
fullScreenApi.cancelFullScreen(map._container);
|
||||
fullScreenApi.cancelFullScreen(this.options.fullscreenElement ? this.options.fullscreenElement : map._container);
|
||||
} else {
|
||||
L.DomUtil.removeClass(map._container, 'leaflet-pseudo-fullscreen');
|
||||
}
|
||||
@@ -61,7 +72,7 @@ L.Control.FullScreen = L.Control.extend({
|
||||
}
|
||||
else {
|
||||
if (fullScreenApi.supportsFullScreen && !this.options.forcePseudoFullscreen) {
|
||||
fullScreenApi.requestFullScreen(map._container);
|
||||
fullScreenApi.requestFullScreen(this.options.fullscreenElement ? this.options.fullscreenElement : map._container);
|
||||
} else {
|
||||
L.DomUtil.addClass(map._container, 'leaflet-pseudo-fullscreen');
|
||||
}
|
||||
@@ -71,6 +82,10 @@ L.Control.FullScreen = L.Control.extend({
|
||||
}
|
||||
},
|
||||
|
||||
_toggleTitle: function () {
|
||||
this.link.title = this._map._isFullscreen ? this.options.title : this.options.titleCancel;
|
||||
},
|
||||
|
||||
_handleEscKey: function () {
|
||||
var map = this._map;
|
||||
if (!fullScreenApi.isFullScreen(map) && !map._exitFired) {
|
||||
@@ -104,9 +119,9 @@ source : http://johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugi
|
||||
var
|
||||
fullScreenApi = {
|
||||
supportsFullScreen: false,
|
||||
isFullScreen: function() { return false; },
|
||||
requestFullScreen: function() {},
|
||||
cancelFullScreen: function() {},
|
||||
isFullScreen: function () { return false; },
|
||||
requestFullScreen: function () {},
|
||||
cancelFullScreen: function () {},
|
||||
fullScreenEventName: '',
|
||||
prefix: ''
|
||||
},
|
||||
@@ -117,40 +132,64 @@ source : http://johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugi
|
||||
fullScreenApi.supportsFullScreen = true;
|
||||
} else {
|
||||
// check for fullscreen support by vendor prefix
|
||||
for (var i = 0, il = browserPrefixes.length; i < il; i++ ) {
|
||||
for (var i = 0, il = browserPrefixes.length; i < il; i++) {
|
||||
fullScreenApi.prefix = browserPrefixes[i];
|
||||
if (typeof document[fullScreenApi.prefix + 'CancelFullScreen' ] !== 'undefined' ) {
|
||||
if (typeof document[fullScreenApi.prefix + 'CancelFullScreen'] !== 'undefined') {
|
||||
fullScreenApi.supportsFullScreen = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (typeof document['msExitFullscreen'] !== 'undefined') {
|
||||
fullScreenApi.prefix = 'ms';
|
||||
fullScreenApi.supportsFullScreen = true;
|
||||
}
|
||||
}
|
||||
|
||||
// update methods to do something useful
|
||||
if (fullScreenApi.supportsFullScreen) {
|
||||
fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';
|
||||
fullScreenApi.isFullScreen = function() {
|
||||
switch (this.prefix) {
|
||||
if (fullScreenApi.prefix === 'ms') {
|
||||
fullScreenApi.fullScreenEventName = 'MSFullscreenChange';
|
||||
} else {
|
||||
fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';
|
||||
}
|
||||
fullScreenApi.isFullScreen = function () {
|
||||
switch (this.prefix) {
|
||||
case '':
|
||||
return document.fullScreen;
|
||||
case 'webkit':
|
||||
return document.webkitIsFullScreen;
|
||||
case 'ms':
|
||||
return document.msFullscreenElement;
|
||||
default:
|
||||
return document[this.prefix + 'FullScreen'];
|
||||
}
|
||||
};
|
||||
fullScreenApi.requestFullScreen = function(el) {
|
||||
return (this.prefix === '') ? el.requestFullscreen() : el[this.prefix + 'RequestFullScreen']();
|
||||
fullScreenApi.requestFullScreen = function (el) {
|
||||
switch (this.prefix) {
|
||||
case '':
|
||||
return el.requestFullscreen();
|
||||
case 'ms':
|
||||
return el.msRequestFullscreen();
|
||||
default:
|
||||
return el[this.prefix + 'RequestFullScreen']();
|
||||
}
|
||||
};
|
||||
fullScreenApi.cancelFullScreen = function(el) {
|
||||
return (this.prefix === '') ? document.exitFullscreen() : document[this.prefix + 'CancelFullScreen']();
|
||||
fullScreenApi.cancelFullScreen = function () {
|
||||
switch (this.prefix) {
|
||||
case '':
|
||||
return document.exitFullscreen();
|
||||
case 'ms':
|
||||
return document.msExitFullscreen();
|
||||
default:
|
||||
return document[this.prefix + 'CancelFullScreen']();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// jQuery plugin
|
||||
if (typeof jQuery !== 'undefined') {
|
||||
jQuery.fn.requestFullScreen = function() {
|
||||
return this.each(function() {
|
||||
jQuery.fn.requestFullScreen = function () {
|
||||
return this.each(function () {
|
||||
var el = jQuery(this);
|
||||
if (fullScreenApi.supportsFullScreen) {
|
||||
fullScreenApi.requestFullScreen(el);
|
||||
|
||||
@@ -1 +1 @@
|
||||
.leaflet-control-zoom-fullscreen{background-image:url('icon-fullscreen.png')}.leaflet-retina .leaflet-control-zoom-fullscreen{background-image:url('icon-fullscreen-2x.png');background-size:26px 26px}.leaflet-container:-webkit-full-screen{width:100%!important;height:100%!important;z-index:99999}.leaflet-pseudo-fullscreen{position:fixed!important;width:100%!important;height:100%!important;top:0!important;left:0!important;z-index:99999}
|
||||
.leaflet-container:full-screen,.leaflet-pseudo-fullscreen{width:100%!important;height:100%!important;z-index:99999}.fullscreen-icon{background-image:url('icon-fullscreen.png')}.leaflet-retina .fullscreen-icon{background-image:url('icon-fullscreen-2x.png');background-size:26px 26px}.leaflet-container:-webkit-full-screen{width:100%!important;height:100%!important;z-index:99999}.leaflet-container:-ms-fullscreen{width:100%!important;height:100%!important;z-index:99999}.leaflet-container:fullscreen{width:100%!important;height:100%!important;z-index:99999}.leaflet-pseudo-fullscreen{position:fixed!important;top:0!important;left:0!important}
|
||||
@@ -1 +1 @@
|
||||
!function(){L.Control.FullScreen=L.Control.extend({options:{position:"topleft",title:"Full Screen",forceSeparateButton:!1,forcePseudoFullscreen:!1},onAdd:function(e){var n,t="leaflet-control-zoom-fullscreen";return n=e.zoomControl&&!this.options.forceSeparateButton?e.zoomControl._container:L.DomUtil.create("div","leaflet-bar"),this._createButton(this.options.title,t,n,this.toggleFullScreen,this),n},_createButton:function(n,t,l,r,o){var u=L.DomUtil.create("a",t,l);return u.href="#",u.title=n,L.DomEvent.addListener(u,"click",L.DomEvent.stopPropagation).addListener(u,"click",L.DomEvent.preventDefault).addListener(u,"click",r,o),L.DomEvent.addListener(l,e.fullScreenEventName,L.DomEvent.stopPropagation).addListener(l,e.fullScreenEventName,L.DomEvent.preventDefault).addListener(l,e.fullScreenEventName,this._handleEscKey,o),L.DomEvent.addListener(document,e.fullScreenEventName,L.DomEvent.stopPropagation).addListener(document,e.fullScreenEventName,L.DomEvent.preventDefault).addListener(document,e.fullScreenEventName,this._handleEscKey,o),u},toggleFullScreen:function(){var n=this._map;n._exitFired=!1,n._isFullscreen?(e.supportsFullScreen&&!this.options.forcePseudoFullscreen?e.cancelFullScreen(n._container):L.DomUtil.removeClass(n._container,"leaflet-pseudo-fullscreen"),n.invalidateSize(),n.fire("exitFullscreen"),n._exitFired=!0,n._isFullscreen=!1):(e.supportsFullScreen&&!this.options.forcePseudoFullscreen?e.requestFullScreen(n._container):L.DomUtil.addClass(n._container,"leaflet-pseudo-fullscreen"),n.invalidateSize(),n.fire("enterFullscreen"),n._isFullscreen=!0)},_handleEscKey:function(){var n=this._map;e.isFullScreen(n)||n._exitFired||(n.fire("exitFullscreen"),n._exitFired=!0,n._isFullscreen=!1)}}),L.Map.addInitHook(function(){this.options.fullscreenControl&&(this.fullscreenControl=L.control.fullscreen(this.options.fullscreenControlOptions),this.addControl(this.fullscreenControl))}),L.control.fullscreen=function(e){return new L.Control.FullScreen(e)};var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",prefix:""},n="webkit moz o ms khtml".split(" ");if("undefined"!=typeof document.exitFullscreen)e.supportsFullScreen=!0;else for(var t=0,l=n.length;l>t;t++)if(e.prefix=n[t],"undefined"!=typeof document[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}e.supportsFullScreen&&(e.fullScreenEventName=e.prefix+"fullscreenchange",e.isFullScreen=function(){switch(this.prefix){case"":return document.fullScreen;case"webkit":return document.webkitIsFullScreen;default:return document[this.prefix+"FullScreen"]}},e.requestFullScreen=function(e){return""===this.prefix?e.requestFullscreen():e[this.prefix+"RequestFullScreen"]()},e.cancelFullScreen=function(){return""===this.prefix?document.exitFullscreen():document[this.prefix+"CancelFullScreen"]()}),"undefined"!=typeof jQuery&&(jQuery.fn.requestFullScreen=function(){return this.each(function(){var n=jQuery(this);e.supportsFullScreen&&e.requestFullScreen(n)})}),window.fullScreenApi=e}();
|
||||
!function(){L.Control.FullScreen=L.Control.extend({options:{position:"topleft",title:"Full Screen",titleCancel:"Exit Full Screen",forceSeparateButton:!1,forcePseudoFullscreen:!1,fullscreenElement:!1},onAdd:function(e){var n,t="leaflet-control-zoom-fullscreen",l="";return n=e.zoomControl&&!this.options.forceSeparateButton?e.zoomControl._container:L.DomUtil.create("div","leaflet-bar"),this.options.content?l=this.options.content:t+=" fullscreen-icon",this._createButton(this.options.title,t,l,n,this.toggleFullScreen,this),this._map.on("enterFullscreen exitFullscreen",this._toggleTitle,this),n},_createButton:function(n,t,l,r,i,s){return this.link=L.DomUtil.create("a",t,r),this.link.href="#",this.link.title=n,this.link.innerHTML=l,L.DomEvent.addListener(this.link,"click",L.DomEvent.stopPropagation).addListener(this.link,"click",L.DomEvent.preventDefault).addListener(this.link,"click",i,s),L.DomEvent.addListener(r,e.fullScreenEventName,L.DomEvent.stopPropagation).addListener(r,e.fullScreenEventName,L.DomEvent.preventDefault).addListener(r,e.fullScreenEventName,this._handleEscKey,s),L.DomEvent.addListener(document,e.fullScreenEventName,L.DomEvent.stopPropagation).addListener(document,e.fullScreenEventName,L.DomEvent.preventDefault).addListener(document,e.fullScreenEventName,this._handleEscKey,s),this.link},toggleFullScreen:function(){var n=this._map;n._exitFired=!1,n._isFullscreen?(e.supportsFullScreen&&!this.options.forcePseudoFullscreen?e.cancelFullScreen(this.options.fullscreenElement?this.options.fullscreenElement:n._container):L.DomUtil.removeClass(n._container,"leaflet-pseudo-fullscreen"),n.invalidateSize(),n.fire("exitFullscreen"),n._exitFired=!0,n._isFullscreen=!1):(e.supportsFullScreen&&!this.options.forcePseudoFullscreen?e.requestFullScreen(this.options.fullscreenElement?this.options.fullscreenElement:n._container):L.DomUtil.addClass(n._container,"leaflet-pseudo-fullscreen"),n.invalidateSize(),n.fire("enterFullscreen"),n._isFullscreen=!0)},_toggleTitle:function(){this.link.title=this._map._isFullscreen?this.options.title:this.options.titleCancel},_handleEscKey:function(){var n=this._map;e.isFullScreen(n)||n._exitFired||(n.fire("exitFullscreen"),n._exitFired=!0,n._isFullscreen=!1)}}),L.Map.addInitHook(function(){this.options.fullscreenControl&&(this.fullscreenControl=L.control.fullscreen(this.options.fullscreenControlOptions),this.addControl(this.fullscreenControl))}),L.control.fullscreen=function(e){return new L.Control.FullScreen(e)};var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",prefix:""},n="webkit moz o ms khtml".split(" ");if("undefined"!=typeof document.exitFullscreen)e.supportsFullScreen=!0;else{for(var t=0,l=n.length;t<l;t++)if(e.prefix=n[t],"undefined"!=typeof document[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}"undefined"!=typeof document.msExitFullscreen&&(e.prefix="ms",e.supportsFullScreen=!0)}e.supportsFullScreen&&("ms"===e.prefix?e.fullScreenEventName="MSFullscreenChange":e.fullScreenEventName=e.prefix+"fullscreenchange",e.isFullScreen=function(){switch(this.prefix){case"":return document.fullScreen;case"webkit":return document.webkitIsFullScreen;case"ms":return document.msFullscreenElement;default:return document[this.prefix+"FullScreen"]}},e.requestFullScreen=function(e){switch(this.prefix){case"":return e.requestFullscreen();case"ms":return e.msRequestFullscreen();default:return e[this.prefix+"RequestFullScreen"]()}},e.cancelFullScreen=function(){switch(this.prefix){case"":return document.exitFullscreen();case"ms":return document.msExitFullscreen();default:return document[this.prefix+"CancelFullScreen"]()}}),"undefined"!=typeof jQuery&&(jQuery.fn.requestFullScreen=function(){return this.each(function(){var n=jQuery(this);e.supportsFullScreen&&e.requestFullScreen(n)})}),window.fullScreenApi=e}();
|
||||
@@ -1,22 +1,19 @@
|
||||
Copyright (c) 2013, Bruno Bergot
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are
|
||||
permitted provided that the following conditions are met:
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
conditions and the following disclaimer.
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
of conditions and the following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
@@ -44,8 +44,11 @@ __Events and options__:
|
||||
L.control.fullscreen({
|
||||
position: 'topleft', // change the position of the button can be topleft, topright, bottomright or bottomleft, defaut topleft
|
||||
title: 'Show me the fullscreen !', // change the title of the button, default Full Screen
|
||||
titleCancel: 'Exit fullscreen mode' // change the title of the button when fullscreen is on, default Exit Full Screen
|
||||
content: null // change the content of the button, can be HTML, default null
|
||||
forceSeparateButton: true, // force seperate button to detach from zoom buttons, default false
|
||||
forcePseudoFullscreen: true // force use of pseudo full screen even if full screen API is available, default false
|
||||
forcePseudoFullscreen: true, // force use of pseudo full screen even if full screen API is available, default false
|
||||
fullscreenElement: false // Dom element to render in full screen, false by default, fallback to map._container
|
||||
}).addTo(map);
|
||||
|
||||
// events are fired when entering or exiting fullscreen.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"name": "leaflet.fullscreen",
|
||||
"version": "1.1.4",
|
||||
"version": "1.4.2",
|
||||
"homepage": "https://github.com/brunob/leaflet.fullscreen",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
"brunob <brunobergot@gmail.com>"
|
||||
],
|
||||
@@ -12,13 +13,15 @@
|
||||
"icon-fullscreen.png",
|
||||
"icon-fullscreen-2x.png"
|
||||
],
|
||||
"devDependencies": {
|
||||
"eslint": "2.3.0"
|
||||
},
|
||||
"keywords": [
|
||||
"leaflet",
|
||||
"plugins",
|
||||
"maps",
|
||||
"fullscreen"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 215 B |
Binary file not shown.
|
Before Width: | Height: | Size: 153 B After Width: | Height: | Size: 139 B |
@@ -3,17 +3,18 @@
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<title>Leaflet.Control.FullScreen Demo</title>
|
||||
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7/leaflet.css" />
|
||||
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css" />
|
||||
<style type="text/css">
|
||||
#map { width: 700px; height: 433px; }
|
||||
.leaflet-control-zoom-fullscreen { background-image: url(icon-fullscreen.png); }
|
||||
/* on selector per rule as explained here : http://www.sitepoint.com/html5-full-screen-api/ */
|
||||
.fullscreen-icon { background-image: url(icon-fullscreen.png); }
|
||||
/* one selector per rule as explained here : http://www.sitepoint.com/html5-full-screen-api/ */
|
||||
#map:-webkit-full-screen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
#map:-moz-full-screen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
#map:-ms-fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
#map:full-screen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
#map:fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; }
|
||||
.leaflet-pseudo-fullscreen { position: fixed !important; width: 100% !important; height: 100% !important; top: 0px !important; left: 0px !important; z-index: 99999; }
|
||||
</style>
|
||||
<script src="http://cdn.leafletjs.com/leaflet-0.7/leaflet.js"></script>
|
||||
<script src="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.js"></script>
|
||||
<script src="Control.FullScreen.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
@@ -21,9 +22,10 @@
|
||||
<div id="map"></div>
|
||||
|
||||
<script>
|
||||
var base = new L.TileLayer('http://{s}.www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png', {
|
||||
maxZoom: 18,
|
||||
attribution: '© <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'
|
||||
var base = new L.TileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {
|
||||
maxZoom: 19,
|
||||
subdomains: 'abcd',
|
||||
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> © <a href="http://cartodb.com/attributions">CartoDB</a>'
|
||||
});
|
||||
|
||||
var map = new L.Map('map', {
|
||||
@@ -32,7 +34,8 @@
|
||||
zoom: 5,
|
||||
fullscreenControl: true,
|
||||
fullscreenControlOptions: { // optional
|
||||
title:"Show me the fullscreen !"
|
||||
title:"Show me the fullscreen !",
|
||||
titleCancel:"Exit fullscreen mode"
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "leaflet.fullscreen",
|
||||
"version": "1.1.4",
|
||||
"version": "1.4.2",
|
||||
"description": "Simple plugin for Leaflet that adds fullscreen button to your maps.",
|
||||
"main": "Control.FullScreen.js",
|
||||
"scripts": {
|
||||
@@ -17,7 +17,7 @@
|
||||
"fullscreen"
|
||||
],
|
||||
"devDependencies": {
|
||||
"jshint": "2.5.0"
|
||||
"eslint": "2.3.0"
|
||||
},
|
||||
"author": "b_b",
|
||||
"license": "MIT License",
|
||||
|
||||
@@ -13,17 +13,18 @@
|
||||
function defineLeafletLoading(L) {
|
||||
L.Control.Loading = L.Control.extend({
|
||||
options: {
|
||||
delayIndicator: null,
|
||||
position: 'topleft',
|
||||
separate: false,
|
||||
zoomControl: null,
|
||||
spinjs: false,
|
||||
spin: {
|
||||
lines: 7,
|
||||
length: 3,
|
||||
width: 3,
|
||||
radius: 5,
|
||||
rotate: 13,
|
||||
top: "83%"
|
||||
lines: 7,
|
||||
length: 3,
|
||||
width: 3,
|
||||
radius: 5,
|
||||
rotate: 13,
|
||||
top: "83%"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -74,8 +75,8 @@
|
||||
}
|
||||
this._indicator = L.DomUtil.create('a', classes, container);
|
||||
if (this.options.spinjs) {
|
||||
this._spinner = new Spinner(this.options.spin).spin();
|
||||
this._indicator.appendChild(this._spinner.el);
|
||||
this._spinner = new Spinner(this.options.spin).spin();
|
||||
this._indicator.appendChild(this._spinner.el);
|
||||
}
|
||||
return container;
|
||||
},
|
||||
@@ -103,12 +104,32 @@
|
||||
|
||||
addLoader: function(id) {
|
||||
this._dataLoaders[id] = true;
|
||||
this.updateIndicator();
|
||||
if (this.options.delayIndicator && !this.delayIndicatorTimeout) {
|
||||
// If we are delaying showing the indicator and we're not
|
||||
// already waiting for that delay, set up a timeout.
|
||||
var that = this;
|
||||
this.delayIndicatorTimeout = setTimeout(function () {
|
||||
that.updateIndicator();
|
||||
that.delayIndicatorTimeout = null;
|
||||
}, this.options.delayIndicator);
|
||||
}
|
||||
else {
|
||||
// Otherwise show the indicator immediately
|
||||
this.updateIndicator();
|
||||
}
|
||||
},
|
||||
|
||||
removeLoader: function(id) {
|
||||
delete this._dataLoaders[id];
|
||||
this.updateIndicator();
|
||||
|
||||
// If removing this loader means we're in no danger of loading,
|
||||
// clear the timeout. This prevents old delays from instantly
|
||||
// triggering the indicator.
|
||||
if (this.options.delayIndicator && this.delayIndicatorTimeout && !this.isLoading()) {
|
||||
clearTimeout(this.delayIndicatorTimeout);
|
||||
this.delayIndicatorTimeout = null;
|
||||
}
|
||||
},
|
||||
|
||||
updateIndicator: function() {
|
||||
@@ -183,6 +204,26 @@
|
||||
this.addLoader(this.getEventId(e));
|
||||
},
|
||||
|
||||
_handleBaseLayerChange: function (e) {
|
||||
var that = this;
|
||||
|
||||
// Check for a target 'layer' that contains multiple layers, such as
|
||||
// L.LayerGroup. This will happen if you have an L.LayerGroup in an
|
||||
// L.Control.Layers.
|
||||
if (e.layer && e.layer.eachLayer && typeof e.layer.eachLayer === 'function') {
|
||||
e.layer.eachLayer(function (layer) {
|
||||
that._handleBaseLayerChange({ layer: layer });
|
||||
});
|
||||
}
|
||||
else {
|
||||
// If we're changing to a canvas layer, don't handle loading
|
||||
// as canvas layers will not fire load events.
|
||||
if (!(L.TileLayer.Canvas && e.layer instanceof L.TileLayer.Canvas)) {
|
||||
that._handleLoading(e);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_handleLoad: function(e) {
|
||||
this.removeLoader(this.getEventId(e));
|
||||
},
|
||||
@@ -212,6 +253,21 @@
|
||||
}
|
||||
},
|
||||
|
||||
_layerRemove: function(e) {
|
||||
if (!e.layer || !e.layer.off) return;
|
||||
try {
|
||||
e.layer.off({
|
||||
loading: this._handleLoading,
|
||||
load: this._handleLoad
|
||||
}, this);
|
||||
}
|
||||
catch (exception) {
|
||||
console.warn('L.Control.Loading: Tried and failed to remove ' +
|
||||
'event handlers from layer', e.layer);
|
||||
console.warn('L.Control.Loading: Full details', exception);
|
||||
}
|
||||
},
|
||||
|
||||
_addLayerListeners: function(map) {
|
||||
// Add listeners for begin and end of load to any layers already on the
|
||||
// map
|
||||
@@ -226,6 +282,7 @@
|
||||
// When a layer is added to the map, add listeners for begin and end
|
||||
// of load
|
||||
map.on('layeradd', this._layerAdd, this);
|
||||
map.on('layerremove', this._layerRemove, this);
|
||||
},
|
||||
|
||||
_removeLayerListeners: function(map) {
|
||||
@@ -238,8 +295,9 @@
|
||||
}, this);
|
||||
}, this);
|
||||
|
||||
// Remove layeradd listener from map
|
||||
// Remove layeradd/layerremove listener from map
|
||||
map.off('layeradd', this._layerAdd, this);
|
||||
map.off('layerremove', this._layerRemove, this);
|
||||
},
|
||||
|
||||
_addMapListeners: function(map) {
|
||||
@@ -247,6 +305,7 @@
|
||||
// events, eg, for AJAX calls that affect the map but will not be
|
||||
// reflected in the above layer events.
|
||||
map.on({
|
||||
baselayerchange: this._handleBaseLayerChange,
|
||||
dataloading: this._handleLoading,
|
||||
dataload: this._handleLoad,
|
||||
layerremove: this._handleLoad
|
||||
@@ -255,6 +314,7 @@
|
||||
|
||||
_removeMapListeners: function(map) {
|
||||
map.off({
|
||||
baselayerchange: this._handleBaseLayerChange,
|
||||
dataloading: this._handleLoading,
|
||||
dataload: this._handleLoad,
|
||||
layerremove: this._handleLoad
|
||||
|
||||
File diff suppressed because one or more lines are too long
46
assets/leaflet-providers/CHANGELOG.md
Normal file
46
assets/leaflet-providers/CHANGELOG.md
Normal file
@@ -0,0 +1,46 @@
|
||||
|
||||
# Leaflet-providers changelog
|
||||
|
||||
## 1.1.14 (2016-07-15)
|
||||
- Remove MapQuest, fixes #219
|
||||
- Accidently skipped v1.1.12 and v1.1.13
|
||||
|
||||
## 1.1.11 (2016-06-04)
|
||||
- Added protocol relativity to OSM FR, OSM HOT and Hydda providers (#214, #215).
|
||||
|
||||
## 1.1.9 (2016-03-23)
|
||||
- Re-added HERE layers #209, discussion in #206.
|
||||
|
||||
## 1.1.8 (2016-03-22)
|
||||
- Removed HERE layers #206
|
||||
|
||||
## 1.1.7 (2015-12-16)
|
||||
- Removed Acetate tile layers #198
|
||||
|
||||
## 1.1.6 (2015-11-03)
|
||||
- Removed most of the NLS layers per NLS request #193, fixes #178
|
||||
- Added new variants to the HERE provider #183 by [@andreaswc](https://github.com/andreaswc)
|
||||
- Added some tests to make sure all the placeholders in the url template are replaced #188
|
||||
|
||||
## 1.1.5 (2015-10-01)
|
||||
- Improvements for the NLS layers #182 by [@tomhughes](https://github.com/tomhughes)
|
||||
- Check for valid bounds before fitting the preview map to undefined (fixes #185)
|
||||
- Add bounds for FreeMapSK (fixes #184)
|
||||
- Fix Stamen layers with `.jpg` extension (#187, fixes #184)
|
||||
|
||||
## 1.1.4 (2015-09-27)
|
||||
- Only include the interesting files in the npm package #180
|
||||
- Add GSGS_Ireland to NLS provider with `tms:true` to invert y-axis #181
|
||||
|
||||
## 1.1.3 (2015-09-26)
|
||||
- Add various historical layers of the Natioanal library of Scotland (NLS) #179
|
||||
- Add a page to visually check bounds #179
|
||||
|
||||
## 1.1.2 (2015-09-05)
|
||||
- Add CartoDB labels-only styles #170 by [@almccon](https://github.com/almccon)
|
||||
- Implement commonjs module #172
|
||||
- Added retina URL option #177, [@routexl](https://github.com/routexl)
|
||||
|
||||
## 1.1.1 (2015-06-22)
|
||||
- Update Mapbox API to v4 #167 by [@gutenye](https://github.com/gutenye)
|
||||
- Started maintaining a changelog in CHANGELOG.md.
|
||||
@@ -1,6 +1,6 @@
|
||||
Leaflet-providers
|
||||
=================
|
||||
An extension to [Leaflet](http://leafletjs.com/) that contains configurations for various free tile providers.
|
||||
An extension to [Leaflet](http://leafletjs.com/) that contains configurations for various free<sup>[1](#what-is-free)</sup> tile providers.
|
||||
|
||||
# Usage
|
||||
Leaflet-providers [providers](#providers) are refered to with a `provider[.<variant>]`-string. Let's say you want to add the nice [Watercolor](http://maps.stamen.com/#watercolor/) style from Stamen to your map, you pass `Stamen.Watercolor` to the `L.tileLayer.provider`-constructor, which will return a [L.TileLayer](http://leafletjs.com/reference.html#tilelayer) instance for Stamens Watercolor tile layer.
|
||||
@@ -15,13 +15,17 @@ L.tileLayer.provider('Stamen.Watercolor').addTo(map);
|
||||
Leaflet-providers tries to use `https://` if the page uses `https://` and the provider supports it.
|
||||
You can force the use of `http://` by passing `force_http: true` in the options argument.
|
||||
|
||||
## Retina tiles
|
||||
|
||||
Some providers have retina tiles for which the URL only needs to be slightly adjusted, e.g. `-----@2x.png`. For this, add the retina option in the URL, e.g. `-----{retina}.png`, and set a retina value in the options, e.g. `retina: '@2x'`. If Leaflet detects a retina screen (`L.Browser.retina`), the retina option passed to the tileLayer is set to the value supplied, otherwise it's replaced by an empty string.
|
||||
|
||||
# Providers
|
||||
|
||||
Leaflet-providers provides tile layers from different providers, including *OpenStreetMap*, *MapQuestOpen*, *Stamen*, *Esri* and *OpenWeatherMap*. The full listing of free to use layers can be [previewed](http://leaflet-extras.github.io/leaflet-providers/preview/index.html). The page will show you the name to use with `leaflet-providers.js` and the code to use it without dependencies.
|
||||
Leaflet-providers provides tile layers from different providers, including *OpenStreetMap*, *Stamen*, *Esri* and *OpenWeatherMap*. The full listing of free to use layers can be [previewed](http://leaflet-extras.github.io/leaflet-providers/preview/index.html). The page will show you the name to use with `leaflet-providers.js` and the code to use it without dependencies.
|
||||
|
||||
## Providers requiring registration
|
||||
|
||||
In addition to the providers you are free to use, we support some layers which require registration.
|
||||
In addition to the providers you are free<b id="what-is-free">1</b> to use, we support some layers which require registration.
|
||||
|
||||
### HERE (formerly Nokia).
|
||||
|
||||
@@ -38,9 +42,9 @@ L.tileLayer.provider('HERE.terrainDay', {
|
||||
|
||||
### Mapbox
|
||||
|
||||
In order to use Mapbox maps, you must [register](https://tiles.mapbox.com/signup). If your user name is `YourName` and your map is called `MyMap` you can add it with:
|
||||
In order to use Mapbox maps, you must [register](https://tiles.mapbox.com/signup). You can get map ID and ACCESS_TOKEN from [Mapbox projects](https://www.mapbox.com/projects):
|
||||
```JavaScript
|
||||
L.tileLayer.provider('MapBox.YourName.MyMap');
|
||||
L.tileLayer.provider('MapBox', {id: 'ID', accessToken: 'ACCESS_TOKEN'}).addTo(map);
|
||||
```
|
||||
|
||||
### Esri/ArcGIS
|
||||
@@ -52,3 +56,8 @@ In order to use ArcGIS maps, you must [register](https://developers.arcgis.com/e
|
||||
# Attribution
|
||||
|
||||
This work was inspired from <https://gist.github.com/1804938>, and originally created by [Stefan Seelmann](https://github.com/seelmann).
|
||||
|
||||
### What do we mean by *free*?
|
||||
<b id="what-is-free">1</b>
|
||||
We try to maintain leaflet-providers in such a way that you'll be able to use the layers we include without paying money.
|
||||
This doesn't mean no limits apply, you should always check before using these layers for anything serious.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "leaflet-providers",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.15",
|
||||
"homepage": "https://github.com/leaflet-extras/leaflet-providers",
|
||||
"description": "An extension to Leaflet that contains configurations for various free tile providers.",
|
||||
"dependencies": {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<!-- Leaflet style. REQUIRED! -->
|
||||
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7/leaflet.css" />
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.0-rc.1/leaflet.css" />
|
||||
<style>
|
||||
html { height: 100% }
|
||||
body { height: 100%; margin: 0; padding: 0;}
|
||||
@@ -26,7 +26,7 @@
|
||||
</div>
|
||||
<div id="map" class="map"></div>
|
||||
|
||||
<script src="http://cdn.leafletjs.com/leaflet-0.7/leaflet-src.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.0-rc.1/leaflet.js"></script>
|
||||
<script src="leaflet-providers.js"></script>
|
||||
<script>
|
||||
var map = L.map('map', {
|
||||
@@ -46,9 +46,7 @@
|
||||
'Thunderforest Transport': L.tileLayer.provider('Thunderforest.Transport'),
|
||||
'Thunderforest Landscape': L.tileLayer.provider('Thunderforest.Landscape'),
|
||||
'Hydda Full': L.tileLayer.provider('Hydda.Full'),
|
||||
'MapQuest OSM': L.tileLayer.provider('MapQuestOpen.OSM'),
|
||||
'MapQuest Aerial': L.tileLayer.provider('MapQuestOpen.Aerial'),
|
||||
'MapBox Example': L.tileLayer.provider('MapBox.examples.map-zr0njcqy'),
|
||||
'MapBox Example': L.tileLayer.provider('MapBox', {id: 'mapbox.streets', accessToken: 'pk.eyJ1IjoiZ3V0ZW55ZSIsImEiOiJmNjJlMDNmYTUyMzNjMzQxZmY4Mzc1ZmFiYmExNjMxOSJ9.xgl1PBwQV9CtwW-usedrcQ'}),
|
||||
'Stamen Toner': L.tileLayer.provider('Stamen.Toner'),
|
||||
'Stamen Terrain': L.tileLayer.provider('Stamen.Terrain'),
|
||||
'Stamen Watercolor': L.tileLayer.provider('Stamen.Watercolor'),
|
||||
@@ -61,8 +59,7 @@
|
||||
'Esri WorldPhysical': L.tileLayer.provider('Esri.WorldPhysical'),
|
||||
'Esri OceanBasemap': L.tileLayer.provider('Esri.OceanBasemap'),
|
||||
'Esri NatGeoWorldMap': L.tileLayer.provider('Esri.NatGeoWorldMap'),
|
||||
'Esri WorldGrayCanvas': L.tileLayer.provider('Esri.WorldGrayCanvas'),
|
||||
'Acetate': L.tileLayer.provider('Acetate')
|
||||
'Esri WorldGrayCanvas': L.tileLayer.provider('Esri.WorldGrayCanvas')
|
||||
};
|
||||
|
||||
var overlayLayers = {
|
||||
@@ -80,10 +77,10 @@
|
||||
'OpenWeatherMap Snow': L.tileLayer.provider('OpenWeatherMap.Snow')
|
||||
};
|
||||
|
||||
var layerControl = L.control.layers(baseLayers, overlayLayers, {collapsed: false}).addTo(map);
|
||||
L.control.layers(baseLayers, overlayLayers, {collapsed: false}).addTo(map);
|
||||
|
||||
// resize layers control to fit into view.
|
||||
function resizeLayerControl() {
|
||||
function resizeLayerControl () {
|
||||
var layerControlHeight = document.body.clientHeight - (10 + 50);
|
||||
var layerControl = document.getElementsByClassName('leaflet-control-layers-expanded')[0];
|
||||
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['leaflet'], factory);
|
||||
} else {
|
||||
// Assume leaflet is loaded into global object L already
|
||||
factory(L);
|
||||
}
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['leaflet'], factory);
|
||||
} else if (typeof modules === 'object' && module.exports) {
|
||||
// define a Common JS module that relies on 'leaflet'
|
||||
module.exports = factory(require('leaflet'));
|
||||
} else {
|
||||
// Assume Leaflet is loaded into global object L already
|
||||
factory(L);
|
||||
}
|
||||
}(this, function (L) {
|
||||
'use strict';
|
||||
|
||||
@@ -45,8 +48,6 @@
|
||||
url: variant.url || provider.url,
|
||||
options: L.Util.extend({}, provider.options, variantOptions)
|
||||
};
|
||||
} else if (typeof provider.url === 'function') {
|
||||
provider.url = provider.url(parts.splice(1, parts.length - 1).join('.'));
|
||||
}
|
||||
|
||||
var forceHTTP = window.location.protocol === 'file:' || provider.options.forceHTTP;
|
||||
@@ -54,6 +55,19 @@
|
||||
provider.url = 'http:' + provider.url;
|
||||
}
|
||||
|
||||
// If retina option is set
|
||||
if (provider.options.retina) {
|
||||
// Check retina screen
|
||||
if (options.detectRetina && L.Browser.retina) {
|
||||
// The retina option will be active now
|
||||
// But we need to prevent Leaflet retina mode
|
||||
options.detectRetina = false;
|
||||
} else {
|
||||
// No retina, remove option
|
||||
provider.options.retina = '';
|
||||
}
|
||||
}
|
||||
|
||||
// replace attribution placeholders with their values from toplevel provider attribution,
|
||||
// recursively
|
||||
var attributionReplacer = function (attr) {
|
||||
@@ -102,13 +116,14 @@
|
||||
}
|
||||
},
|
||||
France: {
|
||||
url: 'http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png',
|
||||
url: '//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png',
|
||||
options: {
|
||||
maxZoom: 20,
|
||||
attribution: '© Openstreetmap France | {attribution.OpenStreetMap}'
|
||||
}
|
||||
},
|
||||
HOT: {
|
||||
url: 'http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
|
||||
url: '//{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
|
||||
options: {
|
||||
attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>'
|
||||
}
|
||||
@@ -124,7 +139,7 @@
|
||||
OpenTopoMap: {
|
||||
url: '//{s}.tile.opentopomap.org/{z}/{x}/{y}.png',
|
||||
options: {
|
||||
maxZoom: 16,
|
||||
maxZoom: 17,
|
||||
attribution: 'Map data: {attribution.OpenStreetMap}, <a href="http://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)'
|
||||
}
|
||||
},
|
||||
@@ -132,7 +147,7 @@
|
||||
url: '//{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png',
|
||||
options: {
|
||||
attribution:
|
||||
'© <a href="http://www.opencyclemap.org">OpenCycleMap</a>, {attribution.OpenStreetMap}',
|
||||
'© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}',
|
||||
variant: 'cycle'
|
||||
},
|
||||
variants: {
|
||||
@@ -149,12 +164,19 @@
|
||||
maxZoom: 19
|
||||
}
|
||||
},
|
||||
SpinalMap: {
|
||||
options: {
|
||||
variant: 'spinal-map',
|
||||
maxZoom: 11
|
||||
}
|
||||
},
|
||||
Landscape: 'landscape',
|
||||
Outdoors: 'outdoors'
|
||||
Outdoors: 'outdoors',
|
||||
Pioneer: 'pioneer'
|
||||
}
|
||||
},
|
||||
OpenMapSurfer: {
|
||||
url: 'http://openmapsurfer.uni-hd.de/tiles/{variant}/x={x}&y={y}&z={z}',
|
||||
url: 'http://korona.geog.uni-heidelberg.de/tiles/{variant}/x={x}&y={y}&z={z}',
|
||||
options: {
|
||||
maxZoom: 20,
|
||||
variant: 'roads',
|
||||
@@ -177,7 +199,7 @@
|
||||
}
|
||||
},
|
||||
Hydda: {
|
||||
url: 'http://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png',
|
||||
url: '//{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png',
|
||||
options: {
|
||||
variant: 'full',
|
||||
attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> — Map data {attribution.OpenStreetMap}'
|
||||
@@ -188,43 +210,8 @@
|
||||
RoadsAndLabels: 'roads_and_labels'
|
||||
}
|
||||
},
|
||||
MapQuestOpen: {
|
||||
/* Mapquest does support https, but with a different subdomain:
|
||||
* https://otile{s}-s.mqcdn.com/tiles/1.0.0/{type}/{z}/{x}/{y}.{ext}
|
||||
* which makes implementing protocol relativity impossible.
|
||||
*/
|
||||
url: 'http://otile{s}.mqcdn.com/tiles/1.0.0/{type}/{z}/{x}/{y}.{ext}',
|
||||
options: {
|
||||
type: 'map',
|
||||
ext: 'jpg',
|
||||
attribution:
|
||||
'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> — ' +
|
||||
'Map data {attribution.OpenStreetMap}',
|
||||
subdomains: '1234'
|
||||
},
|
||||
variants: {
|
||||
OSM: {},
|
||||
Aerial: {
|
||||
options: {
|
||||
type: 'sat',
|
||||
attribution:
|
||||
'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> — ' +
|
||||
'Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency'
|
||||
}
|
||||
},
|
||||
HybridOverlay: {
|
||||
options: {
|
||||
type: 'hyb',
|
||||
ext: 'png',
|
||||
opacity: 0.9
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
MapBox: {
|
||||
url: function (id) {
|
||||
return '//{s}.tiles.mapbox.com/v3/' + id + '/{z}/{x}/{y}.png';
|
||||
},
|
||||
url: '//api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}',
|
||||
options: {
|
||||
attribution:
|
||||
'Imagery from <a href="http://mapbox.com/about/maps/">MapBox</a> — ' +
|
||||
@@ -233,7 +220,7 @@
|
||||
}
|
||||
},
|
||||
Stamen: {
|
||||
url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.png',
|
||||
url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}',
|
||||
options: {
|
||||
attribution:
|
||||
'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' +
|
||||
@@ -262,17 +249,15 @@
|
||||
Terrain: {
|
||||
options: {
|
||||
variant: 'terrain',
|
||||
minZoom: 4,
|
||||
maxZoom: 18,
|
||||
bounds: [[22, -132], [70, -56]]
|
||||
minZoom: 0,
|
||||
maxZoom: 18
|
||||
}
|
||||
},
|
||||
TerrainBackground: {
|
||||
options: {
|
||||
variant: 'terrain-background',
|
||||
minZoom: 4,
|
||||
maxZoom: 18,
|
||||
bounds: [[22, -132], [70, -56]]
|
||||
minZoom: 0,
|
||||
maxZoom: 18
|
||||
}
|
||||
},
|
||||
TopOSMRelief: {
|
||||
@@ -408,8 +393,8 @@
|
||||
*/
|
||||
url:
|
||||
'//{s}.{base}.maps.cit.api.here.com/maptile/2.1/' +
|
||||
'maptile/{mapID}/{variant}/{z}/{x}/{y}/256/png8?' +
|
||||
'app_id={app_id}&app_code={app_code}',
|
||||
'{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' +
|
||||
'app_id={app_id}&app_code={app_code}&lg={language}',
|
||||
options: {
|
||||
attribution:
|
||||
'Map © 1987-2014 <a href="http://developer.here.com">HERE</a>',
|
||||
@@ -419,7 +404,11 @@
|
||||
'app_code': '<insert your app_code here>',
|
||||
base: 'base',
|
||||
variant: 'normal.day',
|
||||
maxZoom: 20
|
||||
maxZoom: 20,
|
||||
type: 'maptile',
|
||||
language: 'eng',
|
||||
format: 'png8',
|
||||
size: '256'
|
||||
},
|
||||
variants: {
|
||||
normalDay: 'normal.day',
|
||||
@@ -434,6 +423,23 @@
|
||||
normalNightGrey: 'normal.night.grey',
|
||||
normalNightGreyMobile: 'normal.night.grey.mobile',
|
||||
|
||||
basicMap: {
|
||||
options: {
|
||||
type: 'basetile'
|
||||
}
|
||||
},
|
||||
mapLabels: {
|
||||
options: {
|
||||
type: 'labeltile',
|
||||
format: 'png'
|
||||
}
|
||||
},
|
||||
trafficFlow: {
|
||||
options: {
|
||||
base: 'traffic',
|
||||
type: 'flowtile'
|
||||
}
|
||||
},
|
||||
carnavDayGrey: 'carnav.day.grey',
|
||||
hybridDay: {
|
||||
options: {
|
||||
@@ -469,32 +475,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
Acetate: {
|
||||
url: 'http://a{s}.acetate.geoiq.com/tiles/{variant}/{z}/{x}/{y}.png',
|
||||
options: {
|
||||
attribution:
|
||||
'©2012 Esri & Stamen, Data from OSM and Natural Earth',
|
||||
subdomains: '0123',
|
||||
minZoom: 2,
|
||||
maxZoom: 18,
|
||||
variant: 'acetate-base'
|
||||
},
|
||||
variants: {
|
||||
basemap: 'acetate-base',
|
||||
terrain: 'terrain',
|
||||
all: 'acetate-hillshading',
|
||||
foreground: 'acetate-fg',
|
||||
roads: 'acetate-roads',
|
||||
labels: 'acetate-labels',
|
||||
hillshading: 'hillshading'
|
||||
}
|
||||
},
|
||||
FreeMapSK: {
|
||||
url: 'http://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg',
|
||||
url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg',
|
||||
options: {
|
||||
minZoom: 8,
|
||||
maxZoom: 16,
|
||||
subdomains: ['t1', 't2', 't3', 't4'],
|
||||
subdomains: '1234',
|
||||
bounds: [[47.204642, 15.996093], [49.830896, 22.576904]],
|
||||
attribution:
|
||||
'{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 <a href="http://freemap.sk">Freemap.sk</a>'
|
||||
}
|
||||
@@ -517,8 +504,10 @@
|
||||
variants: {
|
||||
Positron: 'light_all',
|
||||
PositronNoLabels: 'light_nolabels',
|
||||
PositronOnlyLabels: 'light_only_labels',
|
||||
DarkMatter: 'dark_all',
|
||||
DarkMatterNoLabels: 'dark_nolabels'
|
||||
DarkMatterNoLabels: 'dark_nolabels',
|
||||
DarkMatterOnlyLabels: 'dark_only_labels'
|
||||
}
|
||||
},
|
||||
HikeBike: {
|
||||
@@ -621,6 +610,24 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
NLS: {
|
||||
// NLS maps are copyright National library of Scotland.
|
||||
// http://maps.nls.uk/projects/api/index.html
|
||||
// Please contact NLS for anything other than non-commercial low volume usage
|
||||
//
|
||||
// Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s
|
||||
// z0-9 - 1:1m
|
||||
// z10-11 - quarter inch (1:253440)
|
||||
// z12-18 - one inch (1:63360)
|
||||
url: '//nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg',
|
||||
options: {
|
||||
attribution: '<a href="http://geo.nls.uk/maps/">National Library of Scotland Historic Maps</a>',
|
||||
bounds: [[49.6, -12], [61.7, 3]],
|
||||
minZoom: 1,
|
||||
maxZoom: 18,
|
||||
subdomains: '0123',
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "leaflet-providers",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.15",
|
||||
"description": "An extension to Leaflet that contains configurations for various free tile providers.",
|
||||
"main": "leaflet-providers.js",
|
||||
"repository": {
|
||||
@@ -10,7 +10,7 @@
|
||||
"scripts": {
|
||||
"test": "npm run lint && npm run testsuite",
|
||||
"testsuite": "mocha-phantomjs tests/index.html",
|
||||
"lint": "eslint --config .eslintrc leaflet-providers.js preview/preview.js preview/shared.js preview/https-support.js tests/test.js",
|
||||
"lint": "eslint --config .eslintrc leaflet-providers.js index.html preview/*.js preview/*.html tests/*",
|
||||
"min": "uglifyjs leaflet-providers.js -mc -o leaflet-providers.min.js",
|
||||
"release": "mversion patch -m"
|
||||
},
|
||||
@@ -18,14 +18,21 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/leaflet-extras/leaflet-providers/issues"
|
||||
},
|
||||
"files": [
|
||||
"leaflet-providers.js",
|
||||
"README.md",
|
||||
"CHANGELOG.md",
|
||||
"licence.md"
|
||||
],
|
||||
"devDependencies": {
|
||||
"chai": "^2.3.0",
|
||||
"eslint": "^0.15.0",
|
||||
"eslint": "^2.7.0",
|
||||
"eslint-plugin-html": "^1.4.0",
|
||||
"mocha": "^2.2.4",
|
||||
"mocha-phantomjs": "^3.5.3",
|
||||
"mversion": "^1.3.0",
|
||||
"uglify-js": "^2.4.15",
|
||||
"phantomjs": "^1.9.16"
|
||||
"phantomjs": "1.9.7-15",
|
||||
"uglify-js": "^2.4.15"
|
||||
},
|
||||
"autoupdate": {
|
||||
"source": "git",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var oldL = window.L,
|
||||
L = {};
|
||||
|
||||
L.version = '0.7.5';
|
||||
L.version = '0.7.7';
|
||||
|
||||
// define Leaflet for Node module pattern loaders, including Browserify
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
@@ -520,7 +520,7 @@ L.Mixin.Events.fire = L.Mixin.Events.fireEvent;
|
||||
|
||||
mobile = typeof orientation !== undefined + '',
|
||||
msPointer = !window.PointerEvent && window.MSPointerEvent,
|
||||
pointer = (window.PointerEvent && window.navigator.pointerEnabled && window.navigator.maxTouchPoints) ||
|
||||
pointer = (window.PointerEvent && window.navigator.pointerEnabled) ||
|
||||
msPointer,
|
||||
retina = ('devicePixelRatio' in window && window.devicePixelRatio > 1) ||
|
||||
('matchMedia' in window && window.matchMedia('(min-resolution:144dpi)') &&
|
||||
@@ -4389,7 +4389,9 @@ L.FeatureGroup = L.LayerGroup.extend({
|
||||
layer = this._layers[layer];
|
||||
}
|
||||
|
||||
layer.off(L.FeatureGroup.EVENTS, this._propagateEvent, this);
|
||||
if ('off' in layer) {
|
||||
layer.off(L.FeatureGroup.EVENTS, this._propagateEvent, this);
|
||||
}
|
||||
|
||||
L.LayerGroup.prototype.removeLayer.call(this, layer);
|
||||
|
||||
@@ -4709,7 +4711,7 @@ L.Path = L.Path.extend({
|
||||
},
|
||||
|
||||
_fireMouseEvent: function (e) {
|
||||
if (!this.hasEventListeners(e.type)) { return; }
|
||||
if (!this._map || !this.hasEventListeners(e.type)) { return; }
|
||||
|
||||
var map = this._map,
|
||||
containerPoint = map.mouseEventToContainerPoint(e),
|
||||
@@ -7167,8 +7169,9 @@ L.extend(L.DomEvent, {
|
||||
pointers = this._pointers;
|
||||
|
||||
var cb = function (e) {
|
||||
|
||||
L.DomEvent.preventDefault(e);
|
||||
if (e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {
|
||||
L.DomEvent.preventDefault(e);
|
||||
}
|
||||
|
||||
var alreadyInArray = false;
|
||||
for (var i = 0; i < pointers.length; i++) {
|
||||
@@ -8939,11 +8942,13 @@ L.Map.include(!L.DomUtil.TRANSITION ? {} : {
|
||||
|
||||
L.DomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim');
|
||||
|
||||
this._resetView(this._animateToCenter, this._animateToZoom, true, true);
|
||||
L.Util.requestAnimFrame(function () {
|
||||
this._resetView(this._animateToCenter, this._animateToZoom, true, true);
|
||||
|
||||
if (L.Draggable) {
|
||||
L.Draggable._disabled = false;
|
||||
}
|
||||
if (L.Draggable) {
|
||||
L.Draggable._disabled = false;
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
.leaflet-container {
|
||||
overflow: hidden;
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
}
|
||||
.leaflet-tile,
|
||||
.leaflet-marker-icon,
|
||||
|
||||
File diff suppressed because one or more lines are too long
2
assets/leaflet/leaflet.min.css
vendored
2
assets/leaflet/leaflet.min.css
vendored
File diff suppressed because one or more lines are too long
67
assets/spin-js/Gruntfile.js
Normal file
67
assets/spin-js/Gruntfile.js
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* Workflow to release a new version:
|
||||
* grunt bump-only:minor
|
||||
* grunt
|
||||
* grunt gh-pages
|
||||
* grunt bump-commit
|
||||
* git push --tags
|
||||
* npm publish
|
||||
*/
|
||||
module.exports = function(grunt) {
|
||||
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
|
||||
copy: {
|
||||
js: {
|
||||
files: [
|
||||
{ src: ['spin.js', 'jquery.spin.js'], dest: 'site/' }
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
uglify: {
|
||||
options: {
|
||||
banner: '// http://spin.js.org/#v<%= pkg.version %>\n'
|
||||
},
|
||||
js: {
|
||||
files: {
|
||||
'site/spin.min.js': ['site/spin.js'],
|
||||
'spin.min.js': ['site/spin.min.js']
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
bump: {
|
||||
options: {
|
||||
files: ['package.json', 'component.json'],
|
||||
updateConfigs: ['pkg'],
|
||||
commit: true,
|
||||
commitMessage: 'Release v%VERSION%',
|
||||
commitFiles: ['package.json', 'component.json', 'spin.min.js'],
|
||||
createTag: true,
|
||||
tagName: '%VERSION%',
|
||||
push: false
|
||||
}
|
||||
},
|
||||
|
||||
'gh-pages': {
|
||||
release: {
|
||||
options: {
|
||||
base: 'site',
|
||||
message: 'automatic commit'
|
||||
},
|
||||
src: '**/*'
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
grunt.loadNpmTasks('grunt-contrib-copy')
|
||||
grunt.loadNpmTasks('grunt-contrib-uglify')
|
||||
grunt.loadNpmTasks('grunt-bump')
|
||||
grunt.loadNpmTasks('grunt-gh-pages')
|
||||
|
||||
grunt.registerTask('default', ['copy', 'uglify'])
|
||||
|
||||
}
|
||||
22
assets/spin-js/LICENSE.md
Normal file
22
assets/spin-js/LICENSE.md
Normal file
@@ -0,0 +1,22 @@
|
||||
The MIT License
|
||||
===============
|
||||
|
||||
Copyright (c) 2011-2015 Felix Gnass [fgnass at gmail dot com]
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
21
assets/spin-js/README.md
Normal file
21
assets/spin-js/README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# spin.js [](http://js.org)
|
||||
|
||||
An animated CSS3 loading spinner with VML fallback for IE.
|
||||
|
||||
* No images, no external CSS
|
||||
* No dependencies
|
||||
* Highly configurable
|
||||
* Resolution independent
|
||||
* Uses VML as fallback in old IEs
|
||||
* Uses @keyframe animations, falling back to setTimeout()
|
||||
* Works in all major browsers, including IE6
|
||||
* Small footprint (~1.9K gzipped)
|
||||
* MIT License
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
new Spinner({color:'#fff', lines: 12}).spin(target);
|
||||
```
|
||||
|
||||
For an interactive demo and a list of all supported options please refer to the [project's homepage](http://spin.js.org).
|
||||
17
assets/spin-js/bower.json
Normal file
17
assets/spin-js/bower.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "spin.js",
|
||||
"main": "spin.js",
|
||||
"dependencies": {},
|
||||
"readme": "README.md",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/fgnass/spin.js.git"
|
||||
},
|
||||
"ignore": [
|
||||
"Gruntfile.js",
|
||||
"site",
|
||||
"bower.json",
|
||||
"component.json",
|
||||
"package.json"
|
||||
]
|
||||
}
|
||||
15
assets/spin-js/component.json
Normal file
15
assets/spin-js/component.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "spin",
|
||||
"repo": "fgnass/spin.js",
|
||||
"description": "A spinning activity indicator",
|
||||
"version": "2.3.2",
|
||||
"main": "spin.js",
|
||||
"scripts": [
|
||||
"spin.js"
|
||||
],
|
||||
"keywords": [
|
||||
"spin",
|
||||
"spinner",
|
||||
"component"
|
||||
]
|
||||
}
|
||||
79
assets/spin-js/jquery.spin.js
Normal file
79
assets/spin-js/jquery.spin.js
Normal file
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2014 Felix Gnass
|
||||
* Licensed under the MIT license
|
||||
* http://spin.js.org/
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Basic Usage:
|
||||
============
|
||||
|
||||
$('#el').spin() // Creates a default Spinner using the text color of #el.
|
||||
$('#el').spin({ ... }) // Creates a Spinner using the provided options.
|
||||
|
||||
$('#el').spin(false) // Stops and removes the spinner.
|
||||
|
||||
Using Presets:
|
||||
==============
|
||||
|
||||
$('#el').spin('small') // Creates a 'small' Spinner using the text color of #el.
|
||||
$('#el').spin('large', '#fff') // Creates a 'large' white Spinner.
|
||||
|
||||
Adding a custom preset:
|
||||
=======================
|
||||
|
||||
$.fn.spin.presets.flower = {
|
||||
lines: 9
|
||||
, length: 10
|
||||
, width: 20
|
||||
, radius: 0
|
||||
}
|
||||
|
||||
$('#el').spin('flower', 'red')
|
||||
|
||||
*/
|
||||
|
||||
;(function(factory) {
|
||||
|
||||
if (typeof exports == 'object') {
|
||||
// CommonJS
|
||||
factory(require('jquery'), require('spin.js'))
|
||||
} else if (typeof define == 'function' && define.amd) {
|
||||
// AMD, register as anonymous module
|
||||
define(['jquery', 'spin'], factory)
|
||||
} else {
|
||||
// Browser globals
|
||||
if (!window.Spinner) throw new Error('Spin.js not present')
|
||||
factory(window.jQuery, window.Spinner)
|
||||
}
|
||||
|
||||
}(function($, Spinner) {
|
||||
|
||||
$.fn.spin = function(opts, color) {
|
||||
|
||||
return this.each(function() {
|
||||
var $this = $(this)
|
||||
, data = $this.data()
|
||||
|
||||
if (data.spinner) {
|
||||
data.spinner.stop()
|
||||
delete data.spinner
|
||||
}
|
||||
if (opts !== false) {
|
||||
opts = $.extend(
|
||||
{ color: color || $this.css('color') }
|
||||
, $.fn.spin.presets[opts] || opts
|
||||
)
|
||||
data.spinner = new Spinner(opts).spin(this)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.spin.presets = {
|
||||
tiny: { lines: 8, length: 2, width: 2, radius: 3 }
|
||||
, small: { lines: 8, length: 4, width: 3, radius: 5 }
|
||||
, large: { lines: 10, length: 8, width: 4, radius: 8 }
|
||||
}
|
||||
|
||||
}));
|
||||
34
assets/spin-js/package.json
Normal file
34
assets/spin-js/package.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "spin.js",
|
||||
"version": "2.3.2",
|
||||
"main": "spin.js",
|
||||
"author": "Felix Gnass <fgnass@gmail.com>",
|
||||
"contributors": [
|
||||
"Timothy Gu <timothygu99@gmail.com>"
|
||||
],
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/fgnass/spin.js.git"
|
||||
},
|
||||
"keywords": [
|
||||
"spin",
|
||||
"spinner",
|
||||
"component"
|
||||
],
|
||||
"component": {
|
||||
"scripts": {
|
||||
"spin": "spin.js"
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "~0.4.2",
|
||||
"grunt-gh-pages": "~0.9.0",
|
||||
"grunt-contrib-uglify": "~0.2.7",
|
||||
"grunt-contrib-copy": "~0.5.0",
|
||||
"grunt-bump": "0.0.13"
|
||||
},
|
||||
"spm": {
|
||||
"main": "spin.js"
|
||||
}
|
||||
}
|
||||
377
assets/spin-js/spin.js
Normal file
377
assets/spin-js/spin.js
Normal file
@@ -0,0 +1,377 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2014 Felix Gnass
|
||||
* Licensed under the MIT license
|
||||
* http://spin.js.org/
|
||||
*
|
||||
* Example:
|
||||
var opts = {
|
||||
lines: 12 // The number of lines to draw
|
||||
, length: 7 // The length of each line
|
||||
, width: 5 // The line thickness
|
||||
, radius: 10 // The radius of the inner circle
|
||||
, scale: 1.0 // Scales overall size of the spinner
|
||||
, corners: 1 // Roundness (0..1)
|
||||
, color: '#000' // #rgb or #rrggbb
|
||||
, opacity: 1/4 // Opacity of the lines
|
||||
, rotate: 0 // Rotation offset
|
||||
, direction: 1 // 1: clockwise, -1: counterclockwise
|
||||
, speed: 1 // Rounds per second
|
||||
, trail: 100 // Afterglow percentage
|
||||
, fps: 20 // Frames per second when using setTimeout()
|
||||
, zIndex: 2e9 // Use a high z-index by default
|
||||
, className: 'spinner' // CSS class to assign to the element
|
||||
, top: '50%' // center vertically
|
||||
, left: '50%' // center horizontally
|
||||
, shadow: false // Whether to render a shadow
|
||||
, hwaccel: false // Whether to use hardware acceleration (might be buggy)
|
||||
, position: 'absolute' // Element positioning
|
||||
}
|
||||
var target = document.getElementById('foo')
|
||||
var spinner = new Spinner(opts).spin(target)
|
||||
*/
|
||||
;(function (root, factory) {
|
||||
|
||||
/* CommonJS */
|
||||
if (typeof module == 'object' && module.exports) module.exports = factory()
|
||||
|
||||
/* AMD module */
|
||||
else if (typeof define == 'function' && define.amd) define(factory)
|
||||
|
||||
/* Browser global */
|
||||
else root.Spinner = factory()
|
||||
}(this, function () {
|
||||
"use strict"
|
||||
|
||||
var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */
|
||||
, animations = {} /* Animation rules keyed by their name */
|
||||
, useCssAnimations /* Whether to use CSS animations or setTimeout */
|
||||
, sheet /* A stylesheet to hold the @keyframe or VML rules. */
|
||||
|
||||
/**
|
||||
* Utility function to create elements. If no tag name is given,
|
||||
* a DIV is created. Optionally properties can be passed.
|
||||
*/
|
||||
function createEl (tag, prop) {
|
||||
var el = document.createElement(tag || 'div')
|
||||
, n
|
||||
|
||||
for (n in prop) el[n] = prop[n]
|
||||
return el
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends children and returns the parent.
|
||||
*/
|
||||
function ins (parent /* child1, child2, ...*/) {
|
||||
for (var i = 1, n = arguments.length; i < n; i++) {
|
||||
parent.appendChild(arguments[i])
|
||||
}
|
||||
|
||||
return parent
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an opacity keyframe animation rule and returns its name.
|
||||
* Since most mobile Webkits have timing issues with animation-delay,
|
||||
* we create separate rules for each line/segment.
|
||||
*/
|
||||
function addAnimation (alpha, trail, i, lines) {
|
||||
var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-')
|
||||
, start = 0.01 + i/lines * 100
|
||||
, z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)
|
||||
, prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()
|
||||
, pre = prefix && '-' + prefix + '-' || ''
|
||||
|
||||
if (!animations[name]) {
|
||||
sheet.insertRule(
|
||||
'@' + pre + 'keyframes ' + name + '{' +
|
||||
'0%{opacity:' + z + '}' +
|
||||
start + '%{opacity:' + alpha + '}' +
|
||||
(start+0.01) + '%{opacity:1}' +
|
||||
(start+trail) % 100 + '%{opacity:' + alpha + '}' +
|
||||
'100%{opacity:' + z + '}' +
|
||||
'}', sheet.cssRules.length)
|
||||
|
||||
animations[name] = 1
|
||||
}
|
||||
|
||||
return name
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries various vendor prefixes and returns the first supported property.
|
||||
*/
|
||||
function vendor (el, prop) {
|
||||
var s = el.style
|
||||
, pp
|
||||
, i
|
||||
|
||||
prop = prop.charAt(0).toUpperCase() + prop.slice(1)
|
||||
if (s[prop] !== undefined) return prop
|
||||
for (i = 0; i < prefixes.length; i++) {
|
||||
pp = prefixes[i]+prop
|
||||
if (s[pp] !== undefined) return pp
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets multiple style properties at once.
|
||||
*/
|
||||
function css (el, prop) {
|
||||
for (var n in prop) {
|
||||
el.style[vendor(el, n) || n] = prop[n]
|
||||
}
|
||||
|
||||
return el
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills in default values.
|
||||
*/
|
||||
function merge (obj) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var def = arguments[i]
|
||||
for (var n in def) {
|
||||
if (obj[n] === undefined) obj[n] = def[n]
|
||||
}
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the line color from the given string or array.
|
||||
*/
|
||||
function getColor (color, idx) {
|
||||
return typeof color == 'string' ? color : color[idx % color.length]
|
||||
}
|
||||
|
||||
// Built-in defaults
|
||||
|
||||
var defaults = {
|
||||
lines: 12 // The number of lines to draw
|
||||
, length: 7 // The length of each line
|
||||
, width: 5 // The line thickness
|
||||
, radius: 10 // The radius of the inner circle
|
||||
, scale: 1.0 // Scales overall size of the spinner
|
||||
, corners: 1 // Roundness (0..1)
|
||||
, color: '#000' // #rgb or #rrggbb
|
||||
, opacity: 1/4 // Opacity of the lines
|
||||
, rotate: 0 // Rotation offset
|
||||
, direction: 1 // 1: clockwise, -1: counterclockwise
|
||||
, speed: 1 // Rounds per second
|
||||
, trail: 100 // Afterglow percentage
|
||||
, fps: 20 // Frames per second when using setTimeout()
|
||||
, zIndex: 2e9 // Use a high z-index by default
|
||||
, className: 'spinner' // CSS class to assign to the element
|
||||
, top: '50%' // center vertically
|
||||
, left: '50%' // center horizontally
|
||||
, shadow: false // Whether to render a shadow
|
||||
, hwaccel: false // Whether to use hardware acceleration (might be buggy)
|
||||
, position: 'absolute' // Element positioning
|
||||
}
|
||||
|
||||
/** The constructor */
|
||||
function Spinner (o) {
|
||||
this.opts = merge(o || {}, Spinner.defaults, defaults)
|
||||
}
|
||||
|
||||
// Global defaults that override the built-ins:
|
||||
Spinner.defaults = {}
|
||||
|
||||
merge(Spinner.prototype, {
|
||||
/**
|
||||
* Adds the spinner to the given target element. If this instance is already
|
||||
* spinning, it is automatically removed from its previous target b calling
|
||||
* stop() internally.
|
||||
*/
|
||||
spin: function (target) {
|
||||
this.stop()
|
||||
|
||||
var self = this
|
||||
, o = self.opts
|
||||
, el = self.el = createEl(null, {className: o.className})
|
||||
|
||||
css(el, {
|
||||
position: o.position
|
||||
, width: 0
|
||||
, zIndex: o.zIndex
|
||||
, left: o.left
|
||||
, top: o.top
|
||||
})
|
||||
|
||||
if (target) {
|
||||
target.insertBefore(el, target.firstChild || null)
|
||||
}
|
||||
|
||||
el.setAttribute('role', 'progressbar')
|
||||
self.lines(el, self.opts)
|
||||
|
||||
if (!useCssAnimations) {
|
||||
// No CSS animation support, use setTimeout() instead
|
||||
var i = 0
|
||||
, start = (o.lines - 1) * (1 - o.direction) / 2
|
||||
, alpha
|
||||
, fps = o.fps
|
||||
, f = fps / o.speed
|
||||
, ostep = (1 - o.opacity) / (f * o.trail / 100)
|
||||
, astep = f / o.lines
|
||||
|
||||
;(function anim () {
|
||||
i++
|
||||
for (var j = 0; j < o.lines; j++) {
|
||||
alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)
|
||||
|
||||
self.opacity(el, j * o.direction + start, alpha, o)
|
||||
}
|
||||
self.timeout = self.el && setTimeout(anim, ~~(1000 / fps))
|
||||
})()
|
||||
}
|
||||
return self
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops and removes the Spinner.
|
||||
*/
|
||||
, stop: function () {
|
||||
var el = this.el
|
||||
if (el) {
|
||||
clearTimeout(this.timeout)
|
||||
if (el.parentNode) el.parentNode.removeChild(el)
|
||||
this.el = undefined
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal method that draws the individual lines. Will be overwritten
|
||||
* in VML fallback mode below.
|
||||
*/
|
||||
, lines: function (el, o) {
|
||||
var i = 0
|
||||
, start = (o.lines - 1) * (1 - o.direction) / 2
|
||||
, seg
|
||||
|
||||
function fill (color, shadow) {
|
||||
return css(createEl(), {
|
||||
position: 'absolute'
|
||||
, width: o.scale * (o.length + o.width) + 'px'
|
||||
, height: o.scale * o.width + 'px'
|
||||
, background: color
|
||||
, boxShadow: shadow
|
||||
, transformOrigin: 'left'
|
||||
, transform: 'rotate(' + ~~(360/o.lines*i + o.rotate) + 'deg) translate(' + o.scale*o.radius + 'px' + ',0)'
|
||||
, borderRadius: (o.corners * o.scale * o.width >> 1) + 'px'
|
||||
})
|
||||
}
|
||||
|
||||
for (; i < o.lines; i++) {
|
||||
seg = css(createEl(), {
|
||||
position: 'absolute'
|
||||
, top: 1 + ~(o.scale * o.width / 2) + 'px'
|
||||
, transform: o.hwaccel ? 'translate3d(0,0,0)' : ''
|
||||
, opacity: o.opacity
|
||||
, animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite'
|
||||
})
|
||||
|
||||
if (o.shadow) ins(seg, css(fill('#000', '0 0 4px #000'), {top: '2px'}))
|
||||
ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))
|
||||
}
|
||||
return el
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal method that adjusts the opacity of a single line.
|
||||
* Will be overwritten in VML fallback mode below.
|
||||
*/
|
||||
, opacity: function (el, i, val) {
|
||||
if (i < el.childNodes.length) el.childNodes[i].style.opacity = val
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
function initVML () {
|
||||
|
||||
/* Utility function to create a VML tag */
|
||||
function vml (tag, attr) {
|
||||
return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr)
|
||||
}
|
||||
|
||||
// No CSS transforms but VML support, add a CSS rule for VML elements:
|
||||
sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')
|
||||
|
||||
Spinner.prototype.lines = function (el, o) {
|
||||
var r = o.scale * (o.length + o.width)
|
||||
, s = o.scale * 2 * r
|
||||
|
||||
function grp () {
|
||||
return css(
|
||||
vml('group', {
|
||||
coordsize: s + ' ' + s
|
||||
, coordorigin: -r + ' ' + -r
|
||||
})
|
||||
, { width: s, height: s }
|
||||
)
|
||||
}
|
||||
|
||||
var margin = -(o.width + o.length) * o.scale * 2 + 'px'
|
||||
, g = css(grp(), {position: 'absolute', top: margin, left: margin})
|
||||
, i
|
||||
|
||||
function seg (i, dx, filter) {
|
||||
ins(
|
||||
g
|
||||
, ins(
|
||||
css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx})
|
||||
, ins(
|
||||
css(
|
||||
vml('roundrect', {arcsize: o.corners})
|
||||
, { width: r
|
||||
, height: o.scale * o.width
|
||||
, left: o.scale * o.radius
|
||||
, top: -o.scale * o.width >> 1
|
||||
, filter: filter
|
||||
}
|
||||
)
|
||||
, vml('fill', {color: getColor(o.color, i), opacity: o.opacity})
|
||||
, vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
if (o.shadow)
|
||||
for (i = 1; i <= o.lines; i++) {
|
||||
seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')
|
||||
}
|
||||
|
||||
for (i = 1; i <= o.lines; i++) seg(i)
|
||||
return ins(el, g)
|
||||
}
|
||||
|
||||
Spinner.prototype.opacity = function (el, i, val, o) {
|
||||
var c = el.firstChild
|
||||
o = o.shadow && o.lines || 0
|
||||
if (c && i + o < c.childNodes.length) {
|
||||
c = c.childNodes[i + o]; c = c && c.firstChild; c = c && c.firstChild
|
||||
if (c) c.opacity = val
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof document !== 'undefined') {
|
||||
sheet = (function () {
|
||||
var el = createEl('style', {type : 'text/css'})
|
||||
ins(document.getElementsByTagName('head')[0], el)
|
||||
return el.sheet || el.styleSheet
|
||||
}())
|
||||
|
||||
var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})
|
||||
|
||||
if (!vendor(probe, 'transform') && probe.adj) initVML()
|
||||
else useCssAnimations = vendor(probe, 'animation')
|
||||
}
|
||||
|
||||
return Spinner
|
||||
|
||||
}));
|
||||
4
assets/spin-js/spin.min.js
vendored
4
assets/spin-js/spin.min.js
vendored
@@ -1,2 +1,2 @@
|
||||
// http://spin.js.org/#v2.3.1
|
||||
!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return m[e]||(k.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",k.cssRules.length),m[e]=1),e}function d(a,b){var c,d,e=a.style;if(b=b.charAt(0).toUpperCase()+b.slice(1),void 0!==e[b])return b;for(d=0;d<l.length;d++)if(c=l[d]+b,void 0!==e[c])return c}function e(a,b){for(var c in b)a.style[d(a,c)||c]=b[c];return a}function f(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)void 0===a[d]&&(a[d]=c[d])}return a}function g(a,b){return"string"==typeof a?a:a[b%a.length]}function h(a){this.opts=f(a||{},h.defaults,n)}function i(){function c(b,c){return a("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',c)}k.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.scale*d.width,left:d.scale*d.radius,top:-d.scale*d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.scale*(d.length+d.width),k=2*d.scale*j,l=-(d.width+d.length)*d.scale*2+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}var j,k,l=["webkit","Moz","ms","O"],m={},n={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",opacity:.25,rotate:0,direction:1,speed:1,trail:100,fps:20,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:!1,hwaccel:!1,position:"absolute"};if(h.defaults={},f(h.prototype,{spin:function(b){this.stop();var c=this,d=c.opts,f=c.el=a(null,{className:d.className});if(e(f,{position:d.position,width:0,zIndex:d.zIndex,left:d.left,top:d.top}),b&&b.insertBefore(f,b.firstChild||null),f.setAttribute("role","progressbar"),c.lines(f,c.opts),!j){var g,h=0,i=(d.lines-1)*(1-d.direction)/2,k=d.fps,l=k/d.speed,m=(1-d.opacity)/(l*d.trail/100),n=l/d.lines;!function o(){h++;for(var a=0;a<d.lines;a++)g=Math.max(1-(h+(d.lines-a)*n)%l*m,d.opacity),c.opacity(f,a*d.direction+i,g,d);c.timeout=c.el&&setTimeout(o,~~(1e3/k))}()}return c},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=void 0),this},lines:function(d,f){function h(b,c){return e(a(),{position:"absolute",width:f.scale*(f.length+f.width)+"px",height:f.scale*f.width+"px",background:b,boxShadow:c,transformOrigin:"left",transform:"rotate("+~~(360/f.lines*k+f.rotate)+"deg) translate("+f.scale*f.radius+"px,0)",borderRadius:(f.corners*f.scale*f.width>>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k<f.lines;k++)i=e(a(),{position:"absolute",top:1+~(f.scale*f.width/2)+"px",transform:f.hwaccel?"translate3d(0,0,0)":"",opacity:f.opacity,animation:j&&c(f.opacity,f.trail,l+k*f.direction,f.lines)+" "+1/f.speed+"s linear infinite"}),f.shadow&&b(i,e(h("#000","0 0 4px #000"),{top:"2px"})),b(d,b(i,h(g(f.color,k),"0 0 1px rgba(0,0,0,.1)")));return d},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}}),"undefined"!=typeof document){k=function(){var c=a("style",{type:"text/css"});return b(document.getElementsByTagName("head")[0],c),c.sheet||c.styleSheet}();var o=e(a("group"),{behavior:"url(#default#VML)"});!d(o,"transform")&&o.adj?i():j=d(o,"animation")}return h});
|
||||
// http://spin.js.org/#v2.3.2
|
||||
!function(a,b){"object"==typeof module&&module.exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return m[e]||(k.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",k.cssRules.length),m[e]=1),e}function d(a,b){var c,d,e=a.style;if(b=b.charAt(0).toUpperCase()+b.slice(1),void 0!==e[b])return b;for(d=0;d<l.length;d++)if(c=l[d]+b,void 0!==e[c])return c}function e(a,b){for(var c in b)a.style[d(a,c)||c]=b[c];return a}function f(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)void 0===a[d]&&(a[d]=c[d])}return a}function g(a,b){return"string"==typeof a?a:a[b%a.length]}function h(a){this.opts=f(a||{},h.defaults,n)}function i(){function c(b,c){return a("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',c)}k.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.scale*d.width,left:d.scale*d.radius,top:-d.scale*d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.scale*(d.length+d.width),k=2*d.scale*j,l=-(d.width+d.length)*d.scale*2+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}var j,k,l=["webkit","Moz","ms","O"],m={},n={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",opacity:.25,rotate:0,direction:1,speed:1,trail:100,fps:20,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:!1,hwaccel:!1,position:"absolute"};if(h.defaults={},f(h.prototype,{spin:function(b){this.stop();var c=this,d=c.opts,f=c.el=a(null,{className:d.className});if(e(f,{position:d.position,width:0,zIndex:d.zIndex,left:d.left,top:d.top}),b&&b.insertBefore(f,b.firstChild||null),f.setAttribute("role","progressbar"),c.lines(f,c.opts),!j){var g,h=0,i=(d.lines-1)*(1-d.direction)/2,k=d.fps,l=k/d.speed,m=(1-d.opacity)/(l*d.trail/100),n=l/d.lines;!function o(){h++;for(var a=0;a<d.lines;a++)g=Math.max(1-(h+(d.lines-a)*n)%l*m,d.opacity),c.opacity(f,a*d.direction+i,g,d);c.timeout=c.el&&setTimeout(o,~~(1e3/k))}()}return c},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=void 0),this},lines:function(d,f){function h(b,c){return e(a(),{position:"absolute",width:f.scale*(f.length+f.width)+"px",height:f.scale*f.width+"px",background:b,boxShadow:c,transformOrigin:"left",transform:"rotate("+~~(360/f.lines*k+f.rotate)+"deg) translate("+f.scale*f.radius+"px,0)",borderRadius:(f.corners*f.scale*f.width>>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k<f.lines;k++)i=e(a(),{position:"absolute",top:1+~(f.scale*f.width/2)+"px",transform:f.hwaccel?"translate3d(0,0,0)":"",opacity:f.opacity,animation:j&&c(f.opacity,f.trail,l+k*f.direction,f.lines)+" "+1/f.speed+"s linear infinite"}),f.shadow&&b(i,e(h("#000","0 0 4px #000"),{top:"2px"})),b(d,b(i,h(g(f.color,k),"0 0 1px rgba(0,0,0,.1)")));return d},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}}),"undefined"!=typeof document){k=function(){var c=a("style",{type:"text/css"});return b(document.getElementsByTagName("head")[0],c),c.sheet||c.styleSheet}();var o=e(a("group"),{behavior:"url(#default#VML)"});!d(o,"transform")&&o.adj?i():j=d(o,"animation")}return h});
|
||||
@@ -32,7 +32,7 @@ var paths = [
|
||||
}
|
||||
];
|
||||
|
||||
gulp.task('clear-styles', function(cb) {
|
||||
gulp.task('clear-styles', function() {
|
||||
var i, clear = [];
|
||||
|
||||
for (i = 0; i < paths.length; i++) {
|
||||
@@ -41,10 +41,10 @@ gulp.task('clear-styles', function(cb) {
|
||||
}
|
||||
}
|
||||
|
||||
del(clear, cb);
|
||||
del(clear);
|
||||
});
|
||||
|
||||
gulp.task('clear-scripts', function(cb) {
|
||||
gulp.task('clear-scripts', function() {
|
||||
var i, clear = [];
|
||||
|
||||
for (i = 0; i < paths.length; i++) {
|
||||
@@ -53,7 +53,7 @@ gulp.task('clear-scripts', function(cb) {
|
||||
}
|
||||
}
|
||||
|
||||
del(clear, cb);
|
||||
del(clear);
|
||||
});
|
||||
|
||||
gulp.task('scripts', ['clear-scripts'], function() {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
$GLOBALS['LEAFLET_LIBRARIES']['leaflet'] = array
|
||||
(
|
||||
'name' => 'Leaflet',
|
||||
'version' => '0.7.5',
|
||||
'version' => '0.7.7',
|
||||
'license' => '<a href="https://github.com/Leaflet/Leaflet/blob/master/LICENSE" target="_blank">BSD-2-Clause</a>',
|
||||
'homepage' => 'http://leafletjs.com',
|
||||
'css' => 'assets/leaflet/libs/leaflet/leaflet.min.css',
|
||||
@@ -27,7 +27,7 @@ $GLOBALS['LEAFLET_LIBRARIES']['leaflet'] = array
|
||||
$GLOBALS['LEAFLET_LIBRARIES']['leaflet-providers'] = array
|
||||
(
|
||||
'name' => 'Leaflet-providers',
|
||||
'version' => '1.1.0',
|
||||
'version' => '1.1.15',
|
||||
'license' => '<a href="https://github.com/leaflet-extras/leaflet-providers/blob/master/license.md" target="_blank">BSD-2-Clause</a>',
|
||||
'homepage' => 'http://leaflet-extras.github.io/leaflet-providers',
|
||||
'javascript' => 'assets/leaflet/libs/leaflet-providers/leaflet-providers.min.js'
|
||||
@@ -55,7 +55,7 @@ $GLOBALS['LEAFLET_LIBRARIES']['leaflet-markercluster'] = array
|
||||
$GLOBALS['LEAFLET_LIBRARIES']['leaflet-loading'] = array
|
||||
(
|
||||
'name' => 'Leaflet.loading',
|
||||
'version' => '0.1.16',
|
||||
'version' => '0.1.23',
|
||||
'license' => '<a href="https://github.com/ebrelsford/Leaflet.loading/blob/master/LICENSE" target="_blank">MIT</a>',
|
||||
'homepage' => 'https://github.com/ebrelsford/Leaflet.loading',
|
||||
'css' => 'assets/leaflet/libs/leaflet-loading/Control.Loading.min.css',
|
||||
@@ -65,7 +65,7 @@ $GLOBALS['LEAFLET_LIBRARIES']['leaflet-loading'] = array
|
||||
$GLOBALS['LEAFLET_LIBRARIES']['leaflet-fullscreen'] = array
|
||||
(
|
||||
'name' => 'Leaflet.Control.FullScreen',
|
||||
'version' => '1.1.4',
|
||||
'version' => '1.4.2',
|
||||
'license' => '<a href="https://github.com/brunob/leaflet.fullscreen/blob/master/LICENSE" target="_blank">MIT</a>',
|
||||
'homepage' => 'https://github.com/brunob/leaflet.fullscreen',
|
||||
'css' => 'assets/leaflet/libs/leaflet-fullscreen/Control.FullScreen.min.css',
|
||||
@@ -75,7 +75,7 @@ $GLOBALS['LEAFLET_LIBRARIES']['leaflet-fullscreen'] = array
|
||||
$GLOBALS['LEAFLET_LIBRARIES']['leaflet-control-geocoder'] = array
|
||||
(
|
||||
'name' => 'Leaflet Control Geocoder',
|
||||
'version' => '1.1.0',
|
||||
'version' => '1.5.1',
|
||||
'license' => '<a href="https://github.com/perliedman/leaflet-control-geocoder/blob/master/LICENSE" target="_blank">BSD-2-Clause</a>',
|
||||
'homepage' => 'https://github.com/perliedman/leaflet-control-geocoder',
|
||||
'css' => 'assets/leaflet/libs/control-geocoder/Control.Geocoder.min.css',
|
||||
@@ -85,7 +85,7 @@ $GLOBALS['LEAFLET_LIBRARIES']['leaflet-control-geocoder'] = array
|
||||
$GLOBALS['LEAFLET_LIBRARIES']['spin.js'] = array
|
||||
(
|
||||
'name' => 'spin.js',
|
||||
'version' => '2.3.1',
|
||||
'version' => '2.3.2',
|
||||
'license' => '<a href="https://github.com/fgnass/spin.js/blob/master/LICENSE.txt" target="_blank">MIT</a>',
|
||||
'homepage' => 'http://fgnass.github.io/spin.js',
|
||||
'javascript' => 'assets/leaflet/libs/spin-js/spin.min.js'
|
||||
|
||||
35
package.json
Normal file
35
package.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "contao-leaflet-libaries",
|
||||
"version": "0.7.7",
|
||||
"description": "Libraries for Leaflet integration into Contao CMS =================================================",
|
||||
"main": "gulpfile.js",
|
||||
"dependencies": {
|
||||
"del": "^2.2.2",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp-minify-css": "^1.2.4",
|
||||
"gulp-rename": "^1.2.2",
|
||||
"gulp-replace": "^0.5.4",
|
||||
"gulp-uglify": "^2.0.0",
|
||||
"gulp-util": "^3.0.7",
|
||||
"merge-stream": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/netzmacht/contao-leaflet-libaries.git"
|
||||
},
|
||||
"keywords": [
|
||||
"Leaflet",
|
||||
"Contao",
|
||||
"Libraries"
|
||||
],
|
||||
"author": "netzmacht David Molineus",
|
||||
"license": "LGPL-3.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/netzmacht/contao-leaflet-libaries/issues"
|
||||
},
|
||||
"homepage": "https://github.com/netzmacht/contao-leaflet-libaries#readme"
|
||||
}
|
||||
Reference in New Issue
Block a user