leaflet-html 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -178,6 +178,46 @@ For example, a marker with a custom icon in Leaflet JS has attributes like `{ sh
178
178
  </l-map>
179
179
  ```
180
180
 
181
+ ## Events
182
+
183
+ Leaflet events are wrapped in CustomElement events and available in the `detail` property of the Event.
184
+ By default, the "ready" event is triggered by the map element.
185
+
186
+ ```html
187
+ <l-map id="map" ...>
188
+ ...
189
+ </l-map>
190
+
191
+ <script>
192
+ const el = document.getElementById("map")
193
+ el.addEventListener("ready", (ev) => {
194
+ const map = ev.detail
195
+ console.log({ map })
196
+ })
197
+ </script>
198
+ ```
199
+
200
+ Arbitrary map events can be listened to by specifying a space-separated list of map events in the on attribute, e.g. `on="resize zoomend"`.
201
+
202
+ This adds a forwarding mechanism to the CustomElement, to add custom JS listeners use `addEventListener("resize", ...)`
203
+ and use the `CustomElement` detail property as it is the underlying Leaflet Event.
204
+
205
+
206
+ ```html
207
+ <l-map id="map" ... on="resize">
208
+ ...
209
+ </l-map>
210
+
211
+ <script>
212
+ // Note: both addEventListener and on="eventName" needed
213
+ const el = document.getElementById("map")
214
+ el.addEventListener("resize", (ev) => {
215
+ const leafletResizeEvent = ev.detail
216
+ console.log(leafletResizeEvent)
217
+ })
218
+ </script>
219
+ ```
220
+
181
221
  ## Realistic example
182
222
 
183
223
  The HTML in `example/index.html` is a simple demonstration of the API.
@@ -1,2 +1,2 @@
1
- import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as a,videoOverlay as i,geoJSON as o,icon as l,tooltip as s,Circle as u,Rectangle as c,Polygon as f,Polyline as p,circle as b,polyline as v,polygon as h,rectangle as d}from"leaflet";function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function m(){return m=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},m.apply(null,arguments)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function E(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,C(t,e)}function L(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(L=function(){return!!t})()}function C(t,e){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},C(t,e)}function O(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function w(t){var e="function"==typeof Map?new Map:void 0;return w=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 a=new(t.bind.apply(t,r));return n&&C(a,n.prototype),a}(t,arguments,g(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),C(n,t)},w(t)}var A="map:addTo",k="popup:add",S=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="base"})},e}(/*#__PURE__*/w(HTMLElement)),N=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return E(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(A,function(e){var n=e.detail,r=n.type,a=n.name,i=n.layer;"overlay"===r?t.addOverlay(i,a):"base"===r&&t.addBaseLayer(i,a),e.preventDefault()});var n=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/w(HTMLElement)),T=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e}(/*#__PURE__*/w(HTMLElement)),j=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(A,function(t){t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var n=t.getAttribute("leaflet-id");if(null!==n){var r=e.getLayer(parseInt(n));void 0!==r&&e.removeLayer(r)}}})})}).observe(this,{childList:!0})},e}(T),J=/*#__PURE__*/function(t){function e(e){var n;return(n=t.call(this)||this).issues=[],n.name="LeafletHTMLError",n.issues=e,n}return E(e,t),n=e,(r=[{key:"message",get:function(){return JSON.stringify(this.issues,null,2)}}])&&function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,O(r.key),r)}}(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(/*#__PURE__*/w(Error)),M=function(t,e){var n=t(function(t){return{status:"clean",issues:[],value:t}}(e));if("clean"!==n.status)throw new J(n.issues);return n.value},P=function(t){return function(e){for(var n=e.issues,r="clean",a={},i=0,o=Object.keys(t);i<o.length;i++){var l=o[i],s=t[l](e);"clean"!==s.status&&(r=s.status),null===s.value&&"clean"===s.status||(n=[].concat(n,s.issues),a[l]=s.value)}return{status:r,issues:n,value:a}}},H=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length&&"abort"!==(e=t[n](e)).status;n++);return e}},_=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length;n++)e=t[n](e);return e}},I=function(t){return function(e){return null===e.value?e:t(e)}},F=function(t){return function(e){return null===(e=t(e)).value?{status:"clean",issues:[],value:null}:e}},z=function(t){return function(e){var n=e.value,r=n.getAttribute(t);return null===r?{status:"abort",issues:[].concat(e.issues,[R(n,t)]),value:null}:m({},e,{value:r})}},B=function(){return function(t){var e;try{e=JSON.parse(t.value)}catch(e){return{status:"abort",issues:[].concat(t.issues,[x(e)]),value:null}}return m({},t,{value:e})}},U=function(t){return H.apply(void 0,[z(t)].concat([].slice.call(arguments,1)))},x=function(t){return{code:"parse_json",message:t.message}},R=function(t,e){return{code:"missing_attribute",message:t.tagName.toLowerCase()+" missing attribute '"+e+"'"}},V=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).map=null,t.addEventListener("map:bounds",function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof T&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(t,{childList:!0}),t}E(n,e);var r=n.prototype;return r.connectedCallback=function(){var e,n=this;if(this.map=t.map(this),this.hasAttribute("on")){var r=this.getAttribute("on");null!==r&&r.split(/\s+/).forEach(function(t){null!==n.map&&n.map.on(t,function(e){n.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:e}))})})}if(this.hasAttribute("fit-world"))this.map.fitWorld();else{var a=(e={zoom:U("zoom",function(t){var e,n=parseInt(t.value);return isNaN(n)?{status:"abort",issues:[].concat(t.issues,[(e=t.value,{code:"parse_int",message:'could not parse int given: "'+e+'"'})]),value:n}:m({},t,{value:n})}),center:U("center",B())},function(t){for(var n=t.status,r=t.issues,a={},i=0,o=Object.keys(e);i<o.length;i++){var l=o[i],s=e[l](t);"abort"===s.status&&(n="abort",r=[].concat(r,s.issues)),a[l]=s.value}return{status:n,issues:r,value:a}}),i=M(a,this);this.map.setView(i.center,i.zoom)}if(this.hasAttribute("locate")){var o=U("locate",B());this.map.locate(M(o,this))}this.addEventListener(A,function(t){t.detail.layer.addTo(n.map)}),this.addEventListener("layer:remove",function(t){null!==n.map&&n.map.removeLayer(t.detail.layer)})},r.attributeChangedCallback=function(t,e,n){null!==this.map&&("zoom"===t?this.map.setZoom(parseInt(n)):"center"===t&&this.map.setView(JSON.parse(n)))},n}(/*#__PURE__*/w(HTMLElement));V.observedAttributes=["zoom","center"];var D=/*#__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}E(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=M(U("lat-lng",B()),this),r=M(P({opacity:_(F(z("opacity")),I(function(t){var e,n=parseFloat(t.value);return isNaN(n)?{status:"abort",issues:[].concat(t.issues,[(e=t.value,{code:"parse_float",message:'could not parse float given: "'+e+'"'})]),value:n}:m({},t,{value:n})}))}),this);if(this.layer=t.marker(n,r),this.hasAttribute("icon")){var a=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(k,function(t){var n=t.detail,r=n.openPopup,a=e.layer.bindPopup(n.content);r&&a.openPopup()});var i=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(T);D.observedAttributes=["lat-lng","opacity","icon"];var W=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/w(HTMLElement)),Z=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=!1,n=this.getAttribute("open-popup");null!==n&&(e="false"!==n);var r=new CustomEvent(k,{cancelable:!0,bubbles:!0,detail:{content:t,openPopup:e}});this.dispatchEvent(r)},e}(/*#__PURE__*/w(HTMLElement)),$=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e.prototype.connectedCallback=function(){for(var t,n=M(z("url-template"),this),a={},i=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return y(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}(t))){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e.parseTemplateAttributes(n));!(t=i()).done;){var o=t.value,l=this.getAttribute(o);null!==l&&(a[o]=l)}var s=this.getAttribute("name"),u=P({attribution:F(z("attribution")),errorTileUrl:F(z("error-tile-url"))}),c=M(u,this);this.layer=r(n,m({},a,c));var f=new CustomEvent(A,{detail:{name:s,layer:this.layer},bubbles:!0});this.dispatchEvent(f)},e.parseTemplateAttributes=function(t){return[].concat(t.matchAll(/{(.*?)}/g)).map(function(t){return t[1]})},e}(T),q=/*#__PURE__*/function(t){function e(){return t.call(this)||this}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("bounds");null!==t&&this.dispatchEvent(this.getEvent(JSON.parse(t)))},n.attributeChangedCallback=function(t,e,n){this.dispatchEvent(this.getEvent(JSON.parse(n)))},n.getEvent=function(t){return new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:t,method:this.getAttribute("method")||"fitBounds"}})},e}(/*#__PURE__*/w(HTMLElement));q.observedAttributes=["bounds"];var G=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},n.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},e}(T);G.observedAttributes=["url","bounds","opacity"];var K=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=i(t,e,n);this.dispatchEvent(new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(T),Q=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=o(JSON.parse(t));this.dispatchEvent(new CustomEvent(A,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/w(HTMLElement)),X=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},Y=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return E(e,t),e.prototype.connectedCallback=function(){var t={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(e){t[X(e)]=F(z(e))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(e){t[X(e)]=_(F(z(e)),I(B()))}),t.crossOrigin=_(F(z("cross-origin")),I(function(t){return m({},t,{value:"true"===t.value.toLowerCase()})}));var e=P(t),n=M(e,this);this.icon=l(n);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/w(HTMLElement)),tt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).tooltip=s(),e}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=new CustomEvent("bindTooltip",{cancelable:!0,bubbles:!0,detail:{tooltip:this.tooltip}});this.dispatchEvent(t)},n.attributeChangedCallback=function(t,e,n){"content"===t&&this.tooltip.setContent(n)},e}(/*#__PURE__*/w(HTMLElement));tt.observedAttributes=["content"];var et=function(t){switch(t){case"circle":return[nt("latLng","latlng",null)];case"rectangle":return[nt("latLngBounds","latlngbounds",null)];case"polygon":case"polyline":return[nt("latLngs","latlng",null)]}},nt=function(t,e,n){return{camel:t,kebab:(r=t,r.split("").map(function(t,e){return t.toUpperCase()===t?(0!==e?"-":"")+t.toLowerCase():t}).join("")),parser:rt(e),defaultValue:n};var r},rt=function(t){switch(t.toLowerCase()){case"boolean":return function(t){return"true"===t};case"number":return parseFloat;case"latlng":case"latlngbounds":return JSON.parse;default:return function(t){return t}}},at=function(t){var e={circle:[nt("radius","number",null)],path:[nt("stroke","boolean",!0),nt("color","string","#3388ff"),nt("weight","number",3),nt("opacity","number",1),nt("lineCap","string","round"),nt("lineJoin","string","round"),nt("dashArray","string",null),nt("dashOffset","string",null),nt("fill","boolean",!0),nt("fillColor","string","#3388ff"),nt("fillOpacity","number",.2)],polyline:[nt("smoothFactor","number",1),nt("noClip","boolean",!1)],polygon:[],rectangle:[],interactiveLayer:[nt("interactive","boolean",!0)]};return ot(t).flatMap(function(t){return e[t]})},it={circle:["path"],polyline:["path"],polygon:["polyline"],rectangle:["polygon"],path:["interactiveLayer"],interactiveLayer:[]},ot=function(t){for(var e=t,n=[t];it[e].length>0;){var r=it[e][0];n.push(r),e=r}return n},lt=function(t,e){var n={};return at(e).forEach(function(e){t.hasAttribute(e.kebab)&&(n[e.camel]=e.parser(t.getAttribute(e.kebab)))}),n},st=function(t,e){var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t.addEventListener("bindTooltip",function(e){null!==t.layer&&t.layer.bindTooltip(e.detail.tooltip)}),t}E(r,n);var a=r.prototype;return a.connectedCallback=function(){var n=function(t,e){return et(e).map(function(e){var n=z(e.kebab),r=M(n,t);return e.parser(r)})}(this,e),r=lt(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},a.attributeChangedCallback=function(t,n,r){null!==this.layer&&function(t,e,n,r){var a=[].concat(et(e),at(e)).find(function(t){return t.kebab===n});if(void 0!==a){var i=a.parser(r);if(t instanceof u)switch(n){case"lat-lng":t.setLatLng(JSON.parse(r));break;case"radius":t.setRadius(parseFloat(r))}else if(t instanceof c)switch(n){case"lat-lngs":t.setLatLngs(JSON.parse(r));break;case"lat-lng-bounds":t.setBounds(JSON.parse(r))}else t instanceof f?"lat-lngs"===n&&t.setLatLngs(JSON.parse(r)):t instanceof p&&"lat-lngs"===n&&t.setLatLngs(JSON.parse(r));var o,l=at("polyline").find(function(t){return t.kebab===n});void 0!==l&&t.setStyle(((o={})[l.camel]=i,o))}}(this.layer,e,t,r)},r}(/*#__PURE__*/w(HTMLElement));return n.observedAttributes=function(t){var e=et(t).map(function(t){return t.kebab}),n=at(t).map(function(t){return t.kebab});return[].concat(e,n)}(e),n},ut=(customElements.define("l-map",V),customElements.define("l-control-layers",N),customElements.define("l-base-layers",S),customElements.define("l-overlay-layers",W),customElements.define("l-layer-group",j),customElements.define("l-tile-layer",$),customElements.define("l-marker",D),customElements.define("l-popup",Z),customElements.define("l-lat-lng-bounds",q),customElements.define("l-image-overlay",G),customElements.define("l-video-overlay",K),customElements.define("l-geojson",Q),customElements.define("l-icon",Y),customElements.define("l-circle",st(b,"circle")),customElements.define("l-polyline",st(v,"polyline")),customElements.define("l-polygon",st(h,"polygon")),customElements.define("l-rectangle",st(d,"rectangle")),void customElements.define("l-tooltip",tt));export{ut as default};
1
+ import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as a,videoOverlay as i,geoJSON as o,icon as l,tooltip as s,Circle as u,Rectangle as c,Polygon as f,Polyline as p,circle as b,polyline as v,polygon as d,rectangle as h}from"leaflet";function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function m(){return m=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},m.apply(null,arguments)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function E(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,L(t,e)}function C(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(C=function(){return!!t})()}function L(t,e){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},L(t,e)}function w(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function O(t){var e="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!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(C())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var a=new(t.bind.apply(t,r));return n&&L(a,n.prototype),a}(t,arguments,g(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),L(n,t)},O(t)}var A="map:addTo",k="popup:add",S=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="base"})},e}(/*#__PURE__*/O(HTMLElement)),N=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return E(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(A,function(e){var n=e.detail,r=n.type,a=n.name,i=n.layer;"overlay"===r?t.addOverlay(i,a):"base"===r&&t.addBaseLayer(i,a),e.preventDefault()});var n=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/O(HTMLElement)),T=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e}(/*#__PURE__*/O(HTMLElement)),j=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(A,function(t){t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var n=t.getAttribute("leaflet-id");if(null!==n){var r=e.getLayer(parseInt(n));void 0!==r&&e.removeLayer(r)}}})})}).observe(this,{childList:!0})},e}(T),J=/*#__PURE__*/function(t){function e(e){var n;return(n=t.call(this)||this).issues=[],n.name="LeafletHTMLError",n.issues=e,n}return E(e,t),n=e,(r=[{key:"message",get:function(){return JSON.stringify(this.issues,null,2)}}])&&function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,w(r.key),r)}}(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(/*#__PURE__*/O(Error)),M=function(t,e){var n=t(function(t){return{status:"clean",issues:[],value:t}}(e));if("clean"!==n.status)throw new J(n.issues);return n.value},P=function(t){return function(e){for(var n=e.issues,r="clean",a={},i=0,o=Object.keys(t);i<o.length;i++){var l=o[i],s=t[l](e);"clean"!==s.status&&(r=s.status),null===s.value&&"clean"===s.status||(n=[].concat(n,s.issues),a[l]=s.value)}return{status:r,issues:n,value:a}}},H=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length&&"abort"!==(e=t[n](e)).status;n++);return e}},_=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length;n++)e=t[n](e);return e}},I=function(t){return function(e){return null===e.value?e:t(e)}},F=function(t){return function(e){return null===(e=t(e)).value?{status:"clean",issues:[],value:null}:e}},z=function(t){return function(e){var n=e.value,r=n.getAttribute(t);return null===r?{status:"abort",issues:[].concat(e.issues,[R(n,t)]),value:null}:m({},e,{value:r})}},B=function(){return function(t){var e;try{e=JSON.parse(t.value)}catch(e){return{status:"abort",issues:[].concat(t.issues,[x(e)]),value:null}}return m({},t,{value:e})}},U=function(t){return H.apply(void 0,[z(t)].concat([].slice.call(arguments,1)))},x=function(t){return{code:"parse_json",message:t.message}},R=function(t,e){return{code:"missing_attribute",message:t.tagName.toLowerCase()+" missing attribute '"+e+"'"}},V=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).map=null,t.addEventListener("map:bounds",function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof T&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(t,{childList:!0}),t}E(n,e);var r=n.prototype;return r.connectedCallback=function(){var e,n=this;if(this.map=t.map(this),this.map.whenReady(function(){n.dispatchEvent(new CustomEvent("ready",{bubbles:!0,cancelable:!0,detail:n.map}))}),this.hasAttribute("on")){var r=this.getAttribute("on");null!==r&&r.split(/\s+/).forEach(function(t){null!==n.map&&n.map.on(t,function(e){n.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:e}))})})}if(this.hasAttribute("fit-world"))this.map.fitWorld();else{var a=(e={zoom:U("zoom",function(t){var e,n=parseInt(t.value);return isNaN(n)?{status:"abort",issues:[].concat(t.issues,[(e=t.value,{code:"parse_int",message:'could not parse int given: "'+e+'"'})]),value:n}:m({},t,{value:n})}),center:U("center",B())},function(t){for(var n=t.status,r=t.issues,a={},i=0,o=Object.keys(e);i<o.length;i++){var l=o[i],s=e[l](t);"abort"===s.status&&(n="abort",r=[].concat(r,s.issues)),a[l]=s.value}return{status:n,issues:r,value:a}}),i=M(a,this);this.map.setView(i.center,i.zoom)}if(this.hasAttribute("locate")){var o=U("locate",B());this.map.locate(M(o,this))}this.addEventListener(A,function(t){t.detail.layer.addTo(n.map)}),this.addEventListener("layer:remove",function(t){null!==n.map&&n.map.removeLayer(t.detail.layer)})},r.attributeChangedCallback=function(t,e,n){null!==this.map&&("zoom"===t?this.map.setZoom(parseInt(n)):"center"===t&&this.map.setView(JSON.parse(n)))},n}(/*#__PURE__*/O(HTMLElement));V.observedAttributes=["zoom","center"];var D=/*#__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}E(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=M(U("lat-lng",B()),this),r=M(P({opacity:_(F(z("opacity")),I(function(t){var e,n=parseFloat(t.value);return isNaN(n)?{status:"abort",issues:[].concat(t.issues,[(e=t.value,{code:"parse_float",message:'could not parse float given: "'+e+'"'})]),value:n}:m({},t,{value:n})}))}),this);if(this.layer=t.marker(n,r),this.hasAttribute("icon")){var a=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(k,function(t){var n=t.detail,r=n.openPopup,a=e.layer.bindPopup(n.content);r&&a.openPopup()});var i=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(T);D.observedAttributes=["lat-lng","opacity","icon"];var W=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/O(HTMLElement)),Z=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=!1,n=this.getAttribute("open-popup");null!==n&&(e="false"!==n);var r=new CustomEvent(k,{cancelable:!0,bubbles:!0,detail:{content:t,openPopup:e}});this.dispatchEvent(r)},e}(/*#__PURE__*/O(HTMLElement)),$=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e.prototype.connectedCallback=function(){for(var t,n=M(z("url-template"),this),a={},i=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return y(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}(t))){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e.parseTemplateAttributes(n));!(t=i()).done;){var o=t.value,l=this.getAttribute(o);null!==l&&(a[o]=l)}var s=this.getAttribute("name"),u=P({attribution:F(z("attribution")),errorTileUrl:F(z("error-tile-url"))}),c=M(u,this);this.layer=r(n,m({},a,c));var f=new CustomEvent(A,{detail:{name:s,layer:this.layer},bubbles:!0});this.dispatchEvent(f)},e.parseTemplateAttributes=function(t){return[].concat(t.matchAll(/{(.*?)}/g)).map(function(t){return t[1]})},e}(T),q=/*#__PURE__*/function(t){function e(){return t.call(this)||this}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("bounds");null!==t&&this.dispatchEvent(this.getEvent(JSON.parse(t)))},n.attributeChangedCallback=function(t,e,n){this.dispatchEvent(this.getEvent(JSON.parse(n)))},n.getEvent=function(t){return new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:t,method:this.getAttribute("method")||"fitBounds"}})},e}(/*#__PURE__*/O(HTMLElement));q.observedAttributes=["bounds"];var G=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},n.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},e}(T);G.observedAttributes=["url","bounds","opacity"];var K=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=i(t,e,n);this.dispatchEvent(new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(T),Q=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=o(JSON.parse(t));this.dispatchEvent(new CustomEvent(A,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/O(HTMLElement)),X=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},Y=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return E(e,t),e.prototype.connectedCallback=function(){var t={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(e){t[X(e)]=F(z(e))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(e){t[X(e)]=_(F(z(e)),I(B()))}),t.crossOrigin=_(F(z("cross-origin")),I(function(t){return m({},t,{value:"true"===t.value.toLowerCase()})}));var e=P(t),n=M(e,this);this.icon=l(n);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/O(HTMLElement)),tt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).tooltip=s(),e}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=new CustomEvent("bindTooltip",{cancelable:!0,bubbles:!0,detail:{tooltip:this.tooltip}});this.dispatchEvent(t)},n.attributeChangedCallback=function(t,e,n){"content"===t&&this.tooltip.setContent(n)},e}(/*#__PURE__*/O(HTMLElement));tt.observedAttributes=["content"];var et=function(t){switch(t){case"circle":return[nt("latLng","latlng",null)];case"rectangle":return[nt("latLngBounds","latlngbounds",null)];case"polygon":case"polyline":return[nt("latLngs","latlng",null)]}},nt=function(t,e,n){return{camel:t,kebab:(r=t,r.split("").map(function(t,e){return t.toUpperCase()===t?(0!==e?"-":"")+t.toLowerCase():t}).join("")),parser:rt(e),defaultValue:n};var r},rt=function(t){switch(t.toLowerCase()){case"boolean":return function(t){return"true"===t};case"number":return parseFloat;case"latlng":case"latlngbounds":return JSON.parse;default:return function(t){return t}}},at=function(t){var e={circle:[nt("radius","number",null)],path:[nt("stroke","boolean",!0),nt("color","string","#3388ff"),nt("weight","number",3),nt("opacity","number",1),nt("lineCap","string","round"),nt("lineJoin","string","round"),nt("dashArray","string",null),nt("dashOffset","string",null),nt("fill","boolean",!0),nt("fillColor","string","#3388ff"),nt("fillOpacity","number",.2)],polyline:[nt("smoothFactor","number",1),nt("noClip","boolean",!1)],polygon:[],rectangle:[],interactiveLayer:[nt("interactive","boolean",!0)]};return ot(t).flatMap(function(t){return e[t]})},it={circle:["path"],polyline:["path"],polygon:["polyline"],rectangle:["polygon"],path:["interactiveLayer"],interactiveLayer:[]},ot=function(t){for(var e=t,n=[t];it[e].length>0;){var r=it[e][0];n.push(r),e=r}return n},lt=function(t,e){var n={};return at(e).forEach(function(e){t.hasAttribute(e.kebab)&&(n[e.camel]=e.parser(t.getAttribute(e.kebab)))}),n},st=function(t,e){var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t.addEventListener("bindTooltip",function(e){null!==t.layer&&t.layer.bindTooltip(e.detail.tooltip)}),t}E(r,n);var a=r.prototype;return a.connectedCallback=function(){var n=function(t,e){return et(e).map(function(e){var n=z(e.kebab),r=M(n,t);return e.parser(r)})}(this,e),r=lt(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},a.attributeChangedCallback=function(t,n,r){null!==this.layer&&function(t,e,n,r){var a=[].concat(et(e),at(e)).find(function(t){return t.kebab===n});if(void 0!==a){var i=a.parser(r);if(t instanceof u)switch(n){case"lat-lng":t.setLatLng(JSON.parse(r));break;case"radius":t.setRadius(parseFloat(r))}else if(t instanceof c)switch(n){case"lat-lngs":t.setLatLngs(JSON.parse(r));break;case"lat-lng-bounds":t.setBounds(JSON.parse(r))}else t instanceof f?"lat-lngs"===n&&t.setLatLngs(JSON.parse(r)):t instanceof p&&"lat-lngs"===n&&t.setLatLngs(JSON.parse(r));var o,l=at("polyline").find(function(t){return t.kebab===n});void 0!==l&&t.setStyle(((o={})[l.camel]=i,o))}}(this.layer,e,t,r)},r}(/*#__PURE__*/O(HTMLElement));return n.observedAttributes=function(t){var e=et(t).map(function(t){return t.kebab}),n=at(t).map(function(t){return t.kebab});return[].concat(e,n)}(e),n},ut=(customElements.define("l-map",V),customElements.define("l-control-layers",N),customElements.define("l-base-layers",S),customElements.define("l-overlay-layers",W),customElements.define("l-layer-group",j),customElements.define("l-tile-layer",$),customElements.define("l-marker",D),customElements.define("l-popup",Z),customElements.define("l-lat-lng-bounds",q),customElements.define("l-image-overlay",G),customElements.define("l-video-overlay",K),customElements.define("l-geojson",Q),customElements.define("l-icon",Y),customElements.define("l-circle",st(b,"circle")),customElements.define("l-polyline",st(v,"polyline")),customElements.define("l-polygon",st(d,"polygon")),customElements.define("l-rectangle",st(h,"rectangle")),void customElements.define("l-tooltip",tt));export{ut as default};
2
2
  //# sourceMappingURL=leaflet-html.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"leaflet-html.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/parse.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/util.js","../src/l-icon.js","../src/l-tooltip.js","../src/generator.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","/// <reference path=\"./parser.d.ts\" />\n \nexport class LeafletHTMLError extends Error {\n /** @type {Issue[]} */\n issues = [];\n\n /**\n * @param {Issue[]} issues\n */\n constructor(issues) {\n super();\n this.name = \"LeafletHTMLError\";\n this.issues = issues;\n }\n\n get message() {\n return JSON.stringify(this.issues, null, 2);\n }\n}\n\n/**\n * @template T\n * @param {T} value\n * @returns {Context<T>}\n */\nconst wrap = (value) => {\n return {\n status: \"clean\",\n issues: [],\n value,\n };\n};\n\n/**\n * @template T\n * @param {Context<T>} value\n * @returns {T}\n */\nconst unwrap = ({ value }) => value;\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {S}\n */\nexport const parse = (schema, value) => {\n const result = schema(wrap(value));\n if (result.status !== \"clean\") {\n throw new LeafletHTMLError(result.issues);\n } else {\n return unwrap(result);\n }\n};\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {Context<S>}\n */\nexport const safeParse = (schema, value) => schema(wrap(value));\n\n/**\n * @param {Object} obj\n * @returns {(ctx: Context<Object>) => Context<Object>}\n */\nexport const object = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n if (key in ctx.value) {\n result[key] = obj[key](wrap(ctx.value[key])).value;\n } else {\n status = \"abort\";\n issues = [...issues, missingKeyIssue(key)];\n }\n }\n return { status, issues, value: result };\n};\n\n// CONNECTORS\n\n/**\n * @template T\n * @param {Object} obj\n * @returns {(ctx: Context<T>) => Context<Object>}\n */\nexport const distribute = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status === \"abort\") {\n status = \"abort\";\n issues = [...issues, ...localCtx.issues];\n }\n result[key] = localCtx.value;\n }\n return { status, issues, value: result };\n};\n\nexport const partial = (obj) => (ctx) => {\n let { issues } = ctx;\n let status = \"clean\"\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status !== \"clean\") {\n status = localCtx.status\n }\n \n if ((localCtx.value === null) && (localCtx.status === \"clean\")) {\n continue\n } else {\n issues = [...issues, ...localCtx.issues];\n result[key] = localCtx.value;\n }\n }\n return { status, issues, value: result };\n};\n\nexport const pipe =\n (...parsers) =>\n (ctx) => {\n for (let i = 0; i < parsers.length; i++) {\n ctx = parsers[i](ctx);\n if (ctx.status === \"abort\") {\n break;\n }\n }\n return ctx;\n };\n\nexport const chain = (...parsers) => (ctx) => {\n for (let i=0; i<parsers.length; i++) {\n ctx = parsers[i](ctx)\n }\n return ctx\n}\n\n\n// PRIMITIVES\nexport const nullable = (parser) => (ctx) => {\n if (ctx.value === null) {\n return ctx\n }\n return parser(ctx)\n}\n\nexport const optional = (parser) => (ctx) => {\n ctx = parser(ctx)\n if (ctx.value === null) {\n return {status: \"clean\", issues: [], value: null}\n } else {\n return ctx\n }\n}\n\n/**\n * @param {string} attributeName\n * @returns {Parser<HTMLElement, string>}\n */\nexport const htmlAttribute = (attributeName) => (ctx) => {\n const el = ctx.value;\n let result = el.getAttribute(attributeName);\n if (result === null) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, htmlAttributeIssue(el, attributeName)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const int = () => (ctx) => {\n let result = parseInt(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, intIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const float = () => (ctx) => {\n let result = parseFloat(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, floatIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const json = () => (ctx) => {\n let result;\n try {\n result = JSON.parse(ctx.value);\n } catch (e) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, jsonIssue(e)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<boolean>}\n */\nexport const bool = () => (ctx) => {\n return { ...ctx, value: ctx.value.toLowerCase() === \"true\" };\n};\n\n/**\n * @template T\n * @template S\n * @param {string} key\n * @param {Parser<T, S>[]} fns\n */\nexport const option = (key, ...fns) => pipe(htmlAttribute(key), ...fns);\n\n\n// ISSUES\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const intIssue = (value) => {\n return {\n code: \"parse_int\",\n message: `could not parse int given: \"${value}\"`,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const floatIssue = (value) => {\n return {\n code: \"parse_float\",\n message: `could not parse float given: \"${value}\"`,\n };\n};\n\n/**\n * @param {SyntaxError} e\n * @returns {Issue}\n */\nexport const jsonIssue = (e) => {\n return {\n code: \"parse_json\",\n message: e.message,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const missingKeyIssue = (value) => {\n return {\n code: \"missing_key\",\n message: `key not found: ${value}`,\n };\n};\n\n/**\n * @param {HTMLElement} el\n * @param {string} attributeName\n * @returns {Issue}\n */\nexport const htmlAttributeIssue = (el, attributeName) => {\n return {\n code: \"missing_attribute\",\n message: `${el.tagName.toLowerCase()} missing attribute '${attributeName}'`,\n };\n};\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { distribute, int, json, option, parse } from \"./parse.js\";\n\nclass LMap extends HTMLElement {\n static observedAttributes = [\"zoom\", \"center\"];\n\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target;\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if (el.map !== null && node.layer !== null) {\n el.map.removeLayer(node.layer);\n }\n }\n });\n }\n });\n });\n observer.observe(this, { childList: true });\n }\n\n connectedCallback() {\n this.map = L.map(this);\n\n // Connect Leaflet events\n if (this.hasAttribute(\"on\")) {\n const on = this.getAttribute(\"on\");\n if (on !== null) {\n on.split(/\\s+/).forEach((eventName) => {\n if (this.map !== null) {\n this.map.on(eventName, (e) => {\n this.dispatchEvent(\n new CustomEvent(eventName, { bubbles: true, detail: e })\n );\n });\n }\n });\n }\n }\n\n if (this.hasAttribute(\"fit-world\")) {\n this.map.fitWorld();\n } else {\n const schema = distribute({\n zoom: option(\"zoom\", int()),\n center: option(\"center\", json())\n })\n const { zoom, center } = parse(schema, this)\n this.map.setView(center, zoom);\n }\n\n if (this.hasAttribute(\"locate\")) {\n const schema = option(\"locate\", json())\n this.map.locate(parse(schema, this));\n }\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 attributeChangedCallback(name, _oldValue, newValue) {\n if (this.map !== null) {\n if (name === \"zoom\") {\n this.map.setZoom(parseInt(newValue));\n } else if (name === \"center\") {\n this.map.setView(JSON.parse(newValue));\n }\n }\n }\n}\n\nexport default LMap;\n","import * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport {\n chain,\n float,\n json,\n option,\n optional,\n htmlAttribute,\n parse,\n partial,\n nullable,\n} from \"./parse.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const latLng = parse(option(\"lat-lng\", json()), this);\n const options = parse(\n partial({\n opacity: chain(optional(htmlAttribute(\"opacity\")), nullable(float())),\n }),\n this\n );\n this.layer = L.marker(latLng, options);\n\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, openPopup } = ev.detail;\n const popup = this.layer.bindPopup(content);\n if (openPopup) {\n popup.openPopup();\n }\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\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 let openPopup = false;\n const openPopupAttribute = this.getAttribute(\"open-popup\");\n if (openPopupAttribute !== null) {\n openPopup = openPopupAttribute !== \"false\";\n }\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n openPopup,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { htmlAttribute, optional, parse, partial } from \"./parse.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const urlTemplate = parse(htmlAttribute(\"url-template\"), this)\n \n // Template attributes\n const urlAttributes = LTileLayer.parseTemplateAttributes(urlTemplate)\n const templateOptions = {}\n for (const attribute of urlAttributes) {\n const value = this.getAttribute(attribute)\n if (value !== null) {\n templateOptions[attribute] = value\n }\n }\n \n // Options\n const name = this.getAttribute(\"name\");\n const schema = partial({\n attribution: optional(htmlAttribute(\"attribution\")),\n errorTileUrl: optional(htmlAttribute(\"error-tile-url\"))\n })\n const options = parse(schema, this)\n this.layer = tileLayer(urlTemplate, { ...templateOptions, ...options });\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} urlTemplate\n * @returns {string[]}\n */\n static parseTemplateAttributes(urlTemplate) {\n const regex = /{(.*?)}/g\n return [...urlTemplate.matchAll(regex)].map(match => match[1])\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nimport { LatLngBounds } from \"leaflet\";\n\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n connectedCallback() {\n let value = this.getAttribute(\"bounds\")\n if (value !== null) {\n this.dispatchEvent(this.getEvent(JSON.parse(value)))\n }\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n this.dispatchEvent(this.getEvent(JSON.parse(newValue)));\n }\n\n /**\n * @param {LatLngBounds} bounds\n */\n getEvent(bounds) {\n return new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds,\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n })\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// Utility functions\nexport const kebabToCamel = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\nexport const camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\n","import { icon } from \"leaflet\";\nimport {\n bool,\n chain,\n htmlAttribute,\n json,\n nullable,\n optional,\n parse,\n partial,\n} from \"./parse.js\";\nimport { kebabToCamel } from \"./util.js\";\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const obj = {};\n const keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n obj[kebabToCamel(key)] = optional(htmlAttribute(key));\n });\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 obj[kebabToCamel(key)] = chain(\n optional(htmlAttribute(key)),\n nullable(json())\n );\n });\n obj[\"crossOrigin\"] = chain(\n optional(htmlAttribute(\"cross-origin\")),\n nullable(bool())\n );\n const schema = partial(obj);\n const options = parse(schema, this);\n\n this.icon = 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\nexport default LIcon;\n","// @ts-check\n\nimport { tooltip } from \"leaflet\";\n\nclass LTooltip extends HTMLElement {\n static observedAttributes = [\"content\"];\n\n constructor() {\n super();\n this.tooltip = tooltip();\n }\n\n connectedCallback() {\n const event = new CustomEvent(\"bindTooltip\", {\n cancelable: true,\n bubbles: true,\n detail: {\n tooltip: this.tooltip,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (attName === \"content\") {\n this.tooltip.setContent(newValue);\n }\n }\n}\n\nexport default LTooltip;\n","// @ts-check\nimport { Circle, LatLng, Polygon, Polyline, Rectangle } from \"leaflet\";\nimport { camelToKebab } from \"./util.js\";\nimport { htmlAttribute, parse } from \"./parse.js\";\n\n/**\n * @typedef {Object} TagOption\n * @property {string} camel\n * @property {string} kebab\n * @property {(s: string) => AttributeValue} parser\n * @property {AttributeValue | null} defaultValue\n */\n/**\n * @typedef {(\"circle\"|\"rectangle\"|\"polygon\"|\"polyline\")} MethodName\n * @typedef {(\"path\"|\"interactiveLayer\")} LayerName\n * @typedef {(\"boolean\"|\"number\"|\"string\"|\"latlng\"|\"latlngbounds\")} AttributeType\n * @typedef {(boolean|number|string|LatLng)} AttributeValue\n */\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst positionalArguments = (methodName) => {\n switch (methodName) {\n case \"circle\":\n return [option(\"latLng\", \"latlng\", null)];\n case \"rectangle\":\n return [option(\"latLngBounds\", \"latlngbounds\", null)];\n case \"polygon\":\n return [option(\"latLngs\", \"latlng\", null)];\n case \"polyline\":\n return [option(\"latLngs\", \"latlng\", null)];\n }\n};\n\n/**\n * @param {string} name\n * @param {AttributeType} type\n * @param {AttributeValue | null} defaultValue\n * @returns {TagOption}\n */\nconst option = (name, type, defaultValue) => {\n return {\n camel: name,\n kebab: camelToKebab(name),\n parser: inferParser(type),\n defaultValue,\n };\n};\n\n/**\n * @param {AttributeType} type\n * @returns {(s: string) => AttributeValue}\n */\nconst inferParser = (type) => {\n switch (type.toLowerCase()) {\n case \"boolean\":\n return (s) => s === \"true\";\n case \"number\":\n return parseFloat;\n case \"latlng\":\n case \"latlngbounds\":\n return JSON.parse;\n case \"string\":\n return (s) => s;\n default:\n return (s) => s;\n }\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst options = (methodName) => {\n const _OPTIONS = {\n circle: [option(\"radius\", \"number\", null)],\n path: [\n option(\"stroke\", \"boolean\", true),\n option(\"color\", \"string\", \"#3388ff\"),\n option(\"weight\", \"number\", 3),\n option(\"opacity\", \"number\", 1.0),\n option(\"lineCap\", \"string\", \"round\"),\n option(\"lineJoin\", \"string\", \"round\"),\n option(\"dashArray\", \"string\", null),\n option(\"dashOffset\", \"string\", null),\n option(\"fill\", \"boolean\", true),\n option(\"fillColor\", \"string\", \"#3388ff\"),\n option(\"fillOpacity\", \"number\", 0.2),\n ],\n polyline: [\n option(\"smoothFactor\", \"number\", 1.0),\n option(\"noClip\", \"boolean\", false),\n ],\n polygon: [],\n rectangle: [],\n interactiveLayer: [option(\"interactive\", \"boolean\", true)],\n };\n return inheritance(methodName).flatMap((parent) => _OPTIONS[parent]);\n};\n\n/**\n * @type {Object.<string, (MethodName | LayerName)[]>}\n */\nconst INHERITS = {\n circle: [\"path\"],\n polyline: [\"path\"],\n polygon: [\"polyline\"],\n rectangle: [\"polygon\"],\n path: [\"interactiveLayer\"],\n interactiveLayer: [],\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {(MethodName | LayerName)[]}\n */\nconst inheritance = (methodName) => {\n /** @type {(MethodName | LayerName)} */\n let name = methodName;\n let chain = [methodName];\n while (INHERITS[name].length > 0) {\n let parent = INHERITS[name][0];\n chain.push(parent);\n name = parent;\n }\n return chain;\n};\n\n/**\n * @param {MethodName} methodName\n * @param {string} newValue\n * @param {string} name\n * @param {(Circle | Rectangle | Polygon | Polyline)} layer\n */\nconst setter = (layer, methodName, name, newValue) => {\n // Parse\n const allOptions = [\n ...positionalArguments(methodName),\n ...options(methodName),\n ];\n let _opt = allOptions.find((o) => o.kebab === name);\n if (typeof _opt === \"undefined\") {\n return;\n }\n const parsedValue = _opt.parser(newValue);\n\n // Update\n if (layer instanceof Circle) {\n switch (name) {\n case \"lat-lng\":\n layer.setLatLng(JSON.parse(newValue));\n break;\n case \"radius\":\n layer.setRadius(parseFloat(newValue));\n break;\n }\n } else if (layer instanceof Rectangle) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n case \"lat-lng-bounds\":\n layer.setBounds(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polygon) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polyline) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n }\n\n // setStyle options\n let opt = options(\"polyline\").find((o) => o.kebab === name);\n if (typeof opt !== \"undefined\") {\n layer.setStyle({ [opt.camel]: parsedValue });\n }\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst attributes = (methodName) => {\n let args = positionalArguments(methodName).map((o) => o.kebab);\n let opts = options(methodName).map((o) => o.kebab);\n return [...args, ...opts];\n};\n\n/**\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {};\n\n // Process inheritance chain\n options(methodName).forEach((o) => {\n if (el.hasAttribute(o.kebab)) {\n result[o.camel] = o.parser(el.getAttribute(o.kebab));\n }\n });\n return result;\n};\n\n/**\n * Read positional arguments from HTMLElement\n *\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst positional = (el, methodName) => {\n return positionalArguments(methodName).map(option => {\n const schema = htmlAttribute(option.kebab)\n const value = parse(schema, el)\n return option.parser(value);\n })\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst generator = (method, methodName) => {\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"bindTooltip\", (ev) => {\n if (this.layer !== null) {\n this.layer.bindTooltip(ev.detail.tooltip);\n }\n });\n }\n\n connectedCallback() {\n const args = positional(this, methodName);\n const options = settings(this, methodName);\n this.layer = method(...args, options);\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, methodName, attName, newValue);\n }\n }\n }\n return cls;\n};\n\nexport default generator;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport LTooltip from \"./l-tooltip.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"));\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"));\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"));\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"));\n customElements.define(\"l-tooltip\", LTooltip);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LeafletHTMLError","_Error","issues","key","get","JSON","stringify","Error","parse","schema","value","result","status","wrap","partial","obj","ctx","_i3","_Object$keys3","Object","keys","length","localCtx","concat","pipe","parsers","slice","arguments","i","chain","nullable","parser","optional","htmlAttribute","attributeName","el","htmlAttributeIssue","_extends","json","e","jsonIssue","option","apply","code","message","tagName","toLowerCase","LMap","map","method","bounds","target","_proto","_this2","L","hasAttribute","on","split","eventName","fitWorld","zoom","isNaN","center","_i2","_Object$keys2","_parse","setView","locate","addTo","attributeChangedCallback","_oldValue","newValue","setZoom","observedAttributes","LMarker","setIcon","icon","latLng","options","opacity","parseFloat","marker","setAttribute","stamp","openPopup","popup","bindPopup","content","setLatLng","setOpacity","LOverlayLayers","LPopup","openPopupAttribute","LTileLayer","_step","urlTemplate","templateOptions","_iterator","_createForOfIteratorHelperLoose","parseTemplateAttributes","done","attribute","attribution","errorTileUrl","tileLayer","matchAll","match","LLatLngBounds","getEvent","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","geoJSON","kebabToCamel","kebab","replace","x","toUpperCase","LIcon","LTooltip","tooltip","attName","_","setContent","positionalArguments","methodName","defaultValue","camel","s","letter","idx","join","inferParser","_OPTIONS","circle","path","polyline","polygon","rectangle","interactiveLayer","inheritance","flatMap","parent","INHERITS","push","settings","o","generator","cls","bindTooltip","args","positional","_opt","find","parsedValue","Circle","setRadius","Rectangle","setLatLngs","Polygon","Polyline","_layer$setStyle","opt","setStyle","setter","opts","attributes","init","customElements","define"],"mappings":"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"}
1
+ {"version":3,"file":"leaflet-html.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/parse.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/util.js","../src/l-icon.js","../src/l-tooltip.js","../src/generator.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","/// <reference path=\"./parser.d.ts\" />\n \nexport class LeafletHTMLError extends Error {\n /** @type {Issue[]} */\n issues = [];\n\n /**\n * @param {Issue[]} issues\n */\n constructor(issues) {\n super();\n this.name = \"LeafletHTMLError\";\n this.issues = issues;\n }\n\n get message() {\n return JSON.stringify(this.issues, null, 2);\n }\n}\n\n/**\n * @template T\n * @param {T} value\n * @returns {Context<T>}\n */\nconst wrap = (value) => {\n return {\n status: \"clean\",\n issues: [],\n value,\n };\n};\n\n/**\n * @template T\n * @param {Context<T>} value\n * @returns {T}\n */\nconst unwrap = ({ value }) => value;\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {S}\n */\nexport const parse = (schema, value) => {\n const result = schema(wrap(value));\n if (result.status !== \"clean\") {\n throw new LeafletHTMLError(result.issues);\n } else {\n return unwrap(result);\n }\n};\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {Context<S>}\n */\nexport const safeParse = (schema, value) => schema(wrap(value));\n\n/**\n * @param {Object} obj\n * @returns {(ctx: Context<Object>) => Context<Object>}\n */\nexport const object = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n if (key in ctx.value) {\n result[key] = obj[key](wrap(ctx.value[key])).value;\n } else {\n status = \"abort\";\n issues = [...issues, missingKeyIssue(key)];\n }\n }\n return { status, issues, value: result };\n};\n\n// CONNECTORS\n\n/**\n * @template T\n * @param {Object} obj\n * @returns {(ctx: Context<T>) => Context<Object>}\n */\nexport const distribute = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status === \"abort\") {\n status = \"abort\";\n issues = [...issues, ...localCtx.issues];\n }\n result[key] = localCtx.value;\n }\n return { status, issues, value: result };\n};\n\nexport const partial = (obj) => (ctx) => {\n let { issues } = ctx;\n let status = \"clean\"\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status !== \"clean\") {\n status = localCtx.status\n }\n \n if ((localCtx.value === null) && (localCtx.status === \"clean\")) {\n continue\n } else {\n issues = [...issues, ...localCtx.issues];\n result[key] = localCtx.value;\n }\n }\n return { status, issues, value: result };\n};\n\nexport const pipe =\n (...parsers) =>\n (ctx) => {\n for (let i = 0; i < parsers.length; i++) {\n ctx = parsers[i](ctx);\n if (ctx.status === \"abort\") {\n break;\n }\n }\n return ctx;\n };\n\nexport const chain = (...parsers) => (ctx) => {\n for (let i=0; i<parsers.length; i++) {\n ctx = parsers[i](ctx)\n }\n return ctx\n}\n\n\n// PRIMITIVES\nexport const nullable = (parser) => (ctx) => {\n if (ctx.value === null) {\n return ctx\n }\n return parser(ctx)\n}\n\nexport const optional = (parser) => (ctx) => {\n ctx = parser(ctx)\n if (ctx.value === null) {\n return {status: \"clean\", issues: [], value: null}\n } else {\n return ctx\n }\n}\n\n/**\n * @param {string} attributeName\n * @returns {Parser<HTMLElement, string>}\n */\nexport const htmlAttribute = (attributeName) => (ctx) => {\n const el = ctx.value;\n let result = el.getAttribute(attributeName);\n if (result === null) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, htmlAttributeIssue(el, attributeName)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const int = () => (ctx) => {\n let result = parseInt(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, intIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const float = () => (ctx) => {\n let result = parseFloat(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, floatIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const json = () => (ctx) => {\n let result;\n try {\n result = JSON.parse(ctx.value);\n } catch (e) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, jsonIssue(e)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<boolean>}\n */\nexport const bool = () => (ctx) => {\n return { ...ctx, value: ctx.value.toLowerCase() === \"true\" };\n};\n\n/**\n * @template T\n * @template S\n * @param {string} key\n * @param {Parser<T, S>[]} fns\n */\nexport const option = (key, ...fns) => pipe(htmlAttribute(key), ...fns);\n\n\n// ISSUES\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const intIssue = (value) => {\n return {\n code: \"parse_int\",\n message: `could not parse int given: \"${value}\"`,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const floatIssue = (value) => {\n return {\n code: \"parse_float\",\n message: `could not parse float given: \"${value}\"`,\n };\n};\n\n/**\n * @param {SyntaxError} e\n * @returns {Issue}\n */\nexport const jsonIssue = (e) => {\n return {\n code: \"parse_json\",\n message: e.message,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const missingKeyIssue = (value) => {\n return {\n code: \"missing_key\",\n message: `key not found: ${value}`,\n };\n};\n\n/**\n * @param {HTMLElement} el\n * @param {string} attributeName\n * @returns {Issue}\n */\nexport const htmlAttributeIssue = (el, attributeName) => {\n return {\n code: \"missing_attribute\",\n message: `${el.tagName.toLowerCase()} missing attribute '${attributeName}'`,\n };\n};\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { distribute, int, json, option, parse } from \"./parse.js\";\n\nclass LMap extends HTMLElement {\n static observedAttributes = [\"zoom\", \"center\"];\n\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target;\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if (el.map !== null && node.layer !== null) {\n el.map.removeLayer(node.layer);\n }\n }\n });\n }\n });\n });\n observer.observe(this, { childList: true });\n }\n\n connectedCallback() {\n this.map = L.map(this);\n\n // Allow listeners to know when the map is \"ready\"\n this.map.whenReady(() => {\n this.dispatchEvent(\n new CustomEvent(\"ready\", {\n bubbles: true,\n cancelable: true,\n detail: this.map\n })\n )\n })\n\n // Connect Leaflet events\n if (this.hasAttribute(\"on\")) {\n const on = this.getAttribute(\"on\");\n if (on !== null) {\n on.split(/\\s+/).forEach((eventName) => {\n if (this.map !== null) {\n this.map.on(eventName, (e) => {\n this.dispatchEvent(\n new CustomEvent(eventName, { bubbles: true, detail: e })\n );\n });\n }\n });\n }\n }\n\n if (this.hasAttribute(\"fit-world\")) {\n this.map.fitWorld();\n } else {\n const schema = distribute({\n zoom: option(\"zoom\", int()),\n center: option(\"center\", json())\n })\n const { zoom, center } = parse(schema, this)\n this.map.setView(center, zoom);\n }\n\n if (this.hasAttribute(\"locate\")) {\n const schema = option(\"locate\", json())\n this.map.locate(parse(schema, this));\n }\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 attributeChangedCallback(name, _oldValue, newValue) {\n if (this.map !== null) {\n if (name === \"zoom\") {\n this.map.setZoom(parseInt(newValue));\n } else if (name === \"center\") {\n this.map.setView(JSON.parse(newValue));\n }\n }\n }\n}\n\nexport default LMap;\n","import * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport {\n chain,\n float,\n json,\n option,\n optional,\n htmlAttribute,\n parse,\n partial,\n nullable,\n} from \"./parse.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const latLng = parse(option(\"lat-lng\", json()), this);\n const options = parse(\n partial({\n opacity: chain(optional(htmlAttribute(\"opacity\")), nullable(float())),\n }),\n this\n );\n this.layer = L.marker(latLng, options);\n\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, openPopup } = ev.detail;\n const popup = this.layer.bindPopup(content);\n if (openPopup) {\n popup.openPopup();\n }\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\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 let openPopup = false;\n const openPopupAttribute = this.getAttribute(\"open-popup\");\n if (openPopupAttribute !== null) {\n openPopup = openPopupAttribute !== \"false\";\n }\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n openPopup,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { htmlAttribute, optional, parse, partial } from \"./parse.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const urlTemplate = parse(htmlAttribute(\"url-template\"), this)\n \n // Template attributes\n const urlAttributes = LTileLayer.parseTemplateAttributes(urlTemplate)\n const templateOptions = {}\n for (const attribute of urlAttributes) {\n const value = this.getAttribute(attribute)\n if (value !== null) {\n templateOptions[attribute] = value\n }\n }\n \n // Options\n const name = this.getAttribute(\"name\");\n const schema = partial({\n attribution: optional(htmlAttribute(\"attribution\")),\n errorTileUrl: optional(htmlAttribute(\"error-tile-url\"))\n })\n const options = parse(schema, this)\n this.layer = tileLayer(urlTemplate, { ...templateOptions, ...options });\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} urlTemplate\n * @returns {string[]}\n */\n static parseTemplateAttributes(urlTemplate) {\n const regex = /{(.*?)}/g\n return [...urlTemplate.matchAll(regex)].map(match => match[1])\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nimport { LatLngBounds } from \"leaflet\";\n\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n connectedCallback() {\n let value = this.getAttribute(\"bounds\")\n if (value !== null) {\n this.dispatchEvent(this.getEvent(JSON.parse(value)))\n }\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n this.dispatchEvent(this.getEvent(JSON.parse(newValue)));\n }\n\n /**\n * @param {LatLngBounds} bounds\n */\n getEvent(bounds) {\n return new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds,\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n })\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// Utility functions\nexport const kebabToCamel = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\nexport const camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\n","import { icon } from \"leaflet\";\nimport {\n bool,\n chain,\n htmlAttribute,\n json,\n nullable,\n optional,\n parse,\n partial,\n} from \"./parse.js\";\nimport { kebabToCamel } from \"./util.js\";\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const obj = {};\n const keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n obj[kebabToCamel(key)] = optional(htmlAttribute(key));\n });\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 obj[kebabToCamel(key)] = chain(\n optional(htmlAttribute(key)),\n nullable(json())\n );\n });\n obj[\"crossOrigin\"] = chain(\n optional(htmlAttribute(\"cross-origin\")),\n nullable(bool())\n );\n const schema = partial(obj);\n const options = parse(schema, this);\n\n this.icon = 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\nexport default LIcon;\n","// @ts-check\n\nimport { tooltip } from \"leaflet\";\n\nclass LTooltip extends HTMLElement {\n static observedAttributes = [\"content\"];\n\n constructor() {\n super();\n this.tooltip = tooltip();\n }\n\n connectedCallback() {\n const event = new CustomEvent(\"bindTooltip\", {\n cancelable: true,\n bubbles: true,\n detail: {\n tooltip: this.tooltip,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (attName === \"content\") {\n this.tooltip.setContent(newValue);\n }\n }\n}\n\nexport default LTooltip;\n","// @ts-check\nimport { Circle, LatLng, Polygon, Polyline, Rectangle } from \"leaflet\";\nimport { camelToKebab } from \"./util.js\";\nimport { htmlAttribute, parse } from \"./parse.js\";\n\n/**\n * @typedef {Object} TagOption\n * @property {string} camel\n * @property {string} kebab\n * @property {(s: string) => AttributeValue} parser\n * @property {AttributeValue | null} defaultValue\n */\n/**\n * @typedef {(\"circle\"|\"rectangle\"|\"polygon\"|\"polyline\")} MethodName\n * @typedef {(\"path\"|\"interactiveLayer\")} LayerName\n * @typedef {(\"boolean\"|\"number\"|\"string\"|\"latlng\"|\"latlngbounds\")} AttributeType\n * @typedef {(boolean|number|string|LatLng)} AttributeValue\n */\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst positionalArguments = (methodName) => {\n switch (methodName) {\n case \"circle\":\n return [option(\"latLng\", \"latlng\", null)];\n case \"rectangle\":\n return [option(\"latLngBounds\", \"latlngbounds\", null)];\n case \"polygon\":\n return [option(\"latLngs\", \"latlng\", null)];\n case \"polyline\":\n return [option(\"latLngs\", \"latlng\", null)];\n }\n};\n\n/**\n * @param {string} name\n * @param {AttributeType} type\n * @param {AttributeValue | null} defaultValue\n * @returns {TagOption}\n */\nconst option = (name, type, defaultValue) => {\n return {\n camel: name,\n kebab: camelToKebab(name),\n parser: inferParser(type),\n defaultValue,\n };\n};\n\n/**\n * @param {AttributeType} type\n * @returns {(s: string) => AttributeValue}\n */\nconst inferParser = (type) => {\n switch (type.toLowerCase()) {\n case \"boolean\":\n return (s) => s === \"true\";\n case \"number\":\n return parseFloat;\n case \"latlng\":\n case \"latlngbounds\":\n return JSON.parse;\n case \"string\":\n return (s) => s;\n default:\n return (s) => s;\n }\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst options = (methodName) => {\n const _OPTIONS = {\n circle: [option(\"radius\", \"number\", null)],\n path: [\n option(\"stroke\", \"boolean\", true),\n option(\"color\", \"string\", \"#3388ff\"),\n option(\"weight\", \"number\", 3),\n option(\"opacity\", \"number\", 1.0),\n option(\"lineCap\", \"string\", \"round\"),\n option(\"lineJoin\", \"string\", \"round\"),\n option(\"dashArray\", \"string\", null),\n option(\"dashOffset\", \"string\", null),\n option(\"fill\", \"boolean\", true),\n option(\"fillColor\", \"string\", \"#3388ff\"),\n option(\"fillOpacity\", \"number\", 0.2),\n ],\n polyline: [\n option(\"smoothFactor\", \"number\", 1.0),\n option(\"noClip\", \"boolean\", false),\n ],\n polygon: [],\n rectangle: [],\n interactiveLayer: [option(\"interactive\", \"boolean\", true)],\n };\n return inheritance(methodName).flatMap((parent) => _OPTIONS[parent]);\n};\n\n/**\n * @type {Object.<string, (MethodName | LayerName)[]>}\n */\nconst INHERITS = {\n circle: [\"path\"],\n polyline: [\"path\"],\n polygon: [\"polyline\"],\n rectangle: [\"polygon\"],\n path: [\"interactiveLayer\"],\n interactiveLayer: [],\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {(MethodName | LayerName)[]}\n */\nconst inheritance = (methodName) => {\n /** @type {(MethodName | LayerName)} */\n let name = methodName;\n let chain = [methodName];\n while (INHERITS[name].length > 0) {\n let parent = INHERITS[name][0];\n chain.push(parent);\n name = parent;\n }\n return chain;\n};\n\n/**\n * @param {MethodName} methodName\n * @param {string} newValue\n * @param {string} name\n * @param {(Circle | Rectangle | Polygon | Polyline)} layer\n */\nconst setter = (layer, methodName, name, newValue) => {\n // Parse\n const allOptions = [\n ...positionalArguments(methodName),\n ...options(methodName),\n ];\n let _opt = allOptions.find((o) => o.kebab === name);\n if (typeof _opt === \"undefined\") {\n return;\n }\n const parsedValue = _opt.parser(newValue);\n\n // Update\n if (layer instanceof Circle) {\n switch (name) {\n case \"lat-lng\":\n layer.setLatLng(JSON.parse(newValue));\n break;\n case \"radius\":\n layer.setRadius(parseFloat(newValue));\n break;\n }\n } else if (layer instanceof Rectangle) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n case \"lat-lng-bounds\":\n layer.setBounds(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polygon) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polyline) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n }\n\n // setStyle options\n let opt = options(\"polyline\").find((o) => o.kebab === name);\n if (typeof opt !== \"undefined\") {\n layer.setStyle({ [opt.camel]: parsedValue });\n }\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst attributes = (methodName) => {\n let args = positionalArguments(methodName).map((o) => o.kebab);\n let opts = options(methodName).map((o) => o.kebab);\n return [...args, ...opts];\n};\n\n/**\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {};\n\n // Process inheritance chain\n options(methodName).forEach((o) => {\n if (el.hasAttribute(o.kebab)) {\n result[o.camel] = o.parser(el.getAttribute(o.kebab));\n }\n });\n return result;\n};\n\n/**\n * Read positional arguments from HTMLElement\n *\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst positional = (el, methodName) => {\n return positionalArguments(methodName).map(option => {\n const schema = htmlAttribute(option.kebab)\n const value = parse(schema, el)\n return option.parser(value);\n })\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst generator = (method, methodName) => {\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"bindTooltip\", (ev) => {\n if (this.layer !== null) {\n this.layer.bindTooltip(ev.detail.tooltip);\n }\n });\n }\n\n connectedCallback() {\n const args = positional(this, methodName);\n const options = settings(this, methodName);\n this.layer = method(...args, options);\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, methodName, attName, newValue);\n }\n }\n }\n return cls;\n};\n\nexport default generator;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport LTooltip from \"./l-tooltip.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"));\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"));\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"));\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"));\n customElements.define(\"l-tooltip\", LTooltip);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LeafletHTMLError","_Error","issues","key","get","JSON","stringify","Error","parse","schema","value","result","status","wrap","partial","obj","ctx","_i3","_Object$keys3","Object","keys","length","localCtx","concat","pipe","parsers","slice","arguments","i","chain","nullable","parser","optional","htmlAttribute","attributeName","el","htmlAttributeIssue","_extends","json","e","jsonIssue","option","apply","code","message","tagName","toLowerCase","LMap","map","method","bounds","target","_proto","_this2","L","whenReady","hasAttribute","on","split","eventName","fitWorld","zoom","isNaN","center","_i2","_Object$keys2","_parse","setView","locate","addTo","attributeChangedCallback","_oldValue","newValue","setZoom","observedAttributes","LMarker","setIcon","icon","latLng","options","opacity","parseFloat","marker","setAttribute","stamp","openPopup","popup","bindPopup","content","setLatLng","setOpacity","LOverlayLayers","LPopup","openPopupAttribute","LTileLayer","_step","urlTemplate","templateOptions","_iterator","_createForOfIteratorHelperLoose","parseTemplateAttributes","done","attribute","attribution","errorTileUrl","tileLayer","matchAll","match","LLatLngBounds","getEvent","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","geoJSON","kebabToCamel","kebab","replace","x","toUpperCase","LIcon","LTooltip","tooltip","attName","_","setContent","positionalArguments","methodName","defaultValue","camel","s","letter","idx","join","inferParser","_OPTIONS","circle","path","polyline","polygon","rectangle","interactiveLayer","inheritance","flatMap","parent","INHERITS","push","settings","o","generator","cls","bindTooltip","args","positional","_opt","find","parsedValue","Circle","setRadius","Rectangle","setLatLngs","Polygon","Polyline","_layer$setStyle","opt","setStyle","setter","opts","attributes","init","customElements","define"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "leaflet-html",
3
3
  "type": "module",
4
- "version": "0.7.2",
4
+ "version": "0.7.3",
5
5
  "description": "Leaflet expressed in HTML",
6
6
  "keywords": [
7
7
  "leaflet",