leaflet-html 0.2.2 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +14 -6
- package/dist/leaflet-html.cjs +1 -1
- package/dist/leaflet-html.cjs.map +1 -1
- package/dist/leaflet-html.js +1 -1
- package/dist/leaflet-html.js.map +1 -1
- package/dist/leaflet-html.modern.js +1 -1
- package/dist/leaflet-html.modern.js.map +1 -1
- package/dist/leaflet-html.umd.js +1 -1
- package/dist/leaflet-html.umd.js.map +1 -1
- package/docs/content/articles/basic.md +8 -13
- package/docs/content/articles/htmx.md +67 -0
- package/docs/content/articles/icons.md +19 -7
- package/docs/static/htmx/clicked.html +1 -0
- package/docs/static/htmx/tile-esri.html +3 -0
- package/docs/static/htmx/tile-osm.html +4 -0
- package/docs/static/htmx/tile-voyager.html +4 -0
- package/docs/static/style.css +48 -0
- package/docs/templates/base.html +10 -38
- package/docs/templates/shortcodes/url.html +1 -0
- package/example/geojson/index.html +1 -6
- package/example/index.html +1 -6
- package/example/overlays/index.html +1 -6
- package/package.json +1 -1
- package/src/l-base-layers.js +1 -0
- package/src/l-control-layers.js +9 -4
- package/src/l-geojson.js +15 -10
- package/src/l-image-overlay.js +12 -2
- package/src/l-lat-lng-bounds.js +1 -0
- package/src/l-layer-group.js +12 -4
- package/src/l-map.js +20 -2
- package/src/l-overlay-layers.js +1 -0
- package/src/l-popup.js +1 -0
- package/src/l-tile-layer.js +13 -4
- package/src/l-video-overlay.js +3 -1
package/README.md
CHANGED
@@ -19,12 +19,20 @@ Include both Leaflet and Leaflet HTML in script tags in the head of the document
|
|
19
19
|
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
|
20
20
|
crossorigin=""
|
21
21
|
/>
|
22
|
-
<script
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
<script type="importmap">
|
23
|
+
{
|
24
|
+
"imports": {
|
25
|
+
"leaflet": "https://unpkg.com/leaflet@1.9.4/dist/leaflet-src.esm.js",
|
26
|
+
"leaflet-html": "https://unpkg.com/leaflet-html@latest/dist/leaflet-html.js"
|
27
|
+
}
|
28
|
+
}
|
29
|
+
</script>
|
30
|
+
```
|
31
|
+
|
32
|
+
```html
|
33
|
+
<script type="module">
|
34
|
+
import "leaflet-html";
|
35
|
+
</script>
|
28
36
|
```
|
29
37
|
|
30
38
|
And remember to style the various map container elements with enough size to be visible.
|
package/dist/leaflet-html.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
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 i(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function l(t){var e="function"==typeof Map?new Map:void 0;return l=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var a=new(t.bind.apply(t,i));return n&&o(a,n.prototype),a}(t,arguments,a(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),o(n,t)},l(t)}var s="map:addTo",u="popup:add",c=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.connectedCallback=function(){this.addEventListener(s,function(t){t.detail.type="base"})},e}(/*#__PURE__*/l(HTMLElement)),p=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return i(n,e),n.prototype.connectedCallback=function(){var e=t.control.layers({},{});this.addEventListener(s,function(t){var n=t.detail,r=n.type,i=n.name,a=n.layer;"overlay"===r?e.addOverlay(a,i):"base"===r&&e.addBaseLayer(a,i),t.preventDefault()});var n=new CustomEvent(s,{cancelable:!0,bubbles:!0,detail:{layer:e}});this.dispatchEvent(n)},n}(/*#__PURE__*/l(HTMLElement)),d=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return i(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=t.layerGroup(),r=new CustomEvent(s,{cancelable:!0,bubbles:!0,detail:{layer:n,name:e}});this.dispatchEvent(r),this.addEventListener(s,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}(/*#__PURE__*/l(HTMLElement)),h=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}return i(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("name"),n=this.getAttribute("url-template");if(null!==n){var r={},i="attribution";this.hasAttribute(i)&&(r[i]=this.getAttribute(i)),this.layer=t.tileLayer(n,r);var a=new CustomEvent(s,{detail:{name:e,layer:this.layer},bubbles:!0});this.dispatchEvent(a)}},n}(/*#__PURE__*/l(HTMLElement)),f=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).map=null,e.addEventListener("map:bounds",function(t){var n=t.detail;null!==e.map&&e.map[n.method](n.bounds)}),new MutationObserver(function(t){var e=this;t.forEach(function(t){t.removedNodes.forEach(function(t){t instanceof h&&e.map.removeLayer(t.layer)})})}).observe(e,{childList:!0}),e}return i(e,t),e.prototype.connectedCallback=function(){var t=this;this.map=n.map(this);var e=this.getAttribute("center"),r=this.getAttribute("zoom");null!==e&&null!==r&&this.map.setView(JSON.parse(e),parseInt(r)),this.addEventListener(s,function(e){e.detail.layer.addTo(t.map)}),this.addEventListener("layer:remove",function(e){null!==t.map&&t.map.removeLayer(e.detail.layer)})},e}(/*#__PURE__*/l(HTMLElement)),b=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e.addEventListener("icon:add",function(t){t.stopPropagation(),e.layer.setIcon(t.detail.icon)}),e}i(e,t);var r=e.prototype;return r.connectedCallback=function(){var t=this,e=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=n.marker(e,{opacity:r}),this.hasAttribute("icon")){var i=n.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(i)}this.setAttribute("leaflet-id",n.stamp(this.layer)),this.addEventListener(u,function(e){t.layer.bindPopup(e.detail.content)});var a=new CustomEvent(s,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},r.attributeChangedCallback=function(t,e,r){null!==this.layer&&("lat-lng"===t&&this.layer.setLatLng(JSON.parse(r)),"opacity"===t&&this.layer.setOpacity(parseFloat(r)),"icon"===t&&this.layer.setIcon(n.icon(JSON.parse(r))))},e}(/*#__PURE__*/l(HTMLElement));b.observedAttributes=["lat-lng","opacity","icon"];var y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.connectedCallback=function(){this.addEventListener(s,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/l(HTMLElement)),v=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(u,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/l(HTMLElement)),m=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return i(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement));m.observedAttributes=["bounds"];var E=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t}i(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this.getAttribute("url");if(null!==e){var n=this.getAttribute("bounds");if(null!==n){var r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=t.imageOverlay(e,JSON.parse(n),r),this.dispatchEvent(new CustomEvent(s,{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}(/*#__PURE__*/l(HTMLElement));E.observedAttributes=["url","bounds","opacity"];var g=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return i(n,e),n.prototype.connectedCallback=function(){var e=JSON.parse(this.getAttribute("url")),n=JSON.parse(this.getAttribute("bounds")),r={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},i=t.videoOverlay(e,n,r);this.dispatchEvent(new CustomEvent(s,{cancelable:!0,bubbles:!0,detail:{layer:i}}))},n}(/*#__PURE__*/l(HTMLElement)),O=/*#__PURE__*/function(e){function n(){return e.call(this)||this}return i(n,e),n.prototype.connectedCallback=function(){var e=this.getAttribute("geojson");if(null!==e){var n=t.geoJSON(JSON.parse(e));this.dispatchEvent(new CustomEvent(s,{bubbles:!0,cancelable:!0,detail:{layer:n}}))}},n}(/*#__PURE__*/l(HTMLElement)),L=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 i(e,t),e.prototype.connectedCallback=function(){var t=this,e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(n){t.hasAttribute(n)&&(e[L(n)]=t.getAttribute(n))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(n){t.hasAttribute(n)&&(e[L(n)]=JSON.parse(t.getAttribute(n)))}),this.hasAttribute("cross-origin")&&(e.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=n.icon(e);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/l(HTMLElement)),C=(customElements.define("l-map",f),customElements.define("l-control-layers",p),customElements.define("l-base-layers",c),customElements.define("l-overlay-layers",y),customElements.define("l-layer-group",d),customElements.define("l-tile-layer",h),customElements.define("l-marker",b),customElements.define("l-popup",v),customElements.define("l-lat-lng-bounds",m),customElements.define("l-image-overlay",E),customElements.define("l-video-overlay",g),customElements.define("l-geojson",O),void customElements.define("l-icon",A));module.exports=C;
|
2
2
|
//# sourceMappingURL=leaflet-html.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leaflet-html.cjs","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","import { 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","import { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const base = {};\n const overlay = {};\n const control = L.control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n control.addOverlay(layer, name);\n } else if (type === \"base\") {\n control.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: control,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","import { mapAddTo } from \"./events.js\";\n\nclass LLayerGroup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = L.layerGroup();\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 const leafletId = node.getAttribute(\"leaflet-id\");\n const layer = group.getLayer(leafletId);\n group.removeLayer(layer);\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport { layerRemove, mapAddTo } from \"./events.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 this.map[method](bounds);\n });\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 this.map.remove(ev.detail.layer);\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\n\nclass LMarker extends HTMLElement {\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","import { 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","import { 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","import { mapAddTo } from \"./events.js\";\n\nclass LTileLayer extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n const attribution = this.getAttribute(\"attribution\");\n const options = { attribution };\n const layer = L.tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","class 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","import { mapAddTo } from \"./events.js\";\n\nclass LImageOverlay extends HTMLElement {\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 const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = L.imageOverlay(url, 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","import { mapAddTo } from \"./events.js\";\n\nclass LVideoOverlay extends HTMLElement {\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 = L.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","import { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const layer = L.geoJSON(JSON.parse(this.getAttribute(\"geojson\")));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","control","L","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayerGroup","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","removeLayer","observe","childList","LMap","_this","map","method","bounds","_this2","center","zoom","setView","JSON","parse","parseInt","addTo","remove","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","hasAttribute","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","LOverlayLayers","LPopup","LTileLayer","urlTemplate","attribution","tileLayer","LLatLngBounds","_name","LImageOverlay","url","options","alt","imageOverlay","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","key","crossOrigin","init","customElements","define"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"leaflet-html.cjs","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer-group.js","../src/l-tile-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-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LLayerGroup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\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\";\n\nclass LTileLayer extends HTMLElement {\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 * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LTileLayer from \"./l-tile-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 mutation.removedNodes.forEach((node) => {\n if (node instanceof LTileLayer) {\n this.map.removeLayer(node.layer)\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\";\n\nclass LMarker extends HTMLElement {\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\";\n\nclass LImageOverlay extends HTMLElement {\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\";\n\nclass LVideoOverlay extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayerGroup","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LTileLayer","_this","urlTemplate","options","key","hasAttribute","tileLayer","LMap","map","method","bounds","_this2","_this3","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","LOverlayLayers","LPopup","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","init","customElements","define"],"mappings":"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"}
|
package/dist/leaflet-html.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
import*as t from"leaflet";function e(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(e=function(){return!!t})()}function n(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,r(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function r(t,e){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},r(t,e)}function o(t){var n="function"==typeof Map?new Map:void 0;return o=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!==n){if(n.has(t))return n.get(t);n.set(t,o)}function o(){return function(t,n,i){if(e())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,n);var a=new(t.bind.apply(t,o));return i&&r(a,i.prototype),a}(t,arguments,i(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),r(o,t)},o(t)}var a="map:addTo",c="popup:add",l=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.connectedCallback=function(){this.addEventListener(a,function(t){t.detail.type="base"})},e}(/*#__PURE__*/o(HTMLElement)),s=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.connectedCallback=function(){var t=L.control.layers({},{});this.addEventListener(a,function(e){var n=e.detail,i=n.type,r=n.name,o=n.layer;"overlay"===i?t.addOverlay(o,r):"base"===i&&t.addBaseLayer(o,r),e.preventDefault()});var e=new CustomEvent(a,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/o(HTMLElement)),u=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=L.layerGroup(),n=new CustomEvent(a,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(n),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){var n=t.getAttribute("leaflet-id"),i=e.getLayer(n);e.removeLayer(i)})})}).observe(this,{childList:!0})},e}(/*#__PURE__*/o(HTMLElement)),d=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).map=null,e.addEventListener("map:bounds",function(t){var n=t.detail;e.map[n.method](n.bounds)}),e}return n(e,t),e.prototype.connectedCallback=function(){var t=this;this.map=L.map(this);var e=this.getAttribute("center"),n=this.getAttribute("zoom");null!==e&&null!==n&&this.map.setView(JSON.parse(e),parseInt(n)),this.addEventListener(a,function(e){e.detail.layer.addTo(t.map)}),this.addEventListener("layer:remove",function(e){t.map.remove(e.detail.layer)})},e}(/*#__PURE__*/o(HTMLElement)),p=/*#__PURE__*/function(e){function i(){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}n(i,e);var r=i.prototype;return r.connectedCallback=function(){var e=this,n=JSON.parse(this.getAttribute("lat-lng")),i=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=t.marker(n,{opacity:i}),this.hasAttribute("icon")){var r=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(r)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(c,function(t){e.layer.bindPopup(t.detail.content)});var o=new CustomEvent(a,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(o)},r.attributeChangedCallback=function(e,n,i){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(i)),"opacity"===e&&this.layer.setOpacity(parseFloat(i)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(i))))},i}(/*#__PURE__*/o(HTMLElement));if(p.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){var h=import.meta.vitest,b=h.it,f=h.expect;(0,h.beforeAll)(function(){customElements.define("l-marker",p)}),b("default icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e);var n=e.layer.getIcon(),i=new t.Icon.Default;f(n).toEqual(i)}),b("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(),i=t.icon({iconUrl:"foo.png"});f(n).toEqual(i)}),b("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(),i=t.icon({iconUrl:"bar.png"});f(n).toEqual(i)})}var m=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.connectedCallback=function(){this.addEventListener(a,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/o(HTMLElement)),y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(c,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/o(HTMLElement)),v=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=this.getAttribute("url-template"),n=this.getAttribute("attribution"),i=L.tileLayer(e,{attribution:n}),r=new CustomEvent(a,{detail:{name:t,layer:i},bubbles:!0});this.dispatchEvent(r)},e}(/*#__PURE__*/o(HTMLElement)),E=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var i=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(i)},e}(/*#__PURE__*/o(HTMLElement));E.observedAttributes=["bounds"];var g=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}n(e,t);var i=e.prototype;return i.connectedCallback=function(){var t=this.getAttribute("url"),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=L.imageOverlay(t,e,n),this.dispatchEvent(new CustomEvent(a,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))},i.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}(/*#__PURE__*/o(HTMLElement));g.observedAttributes=["url","bounds","opacity"];var A=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(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},i=L.videoOverlay(t,e,n);this.dispatchEvent(new CustomEvent(a,{cancelable:!0,bubbles:!0,detail:{layer:i}}))},e}(/*#__PURE__*/o(HTMLElement)),O=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return n(e,t),e.prototype.connectedCallback=function(){var t=L.geoJSON(JSON.parse(this.getAttribute("geojson")));this.dispatchEvent(new CustomEvent(a,{bubbles:!0,cancelable:!0,detail:{layer:t}}))},e}(/*#__PURE__*/o(HTMLElement)),w=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},C=/*#__PURE__*/function(e){function i(){var t;return(t=e.call(this)||this).icon=null,t}return n(i,e),i.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[w(t)]=e.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(t){e.hasAttribute(t)&&(n[w(t)]=JSON.parse(e.getAttribute(t)))}),this.hasAttribute("cross-origin")&&(n.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=t.icon(n);var i=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(i)},i}(/*#__PURE__*/o(HTMLElement));if(import.meta.vitest){var S=import.meta.vitest,k=S.it,N=S.expect;(0,S.beforeAll)(function(){customElements.define("l-icon",C)}),k("default",function(){var e=document.createElement("l-icon");document.body.appendChild(e);var n=e.icon,i=t.icon();N(n).toEqual(i)}),k("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();N(e).toEqual(n)})}catch(t){return Promise.reject(t)}}),k("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,i=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(n).toEqual(i)})}var M=(customElements.define("l-map",d),customElements.define("l-control-layers",s),customElements.define("l-base-layers",l),customElements.define("l-overlay-layers",m),customElements.define("l-layer-group",u),customElements.define("l-tile-layer",v),customElements.define("l-marker",p),customElements.define("l-popup",y),customElements.define("l-lat-lng-bounds",E),customElements.define("l-image-overlay",g),customElements.define("l-video-overlay",A),customElements.define("l-geojson",O),void customElements.define("l-icon",C));export{M as default};
|
1
|
+
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as i,videoOverlay as o,geoJSON as a}from"leaflet";function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(l=function(){return!!t})()}function c(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,u(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}function u(t,e){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},u(t,e)}function d(t){var e="function"==typeof Map?new Map:void 0;return d=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(l())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var i=new(t.bind.apply(t,r));return n&&u(i,n.prototype),i}(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),u(n,t)},d(t)}var p="map:addTo",h="popup:add",f=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){this.addEventListener(p,function(t){t.detail.type="base"})},e}(/*#__PURE__*/d(HTMLElement)),b=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return c(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(p,function(e){var n=e.detail,r=n.type,i=n.name,o=n.layer;"overlay"===r?t.addOverlay(o,i):"base"===r&&t.addBaseLayer(o,i),e.preventDefault()});var n=new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/d(HTMLElement)),m=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n(),r=new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(p,function(t){t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var n=t.getAttribute("leaflet-id");if(null!==n){var r=e.getLayer(parseInt(n));void 0!==r&&e.removeLayer(r)}}})})}).observe(this,{childList:!0})},e}(/*#__PURE__*/d(HTMLElement)),v=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=this.getAttribute("url-template");if(null!==e){var n={},i="attribution";this.hasAttribute(i)&&(n[i]=this.getAttribute(i)),this.layer=r(e,n);var o=new CustomEvent(p,{detail:{name:t,layer:this.layer},bubbles:!0});this.dispatchEvent(o)}},e}(/*#__PURE__*/d(HTMLElement)),y=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).map=null,t.addEventListener("map:bounds",function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)}),new MutationObserver(function(t){var e=this;t.forEach(function(t){t.removedNodes.forEach(function(t){t instanceof v&&e.map.removeLayer(t.layer)})})}).observe(t,{childList:!0}),t}return c(n,e),n.prototype.connectedCallback=function(){var e=this;this.map=t.map(this);var n=this.getAttribute("center"),r=this.getAttribute("zoom");null!==n&&null!==r&&this.map.setView(JSON.parse(n),parseInt(r)),this.addEventListener(p,function(t){t.detail.layer.addTo(e.map)}),this.addEventListener("layer:remove",function(t){null!==e.map&&e.map.removeLayer(t.detail.layer)})},n}(/*#__PURE__*/d(HTMLElement)),E=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t.addEventListener("icon:add",function(e){e.stopPropagation(),t.layer.setIcon(e.detail.icon)}),t}c(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=JSON.parse(this.getAttribute("lat-lng")),r=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=t.marker(n,{opacity:r}),this.hasAttribute("icon")){var i=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(i)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(h,function(t){e.layer.bindPopup(t.detail.content)});var o=new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(o)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(/*#__PURE__*/d(HTMLElement));if(E.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){var g=import.meta.vitest,A=g.it,w=g.expect;(0,g.beforeAll)(function(){customElements.define("l-marker",E)}),A("default icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e);var n=e.layer.getIcon(),r=new t.Icon.Default;w(n).toEqual(r)}),A("adds an icon",function(){var e=document.createElement("l-marker");e.setAttribute("icon",JSON.stringify({iconUrl:"foo.png"})),document.body.appendChild(e);var n=e.layer.getIcon(),r=t.icon({iconUrl:"foo.png"});w(n).toEqual(r)}),A("changes an icon",function(){var e=document.createElement("l-marker");document.body.appendChild(e),e.setAttribute("icon",JSON.stringify({iconUrl:"bar.png"}));var n=e.layer.getIcon(),r=t.icon({iconUrl:"bar.png"});w(n).toEqual(r)})}var C=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){this.addEventListener(p,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/d(HTMLElement)),O=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=new CustomEvent(h,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)},e}(/*#__PURE__*/d(HTMLElement)),L=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.attributeChangedCallback=function(t,e,n){var r=new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:JSON.parse(n),method:this.getAttribute("method")||"fitBounds"}});this.dispatchEvent(r)},e}(/*#__PURE__*/d(HTMLElement));L.observedAttributes=["bounds"];var S=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}c(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=i(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},n.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},e}(/*#__PURE__*/d(HTMLElement));S.observedAttributes=["url","bounds","opacity"];var k=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=o(t,e,n);this.dispatchEvent(new CustomEvent(p,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(/*#__PURE__*/d(HTMLElement)),M=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return c(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=a(JSON.parse(t));this.dispatchEvent(new CustomEvent(p,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/d(HTMLElement)),N=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},T=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).icon=null,t}return c(n,e),n.prototype.connectedCallback=function(){var e=this,n={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(t){e.hasAttribute(t)&&(n[N(t)]=e.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(t){e.hasAttribute(t)&&(n[N(t)]=JSON.parse(e.getAttribute(t)))}),this.hasAttribute("cross-origin")&&(n.crossOrigin="true"===this.getAttribute("cross-origin")),this.icon=t.icon(n);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},n}(/*#__PURE__*/d(HTMLElement));if(import.meta.vitest){var H=import.meta.vitest,J=H.it,P=H.expect;(0,H.beforeAll)(function(){customElements.define("l-icon",T)}),J("default",function(){var e=document.createElement("l-icon");document.body.appendChild(e);var n=e.icon,r=t.icon();P(n).toEqual(r)}),J("emits icon:add event",function(){try{var e=document.createElement("l-icon"),n=new Promise(function(t){e.addEventListener("icon:add",function(e){t(e.detail.icon)})});return document.body.appendChild(e),Promise.resolve(n).then(function(e){var n=t.icon();P(e).toEqual(n)})}catch(t){return Promise.reject(t)}}),J("options",function(){var e=document.createElement("l-icon");e.setAttribute("icon-url","url.png"),e.setAttribute("icon-retina-url","retina.png"),e.setAttribute("icon-size","[0, 0]"),e.setAttribute("icon-anchor","[0, 0]"),e.setAttribute("popup-anchor","[0, 0]"),e.setAttribute("tooltip-anchor","[0, 0]"),e.setAttribute("shadow-url","urlShadow.png"),e.setAttribute("shadow-retina-url","retinaShadow.png"),e.setAttribute("shadow-size","[0, 0]"),e.setAttribute("shadow-anchor","[0, 0]"),e.setAttribute("class-name","foo"),e.setAttribute("cross-origin","true"),document.body.appendChild(e);var n=e.icon,r=t.icon({iconUrl:"url.png",iconRetinaUrl:"retina.png",iconSize:[0,0],iconAnchor:[0,0],popupAnchor:[0,0],tooltipAnchor:[0,0],shadowUrl:"urlShadow.png",shadowRetinaUrl:"retinaShadow.png",shadowSize:[0,0],shadowAnchor:[0,0],className:"foo",crossOrigin:!0});P(n).toEqual(r)})}var j=(customElements.define("l-map",y),customElements.define("l-control-layers",b),customElements.define("l-base-layers",f),customElements.define("l-overlay-layers",C),customElements.define("l-layer-group",m),customElements.define("l-tile-layer",v),customElements.define("l-marker",E),customElements.define("l-popup",O),customElements.define("l-lat-lng-bounds",L),customElements.define("l-image-overlay",S),customElements.define("l-video-overlay",k),customElements.define("l-geojson",M),void customElements.define("l-icon",T));export{j 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-group.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","import { 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","import { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const base = {};\n const overlay = {};\n const control = L.control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n control.addOverlay(layer, name);\n } else if (type === \"base\") {\n control.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: control,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","import { mapAddTo } from \"./events.js\";\n\nclass LLayerGroup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = L.layerGroup();\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 const leafletId = node.getAttribute(\"leaflet-id\");\n const layer = group.getLayer(leafletId);\n group.removeLayer(layer);\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","// @ts-check\nimport { layerRemove, mapAddTo } from \"./events.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 this.map[method](bounds);\n });\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 this.map.remove(ev.detail.layer);\n });\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\n\nclass LMarker extends HTMLElement {\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","import { 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","import { 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","import { mapAddTo } from \"./events.js\";\n\nclass LTileLayer extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const urlTemplate = this.getAttribute(\"url-template\");\n const attribution = this.getAttribute(\"attribution\");\n const options = { attribution };\n const layer = L.tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","class 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","import { mapAddTo } from \"./events.js\";\n\nclass LImageOverlay extends HTMLElement {\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 const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = L.imageOverlay(url, 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","import { mapAddTo } from \"./events.js\";\n\nclass LVideoOverlay extends HTMLElement {\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 = L.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","import { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const layer = L.geoJSON(JSON.parse(this.getAttribute(\"geojson\")));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","control","L","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayerGroup","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","removeLayer","observe","childList","LMap","_this","map","method","bounds","_this2","center","zoom","setView","JSON","parse","parseInt","addTo","remove","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","el","document","createElement","body","appendChild","actual","getIcon","expected","Icon","Default","toEqual","stringify","iconUrl","LOverlayLayers","LPopup","LTileLayer","urlTemplate","attribution","tileLayer","LLatLngBounds","_name","LImageOverlay","url","options","alt","imageOverlay","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","key","crossOrigin","promise","Promise","resolve","then","e","reject","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","init"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"leaflet-html.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer-group.js","../src/l-tile-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-video-overlay.js","../src/l-geojson.js","../src/l-icon.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LLayerGroup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\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\";\n\nclass LTileLayer extends HTMLElement {\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 * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LTileLayer from \"./l-tile-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 mutation.removedNodes.forEach((node) => {\n if (node instanceof LTileLayer) {\n this.map.removeLayer(node.layer)\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\";\n\nclass LMarker extends HTMLElement {\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\";\n\nclass LImageOverlay extends HTMLElement {\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\";\n\nclass LVideoOverlay extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\n\nconst camelCase = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n const options = {};\n\n // Strings\n let keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = this.getAttribute(key);\n }\n });\n\n // Points\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n if (this.hasAttribute(key)) {\n options[camelCase(key)] = JSON.parse(this.getAttribute(key));\n }\n });\n\n if (this.hasAttribute(\"cross-origin\")) {\n options.crossOrigin = this.getAttribute(\"cross-origin\") === \"true\";\n }\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayerGroup","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LTileLayer","_this","urlTemplate","options","key","hasAttribute","tileLayer","LMap","map","method","bounds","_this2","_this3","L","center","zoom","setView","JSON","parse","addTo","LMarker","setIcon","icon","_proto","latLng","opacity","parseFloat","marker","setAttribute","stamp","bindPopup","content","attributeChangedCallback","_oldValue","newValue","setLatLng","setOpacity","observedAttributes","vitest","_import$meta$vitest","it","expect","beforeAll","customElements","define","el","document","createElement","body","appendChild","actual","getIcon","expected","Icon","Default","toEqual","stringify","iconUrl","LOverlayLayers","LPopup","LLatLngBounds","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","value","geoJSON","camelCase","kebab","replace","x","toUpperCase","LIcon","crossOrigin","promise","Promise","resolve","then","e","reject","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","init"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import*as t from"leaflet";const
|
1
|
+
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as s,imageOverlay as a,videoOverlay as i,geoJSON as o}from"leaflet";const l="map:addTo",r="popup:add";class c extends HTMLElement{constructor(){super()}connectedCallback(){this.addEventListener(l,t=>{t.detail.type="base"})}}class u extends HTMLElement{constructor(){super()}connectedCallback(){const t=e.layers({},{});this.addEventListener(l,e=>{const{type:n,name:s,layer:a}=e.detail;"overlay"===n?t.addOverlay(a,s):"base"===n&&t.addBaseLayer(a,s),e.preventDefault()});const n=new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)}}class d extends HTMLElement{constructor(){super()}connectedCallback(){const t=this.getAttribute("name"),e=n(),s=new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(s),this.addEventListener(l,t=>{t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(t=>{t.removedNodes.forEach(t=>{if(t instanceof HTMLElement){const n=t.getAttribute("leaflet-id");if(null!==n){const t=e.getLayer(parseInt(n));void 0!==t&&e.removeLayer(t)}}})})}).observe(this,{childList:!0})}}class h extends HTMLElement{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 i=new CustomEvent(l,{detail:{name:t,layer:this.layer},bubbles:!0});this.dispatchEvent(i)}}class b 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=>{t.removedNodes.forEach(t=>{t instanceof h&&this.map.removeLayer(t.layer)})})}).observe(this,{childList:!0})}connectedCallback(){this.map=t.map(this);const e=this.getAttribute("center"),n=this.getAttribute("zoom");null!==e&&null!==n&&this.map.setView(JSON.parse(e),parseInt(n)),this.addEventListener(l,t=>{t.detail.layer.addTo(this.map)}),this.addEventListener("layer:remove",t=>{null!==this.map&&this.map.removeLayer(t.detail.layer)})}}class p extends HTMLElement{constructor(){super(),this.layer=null,this.addEventListener("icon:add",t=>{t.stopPropagation(),this.layer.setIcon(t.detail.icon)})}connectedCallback(){const e=JSON.parse(this.getAttribute("lat-lng")),n=parseFloat(this.getAttribute("opacity")||"1.0");if(this.layer=t.marker(e,{opacity:n}),this.hasAttribute("icon")){const e=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(e)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(r,t=>{const{content:e}=t.detail;this.layer.bindPopup(e)});const s=new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(s)}attributeChangedCallback(e,n,s){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(s)),"opacity"===e&&this.layer.setOpacity(parseFloat(s)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(s))))}}if(p.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){const{it:e,expect:n,beforeAll:s}=import.meta.vitest;s(()=>{customElements.define("l-marker",p)}),e("default icon",()=>{const e=document.createElement("l-marker");document.body.appendChild(e);let s=e.layer.getIcon(),a=new t.Icon.Default;n(s).toEqual(a)}),e("adds an icon",()=>{const e=document.createElement("l-marker");e.setAttribute("icon",JSON.stringify({iconUrl:"foo.png"})),document.body.appendChild(e);let s=e.layer.getIcon(),a=t.icon({iconUrl:"foo.png"});n(s).toEqual(a)}),e("changes an icon",()=>{const e=document.createElement("l-marker");document.body.appendChild(e),e.setAttribute("icon",JSON.stringify({iconUrl:"bar.png"}));let s=e.layer.getIcon(),a=t.icon({iconUrl:"bar.png"});n(s).toEqual(a)})}class m extends HTMLElement{constructor(){super()}connectedCallback(){this.addEventListener(l,t=>{t.detail.type="overlay"})}}class y extends HTMLElement{constructor(){super()}connectedCallback(){const t=this.getAttribute("content"),e=new CustomEvent(r,{cancelable:!0,bubbles:!0,detail:{content:t}});this.dispatchEvent(e)}}class E 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)}}E.observedAttributes=["bounds"];class g extends HTMLElement{constructor(){super(),this.layer=null}connectedCallback(){const t=this.getAttribute("url");if(null===t)return void console.warn("attribute 'url' not set");let e=this.getAttribute("bounds");if(null===e)return void console.warn("attribute 'bounds' not set");const n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}attributeChangedCallback(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))}}g.observedAttributes=["url","bounds","opacity"];class v extends HTMLElement{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=i(t,e,n);this.dispatchEvent(new CustomEvent(l,{cancelable:!0,bubbles:!0,detail:{layer:s}}))}}class f extends HTMLElement{constructor(){super()}connectedCallback(){const t=this.getAttribute("geojson");if(null!==t){const e=o(JSON.parse(t));this.dispatchEvent(new CustomEvent(l,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}}}const A=t=>t.replace(/-./g,t=>t[1].toUpperCase());class C 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[A(t)]=this.getAttribute(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(t=>{this.hasAttribute(t)&&(e[A(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",C)}),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,i=t.icon();n(a).toEqual(i)}),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 w=(customElements.define("l-map",b),customElements.define("l-control-layers",u),customElements.define("l-base-layers",c),customElements.define("l-overlay-layers",m),customElements.define("l-layer-group",d),customElements.define("l-tile-layer",h),customElements.define("l-marker",p),customElements.define("l-popup",y),customElements.define("l-lat-lng-bounds",E),customElements.define("l-image-overlay",g),customElements.define("l-video-overlay",v),customElements.define("l-geojson",f),void customElements.define("l-icon",C));export{w as default};
|
2
2
|
//# sourceMappingURL=leaflet-html.modern.js.map
|