leaflet-html 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +67 -4
- package/dist/leaflet-html.cjs +1 -1
- package/dist/leaflet-html.cjs.map +1 -1
- package/dist/leaflet-html.js +1 -1
- package/dist/leaflet-html.js.map +1 -1
- package/dist/leaflet-html.modern.js +1 -1
- package/dist/leaflet-html.modern.js.map +1 -1
- package/dist/leaflet-html.umd.js +1 -1
- package/dist/leaflet-html.umd.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 andrewgryan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -8,9 +8,9 @@ Fine grained reactive frameworks such as [Solid JS](https://solidjs.com) or [Van
|
|
|
8
8
|
|
|
9
9
|
RESTful frameworks, like [HTMX](Https://htmx.org), that serve HTML over the wire are perfect choices for server rendered content.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Installation
|
|
12
12
|
|
|
13
|
-
Include
|
|
13
|
+
Include Leaflet JS/CSS assets and Leaflet HTML in the document.
|
|
14
14
|
|
|
15
15
|
```html
|
|
16
16
|
<link
|
|
@@ -35,7 +35,7 @@ Include both Leaflet and Leaflet HTML in script tags in the head of the document
|
|
|
35
35
|
</script>
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Remember to style **l-map** elements with display and size settings to make them visible.
|
|
39
39
|
|
|
40
40
|
```css
|
|
41
41
|
l-map {
|
|
@@ -44,7 +44,70 @@ l-map {
|
|
|
44
44
|
}
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
##
|
|
47
|
+
## Quick start
|
|
48
|
+
|
|
49
|
+
A minimal Leaflet-HTML app, is `<l-map center="[0,0]" zoom="1"></l-map>`, which adds an empty map to a page.
|
|
50
|
+
But a gray block is of little use, to show a map, add a `<l-tile-layer>` tag with a `url-template` and `attribution`.
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<l-map center="[0, 0]" zoom="1">
|
|
54
|
+
<l-tile-layer
|
|
55
|
+
url-template="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
|
56
|
+
attribution='© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
|
57
|
+
></l-tile-layer>
|
|
58
|
+
</l-map>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Adding layers, layer groups, and controls requires very little additional effort.
|
|
62
|
+
The same translation patterns can be followed to map from JS to HTML.
|
|
63
|
+
|
|
64
|
+
## Custom elements
|
|
65
|
+
|
|
66
|
+
Leaflet HTML uses Custom elements to declare the state of each map on the page.
|
|
67
|
+
|
|
68
|
+
The most common elements are described below.
|
|
69
|
+
The naming convention followed here makes it easy to map from a Leaflet method, e.g. `L.method()`, to a custom element, e.g. `<l-method></l-method>`.
|
|
70
|
+
|
|
71
|
+
Name | Description
|
|
72
|
+
-- | --
|
|
73
|
+
l-map | `L.map` parent element for a map. Child elements `addTo` this element.
|
|
74
|
+
l-tile-layer | `L.tileLayer` call, can be attached to a `l-map` or `l-base-layers` element.
|
|
75
|
+
l-marker | `L.marker` equivalent, can be attached to a `l-map` or `l-layer-group`.
|
|
76
|
+
l-icon | Icon attachable to `l-marker`.
|
|
77
|
+
l-popup | Popup.
|
|
78
|
+
l-image-overlay | Image overlay.
|
|
79
|
+
l-video-overlay | Video overlay.
|
|
80
|
+
l-control-layers | Adds `l-base-layers` and `l-overlay-layers` to control UI.
|
|
81
|
+
l-base-layers | Collection of layers, typical `l-tile-layers`.
|
|
82
|
+
l-overlay-layers | Collection of layers, either layer or layer groups.
|
|
83
|
+
l-layer-group | Parent element to group layers inside control UI. Makes adding/removing groups of UI to a map simple.
|
|
84
|
+
|
|
85
|
+
Each custom element can be configured using HTML attributes with the same naming convention as the Leaflet docs.
|
|
86
|
+
|
|
87
|
+
> [!NOTE]
|
|
88
|
+
> Attributes are specified by changing **camelCase** to **kebab-case**. E.g. `maxZoom` becomes `max-zoom`.
|
|
89
|
+
|
|
90
|
+
For example, a marker with a custom icon in Leaflet JS has attributes like `{ shadowSize: [50, 64] }` in JS, which translates to `shadow-size="[50,64]"` in HTML.
|
|
91
|
+
|
|
92
|
+
```html
|
|
93
|
+
<l-map center="[51.5, -0.09]" zoom="12">
|
|
94
|
+
<l-tile-layer
|
|
95
|
+
url-template="https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png"
|
|
96
|
+
></l-tile-layer>
|
|
97
|
+
<l-marker lat-lng="[51.5, -0.09]"><l-icon
|
|
98
|
+
icon-url="icons/leaf-green.png"
|
|
99
|
+
shadow-url="icons/leaf-shadow.png"
|
|
100
|
+
icon-size="[38, 95]"
|
|
101
|
+
shadow-size="[50, 64]"
|
|
102
|
+
icon-anchor="[22, 94]"
|
|
103
|
+
shadow-anchor="[4, 62]"
|
|
104
|
+
popup-anchor="[-3, -76]"
|
|
105
|
+
></l-icon>
|
|
106
|
+
</l-marker>
|
|
107
|
+
</l-map>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Realistic example
|
|
48
111
|
|
|
49
112
|
The HTML in `example/index.html` is a simple demonstration of the API.
|
|
50
113
|
|
package/dist/leaflet-html.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t=require("leaflet");function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}),e.default=t,e}var n=/*#__PURE__*/e(t);function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(r=function(){return!!t})()}function a(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function l(t){var e="function"==typeof Map?new Map:void 0;return l=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var a=[null];a.push.apply(a,e);var i=new(t.bind.apply(t,a));return n&&o(i,n.prototype),i}(t,arguments,i(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),o(n,t)},l(t)}var u="map:addTo",s="popup:add",c=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){this.addEventListener(u,function(t){t.detail.type="base"})},e}(/*#__PURE__*/l(HTMLElement)),p=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=t.control.layers({},{});this.addEventListener(u,function(t){var n=t.detail,r=n.type,a=n.name,i=n.layer;"overlay"===r?e.addOverlay(i,a):"base"===r&&e.addBaseLayer(i,a),t.preventDefault()});var n=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:e}});this.dispatchEvent(n)},n}(/*#__PURE__*/l(HTMLElement)),f=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return a(e,t),e}(/*#__PURE__*/l(HTMLElement)),h=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=t.layerGroup();this.layer=n;var r=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:n,name:e}});this.dispatchEvent(r),this.addEventListener(u,function(t){t.stopPropagation(),n.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var e=t.getAttribute("leaflet-id");if(null!==e){var r=n.getLayer(parseInt(e));void 0!==r&&n.removeLayer(r)}}})})}).observe(this,{childList:!0})},n}(f),d=/*#__PURE__*/function(t){function e(){var n;return(n=t.call(this)||this).map=null,n.addEventListener("map:bounds",function(t){var e=t.detail;null!==n.map&&n.map[e.method](e.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof e){var n=t.target;t.removedNodes.forEach(function(t){t instanceof f&&null!==n.map&&null!==t.layer&&n.map.removeLayer(t.layer)})}})}).observe(n,{childList:!0}),n}return a(e,t),e.prototype.connectedCallback=function(){var t=this;this.map=n.map(this);var e=this.getAttribute("center"),r=this.getAttribute("zoom");null!==e&&null!==r&&this.map.setView(JSON.parse(e),parseInt(r)),this.addEventListener(u,function(e){e.detail.layer.addTo(t.map)}),this.addEventListener("layer:remove",function(e){null!==t.map&&t.map.removeLayer(e.detail.layer)})},e}(/*#__PURE__*/l(HTMLElement)),b=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e.addEventListener("icon:add",function(t){t.stopPropagation(),e.layer.setIcon(t.detail.icon)}),e}a(e,t);var r=e.prototype;return r.connectedCallback=function(){var t=this,e=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=n.marker(e,{opacity:r}),this.hasAttribute("icon")){var a=n.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",n.stamp(this.layer)),this.addEventListener(s,function(e){t.layer.bindPopup(e.detail.content)});var i=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},r.attributeChangedCallback=function(t,e,r){null!==this.layer&&("lat-lng"===t&&this.layer.setLatLng(JSON.parse(r)),"opacity"===t&&this.layer.setOpacity(parseFloat(r)),"icon"===t&&this.layer.setIcon(n.icon(JSON.parse(r))))},e}(f);b.observedAttributes=["lat-lng","opacity","icon"];var y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){this.addEventListener(u,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/l(HTMLElement)),v=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(s,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/l(HTMLElement)),m=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=this.getAttribute("url-template");if(null!==n){var r={},a="attribution";this.hasAttribute(a)&&(r[a]=this.getAttribute(a)),this.layer=t.tileLayer(n,r);var i=new CustomEvent(u,{detail:{name:e,layer:this.layer},bubbles:!0});this.dispatchEvent(i)}},n}(f),E=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement));E.observedAttributes=["bounds"];var g=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}a(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this.getAttribute("url");if(null!==e){var n=this.getAttribute("bounds");if(null!==n){var r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=t.imageOverlay(e,JSON.parse(n),r),this.dispatchEvent(new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},r.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},n}(f);g.observedAttributes=["url","bounds","opacity"];var O=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=JSON.parse(this.getAttribute("url")),n=JSON.parse(this.getAttribute("bounds")),r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},a=t.videoOverlay(e,n,r);this.dispatchEvent(new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:a}}))},n}(f),A=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("geojson");if(null!==e){var n=t.geoJSON(JSON.parse(e));this.dispatchEvent(new CustomEvent(u,{bubbles:!0,cancelable:!0,detail:{layer:n}}))}},n}(/*#__PURE__*/l(HTMLElement)),L=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},C=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return a(e,t),e.prototype.connectedCallback=function(){var t=this,e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(n){t.hasAttribute(n)&&(e[L(n)]=t.getAttribute(n))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(n){t.hasAttribute(n)&&(e[L(n)]=JSON.parse(t.getAttribute(n)))}),this.hasAttribute("cross-origin")&&(e.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=n.icon(e);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement)),w=(customElements.define("l-map",d),customElements.define("l-control-layers",p),customElements.define("l-base-layers",c),customElements.define("l-overlay-layers",y),customElements.define("l-layer-group",h),customElements.define("l-tile-layer",m),customElements.define("l-marker",b),customElements.define("l-popup",v),customElements.define("l-lat-lng-bounds",E),customElements.define("l-image-overlay",g),customElements.define("l-video-overlay",O),customElements.define("l-geojson",A),void customElements.define("l-icon",C));module.exports=w;
|
|
1
|
+
var t=require("leaflet");function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}),e.default=t,e}var n=/*#__PURE__*/e(t);function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(r=function(){return!!t})()}function a(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function l(t){var e="function"==typeof Map?new Map:void 0;return l=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var a=[null];a.push.apply(a,e);var i=new(t.bind.apply(t,a));return n&&o(i,n.prototype),i}(t,arguments,i(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),o(n,t)},l(t)}var c="map:addTo",u="popup:add",s=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){this.addEventListener(c,function(t){t.detail.type="base"})},e}(/*#__PURE__*/l(HTMLElement)),p=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=t.control.layers({},{});this.addEventListener(c,function(t){var n=t.detail,r=n.type,a=n.name,i=n.layer;"overlay"===r?e.addOverlay(i,a):"base"===r&&e.addBaseLayer(i,a),t.preventDefault()});var n=new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:e}});this.dispatchEvent(n)},n}(/*#__PURE__*/l(HTMLElement)),f=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return a(e,t),e}(/*#__PURE__*/l(HTMLElement)),h=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=t.layerGroup();this.layer=n;var r=new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:n,name:e}});this.dispatchEvent(r),this.addEventListener(c,function(t){t.stopPropagation(),n.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var e=t.getAttribute("leaflet-id");if(null!==e){var r=n.getLayer(parseInt(e));void 0!==r&&n.removeLayer(r)}}})})}).observe(this,{childList:!0})},n}(f),d=/*#__PURE__*/function(t){function e(){var n;return(n=t.call(this)||this).map=null,n.addEventListener("map:bounds",function(t){var e=t.detail;null!==n.map&&n.map[e.method](e.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof e){var n=t.target;t.removedNodes.forEach(function(t){t instanceof f&&null!==n.map&&null!==t.layer&&n.map.removeLayer(t.layer)})}})}).observe(n,{childList:!0}),n}return a(e,t),e.prototype.connectedCallback=function(){var t=this;this.map=n.map(this);var e=this.getAttribute("center"),r=this.getAttribute("zoom");null!==e&&null!==r&&this.map.setView(JSON.parse(e),parseInt(r)),this.addEventListener(c,function(e){e.detail.layer.addTo(t.map)}),this.addEventListener("layer:remove",function(e){null!==t.map&&t.map.removeLayer(e.detail.layer)})},e}(/*#__PURE__*/l(HTMLElement)),b=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e.addEventListener("icon:add",function(t){t.stopPropagation(),e.layer.setIcon(t.detail.icon)}),e}a(e,t);var r=e.prototype;return r.connectedCallback=function(){var t=this,e=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=n.marker(e,{opacity:r}),this.hasAttribute("icon")){var a=n.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",n.stamp(this.layer)),this.addEventListener(u,function(e){t.layer.bindPopup(e.detail.content)});var i=new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},r.attributeChangedCallback=function(t,e,r){null!==this.layer&&("lat-lng"===t&&this.layer.setLatLng(JSON.parse(r)),"opacity"===t&&this.layer.setOpacity(parseFloat(r)),"icon"===t&&this.layer.setIcon(n.icon(JSON.parse(r))))},e}(f);b.observedAttributes=["lat-lng","opacity","icon"];var y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){this.addEventListener(c,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/l(HTMLElement)),v=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/l(HTMLElement)),m=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=this.getAttribute("url-template");if(null!==n){var r={},a="attribution";this.hasAttribute(a)&&(r[a]=this.getAttribute(a)),this.layer=t.tileLayer(n,r);var i=new CustomEvent(c,{detail:{name:e,layer:this.layer},bubbles:!0});this.dispatchEvent(i)}},n}(f),g=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement));g.observedAttributes=["bounds"];var E=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}a(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this.getAttribute("url");if(null!==e){var n=this.getAttribute("bounds");if(null!==n){var r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=t.imageOverlay(e,JSON.parse(n),r),this.dispatchEvent(new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},r.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},n}(f);E.observedAttributes=["url","bounds","opacity"];var L=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=JSON.parse(this.getAttribute("url")),n=JSON.parse(this.getAttribute("bounds")),r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},a=t.videoOverlay(e,n,r);this.dispatchEvent(new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:a}}))},n}(f),O=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("geojson");if(null!==e){var n=t.geoJSON(JSON.parse(e));this.dispatchEvent(new CustomEvent(c,{bubbles:!0,cancelable:!0,detail:{layer:n}}))}},n}(/*#__PURE__*/l(HTMLElement)),C=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},A=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return a(e,t),e.prototype.connectedCallback=function(){var t=this,e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(n){t.hasAttribute(n)&&(e[C(n)]=t.getAttribute(n))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(n){t.hasAttribute(n)&&(e[C(n)]=JSON.parse(t.getAttribute(n)))}),this.hasAttribute("cross-origin")&&(e.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=n.icon(e);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement)),w={circle:[["lat-lng",t.LatLng]],polyline:[["lat-lngs",t.LatLng]],polygon:[["lat-lng",t.LatLng]],rectangle:[["lat-lng",t.LatLng]]},k={circle:{radius:[Number,null]},polyline:{smoothFactor:[Number,1],noClip:[Boolean,!1]},polygon:{},path:{stroke:[Boolean,!0],color:[String,"#3388ff"],weight:[Number,3],opacity:[Number,1],lineCap:[String,"round"],lineJoin:[String,"round"]},layer:{},rectangle:{}},S={circle:["path","layer"],polyline:["path","layer"],polygon:["polyline"],rectangle:["path","layer"]},N=function(t){var e,n=w[t].map(function(t){return t[0]}),r=Object.keys(k[t]);return S[t].forEach(function(t){var e;(e=r).push.apply(e,Object.keys(k[t]))}),(e=r=r.map(j)).push.apply(e,n),r},j=function(t){return t.split("").map(function(t,e){return t.toUpperCase()===t?(0!==e?"-":"")+t.toLowerCase():t}).join("")},J=function(e,n,r){switch(n){case Number:return parseFloat(e);case Boolean:return"true"===e.toLowerCase();case String:return e;case t.LatLng:return JSON.parse(e);default:return r}},M=function(t,e){console.log(N(e));var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t}a(r,n);var i=r.prototype;return i.connectedCallback=function(){var n=function(t,e){return w[e].map(function(e){var n=e[1];return J(t.getAttribute(e[0]),n,null)})}(this,e),r=function(t,e){var n={},r=function(e){Object.entries(e).forEach(function(e){var r=e[0],a=e[1],i=a[0],o=a[1],l=j(r);t.hasAttribute(l)&&(n[r]=J(t.getAttribute(l),i,o))})};return r(k[e]),S[e].forEach(function(t){r(k[t])}),n}(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},i.attributeChangedCallback=function(t,e,n){null!==this.layer&&function(t,e,n){switch(e){case"lat-lngs":t.setLatLngs(JSON.parse(n));break;case"weight":t.setStyle({weight:parseInt(n)});break;case"color":t.setStyle({color:n})}}(this.layer,t,n)},r}(/*#__PURE__*/l(HTMLElement));return n.observedAttributes=N(e),n},T=(customElements.define("l-map",d),customElements.define("l-control-layers",p),customElements.define("l-base-layers",s),customElements.define("l-overlay-layers",y),customElements.define("l-layer-group",h),customElements.define("l-tile-layer",m),customElements.define("l-marker",b),customElements.define("l-popup",v),customElements.define("l-lat-lng-bounds",g),customElements.define("l-image-overlay",E),customElements.define("l-video-overlay",L),customElements.define("l-geojson",O),customElements.define("l-icon",A),customElements.define("l-circle",M(t.circle,"circle")),customElements.define("l-polyline",M(t.polyline,"polyline")),customElements.define("l-polygon",M(t.polygon,"polygon")),void customElements.define("l-rectangle",M(t.rectangle,"rectangle")));module.exports=T;
|
|
2
2
|
//# sourceMappingURL=leaflet-html.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-html.cjs","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LMap","map","method","bounds","target","el","_this2","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","LOverlayLayers","LPopup","LTileLayer","urlTemplate","options","key","tileLayer","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","init","customElements","define"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-html.cjs","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/generator.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","import { LatLng } from \"leaflet\"\n\nconst ARGS = {\n circle: [[\"lat-lng\", LatLng]],\n polyline: [[\"lat-lngs\", LatLng]], // TODO: LatLng[] array\n polygon: [[\"lat-lng\", LatLng]],\n rectangle: [[\"lat-lng\", LatLng]],\n}\nconst OPTIONS = {\n circle: {\n radius: [Number, null]\n },\n polyline: {\n smoothFactor: [Number, 1.0],\n noClip: [Boolean, false]\n },\n polygon: {},\n path: {\n stroke: [Boolean, true],\n color: [String, \"#3388ff\"],\n weight: [Number, 3],\n opacity: [Number, 1.0],\n lineCap: [String, \"round\"],\n lineJoin: [String, \"round\"],\n },\n layer: {},\n rectangle: {}\n}\n\nconst INHERITS = {\n circle: [\"path\", \"layer\"],\n polyline: [\"path\", \"layer\"],\n polygon: [\"polyline\"],\n rectangle: [\"path\", \"layer\"],\n}\n\n// TODO: Generalise approach\nconst setter = (layer, name, newValue) => {\n switch(name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue))\n break;\n case \"weight\":\n layer.setStyle({ weight: parseInt(newValue) })\n break;\n case \"color\":\n layer.setStyle({ color: newValue })\n break;\n }\n}\n\nconst attributes = (methodName) => {\n let args = ARGS[methodName].map(x => x[0])\n let attrs = Object.keys(OPTIONS[methodName])\n INHERITS[methodName].forEach((parent) => {\n attrs.push(...Object.keys(OPTIONS[parent]))\n })\n attrs = attrs.map(camelToKebab)\n attrs.push(...args)\n return attrs\n}\n\nconst camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {} \n let process = (opts) => {\n Object.entries(opts).forEach(([key, value]) => {\n const [type, val] = value\n const attribute = camelToKebab(key)\n if (el.hasAttribute(attribute)) {\n result[key] = parse(el.getAttribute(attribute), type, val)\n }\n })\n }\n\n // Process inheritance chain\n process(OPTIONS[methodName])\n INHERITS[methodName].forEach(parent => {\n process(OPTIONS[parent])\n })\n return result\n}\n\nconst positional = (el, methodName) => {\n return ARGS[methodName].map(([key, type]) => {\n return parse(el.getAttribute(key), type, null)\n })\n}\n\nconst parse = (text, type, defaultValue) => {\n switch (type) {\n case Number:\n return parseFloat(text)\n case Boolean:\n return text.toLowerCase() === \"true\"\n case String:\n return text\n case LatLng:\n return JSON.parse(text)\n default:\n return defaultValue\n }\n}\n\nconst generator = (method, methodName) => {\n console.log(attributes(methodName))\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super()\n this.layer = null\n // TODO: event handlers\n }\n\n connectedCallback() {\n const args = positional(this, methodName)\n const options = settings(this, methodName)\n this.layer = method(...args, options)\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, name, newValue)\n }\n }\n }\n return cls\n}\n\n\nexport default generator\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\"\n\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"))\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"))\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"))\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"))\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LMap","map","method","bounds","target","el","_this2","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","LOverlayLayers","LPopup","LTileLayer","urlTemplate","options","key","tileLayer","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","ARGS","circle","LatLng","polyline","polygon","rectangle","OPTIONS","radius","Number","smoothFactor","noClip","Boolean","path","stroke","color","String","weight","lineCap","lineJoin","INHERITS","attributes","methodName","_attrs2","args","attrs","Object","keys","parent","_attrs","push","apply","camelToKebab","s","split","letter","idx","toLowerCase","join","text","defaultValue","generator","log","cls","_ref2","positional","result","process","opts","entries","_ref","val","attribute","settings","concat","_","setLatLngs","setStyle","setter","init","customElements","define"],"mappings":"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"}
|
package/dist/leaflet-html.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as i,videoOverlay as o,geoJSON as a}from"leaflet";function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(l=function(){return!!t})()}function c(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,s(t,e)}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},u(t)}function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}function d(t){var e="function"==typeof Map?new Map:void 0;return d=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(l())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var i=new(t.bind.apply(t,r));return n&&s(i,n.prototype),i}(t,arguments,u(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),s(n,t)},d(t)}var p="map:addTo",h="popup:add",f=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){this.addEventListener(p,function(t){t.detail.type="base"})},e}(/*#__PURE__*/d(HTMLElement)),b=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return c(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(p,function(e){var n=e.detail,r=n.type,i=n.name,o=n.layer;"overlay"===r?t.addOverlay(o,i):"base"===r&&t.addBaseLayer(o,i),e.preventDefault()});var n=new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/d(HTMLElement)),m=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return c(e,t),e}(/*#__PURE__*/d(HTMLElement)),v=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(p,function(t){t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var n=t.getAttribute("leaflet-id");if(null!==n){var r=e.getLayer(parseInt(n));void 0!==r&&e.removeLayer(r)}}})})}).observe(this,{childList:!0})},e}(m),y=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).map=null,t.addEventListener("map:bounds",function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof m&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(t,{childList:!0}),t}return c(n,e),n.prototype.connectedCallback=function(){var e=this;this.map=t.map(this);var n=this.getAttribute("center"),r=this.getAttribute("zoom");null!==n&&null!==r&&this.map.setView(JSON.parse(n),parseInt(r)),this.addEventListener(p,function(t){t.detail.layer.addTo(e.map)}),this.addEventListener("layer:remove",function(t){null!==e.map&&e.map.removeLayer(t.detail.layer)})},n}(/*#__PURE__*/d(HTMLElement)),E=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t.addEventListener("icon:add",function(e){e.stopPropagation(),t.layer.setIcon(e.detail.icon)}),t}c(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=t.marker(n,{opacity:r}),this.hasAttribute("icon")){var i=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(i)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(h,function(t){e.layer.bindPopup(t.detail.content)});var o=new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(o)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(m);if(E.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){var g=import.meta.vitest,A=g.it,w=g.expect;(0,g.beforeAll)(function(){customElements.define("l-marker",E)}),A("default icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e);var n=e.layer.getIcon(),r=new t.Icon.Default;w(n).toEqual(r)}),A("adds an icon",function(){var e=document.createElement("l-marker");e.setAttribute("icon",JSON.stringify({iconUrl:"foo.png"})),document.body.appendChild(e);var n=e.layer.getIcon(),r=t.icon({iconUrl:"foo.png"});w(n).toEqual(r)}),A("changes an icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e),e.setAttribute("icon",JSON.stringify({iconUrl:"bar.png"}));var n=e.layer.getIcon(),r=t.icon({iconUrl:"bar.png"});w(n).toEqual(r)})}var C=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){this.addEventListener(p,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/d(HTMLElement)),O=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(h,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/d(HTMLElement)),L=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=this.getAttribute("url-template");if(null!==e){var n={},i="attribution";this.hasAttribute(i)&&(n[i]=this.getAttribute(i)),this.layer=r(e,n);var o=new CustomEvent(p,{detail:{name:t,layer:this.layer},bubbles:!0});this.dispatchEvent(o)}},e}(m),S=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/d(HTMLElement));S.observedAttributes=["bounds"];var k=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}c(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=i(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},n.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},e}(m);k.observedAttributes=["url","bounds","opacity"];var N=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=o(t,e,n);this.dispatchEvent(new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(m),J=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=a(JSON.parse(t));this.dispatchEvent(new CustomEvent(p,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/d(HTMLElement)),M=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},T=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).icon=null,t}return c(n,e),n.prototype.connectedCallback=function(){var e=this,n={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(t){e.hasAttribute(t)&&(n[M(t)]=e.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(t){e.hasAttribute(t)&&(n[M(t)]=JSON.parse(e.getAttribute(t)))}),this.hasAttribute("cross-origin")&&(n.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=t.icon(n);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},n}(/*#__PURE__*/d(HTMLElement));if(import.meta.vitest){var P=import.meta.vitest,j=P.it,H=P.expect;(0,P.beforeAll)(function(){customElements.define("l-icon",T)}),j("default",function(){var e=document.createElement("l-icon");document.body.appendChild(e);var n=e.icon,r=t.icon();H(n).toEqual(r)}),j("emits icon:add event",function(){try{var e=document.createElement("l-icon"),n=new Promise(function(t){e.addEventListener("icon:add",function(e){t(e.detail.icon)})});return document.body.appendChild(e),Promise.resolve(n).then(function(e){var n=t.icon();H(e).toEqual(n)})}catch(t){return Promise.reject(t)}}),j("options",function(){var e=document.createElement("l-icon");e.setAttribute("icon-url","url.png"),e.setAttribute("icon-retina-url","retina.png"),e.setAttribute("icon-size","[0, 0]"),e.setAttribute("icon-anchor","[0, 0]"),e.setAttribute("popup-anchor","[0, 0]"),e.setAttribute("tooltip-anchor","[0, 0]"),e.setAttribute("shadow-url","urlShadow.png"),e.setAttribute("shadow-retina-url","retinaShadow.png"),e.setAttribute("shadow-size","[0, 0]"),e.setAttribute("shadow-anchor","[0, 0]"),e.setAttribute("class-name","foo"),e.setAttribute("cross-origin","true"),document.body.appendChild(e);var n=e.icon,r=t.icon({iconUrl:"url.png",iconRetinaUrl:"retina.png",iconSize:[0,0],iconAnchor:[0,0],popupAnchor:[0,0],tooltipAnchor:[0,0],shadowUrl:"urlShadow.png",shadowRetinaUrl:"retinaShadow.png",shadowSize:[0,0],shadowAnchor:[0,0],className:"foo",crossOrigin:!0});H(n).toEqual(r)})}var I=(customElements.define("l-map",y),customElements.define("l-control-layers",b),customElements.define("l-base-layers",f),customElements.define("l-overlay-layers",C),customElements.define("l-layer-group",v),customElements.define("l-tile-layer",L),customElements.define("l-marker",E),customElements.define("l-popup",O),customElements.define("l-lat-lng-bounds",S),customElements.define("l-image-overlay",k),customElements.define("l-video-overlay",N),customElements.define("l-geojson",J),void customElements.define("l-icon",T));export{I as default};
|
|
1
|
+
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as i,videoOverlay as o,geoJSON as a,LatLng as l,circle as c,polyline as u,polygon as s,rectangle as p}from"leaflet";function d(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(d=function(){return!!t})()}function h(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,b(t,e)}function f(t){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},f(t)}function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function m(t){var e="function"==typeof Map?new Map:void 0;return m=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(d())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var i=new(t.bind.apply(t,r));return n&&b(i,n.prototype),i}(t,arguments,f(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),b(n,t)},m(t)}var y="map:addTo",v="popup:add",g=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return h(e,t),e.prototype.connectedCallback=function(){this.addEventListener(y,function(t){t.detail.type="base"})},e}(/*#__PURE__*/m(HTMLElement)),E=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return h(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(y,function(e){var n=e.detail,r=n.type,i=n.name,o=n.layer;"overlay"===r?t.addOverlay(o,i):"base"===r&&t.addBaseLayer(o,i),e.preventDefault()});var n=new CustomEvent(y,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/m(HTMLElement)),A=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return h(e,t),e}(/*#__PURE__*/m(HTMLElement)),w=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return h(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(y,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(y,function(t){t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var n=t.getAttribute("leaflet-id");if(null!==n){var r=e.getLayer(parseInt(n));void 0!==r&&e.removeLayer(r)}}})})}).observe(this,{childList:!0})},e}(A),C=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).map=null,t.addEventListener("map:bounds",function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof A&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(t,{childList:!0}),t}return h(n,e),n.prototype.connectedCallback=function(){var e=this;this.map=t.map(this);var n=this.getAttribute("center"),r=this.getAttribute("zoom");null!==n&&null!==r&&this.map.setView(JSON.parse(n),parseInt(r)),this.addEventListener(y,function(t){t.detail.layer.addTo(e.map)}),this.addEventListener("layer:remove",function(t){null!==e.map&&e.map.removeLayer(t.detail.layer)})},n}(/*#__PURE__*/m(HTMLElement)),O=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t.addEventListener("icon:add",function(e){e.stopPropagation(),t.layer.setIcon(e.detail.icon)}),t}h(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=t.marker(n,{opacity:r}),this.hasAttribute("icon")){var i=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(i)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(v,function(t){e.layer.bindPopup(t.detail.content)});var o=new CustomEvent(y,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(o)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(A);if(O.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){var L=import.meta.vitest,S=L.it,k=L.expect;(0,L.beforeAll)(function(){customElements.define("l-marker",O)}),S("default icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e);var n=e.layer.getIcon(),r=new t.Icon.Default;k(n).toEqual(r)}),S("adds an icon",function(){var e=document.createElement("l-marker");e.setAttribute("icon",JSON.stringify({iconUrl:"foo.png"})),document.body.appendChild(e);var n=e.layer.getIcon(),r=t.icon({iconUrl:"foo.png"});k(n).toEqual(r)}),S("changes an icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e),e.setAttribute("icon",JSON.stringify({iconUrl:"bar.png"}));var n=e.layer.getIcon(),r=t.icon({iconUrl:"bar.png"});k(n).toEqual(r)})}var N=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return h(e,t),e.prototype.connectedCallback=function(){this.addEventListener(y,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/m(HTMLElement)),J=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return h(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(v,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/m(HTMLElement)),M=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return h(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=this.getAttribute("url-template");if(null!==e){var n={},i="attribution";this.hasAttribute(i)&&(n[i]=this.getAttribute(i)),this.layer=r(e,n);var o=new CustomEvent(y,{detail:{name:t,layer:this.layer},bubbles:!0});this.dispatchEvent(o)}},e}(A),T=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return h(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/m(HTMLElement));T.observedAttributes=["bounds"];var j=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}h(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=i(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(y,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},n.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},e}(A);j.observedAttributes=["url","bounds","opacity"];var H=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return h(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=o(t,e,n);this.dispatchEvent(new CustomEvent(y,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(A),I=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return h(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=a(JSON.parse(t));this.dispatchEvent(new CustomEvent(y,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/m(HTMLElement)),P=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},U=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).icon=null,t}return h(n,e),n.prototype.connectedCallback=function(){var e=this,n={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(t){e.hasAttribute(t)&&(n[P(t)]=e.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(t){e.hasAttribute(t)&&(n[P(t)]=JSON.parse(e.getAttribute(t)))}),this.hasAttribute("cross-origin")&&(n.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=t.icon(n);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},n}(/*#__PURE__*/m(HTMLElement));if(import.meta.vitest){var B=import.meta.vitest,F=B.it,_=B.expect;(0,B.beforeAll)(function(){customElements.define("l-icon",U)}),F("default",function(){var e=document.createElement("l-icon");document.body.appendChild(e);var n=e.icon,r=t.icon();_(n).toEqual(r)}),F("emits icon:add event",function(){try{var e=document.createElement("l-icon"),n=new Promise(function(t){e.addEventListener("icon:add",function(e){t(e.detail.icon)})});return document.body.appendChild(e),Promise.resolve(n).then(function(e){var n=t.icon();_(e).toEqual(n)})}catch(t){return Promise.reject(t)}}),F("options",function(){var e=document.createElement("l-icon");e.setAttribute("icon-url","url.png"),e.setAttribute("icon-retina-url","retina.png"),e.setAttribute("icon-size","[0, 0]"),e.setAttribute("icon-anchor","[0, 0]"),e.setAttribute("popup-anchor","[0, 0]"),e.setAttribute("tooltip-anchor","[0, 0]"),e.setAttribute("shadow-url","urlShadow.png"),e.setAttribute("shadow-retina-url","retinaShadow.png"),e.setAttribute("shadow-size","[0, 0]"),e.setAttribute("shadow-anchor","[0, 0]"),e.setAttribute("class-name","foo"),e.setAttribute("cross-origin","true"),document.body.appendChild(e);var n=e.icon,r=t.icon({iconUrl:"url.png",iconRetinaUrl:"retina.png",iconSize:[0,0],iconAnchor:[0,0],popupAnchor:[0,0],tooltipAnchor:[0,0],shadowUrl:"urlShadow.png",shadowRetinaUrl:"retinaShadow.png",shadowSize:[0,0],shadowAnchor:[0,0],className:"foo",crossOrigin:!0});_(n).toEqual(r)})}var z={circle:[["lat-lng",l]],polyline:[["lat-lngs",l]],polygon:[["lat-lng",l]],rectangle:[["lat-lng",l]]},q={circle:{radius:[Number,null]},polyline:{smoothFactor:[Number,1],noClip:[Boolean,!1]},polygon:{},path:{stroke:[Boolean,!0],color:[String,"#3388ff"],weight:[Number,3],opacity:[Number,1],lineCap:[String,"round"],lineJoin:[String,"round"]},layer:{},rectangle:{}},x={circle:["path","layer"],polyline:["path","layer"],polygon:["polyline"],rectangle:["path","layer"]},R=function(t){var e,n=z[t].map(function(t){return t[0]}),r=Object.keys(q[t]);return x[t].forEach(function(t){var e;(e=r).push.apply(e,Object.keys(q[t]))}),(e=r=r.map(D)).push.apply(e,n),r},D=function(t){return t.split("").map(function(t,e){return t.toUpperCase()===t?(0!==e?"-":"")+t.toLowerCase():t}).join("")},V=function(t,e,n){switch(e){case Number:return parseFloat(t);case Boolean:return"true"===t.toLowerCase();case String:return t;case l:return JSON.parse(t);default:return n}},G=function(t,e){console.log(R(e));var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t}h(r,n);var i=r.prototype;return i.connectedCallback=function(){var n=function(t,e){return z[e].map(function(e){var n=e[1];return V(t.getAttribute(e[0]),n,null)})}(this,e),r=function(t,e){var n={},r=function(e){Object.entries(e).forEach(function(e){var r=e[0],i=e[1],o=i[0],a=i[1],l=D(r);t.hasAttribute(l)&&(n[r]=V(t.getAttribute(l),o,a))})};return r(q[e]),x[e].forEach(function(t){r(q[t])}),n}(this,e);this.layer=t.apply(void 0,n.concat([r]));var i=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},i.attributeChangedCallback=function(t,e,n){null!==this.layer&&function(t,e,n){switch(e){case"lat-lngs":t.setLatLngs(JSON.parse(n));break;case"weight":t.setStyle({weight:parseInt(n)});break;case"color":t.setStyle({color:n})}}(this.layer,t,n)},r}(/*#__PURE__*/m(HTMLElement));return n.observedAttributes=R(e),n},K=(customElements.define("l-map",C),customElements.define("l-control-layers",E),customElements.define("l-base-layers",g),customElements.define("l-overlay-layers",N),customElements.define("l-layer-group",w),customElements.define("l-tile-layer",M),customElements.define("l-marker",O),customElements.define("l-popup",J),customElements.define("l-lat-lng-bounds",T),customElements.define("l-image-overlay",j),customElements.define("l-video-overlay",H),customElements.define("l-geojson",I),customElements.define("l-icon",U),customElements.define("l-circle",G(c,"circle")),customElements.define("l-polyline",G(u,"polyline")),customElements.define("l-polygon",G(s,"polygon")),void customElements.define("l-rectangle",G(p,"rectangle")));export{K as default};
|
|
2
2
|
//# sourceMappingURL=leaflet-html.js.map
|
package/dist/leaflet-html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-html.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LMap","map","method","bounds","target","el","_this2","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","vitest","_import$meta$vitest","it","expect","beforeAll","customElements","define","document","createElement","body","appendChild","actual","getIcon","expected","Icon","Default","toEqual","stringify","iconUrl","LOverlayLayers","LPopup","LTileLayer","urlTemplate","options","key","tileLayer","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","promise","Promise","resolve","then","e","reject","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","init"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-html.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/generator.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","import { LatLng } from \"leaflet\"\n\nconst ARGS = {\n circle: [[\"lat-lng\", LatLng]],\n polyline: [[\"lat-lngs\", LatLng]], // TODO: LatLng[] array\n polygon: [[\"lat-lng\", LatLng]],\n rectangle: [[\"lat-lng\", LatLng]],\n}\nconst OPTIONS = {\n circle: {\n radius: [Number, null]\n },\n polyline: {\n smoothFactor: [Number, 1.0],\n noClip: [Boolean, false]\n },\n polygon: {},\n path: {\n stroke: [Boolean, true],\n color: [String, \"#3388ff\"],\n weight: [Number, 3],\n opacity: [Number, 1.0],\n lineCap: [String, \"round\"],\n lineJoin: [String, \"round\"],\n },\n layer: {},\n rectangle: {}\n}\n\nconst INHERITS = {\n circle: [\"path\", \"layer\"],\n polyline: [\"path\", \"layer\"],\n polygon: [\"polyline\"],\n rectangle: [\"path\", \"layer\"],\n}\n\n// TODO: Generalise approach\nconst setter = (layer, name, newValue) => {\n switch(name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue))\n break;\n case \"weight\":\n layer.setStyle({ weight: parseInt(newValue) })\n break;\n case \"color\":\n layer.setStyle({ color: newValue })\n break;\n }\n}\n\nconst attributes = (methodName) => {\n let args = ARGS[methodName].map(x => x[0])\n let attrs = Object.keys(OPTIONS[methodName])\n INHERITS[methodName].forEach((parent) => {\n attrs.push(...Object.keys(OPTIONS[parent]))\n })\n attrs = attrs.map(camelToKebab)\n attrs.push(...args)\n return attrs\n}\n\nconst camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {} \n let process = (opts) => {\n Object.entries(opts).forEach(([key, value]) => {\n const [type, val] = value\n const attribute = camelToKebab(key)\n if (el.hasAttribute(attribute)) {\n result[key] = parse(el.getAttribute(attribute), type, val)\n }\n })\n }\n\n // Process inheritance chain\n process(OPTIONS[methodName])\n INHERITS[methodName].forEach(parent => {\n process(OPTIONS[parent])\n })\n return result\n}\n\nconst positional = (el, methodName) => {\n return ARGS[methodName].map(([key, type]) => {\n return parse(el.getAttribute(key), type, null)\n })\n}\n\nconst parse = (text, type, defaultValue) => {\n switch (type) {\n case Number:\n return parseFloat(text)\n case Boolean:\n return text.toLowerCase() === \"true\"\n case String:\n return text\n case LatLng:\n return JSON.parse(text)\n default:\n return defaultValue\n }\n}\n\nconst generator = (method, methodName) => {\n console.log(attributes(methodName))\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super()\n this.layer = null\n // TODO: event handlers\n }\n\n connectedCallback() {\n const args = positional(this, methodName)\n const options = settings(this, methodName)\n this.layer = method(...args, options)\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, name, newValue)\n }\n }\n }\n return cls\n}\n\n\nexport default generator\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\"\n\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"))\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"))\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"))\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"))\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LMap","map","method","bounds","target","el","_this2","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","vitest","_import$meta$vitest","it","expect","beforeAll","customElements","define","document","createElement","body","appendChild","actual","getIcon","expected","Icon","Default","toEqual","stringify","iconUrl","LOverlayLayers","LPopup","LTileLayer","urlTemplate","options","key","tileLayer","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","promise","Promise","resolve","then","e","reject","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","ARGS","circle","LatLng","polyline","polygon","rectangle","OPTIONS","radius","Number","smoothFactor","noClip","Boolean","path","stroke","color","String","weight","lineCap","lineJoin","INHERITS","attributes","methodName","_attrs2","args","attrs","Object","keys","parent","_attrs","push","apply","camelToKebab","s","split","letter","idx","toLowerCase","join","text","defaultValue","generator","log","cls","_ref2","positional","result","process","opts","entries","_ref","val","attribute","settings","concat","_","setLatLngs","setStyle","setter","init"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as s,imageOverlay as a,videoOverlay as o,geoJSON as i}from"leaflet";const l="map:addTo",r="popup:add";class c extends HTMLElement{constructor(){super()}connectedCallback(){this.addEventListener(l,t=>{t.detail.type="base"})}}class u extends HTMLElement{constructor(){super()}connectedCallback(){const t=e.layers({},{});this.addEventListener(l,e=>{const{type:n,name:s,layer:a}=e.detail;"overlay"===n?t.addOverlay(a,s):"base"===n&&t.addBaseLayer(a,s),e.preventDefault()});const n=new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)}}class d extends HTMLElement{constructor(){super(),this.layer=null}}class h extends HTMLElement{constructor(){super(),this.map=null,this.addEventListener("map:bounds",t=>{const{bounds:e,method:n}=t.detail;null!==this.map&&this.map[n](e)}),new MutationObserver(function(t){t.forEach(t=>{if(t.target instanceof h){const e=t.target;t.removedNodes.forEach(t=>{t instanceof d&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(this,{childList:!0})}connectedCallback(){this.map=t.map(this);const e=this.getAttribute("center"),n=this.getAttribute("zoom");null!==e&&null!==n&&this.map.setView(JSON.parse(e),parseInt(n)),this.addEventListener(l,t=>{t.detail.layer.addTo(this.map)}),this.addEventListener("layer:remove",t=>{null!==this.map&&this.map.removeLayer(t.detail.layer)})}}class p extends d{constructor(){super(),this.layer=null,this.addEventListener("icon:add",t=>{t.stopPropagation(),this.layer.setIcon(t.detail.icon)})}connectedCallback(){const e=JSON.parse(this.getAttribute("lat-lng")),n=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=t.marker(e,{opacity:n}),this.hasAttribute("icon")){const e=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(e)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(r,t=>{const{content:e}=t.detail;this.layer.bindPopup(e)});const s=new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(s)}attributeChangedCallback(e,n,s){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(s)),"opacity"===e&&this.layer.setOpacity(parseFloat(s)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(s))))}}if(p.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){const{it:e,expect:n,beforeAll:s}=import.meta.vitest;s(()=>{customElements.define("l-marker",p)}),e("default icon",()=>{const e=document.createElement("l-marker");document.body.appendChild(e);let s=e.layer.getIcon(),a=new t.Icon.Default;n(s).toEqual(a)}),e("adds an icon",()=>{const e=document.createElement("l-marker");e.setAttribute("icon",JSON.stringify({iconUrl:"foo.png"})),document.body.appendChild(e);let s=e.layer.getIcon(),a=t.icon({iconUrl:"foo.png"});n(s).toEqual(a)}),e("changes an icon",()=>{const e=document.createElement("l-marker");document.body.appendChild(e),e.setAttribute("icon",JSON.stringify({iconUrl:"bar.png"}));let s=e.layer.getIcon(),a=t.icon({iconUrl:"bar.png"});n(s).toEqual(a)})}class b extends HTMLElement{constructor(){super()}connectedCallback(){this.addEventListener(l,t=>{t.detail.type="overlay"})}}class m extends HTMLElement{constructor(){super()}connectedCallback(){const t=this.getAttribute("content"),e=new CustomEvent(r,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)}}class y extends HTMLElement{constructor(){super()}attributeChangedCallback(t,e,n){const s=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(s)}}y.observedAttributes=["bounds"];class E extends d{constructor(){super(),this.layer=null}connectedCallback(){const t=this.getAttribute("url");if(null===t)return void console.warn("attribute 'url' not set");let e=this.getAttribute("bounds");if(null===e)return void console.warn("attribute 'bounds' not set");const n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}attributeChangedCallback(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))}}E.observedAttributes=["url","bounds","opacity"];class g extends HTMLElement{constructor(){super()}connectedCallback(){const t=this.getAttribute("geojson");if(null!==t){const e=i(JSON.parse(t));this.dispatchEvent(new CustomEvent(l,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}}}const v=t=>t.replace(/-./g,t=>t[1].toUpperCase());class f extends HTMLElement{constructor(){super(),this.icon=null}connectedCallback(){const e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(t=>{this.hasAttribute(t)&&(e[v(t)]=this.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(t=>{this.hasAttribute(t)&&(e[v(t)]=JSON.parse(this.getAttribute(t)))}),this.hasAttribute("cross-origin")&&(e.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=t.icon(e);const n=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(n)}}if(import.meta.vitest){const{it:e,expect:n,beforeAll:s}=import.meta.vitest;s(()=>{customElements.define("l-icon",f)}),e("default",()=>{const e=document.createElement("l-icon");document.body.appendChild(e);let s=e.icon,a=t.icon();n(s).toEqual(a)}),e("emits icon:add event",async()=>{const e=document.createElement("l-icon");let s=new Promise(t=>{e.addEventListener("icon:add",e=>{t(e.detail.icon)})});document.body.appendChild(e);let a=await s,o=t.icon();n(a).toEqual(o)}),e("options",()=>{const e=document.createElement("l-icon");e.setAttribute("icon-url","url.png"),e.setAttribute("icon-retina-url","retina.png"),e.setAttribute("icon-size","[0, 0]"),e.setAttribute("icon-anchor","[0, 0]"),e.setAttribute("popup-anchor","[0, 0]"),e.setAttribute("tooltip-anchor","[0, 0]"),e.setAttribute("shadow-url","urlShadow.png"),e.setAttribute("shadow-retina-url","retinaShadow.png"),e.setAttribute("shadow-size","[0, 0]"),e.setAttribute("shadow-anchor","[0, 0]"),e.setAttribute("class-name","foo"),e.setAttribute("cross-origin","true"),document.body.appendChild(e);let s=e.icon,a=t.icon({iconUrl:"url.png",iconRetinaUrl:"retina.png",iconSize:[0,0],iconAnchor:[0,0],popupAnchor:[0,0],tooltipAnchor:[0,0],shadowUrl:"urlShadow.png",shadowRetinaUrl:"retinaShadow.png",shadowSize:[0,0],shadowAnchor:[0,0],className:"foo",crossOrigin:!0});n(s).toEqual(a)})}const A=(customElements.define("l-map",h),customElements.define("l-control-layers",u),customElements.define("l-base-layers",c),customElements.define("l-overlay-layers",b),customElements.define("l-layer-group",class extends d{constructor(){super(),this.layer=null}connectedCallback(){const t=this.getAttribute("name"),e=n();this.layer=e;const s=new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(s),this.addEventListener(l,t=>{t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(t=>{t.removedNodes.forEach(t=>{if(t instanceof HTMLElement){const n=t.getAttribute("leaflet-id");if(null!==n){const t=e.getLayer(parseInt(n));void 0!==t&&e.removeLayer(t)}}})})}).observe(this,{childList:!0})}}),customElements.define("l-tile-layer",class extends d{constructor(){super(),this.layer=null}connectedCallback(){const t=this.getAttribute("name"),e=this.getAttribute("url-template");if(null===e)return;const n={},a="attribution";this.hasAttribute(a)&&(n[a]=this.getAttribute(a)),this.layer=s(e,n);const o=new CustomEvent(l,{detail:{name:t,layer:this.layer},bubbles:!0});this.dispatchEvent(o)}}),customElements.define("l-marker",p),customElements.define("l-popup",m),customElements.define("l-lat-lng-bounds",y),customElements.define("l-image-overlay",E),customElements.define("l-video-overlay",class extends d{constructor(){super()}connectedCallback(){const t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},s=o(t,e,n);this.dispatchEvent(new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:s}}))}}),customElements.define("l-geojson",g),void customElements.define("l-icon",f));export{A as default};
|
|
1
|
+
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as s,imageOverlay as a,videoOverlay as l,geoJSON as o,LatLng as i,circle as r,polyline as c,polygon as u,rectangle as d}from"leaflet";const h="map:addTo",p="popup:add";class b extends HTMLElement{constructor(){super()}connectedCallback(){this.addEventListener(h,t=>{t.detail.type="base"})}}class m extends HTMLElement{constructor(){super()}connectedCallback(){const t=e.layers({},{});this.addEventListener(h,e=>{const{type:n,name:s,layer:a}=e.detail;"overlay"===n?t.addOverlay(a,s):"base"===n&&t.addBaseLayer(a,s),e.preventDefault()});const n=new CustomEvent(h,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)}}class y extends HTMLElement{constructor(){super(),this.layer=null}}class g extends HTMLElement{constructor(){super(),this.map=null,this.addEventListener("map:bounds",t=>{const{bounds:e,method:n}=t.detail;null!==this.map&&this.map[n](e)}),new MutationObserver(function(t){t.forEach(t=>{if(t.target instanceof g){const e=t.target;t.removedNodes.forEach(t=>{t instanceof y&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(this,{childList:!0})}connectedCallback(){this.map=t.map(this);const e=this.getAttribute("center"),n=this.getAttribute("zoom");null!==e&&null!==n&&this.map.setView(JSON.parse(e),parseInt(n)),this.addEventListener(h,t=>{t.detail.layer.addTo(this.map)}),this.addEventListener("layer:remove",t=>{null!==this.map&&this.map.removeLayer(t.detail.layer)})}}class E extends y{constructor(){super(),this.layer=null,this.addEventListener("icon:add",t=>{t.stopPropagation(),this.layer.setIcon(t.detail.icon)})}connectedCallback(){const e=JSON.parse(this.getAttribute("lat-lng")),n=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=t.marker(e,{opacity:n}),this.hasAttribute("icon")){const e=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(e)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(p,t=>{const{content:e}=t.detail;this.layer.bindPopup(e)});const s=new CustomEvent(h,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(s)}attributeChangedCallback(e,n,s){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(s)),"opacity"===e&&this.layer.setOpacity(parseFloat(s)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(s))))}}if(E.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){const{it:e,expect:n,beforeAll:s}=import.meta.vitest;s(()=>{customElements.define("l-marker",E)}),e("default icon",()=>{const e=document.createElement("l-marker");document.body.appendChild(e);let s=e.layer.getIcon(),a=new t.Icon.Default;n(s).toEqual(a)}),e("adds an icon",()=>{const e=document.createElement("l-marker");e.setAttribute("icon",JSON.stringify({iconUrl:"foo.png"})),document.body.appendChild(e);let s=e.layer.getIcon(),a=t.icon({iconUrl:"foo.png"});n(s).toEqual(a)}),e("changes an icon",()=>{const e=document.createElement("l-marker");document.body.appendChild(e),e.setAttribute("icon",JSON.stringify({iconUrl:"bar.png"}));let s=e.layer.getIcon(),a=t.icon({iconUrl:"bar.png"});n(s).toEqual(a)})}class f extends HTMLElement{constructor(){super()}connectedCallback(){this.addEventListener(h,t=>{t.detail.type="overlay"})}}class v extends HTMLElement{constructor(){super()}connectedCallback(){const t=this.getAttribute("content"),e=new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)}}class A extends HTMLElement{constructor(){super()}attributeChangedCallback(t,e,n){const s=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(s)}}A.observedAttributes=["bounds"];class C extends y{constructor(){super(),this.layer=null}connectedCallback(){const t=this.getAttribute("url");if(null===t)return void console.warn("attribute 'url' not set");let e=this.getAttribute("bounds");if(null===e)return void console.warn("attribute 'bounds' not set");const n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(h,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}attributeChangedCallback(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))}}C.observedAttributes=["url","bounds","opacity"];class w extends HTMLElement{constructor(){super()}connectedCallback(){const t=this.getAttribute("geojson");if(null!==t){const e=o(JSON.parse(t));this.dispatchEvent(new CustomEvent(h,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}}}const L=t=>t.replace(/-./g,t=>t[1].toUpperCase());class k extends HTMLElement{constructor(){super(),this.icon=null}connectedCallback(){const e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(t=>{this.hasAttribute(t)&&(e[L(t)]=this.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(t=>{this.hasAttribute(t)&&(e[L(t)]=JSON.parse(this.getAttribute(t)))}),this.hasAttribute("cross-origin")&&(e.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=t.icon(e);const n=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(n)}}if(import.meta.vitest){const{it:e,expect:n,beforeAll:s}=import.meta.vitest;s(()=>{customElements.define("l-icon",k)}),e("default",()=>{const e=document.createElement("l-icon");document.body.appendChild(e);let s=e.icon,a=t.icon();n(s).toEqual(a)}),e("emits icon:add event",async()=>{const e=document.createElement("l-icon");let s=new Promise(t=>{e.addEventListener("icon:add",e=>{t(e.detail.icon)})});document.body.appendChild(e);let a=await s,l=t.icon();n(a).toEqual(l)}),e("options",()=>{const e=document.createElement("l-icon");e.setAttribute("icon-url","url.png"),e.setAttribute("icon-retina-url","retina.png"),e.setAttribute("icon-size","[0, 0]"),e.setAttribute("icon-anchor","[0, 0]"),e.setAttribute("popup-anchor","[0, 0]"),e.setAttribute("tooltip-anchor","[0, 0]"),e.setAttribute("shadow-url","urlShadow.png"),e.setAttribute("shadow-retina-url","retinaShadow.png"),e.setAttribute("shadow-size","[0, 0]"),e.setAttribute("shadow-anchor","[0, 0]"),e.setAttribute("class-name","foo"),e.setAttribute("cross-origin","true"),document.body.appendChild(e);let s=e.icon,a=t.icon({iconUrl:"url.png",iconRetinaUrl:"retina.png",iconSize:[0,0],iconAnchor:[0,0],popupAnchor:[0,0],tooltipAnchor:[0,0],shadowUrl:"urlShadow.png",shadowRetinaUrl:"retinaShadow.png",shadowSize:[0,0],shadowAnchor:[0,0],className:"foo",crossOrigin:!0});n(s).toEqual(a)})}const S={circle:[["lat-lng",i]],polyline:[["lat-lngs",i]],polygon:[["lat-lng",i]],rectangle:[["lat-lng",i]]},O={circle:{radius:[Number,null]},polyline:{smoothFactor:[Number,1],noClip:[Boolean,!1]},polygon:{},path:{stroke:[Boolean,!0],color:[String,"#3388ff"],weight:[Number,3],opacity:[Number,1],lineCap:[String,"round"],lineJoin:[String,"round"]},layer:{},rectangle:{}},N={circle:["path","layer"],polyline:["path","layer"],polygon:["polyline"],rectangle:["path","layer"]},x=t=>{let e=S[t].map(t=>t[0]),n=Object.keys(O[t]);return N[t].forEach(t=>{n.push(...Object.keys(O[t]))}),n=n.map(J),n.push(...e),n},J=t=>t.split("").map((t,e)=>t.toUpperCase()===t?`${0!==e?"-":""}${t.toLowerCase()}`:t).join(""),T=(t,e,n)=>{switch(e){case Number:return parseFloat(t);case Boolean:return"true"===t.toLowerCase();case String:return t;case i:return JSON.parse(t);default:return n}},M=(t,e)=>{console.log(x(e));class n extends HTMLElement{constructor(){super(),this.layer=null}connectedCallback(){const n=((t,e)=>S[e].map(([e,n])=>T(t.getAttribute(e),n,null)))(this,e),s=((t,e)=>{let n={},s=e=>{Object.entries(e).forEach(([e,s])=>{const[a,l]=s,o=J(e);t.hasAttribute(o)&&(n[e]=T(t.getAttribute(o),a,l))})};return s(O[e]),N[e].forEach(t=>{s(O[t])}),n})(this,e);this.layer=t(...n,s);const a=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)}attributeChangedCallback(t,e,n){null!==this.layer&&((t,e,n)=>{switch(e){case"lat-lngs":t.setLatLngs(JSON.parse(n));break;case"weight":t.setStyle({weight:parseInt(n)});break;case"color":t.setStyle({color:n})}})(this.layer,t,n)}}return n.observedAttributes=x(e),n},H=(customElements.define("l-map",g),customElements.define("l-control-layers",m),customElements.define("l-base-layers",b),customElements.define("l-overlay-layers",f),customElements.define("l-layer-group",class extends y{constructor(){super(),this.layer=null}connectedCallback(){const t=this.getAttribute("name"),e=n();this.layer=e;const s=new CustomEvent(h,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(s),this.addEventListener(h,t=>{t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(t=>{t.removedNodes.forEach(t=>{if(t instanceof HTMLElement){const n=t.getAttribute("leaflet-id");if(null!==n){const t=e.getLayer(parseInt(n));void 0!==t&&e.removeLayer(t)}}})})}).observe(this,{childList:!0})}}),customElements.define("l-tile-layer",class extends y{constructor(){super(),this.layer=null}connectedCallback(){const t=this.getAttribute("name"),e=this.getAttribute("url-template");if(null===e)return;const n={},a="attribution";this.hasAttribute(a)&&(n[a]=this.getAttribute(a)),this.layer=s(e,n);const l=new CustomEvent(h,{detail:{name:t,layer:this.layer},bubbles:!0});this.dispatchEvent(l)}}),customElements.define("l-marker",E),customElements.define("l-popup",v),customElements.define("l-lat-lng-bounds",A),customElements.define("l-image-overlay",C),customElements.define("l-video-overlay",class extends y{constructor(){super()}connectedCallback(){const t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},s=l(t,e,n);this.dispatchEvent(new CustomEvent(h,{cancelable:!0,bubbles:!0,detail:{layer:s}}))}}),customElements.define("l-geojson",w),customElements.define("l-icon",k),customElements.define("l-circle",M(r,"circle")),customElements.define("l-polyline",M(c,"polyline")),customElements.define("l-polygon",M(u,"polygon")),void customElements.define("l-rectangle",M(d,"rectangle")));export{H as default};
|
|
2
2
|
//# sourceMappingURL=leaflet-html.modern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-html.modern.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js","../src/l-layer-group.js","../src/l-tile-layer.js","../src/l-video-overlay.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","HTMLElement","constructor","super","connectedCallback","this","addEventListener","ev","detail","LControlLayers","controlLayers","control","layers","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","LMap","map","bounds","method","MutationObserver","mutations","forEach","mutation","target","el","removedNodes","node","removeLayer","observe","childList","L","center","getAttribute","zoom","setView","JSON","parse","parseInt","addTo","LMarker","stopPropagation","setIcon","icon","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","content","bindPopup","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","vitest","it","expect","beforeAll","customElements","define","document","createElement","body","appendChild","actual","getIcon","expected","Icon","Default","toEqual","stringify","iconUrl","LOverlayLayers","LPopup","LLatLngBounds","_name","LImageOverlay","url","console","warn","options","alt","imageOverlay","setUrl","setBounds","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","key","crossOrigin","async","promise","Promise","resolve","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","init","group","layerGroup","addLayer","leafletId","getLayer","urlTemplate","tileLayer","autoplay","muted","playsInline","videoOverlay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-html.modern.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/generator.js","../src/index.js","../src/l-layer-group.js","../src/l-tile-layer.js","../src/l-video-overlay.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","import { LatLng } from \"leaflet\"\n\nconst ARGS = {\n circle: [[\"lat-lng\", LatLng]],\n polyline: [[\"lat-lngs\", LatLng]], // TODO: LatLng[] array\n polygon: [[\"lat-lng\", LatLng]],\n rectangle: [[\"lat-lng\", LatLng]],\n}\nconst OPTIONS = {\n circle: {\n radius: [Number, null]\n },\n polyline: {\n smoothFactor: [Number, 1.0],\n noClip: [Boolean, false]\n },\n polygon: {},\n path: {\n stroke: [Boolean, true],\n color: [String, \"#3388ff\"],\n weight: [Number, 3],\n opacity: [Number, 1.0],\n lineCap: [String, \"round\"],\n lineJoin: [String, \"round\"],\n },\n layer: {},\n rectangle: {}\n}\n\nconst INHERITS = {\n circle: [\"path\", \"layer\"],\n polyline: [\"path\", \"layer\"],\n polygon: [\"polyline\"],\n rectangle: [\"path\", \"layer\"],\n}\n\n// TODO: Generalise approach\nconst setter = (layer, name, newValue) => {\n switch(name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue))\n break;\n case \"weight\":\n layer.setStyle({ weight: parseInt(newValue) })\n break;\n case \"color\":\n layer.setStyle({ color: newValue })\n break;\n }\n}\n\nconst attributes = (methodName) => {\n let args = ARGS[methodName].map(x => x[0])\n let attrs = Object.keys(OPTIONS[methodName])\n INHERITS[methodName].forEach((parent) => {\n attrs.push(...Object.keys(OPTIONS[parent]))\n })\n attrs = attrs.map(camelToKebab)\n attrs.push(...args)\n return attrs\n}\n\nconst camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {} \n let process = (opts) => {\n Object.entries(opts).forEach(([key, value]) => {\n const [type, val] = value\n const attribute = camelToKebab(key)\n if (el.hasAttribute(attribute)) {\n result[key] = parse(el.getAttribute(attribute), type, val)\n }\n })\n }\n\n // Process inheritance chain\n process(OPTIONS[methodName])\n INHERITS[methodName].forEach(parent => {\n process(OPTIONS[parent])\n })\n return result\n}\n\nconst positional = (el, methodName) => {\n return ARGS[methodName].map(([key, type]) => {\n return parse(el.getAttribute(key), type, null)\n })\n}\n\nconst parse = (text, type, defaultValue) => {\n switch (type) {\n case Number:\n return parseFloat(text)\n case Boolean:\n return text.toLowerCase() === \"true\"\n case String:\n return text\n case LatLng:\n return JSON.parse(text)\n default:\n return defaultValue\n }\n}\n\nconst generator = (method, methodName) => {\n console.log(attributes(methodName))\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super()\n this.layer = null\n // TODO: event handlers\n }\n\n connectedCallback() {\n const args = positional(this, methodName)\n const options = settings(this, methodName)\n this.layer = method(...args, options)\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, name, newValue)\n }\n }\n }\n return cls\n}\n\n\nexport default generator\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\"\n\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"))\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"))\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"))\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"))\n})();\n\nexport default init;\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","HTMLElement","constructor","super","connectedCallback","this","addEventListener","ev","detail","LControlLayers","controlLayers","control","layers","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","LMap","map","bounds","method","MutationObserver","mutations","forEach","mutation","target","el","removedNodes","node","removeLayer","observe","childList","L","center","getAttribute","zoom","setView","JSON","parse","parseInt","addTo","LMarker","stopPropagation","setIcon","icon","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","content","bindPopup","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","vitest","it","expect","beforeAll","customElements","define","document","createElement","body","appendChild","actual","getIcon","expected","Icon","Default","toEqual","stringify","iconUrl","LOverlayLayers","LPopup","LLatLngBounds","_name","LImageOverlay","url","console","warn","options","alt","imageOverlay","setUrl","setBounds","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","key","crossOrigin","async","promise","Promise","resolve","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","ARGS","circle","LatLng","polyline","polygon","rectangle","OPTIONS","radius","Number","smoothFactor","noClip","Boolean","path","stroke","color","String","weight","lineCap","lineJoin","INHERITS","attributes","methodName","args","attrs","Object","keys","parent","push","camelToKebab","s","split","letter","idx","toLowerCase","join","text","defaultValue","generator","log","cls","positional","settings","result","process","opts","entries","val","attribute","_","setter","setLatLngs","setStyle","init","group","layerGroup","addLayer","leafletId","getLayer","urlTemplate","tileLayer","autoplay","muted","playsInline","videoOverlay"],"mappings":"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"}
|
package/dist/leaflet-html.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("leaflet")):"function"==typeof define&&define.amd?define(["leaflet"],e):(t||self).leafletHtml=e(t.leaflet)}(this,function(t){function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}),e.default=t,e}var n=/*#__PURE__*/e(t);function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(r=function(){return!!t})()}function i(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function l(t){var e="function"==typeof Map?new Map:void 0;return l=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var a=new(t.bind.apply(t,i));return n&&o(a,n.prototype),a}(t,arguments,a(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),o(n,t)},l(t)}var u="map:addTo",s="popup:add",c=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.connectedCallback=function(){this.addEventListener(u,function(t){t.detail.type="base"})},e}(/*#__PURE__*/l(HTMLElement)),f=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return i(n,e),n.prototype.connectedCallback=function(){var e=t.control.layers({},{});this.addEventListener(u,function(t){var n=t.detail,r=n.type,i=n.name,a=n.layer;"overlay"===r?e.addOverlay(a,i):"base"===r&&e.addBaseLayer(a,i),t.preventDefault()});var n=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:e}});this.dispatchEvent(n)},n}(/*#__PURE__*/l(HTMLElement)),p=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return i(e,t),e}(/*#__PURE__*/l(HTMLElement)),d=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return i(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=t.layerGroup();this.layer=n;var r=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:n,name:e}});this.dispatchEvent(r),this.addEventListener(u,function(t){t.stopPropagation(),n.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var e=t.getAttribute("leaflet-id");if(null!==e){var r=n.getLayer(parseInt(e));void 0!==r&&n.removeLayer(r)}}})})}).observe(this,{childList:!0})},n}(p),h=/*#__PURE__*/function(t){function e(){var n;return(n=t.call(this)||this).map=null,n.addEventListener("map:bounds",function(t){var e=t.detail;null!==n.map&&n.map[e.method](e.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof e){var n=t.target;t.removedNodes.forEach(function(t){t instanceof p&&null!==n.map&&null!==t.layer&&n.map.removeLayer(t.layer)})}})}).observe(n,{childList:!0}),n}return i(e,t),e.prototype.connectedCallback=function(){var t=this;this.map=n.map(this);var e=this.getAttribute("center"),r=this.getAttribute("zoom");null!==e&&null!==r&&this.map.setView(JSON.parse(e),parseInt(r)),this.addEventListener(u,function(e){e.detail.layer.addTo(t.map)}),this.addEventListener("layer:remove",function(e){null!==t.map&&t.map.removeLayer(e.detail.layer)})},e}(/*#__PURE__*/l(HTMLElement)),b=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e.addEventListener("icon:add",function(t){t.stopPropagation(),e.layer.setIcon(t.detail.icon)}),e}i(e,t);var r=e.prototype;return r.connectedCallback=function(){var t=this,e=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=n.marker(e,{opacity:r}),this.hasAttribute("icon")){var i=n.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(i)}this.setAttribute("leaflet-id",n.stamp(this.layer)),this.addEventListener(s,function(e){t.layer.bindPopup(e.detail.content)});var a=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},r.attributeChangedCallback=function(t,e,r){null!==this.layer&&("lat-lng"===t&&this.layer.setLatLng(JSON.parse(r)),"opacity"===t&&this.layer.setOpacity(parseFloat(r)),"icon"===t&&this.layer.setIcon(n.icon(JSON.parse(r))))},e}(p);b.observedAttributes=["lat-lng","opacity","icon"];var y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.connectedCallback=function(){this.addEventListener(u,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/l(HTMLElement)),v=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(s,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/l(HTMLElement)),m=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return i(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=this.getAttribute("url-template");if(null!==n){var r={},i="attribution";this.hasAttribute(i)&&(r[i]=this.getAttribute(i)),this.layer=t.tileLayer(n,r);var a=new CustomEvent(u,{detail:{name:e,layer:this.layer},bubbles:!0});this.dispatchEvent(a)}},n}(p),E=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement));E.observedAttributes=["bounds"];var g=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}i(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this.getAttribute("url");if(null!==e){var n=this.getAttribute("bounds");if(null!==n){var r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=t.imageOverlay(e,JSON.parse(n),r),this.dispatchEvent(new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},r.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},n}(p);g.observedAttributes=["url","bounds","opacity"];var O=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return i(n,e),n.prototype.connectedCallback=function(){var e=JSON.parse(this.getAttribute("url")),n=JSON.parse(this.getAttribute("bounds")),r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},i=t.videoOverlay(e,n,r);this.dispatchEvent(new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{layer:i}}))},n}(p),A=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return i(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("geojson");if(null!==e){var n=t.geoJSON(JSON.parse(e));this.dispatchEvent(new CustomEvent(u,{bubbles:!0,cancelable:!0,detail:{layer:n}}))}},n}(/*#__PURE__*/l(HTMLElement)),L=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},C=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return i(e,t),e.prototype.connectedCallback=function(){var t=this,e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(n){t.hasAttribute(n)&&(e[L(n)]=t.getAttribute(n))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(n){t.hasAttribute(n)&&(e[L(n)]=JSON.parse(t.getAttribute(n)))}),this.hasAttribute("cross-origin")&&(e.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=n.icon(e);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement));return customElements.define("l-map",h),customElements.define("l-control-layers",f),customElements.define("l-base-layers",c),customElements.define("l-overlay-layers",y),customElements.define("l-layer-group",d),customElements.define("l-tile-layer",m),customElements.define("l-marker",b),customElements.define("l-popup",v),customElements.define("l-lat-lng-bounds",E),customElements.define("l-image-overlay",g),customElements.define("l-video-overlay",O),customElements.define("l-geojson",A),void customElements.define("l-icon",C)});
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("leaflet")):"function"==typeof define&&define.amd?define(["leaflet"],e):(t||self).leafletHtml=e(t.leaflet)}(this,function(t){function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}),e.default=t,e}var n=/*#__PURE__*/e(t);function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(r=function(){return!!t})()}function a(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function l(t){var e="function"==typeof Map?new Map:void 0;return l=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var a=[null];a.push.apply(a,e);var i=new(t.bind.apply(t,a));return n&&o(i,n.prototype),i}(t,arguments,i(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),o(n,t)},l(t)}var c="map:addTo",u="popup:add",s=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){this.addEventListener(c,function(t){t.detail.type="base"})},e}(/*#__PURE__*/l(HTMLElement)),p=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=t.control.layers({},{});this.addEventListener(c,function(t){var n=t.detail,r=n.type,a=n.name,i=n.layer;"overlay"===r?e.addOverlay(i,a):"base"===r&&e.addBaseLayer(i,a),t.preventDefault()});var n=new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:e}});this.dispatchEvent(n)},n}(/*#__PURE__*/l(HTMLElement)),f=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return a(e,t),e}(/*#__PURE__*/l(HTMLElement)),h=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=t.layerGroup();this.layer=n;var r=new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:n,name:e}});this.dispatchEvent(r),this.addEventListener(c,function(t){t.stopPropagation(),n.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var e=t.getAttribute("leaflet-id");if(null!==e){var r=n.getLayer(parseInt(e));void 0!==r&&n.removeLayer(r)}}})})}).observe(this,{childList:!0})},n}(f),d=/*#__PURE__*/function(t){function e(){var n;return(n=t.call(this)||this).map=null,n.addEventListener("map:bounds",function(t){var e=t.detail;null!==n.map&&n.map[e.method](e.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof e){var n=t.target;t.removedNodes.forEach(function(t){t instanceof f&&null!==n.map&&null!==t.layer&&n.map.removeLayer(t.layer)})}})}).observe(n,{childList:!0}),n}return a(e,t),e.prototype.connectedCallback=function(){var t=this;this.map=n.map(this);var e=this.getAttribute("center"),r=this.getAttribute("zoom");null!==e&&null!==r&&this.map.setView(JSON.parse(e),parseInt(r)),this.addEventListener(c,function(e){e.detail.layer.addTo(t.map)}),this.addEventListener("layer:remove",function(e){null!==t.map&&t.map.removeLayer(e.detail.layer)})},e}(/*#__PURE__*/l(HTMLElement)),b=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e.addEventListener("icon:add",function(t){t.stopPropagation(),e.layer.setIcon(t.detail.icon)}),e}a(e,t);var r=e.prototype;return r.connectedCallback=function(){var t=this,e=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=n.marker(e,{opacity:r}),this.hasAttribute("icon")){var a=n.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",n.stamp(this.layer)),this.addEventListener(u,function(e){t.layer.bindPopup(e.detail.content)});var i=new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},r.attributeChangedCallback=function(t,e,r){null!==this.layer&&("lat-lng"===t&&this.layer.setLatLng(JSON.parse(r)),"opacity"===t&&this.layer.setOpacity(parseFloat(r)),"icon"===t&&this.layer.setIcon(n.icon(JSON.parse(r))))},e}(f);b.observedAttributes=["lat-lng","opacity","icon"];var y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){this.addEventListener(c,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/l(HTMLElement)),v=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/l(HTMLElement)),m=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=this.getAttribute("url-template");if(null!==n){var r={},a="attribution";this.hasAttribute(a)&&(r[a]=this.getAttribute(a)),this.layer=t.tileLayer(n,r);var i=new CustomEvent(c,{detail:{name:e,layer:this.layer},bubbles:!0});this.dispatchEvent(i)}},n}(f),g=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return a(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement));g.observedAttributes=["bounds"];var E=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}a(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this.getAttribute("url");if(null!==e){var n=this.getAttribute("bounds");if(null!==n){var r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=t.imageOverlay(e,JSON.parse(n),r),this.dispatchEvent(new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},r.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},n}(f);E.observedAttributes=["url","bounds","opacity"];var L=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=JSON.parse(this.getAttribute("url")),n=JSON.parse(this.getAttribute("bounds")),r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},a=t.videoOverlay(e,n,r);this.dispatchEvent(new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{layer:a}}))},n}(f),O=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return a(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("geojson");if(null!==e){var n=t.geoJSON(JSON.parse(e));this.dispatchEvent(new CustomEvent(c,{bubbles:!0,cancelable:!0,detail:{layer:n}}))}},n}(/*#__PURE__*/l(HTMLElement)),C=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},A=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return a(e,t),e.prototype.connectedCallback=function(){var t=this,e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(n){t.hasAttribute(n)&&(e[C(n)]=t.getAttribute(n))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(n){t.hasAttribute(n)&&(e[C(n)]=JSON.parse(t.getAttribute(n)))}),this.hasAttribute("cross-origin")&&(e.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=n.icon(e);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement)),w={circle:[["lat-lng",t.LatLng]],polyline:[["lat-lngs",t.LatLng]],polygon:[["lat-lng",t.LatLng]],rectangle:[["lat-lng",t.LatLng]]},k={circle:{radius:[Number,null]},polyline:{smoothFactor:[Number,1],noClip:[Boolean,!1]},polygon:{},path:{stroke:[Boolean,!0],color:[String,"#3388ff"],weight:[Number,3],opacity:[Number,1],lineCap:[String,"round"],lineJoin:[String,"round"]},layer:{},rectangle:{}},S={circle:["path","layer"],polyline:["path","layer"],polygon:["polyline"],rectangle:["path","layer"]},N=function(t){var e,n=w[t].map(function(t){return t[0]}),r=Object.keys(k[t]);return S[t].forEach(function(t){var e;(e=r).push.apply(e,Object.keys(k[t]))}),(e=r=r.map(j)).push.apply(e,n),r},j=function(t){return t.split("").map(function(t,e){return t.toUpperCase()===t?(0!==e?"-":"")+t.toLowerCase():t}).join("")},T=function(e,n,r){switch(n){case Number:return parseFloat(e);case Boolean:return"true"===e.toLowerCase();case String:return e;case t.LatLng:return JSON.parse(e);default:return r}},J=function(t,e){console.log(N(e));var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t}a(r,n);var i=r.prototype;return i.connectedCallback=function(){var n=function(t,e){return w[e].map(function(e){var n=e[1];return T(t.getAttribute(e[0]),n,null)})}(this,e),r=function(t,e){var n={},r=function(e){Object.entries(e).forEach(function(e){var r=e[0],a=e[1],i=a[0],o=a[1],l=j(r);t.hasAttribute(l)&&(n[r]=T(t.getAttribute(l),i,o))})};return r(k[e]),S[e].forEach(function(t){r(k[t])}),n}(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},i.attributeChangedCallback=function(t,e,n){null!==this.layer&&function(t,e,n){switch(e){case"lat-lngs":t.setLatLngs(JSON.parse(n));break;case"weight":t.setStyle({weight:parseInt(n)});break;case"color":t.setStyle({color:n})}}(this.layer,t,n)},r}(/*#__PURE__*/l(HTMLElement));return n.observedAttributes=N(e),n};return customElements.define("l-map",d),customElements.define("l-control-layers",p),customElements.define("l-base-layers",s),customElements.define("l-overlay-layers",y),customElements.define("l-layer-group",h),customElements.define("l-tile-layer",m),customElements.define("l-marker",b),customElements.define("l-popup",v),customElements.define("l-lat-lng-bounds",g),customElements.define("l-image-overlay",E),customElements.define("l-video-overlay",L),customElements.define("l-geojson",O),customElements.define("l-icon",A),customElements.define("l-circle",J(t.circle,"circle")),customElements.define("l-polyline",J(t.polyline,"polyline")),customElements.define("l-polygon",J(t.polygon,"polygon")),void customElements.define("l-rectangle",J(t.rectangle,"rectangle"))});
|
|
2
2
|
//# sourceMappingURL=leaflet-html.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-html.umd.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LMap","map","method","bounds","target","el","_this2","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","LOverlayLayers","LPopup","LTileLayer","urlTemplate","options","key","tileLayer","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","customElements","define"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-html.umd.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/generator.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMap extends HTMLElement {\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if ((el.map !== null) && (node.layer !== null)) {\n el.map.removeLayer(node.layer)\n }\n }\n })\n }\n })\n })\n observer.observe(this, { childList: true })\n }\n\n connectedCallback() {\n this.map = L.map(this);\n const center = this.getAttribute(\"center\");\n const zoom = this.getAttribute(\"zoom\");\n if (center !== null && zoom !== null) {\n this.map.setView(JSON.parse(center), parseInt(zoom));\n }\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n const latLng = JSON.parse(this.getAttribute(\"lat-lng\"));\n const opacity = parseFloat(this.getAttribute(\"opacity\") || \"1.0\");\n this.layer = L.marker(latLng, { opacity });\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content } = ev.detail;\n this.layer.bindPopup(content);\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n if (urlTemplate === null) {\n return;\n }\n const options = {};\n const key = \"attribution\";\n if (this.hasAttribute(key)) {\n options[key] = this.getAttribute(key);\n }\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n const event = new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds: JSON.parse(newValue),\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","import { LatLng } from \"leaflet\"\n\nconst ARGS = {\n circle: [[\"lat-lng\", LatLng]],\n polyline: [[\"lat-lngs\", LatLng]], // TODO: LatLng[] array\n polygon: [[\"lat-lng\", LatLng]],\n rectangle: [[\"lat-lng\", LatLng]],\n}\nconst OPTIONS = {\n circle: {\n radius: [Number, null]\n },\n polyline: {\n smoothFactor: [Number, 1.0],\n noClip: [Boolean, false]\n },\n polygon: {},\n path: {\n stroke: [Boolean, true],\n color: [String, \"#3388ff\"],\n weight: [Number, 3],\n opacity: [Number, 1.0],\n lineCap: [String, \"round\"],\n lineJoin: [String, \"round\"],\n },\n layer: {},\n rectangle: {}\n}\n\nconst INHERITS = {\n circle: [\"path\", \"layer\"],\n polyline: [\"path\", \"layer\"],\n polygon: [\"polyline\"],\n rectangle: [\"path\", \"layer\"],\n}\n\n// TODO: Generalise approach\nconst setter = (layer, name, newValue) => {\n switch(name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue))\n break;\n case \"weight\":\n layer.setStyle({ weight: parseInt(newValue) })\n break;\n case \"color\":\n layer.setStyle({ color: newValue })\n break;\n }\n}\n\nconst attributes = (methodName) => {\n let args = ARGS[methodName].map(x => x[0])\n let attrs = Object.keys(OPTIONS[methodName])\n INHERITS[methodName].forEach((parent) => {\n attrs.push(...Object.keys(OPTIONS[parent]))\n })\n attrs = attrs.map(camelToKebab)\n attrs.push(...args)\n return attrs\n}\n\nconst camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {} \n let process = (opts) => {\n Object.entries(opts).forEach(([key, value]) => {\n const [type, val] = value\n const attribute = camelToKebab(key)\n if (el.hasAttribute(attribute)) {\n result[key] = parse(el.getAttribute(attribute), type, val)\n }\n })\n }\n\n // Process inheritance chain\n process(OPTIONS[methodName])\n INHERITS[methodName].forEach(parent => {\n process(OPTIONS[parent])\n })\n return result\n}\n\nconst positional = (el, methodName) => {\n return ARGS[methodName].map(([key, type]) => {\n return parse(el.getAttribute(key), type, null)\n })\n}\n\nconst parse = (text, type, defaultValue) => {\n switch (type) {\n case Number:\n return parseFloat(text)\n case Boolean:\n return text.toLowerCase() === \"true\"\n case String:\n return text\n case LatLng:\n return JSON.parse(text)\n default:\n return defaultValue\n }\n}\n\nconst generator = (method, methodName) => {\n console.log(attributes(methodName))\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super()\n this.layer = null\n // TODO: event handlers\n }\n\n connectedCallback() {\n const args = positional(this, methodName)\n const options = settings(this, methodName)\n this.layer = method(...args, options)\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, name, newValue)\n }\n }\n }\n return cls\n}\n\n\nexport default generator\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\"\n\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"))\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"))\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"))\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"))\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LMap","map","method","bounds","target","el","_this2","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","LOverlayLayers","LPopup","LTileLayer","urlTemplate","options","key","tileLayer","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","ARGS","circle","LatLng","polyline","polygon","rectangle","OPTIONS","radius","Number","smoothFactor","noClip","Boolean","path","stroke","color","String","weight","lineCap","lineJoin","INHERITS","attributes","methodName","_attrs2","args","attrs","Object","keys","parent","_attrs","push","apply","camelToKebab","s","split","letter","idx","toLowerCase","join","text","defaultValue","generator","log","cls","_ref2","positional","result","process","opts","entries","_ref","val","attribute","settings","concat","_","setLatLngs","setStyle","setter","customElements","define"],"mappings":"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"}
|