leaflet-html 0.3.7 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +81 -19
- package/dist/leaflet-html.js +1 -1
- package/dist/leaflet-html.js.map +1 -1
- package/package.json +2 -2
- package/dist/leaflet-html.cjs +0 -2
- package/dist/leaflet-html.cjs.map +0 -1
- package/dist/leaflet-html.modern.js +0 -2
- package/dist/leaflet-html.modern.js.map +0 -1
- package/dist/leaflet-html.umd.js +0 -2
- package/dist/leaflet-html.umd.js.map +0 -1
package/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Leaflet HTML
|
2
2
|
|
3
|
+
[![npm version](http://img.shields.io/npm/v/leaflet-html.svg?style="for-the-badge")](https://npmjs.org/package/leaflet-html)
|
4
|
+
[![tests](https://img.shields.io/github/actions/workflow/status/andrewgryan/leaflet-html/tests.yml?branch=master&logo=github&style=for-the-badge)](https://github.com/andrewgryan/leaflet-html/actions/workflows/tests.yml)
|
5
|
+
|
6
|
+
|
3
7
|
Leaflet expressed in HTML to add maps to Hypermedia Driven Applications (HDA).
|
4
8
|
|
5
9
|
Indeed, since it is HTML, any front end framework should work with it.
|
@@ -8,9 +12,18 @@ Fine grained reactive frameworks such as [Solid JS](https://solidjs.com) or [Van
|
|
8
12
|
|
9
13
|
RESTful frameworks, like [HTMX](Https://htmx.org), that serve HTML over the wire are perfect choices for server rendered content.
|
10
14
|
|
15
|
+
## Documentation
|
16
|
+
|
17
|
+
A comprehensive documentation site is available.
|
18
|
+
|
19
|
+
[leaflet-html docs](https://andrewgryan.github.io/leaflet-html/)
|
20
|
+
|
11
21
|
## Installation
|
12
22
|
|
13
23
|
Include Leaflet JS/CSS assets and Leaflet HTML in the document.
|
24
|
+
This can be achieved using [importmap](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap)
|
25
|
+
to point both `leaflet` and `leaflet-html` at ES modules.
|
26
|
+
|
14
27
|
|
15
28
|
```html
|
16
29
|
<link
|
@@ -19,6 +32,14 @@ Include Leaflet JS/CSS assets and Leaflet HTML in the document.
|
|
19
32
|
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
|
20
33
|
crossorigin=""
|
21
34
|
/>
|
35
|
+
```
|
36
|
+
|
37
|
+
### CDN
|
38
|
+
|
39
|
+
Leaflet HTML is available via a Content Delivery Network (CDN) on unpkg.com.
|
40
|
+
This is a good option for use cases that don't need a build step.
|
41
|
+
|
42
|
+
```
|
22
43
|
<script type="importmap">
|
23
44
|
{
|
24
45
|
"imports": {
|
@@ -29,13 +50,36 @@ Include Leaflet JS/CSS assets and Leaflet HTML in the document.
|
|
29
50
|
</script>
|
30
51
|
```
|
31
52
|
|
53
|
+
Execute the library by importing it in a `script` tag.
|
54
|
+
Leaflet dependencies are detected via the `importmap`.
|
55
|
+
|
56
|
+
```html
|
57
|
+
<script type="module">
|
58
|
+
import "leaflet-html";
|
59
|
+
</script>
|
60
|
+
```
|
61
|
+
|
62
|
+
### NPM
|
63
|
+
|
64
|
+
Leaflet HTML can be added to a project using `npm`.
|
65
|
+
|
66
|
+
```sh
|
67
|
+
npm install leaflet-html
|
68
|
+
```
|
69
|
+
|
70
|
+
If using a build tool like `vite`, the following script tag and some CSS is all that is needed to get going.
|
71
|
+
|
32
72
|
```html
|
33
73
|
<script type="module">
|
34
74
|
import "leaflet-html";
|
35
75
|
</script>
|
36
76
|
```
|
37
77
|
|
38
|
-
|
78
|
+
### Style
|
79
|
+
|
80
|
+
In both CDN and `npm` installation approaches some minimal styling needs to be applied.
|
81
|
+
Custom elements are `display: inline` by default.
|
82
|
+
Leaflet maps, `l-map` elements, need to be set to `display: block` to have a vertical size.
|
39
83
|
|
40
84
|
```css
|
41
85
|
l-map {
|
@@ -46,8 +90,7 @@ l-map {
|
|
46
90
|
|
47
91
|
## Quick start
|
48
92
|
|
49
|
-
|
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`.
|
93
|
+
To show a map with a base map background, add a `<l-tile-layer>` tag with a `url-template` and `attribution` inside a `<l-map>`.
|
51
94
|
|
52
95
|
```html
|
53
96
|
<l-map center="[0, 0]" zoom="1">
|
@@ -58,8 +101,18 @@ But a gray block is of little use, to show a map, add a `<l-tile-layer>` tag wit
|
|
58
101
|
</l-map>
|
59
102
|
```
|
60
103
|
|
61
|
-
Adding layers, layer groups, and controls
|
62
|
-
|
104
|
+
Adding layers, layer groups, and controls follows the Leaflet JS one-to-one.
|
105
|
+
E.g. to add a marker to the above example.
|
106
|
+
|
107
|
+
```html
|
108
|
+
<l-map center="[0, 0]" zoom="1">
|
109
|
+
<l-tile-layer
|
110
|
+
url-template="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
111
|
+
attribution='© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
112
|
+
></l-tile-layer>
|
113
|
+
<l-marker lat-lng="[51.5, -0.09]"></l-marker>
|
114
|
+
</l-map>
|
115
|
+
```
|
63
116
|
|
64
117
|
## Custom elements
|
65
118
|
|
@@ -68,19 +121,28 @@ Leaflet HTML uses Custom elements to declare the state of each map on the page.
|
|
68
121
|
The most common elements are described below.
|
69
122
|
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
123
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
l-
|
78
|
-
l-
|
79
|
-
l-
|
80
|
-
l-
|
81
|
-
l-
|
82
|
-
l-
|
83
|
-
l-
|
124
|
+
Positional arguments and options are specified as kebab-case equivalents of the camelCase name from the Leaflet docs.
|
125
|
+
E.g. `<l-method foo-bar="42"></l-method>` translates to `L.method({fooBar: 42})`.
|
126
|
+
Type conversions and correct call positions are handled by the library.
|
127
|
+
|
128
|
+
Name | Leaflet docs | Description
|
129
|
+
-- | -- | --
|
130
|
+
l-map | [L.map](https://leafletjs.com/reference.html#map) | Parent element for a map. Child elements `addTo` this element.
|
131
|
+
l-tile-layer | [L.tileLayer](https://leafletjs.com/reference.html#tilelayer) | TileLayer, can be attached to a `l-map` or `l-base-layers` element.
|
132
|
+
l-marker | [L.marker](https://leafletjs.com/reference.html#marker) | Marker, can be attached to a `l-map` or `l-layer-group`.
|
133
|
+
l-icon | [L.icon](https://leafletjs.com/reference.html#icon) | Icon attachable to `l-marker`.
|
134
|
+
l-popup | [L.popup](https://leafletjs.com/reference.html#popup) | Popup.
|
135
|
+
l-tooltip | [L.tooltip](https://leafletjs.com/reference.html#tooltip) | Tooltip.
|
136
|
+
l-image-overlay | [L.imageOverlay](https://leafletjs.com/reference.html#imageoverlay) | Image overlay.
|
137
|
+
l-video-overlay | [L.videoOverlay](https://leafletjs.com/reference.html#videooverlay) | Video overlay.
|
138
|
+
l-control-layers | [L.control.layers](https://leafletjs.com/reference.html#control-layers) | Adds `l-base-layers` and `l-overlay-layers` to control UI.
|
139
|
+
l-base-layers | [L.control.layers](https://leafletjs.com/reference.html#control-layers) | Child of `l-control-layers`. Contains `l-tile-layer` elements.
|
140
|
+
l-overlay-layers | [L.control.layers](https://leafletjs.com/reference.html#control-layers) | Child of `l-control-layers`. Contains either layer or layer group elements.
|
141
|
+
l-layer-group | [L.layerGroup](https://leafletjs.com/reference.html#layergroup) | Parent element to group layers inside control UI. Makes adding/removing groups of UI to a map simple.
|
142
|
+
l-circle | [L.circle](https://leafletjs.com/reference.html#circle) | Vector layer.
|
143
|
+
l-rectangle | [L.rectangle](https://leafletjs.com/reference.html#rectangle) | Vector layer.
|
144
|
+
l-polygon | [L.polygon](https://leafletjs.com/reference.html#polygon) | Vector layer.
|
145
|
+
l-polyline | [L.polyline](https://leafletjs.com/reference.html#polyline) | Vector layer.
|
84
146
|
|
85
147
|
Each custom element can be configured using HTML attributes with the same naming convention as the Leaflet docs.
|
86
148
|
|
@@ -114,7 +176,7 @@ The HTML in `example/index.html` is a simple demonstration of the API.
|
|
114
176
|
![image](https://github.com/andrewgryan/leaflet-html/assets/22789046/0186bce2-ddcc-443a-b7a2-ccd86dcffcfc)
|
115
177
|
|
116
178
|
```html
|
117
|
-
<!-- Note: Leaflet JS/CSS must be included in <head> and
|
179
|
+
<!-- Note: Leaflet JS/CSS must be included in <head> and l-map styled to an appropriate size. -->
|
118
180
|
<l-map center="[39.61, -105.02]" zoom="10">
|
119
181
|
<l-control-layers>
|
120
182
|
<l-base-layers>
|
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,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};
|
1
|
+
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as a,videoOverlay as i,geoJSON as o,tooltip as l,Circle as c,Rectangle as s,Polygon as u,Polyline as p,circle as d,polyline as f,polygon as b,rectangle as h}from"leaflet";function m(t){return m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},m(t)}function v(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,g(t,e)}function y(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(y=function(){return!!t})()}function g(t,e){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},g(t,e)}function E(t){var e="function"==typeof Map?new Map:void 0;return E=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(y())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var a=new(t.bind.apply(t,r));return n&&g(a,n.prototype),a}(t,arguments,m(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,t)},E(t)}var A="map:addTo",L="popup:add",C=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return v(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="base"})},e}(/*#__PURE__*/E(HTMLElement)),w=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return v(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(A,function(e){var n=e.detail,r=n.type,a=n.name,i=n.layer;"overlay"===r?t.addOverlay(i,a):"base"===r&&t.addBaseLayer(i,a),e.preventDefault()});var n=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/E(HTMLElement)),O=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return v(e,t),e}(/*#__PURE__*/E(HTMLElement)),k=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return v(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(A,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}(O),S=/*#__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 O&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(t,{childList:!0}),t}return v(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(A,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__*/E(HTMLElement)),N=/*#__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}v(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 a=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(L,function(t){e.layer.bindPopup(t.detail.content)});var i=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},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}(O);if(N.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){var J=import.meta.vitest,T=J.it,M=J.expect;(0,J.beforeAll)(function(){customElements.define("l-marker",N)}),T("default icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e);var n=e.layer.getIcon(),r=new t.Icon.Default;M(n).toEqual(r)}),T("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"});M(n).toEqual(r)}),T("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"});M(n).toEqual(r)})}var H=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return v(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/E(HTMLElement)),j=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return v(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(L,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/E(HTMLElement)),P=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return v(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=this.getAttribute("url-template");if(null!==e){var n={},a="attribution";this.hasAttribute(a)&&(n[a]=this.getAttribute(a)),this.layer=r(e,n);var i=new CustomEvent(A,{detail:{name:t,layer:this.layer},bubbles:!0});this.dispatchEvent(i)}},e}(O),U=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return v(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__*/E(HTMLElement));U.observedAttributes=["bounds"];var I=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}v(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=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(A,{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}(O);I.observedAttributes=["url","bounds","opacity"];var F=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return v(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=i(t,e,n);this.dispatchEvent(new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(O),_=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return v(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=o(JSON.parse(t));this.dispatchEvent(new CustomEvent(A,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/E(HTMLElement)),z=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},B=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).icon=null,t}return v(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[z(t)]=e.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(t){e.hasAttribute(t)&&(n[z(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__*/E(HTMLElement));if(import.meta.vitest){var q=import.meta.vitest,x=q.it,R=q.expect;(0,q.beforeAll)(function(){customElements.define("l-icon",B)}),x("default",function(){var e=document.createElement("l-icon");document.body.appendChild(e);var n=e.icon,r=t.icon();R(n).toEqual(r)}),x("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();R(e).toEqual(n)})}catch(t){return Promise.reject(t)}}),x("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});R(n).toEqual(r)})}var D=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).tooltip=l(),e}v(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=new CustomEvent("bindTooltip",{cancelable:!0,bubbles:!0,detail:{tooltip:this.tooltip}});this.dispatchEvent(t)},n.attributeChangedCallback=function(t,e,n){"content"===t&&this.tooltip.setContent(n)},e}(/*#__PURE__*/E(HTMLElement));D.observedAttributes=["content"];var V=function(t){switch(t){case"circle":return[G("latLng","latlng",null)];case"rectangle":return[G("latLngBounds","latlngbounds",null)];case"polygon":case"polyline":return[G("latLngs","latlng",null)]}},G=function(t,e,n){return{camel:t,kebab:(r=t,r.split("").map(function(t,e){return t.toUpperCase()===t?(0!==e?"-":"")+t.toLowerCase():t}).join("")),parser:K(e),defaultValue:n};var r},K=function(t){switch(t.toLowerCase()){case"boolean":return function(t){return"true"===t};case"number":return parseFloat;case"latlng":case"latlngbounds":return JSON.parse;default:return function(t){return t}}},Q=function(t){var e={circle:[G("radius","number",null)],path:[G("stroke","boolean",!0),G("color","string","#3388ff"),G("weight","number",3),G("opacity","number",1),G("lineCap","string","round"),G("lineJoin","string","round"),G("dashArray","string",null),G("dashOffset","string",null),G("fill","boolean",!0),G("fillColor","string","#3388ff"),G("fillOpacity","number",.2)],polyline:[G("smoothFactor","number",1),G("noClip","boolean",!1)],polygon:[],rectangle:[],interactiveLayer:[G("interactive","boolean",!0)]};return X(t).flatMap(function(t){return e[t]})},W={circle:["path"],polyline:["path"],polygon:["polyline"],rectangle:["polygon"],path:["interactiveLayer"],interactiveLayer:[]},X=function(t){for(var e=t,n=[t];W[e].length>0;){var r=W[e][0];n.push(r),e=r}return n},Y=function(t,e){var n={};return Q(e).forEach(function(e){t.hasAttribute(e.kebab)&&(n[e.camel]=e.parser(t.getAttribute(e.kebab)))}),n},Z=/*#__PURE__*/function(t){function e(e){var n;return(n=t.call(this,e)||this).name="LeafletHTMLError",n}return v(e,t),e}(/*#__PURE__*/E(Error)),$=function(t,e){var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t.addEventListener("bindTooltip",function(e){null!==t.layer&&t.layer.bindTooltip(e.detail.tooltip)}),t}v(r,n);var a=r.prototype;return a.connectedCallback=function(){var n=function(t,e){return V(e).map(function(n){if(!t.hasAttribute(n.kebab))throw new Z("l-"+e+" element missing "+n.kebab+" HTML attribute");return n.parser(t.getAttribute(n.kebab))})}(this,e),r=Y(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)},a.attributeChangedCallback=function(t,n,r){null!==this.layer&&function(t,e,n,r){var a=[].concat(V(e),Q(e)).find(function(t){return t.kebab===n});if(void 0!==a){var i=a.parser(r);if(t instanceof c)switch(n){case"lat-lng":t.setLatLng(JSON.parse(r));break;case"radius":t.setRadius(parseFloat(r))}else if(t instanceof s)switch(n){case"lat-lngs":t.setLatLngs(JSON.parse(r));break;case"lat-lng-bounds":t.setBounds(JSON.parse(r))}else t instanceof u?"lat-lngs"===n&&t.setLatLngs(JSON.parse(r)):t instanceof p&&"lat-lngs"===n&&t.setLatLngs(JSON.parse(r));var o,l=Q("polyline").find(function(t){return t.kebab===n});void 0!==l&&t.setStyle(((o={})[l.camel]=i,o))}}(this.layer,e,t,r)},r}(/*#__PURE__*/E(HTMLElement));return n.observedAttributes=function(t){var e=V(t).map(function(t){return t.kebab}),n=Q(t).map(function(t){return t.kebab});return[].concat(e,n)}(e),n},tt=(customElements.define("l-map",S),customElements.define("l-control-layers",w),customElements.define("l-base-layers",C),customElements.define("l-overlay-layers",H),customElements.define("l-layer-group",k),customElements.define("l-tile-layer",P),customElements.define("l-marker",N),customElements.define("l-popup",j),customElements.define("l-lat-lng-bounds",U),customElements.define("l-image-overlay",I),customElements.define("l-video-overlay",F),customElements.define("l-geojson",_),customElements.define("l-icon",B),customElements.define("l-circle",$(d,"circle")),customElements.define("l-polyline",$(f,"polyline")),customElements.define("l-polygon",$(b,"polygon")),customElements.define("l-rectangle",$(h,"rectangle")),void customElements.define("l-tooltip",D));export{tt 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/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
|
+
{"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/util.js","../src/l-icon.js","../src/l-tooltip.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","// Utility functions\nexport const kebabToCamel = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\nexport const 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\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { kebabToCamel } from \"./util.js\"; \n\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[kebabToCamel(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[kebabToCamel(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\n\nimport { tooltip } from \"leaflet\";\n\nclass LTooltip extends HTMLElement {\n static observedAttributes = [\"content\"];\n\n constructor() {\n super();\n this.tooltip = tooltip();\n }\n\n connectedCallback() {\n const event = new CustomEvent(\"bindTooltip\", {\n cancelable: true,\n bubbles: true,\n detail: {\n tooltip: this.tooltip,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (attName === \"content\") {\n this.tooltip.setContent(newValue);\n }\n }\n}\n\nexport default LTooltip;\n","// @ts-check\nimport { Circle, LatLng, Polygon, Polyline, Rectangle } from \"leaflet\";\nimport { camelToKebab } from \"./util.js\";\n\n/**\n * @typedef {Object} TagOption\n * @property {string} camel\n * @property {string} kebab\n * @property {(s: string) => AttributeValue} parser\n * @property {AttributeValue | null} defaultValue\n */\n/**\n * @typedef {(\"circle\"|\"rectangle\"|\"polygon\"|\"polyline\")} MethodName\n * @typedef {(\"path\"|\"interactiveLayer\")} LayerName\n * @typedef {(\"boolean\"|\"number\"|\"string\"|\"latlng\"|\"latlngbounds\")} AttributeType\n * @typedef {(boolean|number|string|LatLng)} AttributeValue\n */\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst positionalArguments = (methodName) => {\n switch (methodName) {\n case \"circle\":\n return [option(\"latLng\", \"latlng\", null)];\n case \"rectangle\":\n return [option(\"latLngBounds\", \"latlngbounds\", null)];\n case \"polygon\":\n return [option(\"latLngs\", \"latlng\", null)];\n case \"polyline\":\n return [option(\"latLngs\", \"latlng\", null)];\n }\n};\n\n/**\n * @param {string} name\n * @param {AttributeType} type\n * @param {AttributeValue | null} defaultValue\n * @returns {TagOption}\n */\nconst option = (name, type, defaultValue) => {\n return {\n camel: name,\n kebab: camelToKebab(name),\n parser: inferParser(type),\n defaultValue,\n };\n};\n\n/**\n * @param {AttributeType} type\n * @returns {(s: string) => AttributeValue}\n */\nconst inferParser = (type) => {\n switch (type.toLowerCase()) {\n case \"boolean\":\n return (s) => s === \"true\";\n case \"number\":\n return parseFloat;\n case \"latlng\":\n case \"latlngbounds\":\n return JSON.parse;\n case \"string\":\n return (s) => s;\n default:\n return (s) => s;\n }\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst options = (methodName) => {\n const _OPTIONS = {\n circle: [option(\"radius\", \"number\", null)],\n path: [\n option(\"stroke\", \"boolean\", true),\n option(\"color\", \"string\", \"#3388ff\"),\n option(\"weight\", \"number\", 3),\n option(\"opacity\", \"number\", 1.0),\n option(\"lineCap\", \"string\", \"round\"),\n option(\"lineJoin\", \"string\", \"round\"),\n option(\"dashArray\", \"string\", null),\n option(\"dashOffset\", \"string\", null),\n option(\"fill\", \"boolean\", true),\n option(\"fillColor\", \"string\", \"#3388ff\"),\n option(\"fillOpacity\", \"number\", 0.2),\n ],\n polyline: [\n option(\"smoothFactor\", \"number\", 1.0),\n option(\"noClip\", \"boolean\", false),\n ],\n polygon: [],\n rectangle: [],\n interactiveLayer: [option(\"interactive\", \"boolean\", true)],\n };\n return inheritance(methodName).flatMap((parent) => _OPTIONS[parent]);\n};\n\n/**\n * @type {Object.<string, (MethodName | LayerName)[]>}\n */\nconst INHERITS = {\n circle: [\"path\"],\n polyline: [\"path\"],\n polygon: [\"polyline\"],\n rectangle: [\"polygon\"],\n path: [\"interactiveLayer\"],\n interactiveLayer: [],\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {(MethodName | LayerName)[]}\n */\nconst inheritance = (methodName) => {\n /** @type {(MethodName | LayerName)} */\n let name = methodName;\n let chain = [methodName];\n while (INHERITS[name].length > 0) {\n let parent = INHERITS[name][0];\n chain.push(parent);\n name = parent;\n }\n return chain;\n};\n\n/**\n * @param {MethodName} methodName\n * @param {string} newValue\n * @param {string} name\n * @param {(Circle | Rectangle | Polygon | Polyline)} layer\n */\nconst setter = (layer, methodName, name, newValue) => {\n // Parse\n const allOptions = [\n ...positionalArguments(methodName),\n ...options(methodName),\n ];\n let _opt = allOptions.find((o) => o.kebab === name);\n if (typeof _opt === \"undefined\") {\n return;\n }\n const parsedValue = _opt.parser(newValue);\n\n // Update\n if (layer instanceof Circle) {\n switch (name) {\n case \"lat-lng\":\n layer.setLatLng(JSON.parse(newValue));\n break;\n case \"radius\":\n layer.setRadius(parseFloat(newValue));\n break;\n }\n } else if (layer instanceof Rectangle) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n case \"lat-lng-bounds\":\n layer.setBounds(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polygon) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polyline) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n }\n\n // setStyle options\n let opt = options(\"polyline\").find((o) => o.kebab === name);\n if (typeof opt !== \"undefined\") {\n layer.setStyle({ [opt.camel]: parsedValue });\n }\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst attributes = (methodName) => {\n let args = positionalArguments(methodName).map((o) => o.kebab);\n let opts = options(methodName).map((o) => o.kebab);\n return [...args, ...opts];\n};\n\n/**\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {};\n\n // Process inheritance chain\n options(methodName).forEach((o) => {\n if (el.hasAttribute(o.kebab)) {\n result[o.camel] = o.parser(el.getAttribute(o.kebab));\n }\n });\n return result;\n};\n\nclass LeafletHTMLError extends Error {\n /**\n * @param {string} message\n */\n constructor(message) {\n super(message);\n this.name = \"LeafletHTMLError\";\n }\n}\n\n/**\n * Read positional arguments from HTMLElement\n *\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst positional = (el, methodName) => {\n return positionalArguments(methodName).map((option) => {\n if (!el.hasAttribute(option.kebab)) {\n throw new LeafletHTMLError(\n `l-${methodName} element missing ${option.kebab} HTML attribute`\n );\n }\n return option.parser(el.getAttribute(option.kebab));\n });\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst generator = (method, methodName) => {\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"bindTooltip\", (ev) => {\n if (this.layer !== null) {\n this.layer.bindTooltip(ev.detail.tooltip);\n }\n });\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 /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, methodName, attName, newValue);\n }\n }\n }\n return cls;\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 LTooltip from \"./l-tooltip.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\";\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 customElements.define(\"l-tooltip\", LTooltip);\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","kebabToCamel","kebab","replace","x","toUpperCase","LIcon","crossOrigin","promise","Promise","resolve","then","e","reject","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","LTooltip","tooltip","attName","_","setContent","positionalArguments","methodName","option","defaultValue","camel","s","split","letter","idx","toLowerCase","join","parser","inferParser","_OPTIONS","circle","path","polyline","polygon","rectangle","interactiveLayer","inheritance","flatMap","parent","INHERITS","chain","length","push","settings","result","o","LeafletHTMLError","_Error","message","Error","generator","cls","bindTooltip","args","positional","apply","concat","_opt","find","parsedValue","Circle","setRadius","Rectangle","setLatLngs","Polygon","Polyline","_layer$setStyle","opt","setStyle","setter","opts","attributes","init"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "leaflet-html",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.
|
4
|
+
"version": "0.5.0",
|
5
5
|
"description": "Leaflet expressed in HTML",
|
6
6
|
"keywords": [
|
7
7
|
"leaflet",
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"homepage": "https://andrewgryan.github.io/leaflet-html",
|
25
25
|
"license": "MIT",
|
26
26
|
"scripts": {
|
27
|
-
"build": "microbundle",
|
27
|
+
"build": "microbundle --format esm",
|
28
28
|
"watch": "microbundle watch -o ./docs/static --format esm",
|
29
29
|
"test": "vitest"
|
30
30
|
},
|
package/dist/leaflet-html.cjs
DELETED
@@ -1,2 +0,0 @@
|
|
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
|
-
//# sourceMappingURL=leaflet-html.cjs.map
|
@@ -1 +0,0 @@
|
|
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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"}
|
@@ -1,2 +0,0 @@
|
|
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
|
-
//# sourceMappingURL=leaflet-html.modern.js.map
|
@@ -1 +0,0 @@
|
|
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
DELETED
@@ -1,2 +0,0 @@
|
|
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
|
-
//# sourceMappingURL=leaflet-html.umd.js.map
|
@@ -1 +0,0 @@
|
|
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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"}
|