leaflet-html 0.8.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,divIcon as s,tooltip as u,Circle as c,Rectangle as p,Polygon as f,Polyline as b,circle as h,polyline as v,polygon as d,rectangle as m}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 g(){return g=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},g.apply(null,arguments)}function E(t){return E=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},E(t)}function C(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,w(t,e)}function L(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(L=function(){return!!t})()}function w(t,e){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},w(t,e)}function O(t){var e=function(t){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function A(t){var e="function"==typeof Map?new Map:void 0;return A=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&&w(a,n.prototype),a}(t,arguments,E(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),w(n,t)},A(t)}var k="l:layer:connected",S="l:popup:connected",N="l:icon:connected",T="l:layer:removed",M="l:latlngbounds:connected",j="l:latlngbounds:changed",J="l:tooltip:connected",P="l:pane:connected",H=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){this.addEventListener(k,function(t){t.detail.type="base"})},e}(/*#__PURE__*/A(HTMLElement)),_=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return C(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(k,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(k,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/A(HTMLElement)),z=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.disconnectedCallback=function(){var t;null==(t=this.layer)||t.remove()},e}(/*#__PURE__*/A(HTMLElement)),I=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(k,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(k,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}(z),F=/*#__PURE__*/function(t){function e(e){var n;return(n=t.call(this)||this).issues=[],n.name="LeafletHTMLError",n.issues=e,n}return C(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__*/A(Error)),x=function(t,e){var n=t(function(t){return{status:"clean",issues:[],value:t}}(e));if("clean"!==n.status)throw new F(n.issues);return n.value},B=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}}},U=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}},R=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length;n++)e=t[n](e);return e}},V=function(t){return function(e){return null===e.value?e:t(e)}},D=function(t){return function(e){return null===(e=t(e)).value?{status:"clean",issues:[],value:null}:e}},W=function(t){return function(e){var n=e.value,r=n.getAttribute(t);return null===r?{status:"abort",issues:[].concat(e.issues,[G(n,t)]),value:null}:g({},e,{value:r})}},Z=function(){return function(t){var e;try{e=JSON.parse(t.value)}catch(e){return{status:"abort",issues:[].concat(t.issues,[q(e)]),value:null}}return g({},t,{value:e})}},$=function(t){return U.apply(void 0,[W(t)].concat([].slice.call(arguments,1)))},q=function(t){return{code:"parse_json",message:t.message}},G=function(t,e){return{code:"missing_attribute",message:t.tagName.toLowerCase()+" missing attribute '"+e+"'"}},K=/*#__PURE__*/function(e){function n(){var t;(t=e.call(this)||this).map=null;var r=function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)};return t.addEventListener(M,r),t.addEventListener(j,r),t.addEventListener(P,function(e){t.map.createPane(e.detail.name)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof z&&null!==e.map&&null!==t.layer&&(e.dispatchEvent(new CustomEvent(T,{bubbles:!0,detail:{layer:t.layer}})),e.map.removeLayer(t.layer))})}})}).observe(t,{childList:!0}),t}C(n,e);var r=n.prototype;return r.connectedCallback=function(){var e,n=this;if(this.map=t.map(this,{zoomControl:this.hasAttribute("zoom-control")}),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:$("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}:g({},t,{value:n})}),center:$("center",Z())},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=x(a,this);this.map.setView(i.center,i.zoom)}if(this.hasAttribute("locate")){var o=$("locate",Z());this.map.locate(x(o,this))}this.addEventListener(k,function(t){t.detail.layer.addTo(n.map)}),this.addEventListener(T,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__*/A(HTMLElement));K.observedAttributes=["zoom","center","zoom-control"];var Q=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t.addEventListener(N,function(e){e.stopPropagation(),t.layer.setIcon(e.detail.icon)}),t.addEventListener(J,function(e){e.stopPropagation(),t.layer.bindTooltip(e.detail.tooltip)}),t}C(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=x($("lat-lng",Z()),this),r=x(B({opacity:R(D(W("opacity")),V(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}:g({},t,{value:n})}))}),this),a=this.closest("l-pane");if(null!==a&&(r.pane=a.getAttribute("name")),this.layer=t.marker(n,r),this.hasAttribute("icon")){var i=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(i)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(S,function(t){var n=t.detail,r=n.openPopup,a=e.layer.bindPopup(n.content);r&&a.openPopup()});var o=new CustomEvent(k,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(o)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(z);Q.observedAttributes=["lat-lng","opacity","icon"];var X=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){this.addEventListener(k,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/A(HTMLElement)),Y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(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(S,{cancelable:!0,bubbles:!0,detail:{content:t,openPopup:e}});this.dispatchEvent(r)},e}(/*#__PURE__*/A(HTMLElement)),tt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.connectedCallback=function(){for(var t,n=x(W("url-template"),this),a={},i=function(t){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=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))){e&&(t=e);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}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={};"l-pane"===this.parentElement.tagName.toLowerCase()&&(s.pane=this.parentElement.getAttribute("name"));var u=this.getAttribute("name"),c=B({attribution:D(W("attribution")),errorTileUrl:D(W("error-tile-url"))}),p=x(c,this);this.layer=r(n,g({},a,s,p));var f=new CustomEvent(k,{detail:{name:u,layer:this.layer},bubbles:!0});this.dispatchEvent(f)},e.parseTemplateAttributes=function(t){return[].concat(t.matchAll(/{(.*?)}/g)).map(function(t){return t[1]})},e}(z),et=/*#__PURE__*/function(t){function e(){return t.call(this)||this}C(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("bounds");null!==t&&this.dispatchEvent(this.getEvent(M,JSON.parse(t)))},n.attributeChangedCallback=function(t,e,n){this.dispatchEvent(this.getEvent(j,JSON.parse(n)))},n.getEvent=function(t,e){return new CustomEvent(t,{bubbles:!0,detail:{bounds:e,method:this.getAttribute("method")||"fitBounds"}})},e}(/*#__PURE__*/A(HTMLElement));et.observedAttributes=["bounds"];var nt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}C(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""},r=this.closest("l-pane");null!==r&&(n.pane=r.getAttribute("name")),this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(k,{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}(z);nt.observedAttributes=["url","bounds","opacity"];var rt=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=i(t,e,n);this.dispatchEvent(new CustomEvent(k,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(z),at=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson"),e={},n=this.closest("l-pane");null!==n&&(e.pane=n.getAttribute("name")),null!==t&&(this.layer=o(JSON.parse(t),e),this.dispatchEvent(new CustomEvent(k,{bubbles:!0,cancelable:!0,detail:{layer:this.layer}})))},e}(/*#__PURE__*/A(HTMLElement)),it=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},ot=["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"],lt=["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"],st=["cross-origin"],ut=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}C(e,t);var n=e.prototype;return n.connectedCallback=function(){this.icon=l(this._parseOptions());var t=new CustomEvent(N,{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(t)},n.attributeChangedCallback=function(t,n,r){if(-1!==e.observedAttributes.indexOf(t)&&null!==this.icon){var a={};-1!==ot.indexOf(t)?a[it(t)]=r:-1!==st.indexOf(t)?a[it(t)]="true"===r.toLowerCase():a[it(t)]=JSON.parse(r),this.icon=l(g({},this.icon.options,a));var i=new CustomEvent(N,{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(i)}},n._parseOptions=function(){var t={};ot.forEach(function(e){t[it(e)]=D(W(e))}),lt.forEach(function(e){t[it(e)]=R(D(W(e)),V(Z()))}),t.crossOrigin=R(D(W("cross-origin")),V(function(t){return g({},t,{value:"true"===t.value.toLowerCase()})}));var e=B(t);return x(e,this)},e}(/*#__PURE__*/A(HTMLElement));ut.observedAttributes=[].concat(ot,lt,st);var ct=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return C(e,t),e.prototype.connectedCallback=function(){var t={html:this.innerHTML},e=this.getAttribute("class-name");null!==e&&(t.className=e),this.icon=s(t),this.dispatchEvent(new CustomEvent(N,{bubbles:!0,cancelable:!0,detail:{icon:this.icon}}))},e}(/*#__PURE__*/A(HTMLElement)),pt=/*#__PURE__*/function(t){function e(){var e,n;return(n=t.call(this)||this).tooltip=u({permanent:n.hasAttribute("permanent"),direction:null!=(e=n.getAttribute("direction"))?e:"auto"}),n}C(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=new CustomEvent(J,{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__*/A(HTMLElement));pt.observedAttributes=["content","permanent","direction"];var ft=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){this.dispatchEvent(new CustomEvent(P,{bubbles:!0,cancelable:!0,detail:{name:this.getAttribute("name")}}))},e}(/*#__PURE__*/A(HTMLElement)),bt=function(t){switch(t){case"circle":return[ht("latLng","latlng",null)];case"rectangle":return[ht("latLngBounds","latlngbounds",null)];case"polygon":case"polyline":return[ht("latLngs","latlng",null)]}},ht=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:vt(e),defaultValue:n};var r},vt=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}}},dt=function(t){var e={circle:[ht("radius","number",null)],path:[ht("stroke","boolean",!0),ht("color","string","#3388ff"),ht("weight","number",3),ht("opacity","number",1),ht("lineCap","string","round"),ht("lineJoin","string","round"),ht("dashArray","string",null),ht("dashOffset","string",null),ht("fill","boolean",!0),ht("fillColor","string","#3388ff"),ht("fillOpacity","number",.2)],polyline:[ht("smoothFactor","number",1),ht("noClip","boolean",!1)],polygon:[],rectangle:[],interactiveLayer:[ht("interactive","boolean",!0)]};return yt(t).flatMap(function(t){return e[t]})},mt={circle:["path"],polyline:["path"],polygon:["polyline"],rectangle:["polygon"],path:["interactiveLayer"],interactiveLayer:[]},yt=function(t){for(var e=t,n=[t];mt[e].length>0;){var r=mt[e][0];n.push(r),e=r}return n},gt=function(t,e){var n={};return dt(e).forEach(function(e){t.hasAttribute(e.kebab)&&(n[e.camel]=e.parser(t.getAttribute(e.kebab)))}),n},Et=function(t,e){var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t.addEventListener(J,function(e){null!==t.layer&&t.layer.bindTooltip(e.detail.tooltip)}),t}C(r,n);var a=r.prototype;return a.connectedCallback=function(){var n=function(t,e){return bt(e).map(function(e){var n=W(e.kebab),r=x(n,t);return e.parser(r)})}(this,e),r=gt(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent(k,{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(bt(e),dt(e)).find(function(t){return t.kebab===n});if(void 0!==a){var i=a.parser(r);if(t instanceof c)switch(n){case"lat-lng":t.setLatLng(JSON.parse(r));break;case"radius":t.setRadius(parseFloat(r))}else if(t instanceof p)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 b&&"lat-lngs"===n&&t.setLatLngs(JSON.parse(r));var o,l=dt("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__*/A(HTMLElement));return n.observedAttributes=function(t){var e=bt(t).map(function(t){return t.kebab}),n=dt(t).map(function(t){return t.kebab});return[].concat(e,n)}(e),n},Ct=(customElements.define("l-map",K),customElements.define("l-pane",ft),customElements.define("l-control-layers",_),customElements.define("l-base-layers",H),customElements.define("l-overlay-layers",X),customElements.define("l-layer-group",I),customElements.define("l-tile-layer",tt),customElements.define("l-marker",Q),customElements.define("l-popup",Y),customElements.define("l-lat-lng-bounds",et),customElements.define("l-image-overlay",nt),customElements.define("l-video-overlay",rt),customElements.define("l-geojson",at),customElements.define("l-icon",ut),customElements.define("l-circle",Et(h,"circle")),customElements.define("l-polyline",Et(v,"polyline")),customElements.define("l-polygon",Et(d,"polygon")),customElements.define("l-rectangle",Et(m,"rectangle")),customElements.define("l-tooltip",pt),void customElements.define("l-div-icon",ct));export{Ct 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,divIcon as s,tooltip as u,Circle as c,Rectangle as p,Polygon as f,Polyline as b,circle as h,polyline as v,polygon as d,rectangle as m}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 g(){return g=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},g.apply(null,arguments)}function E(t){return E=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},E(t)}function C(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,A(t,e)}function w(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(w=function(){return!!t})()}function A(t,e){return A=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},A(t,e)}function O(t){var e=function(t){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function k(t){var e="function"==typeof Map?new Map:void 0;return k=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(w())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var a=new(t.bind.apply(t,r));return n&&A(a,n.prototype),a}(t,arguments,E(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),A(n,t)},k(t)}var N="l:layer:connected",S="l:popup:connected",T="l:icon:connected",J="l:layer:removed",M="l:latlngbounds:connected",j="l:latlngbounds:changed",P="l:tooltip:connected",_="l:pane:connected",F=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){this.addEventListener(N,function(t){t.detail.type="base"})},e}(/*#__PURE__*/k(HTMLElement)),H=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return C(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(N,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(N,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/k(HTMLElement)),I=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.disconnectedCallback=function(){var t;null==(t=this.layer)||t.remove()},e}(/*#__PURE__*/k(HTMLElement)),z=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(N,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(N,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}(I),x=/*#__PURE__*/function(t){function e(e){var n;return(n=t.call(this)||this).issues=[],n.name="LeafletHTMLError",n.issues=e,n}return C(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__*/k(Error)),B=function(t,e){var n=t(function(t){return{status:"clean",issues:[],value:t}}(e));if("clean"!==n.status)throw new x(n.issues);return n.value},U=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}}},R=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}},V=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length;n++)e=t[n](e);return e}},D=function(t){return function(e){return null===e.value?e:t(e)}},G=function(t){return function(e){return null===(e=t(e)).value?{status:"clean",issues:[],value:null}:e}},W=function(t){return function(e){var n=e.value,r=n.getAttribute(t);return null===r?{status:"abort",issues:[].concat(e.issues,[K(n,t)]),value:null}:g({},e,{value:r})}},Z=function(){return function(t){var e;try{e=JSON.parse(t.value)}catch(e){return{status:"abort",issues:[].concat(t.issues,[q(e)]),value:null}}return g({},t,{value:e})}},$=function(t){return R.apply(void 0,[W(t)].concat([].slice.call(arguments,1)))},q=function(t){return{code:"parse_json",message:t.message}},K=function(t,e){return{code:"missing_attribute",message:t.tagName.toLowerCase()+" missing attribute '"+e+"'"}},Q=/*#__PURE__*/function(e){function n(){var t;(t=e.call(this)||this).map=null;var r=function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)};return t.addEventListener(M,r),t.addEventListener(j,r),t.addEventListener(_,function(e){t.map.createPane(e.detail.name)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof I&&null!==e.map&&null!==t.layer&&(e.dispatchEvent(new CustomEvent(J,{bubbles:!0,detail:{layer:t.layer}})),e.map.removeLayer(t.layer))})}})}).observe(t,{childList:!0}),t}C(n,e);var r=n.prototype;return r.connectedCallback=function(){var e,n=this;if(this.map=t.map(this,{zoomControl:this.hasAttribute("zoom-control")}),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:$("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}:g({},t,{value:n})}),center:$("center",Z())},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=B(a,this);this.map.setView(i.center,i.zoom)}if(this.hasAttribute("locate")){var o=$("locate",Z());this.map.locate(B(o,this))}this.addEventListener(N,function(t){n.map.addLayer(t.detail.layer)}),this.addEventListener(J,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__*/k(HTMLElement));Q.observedAttributes=["zoom","center","zoom-control"];var X=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t.addEventListener(T,function(e){e.stopPropagation(),t.layer.setIcon(e.detail.icon)}),t.addEventListener(P,function(e){e.stopPropagation(),t.layer.bindTooltip(e.detail.tooltip)}),t}C(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=B($("lat-lng",Z()),this),r=B(U({opacity:V(G(W("opacity")),D(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}:g({},t,{value:n})}))}),this),a=this.closest("l-pane");if(null!==a&&(r.pane=a.getAttribute("name")),this.layer=t.marker(n,r),this.hasAttribute("icon")){var i=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(i)}if(this.hasAttribute("on")){var o=this.getAttribute("on");null!==o&&o.split(/\s+/).forEach(function(t){null!==e.layer&&e.layer.on(t,function(n){e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n}))})})}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(S,function(t){var n=t.detail,r=n.openPopup,a=e.layer.bindPopup(n.content);r&&a.openPopup()});var l=new CustomEvent(N,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(l)},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}(I);X.observedAttributes=["lat-lng","opacity","icon"];var Y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){this.addEventListener(N,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/k(HTMLElement)),tt=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(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(S,{cancelable:!0,bubbles:!0,detail:{content:t,openPopup:e}});this.dispatchEvent(r)},e}(/*#__PURE__*/k(HTMLElement)),et=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.connectedCallback=function(){for(var t,n=B(W("url-template"),this),a={},i=function(t){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=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))){e&&(t=e);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}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={};"l-pane"===this.parentElement.tagName.toLowerCase()&&(s.pane=this.parentElement.getAttribute("name"));var u=this.getAttribute("name"),c=U({attribution:G(W("attribution")),errorTileUrl:G(W("error-tile-url"))}),p=B(c,this);this.layer=r(n,g({},a,s,p));var f=new CustomEvent(N,{detail:{name:u,layer:this.layer},bubbles:!0});this.dispatchEvent(f)},e.parseTemplateAttributes=function(t){return[].concat(t.matchAll(/{(.*?)}/g)).map(function(t){return t[1]})},e}(I),nt=/*#__PURE__*/function(t){function e(){return t.call(this)||this}C(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("bounds");null!==t&&this.dispatchEvent(this.getEvent(M,JSON.parse(t)))},n.attributeChangedCallback=function(t,e,n){this.dispatchEvent(this.getEvent(j,JSON.parse(n)))},n.getEvent=function(t,e){return new CustomEvent(t,{bubbles:!0,detail:{bounds:e,method:this.getAttribute("method")||"fitBounds"}})},e}(/*#__PURE__*/k(HTMLElement));nt.observedAttributes=["bounds"];var rt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}C(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""},r=this.closest("l-pane");null!==r&&(n.pane=r.getAttribute("name")),this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(N,{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}(I);rt.observedAttributes=["url","bounds","opacity"];var at=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=i(t,e,n);this.dispatchEvent(new CustomEvent(N,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(I),it=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return C(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson"),e={},n=this.closest("l-pane");null!==n&&(e.pane=n.getAttribute("name")),null!==t&&(this.layer=o(JSON.parse(t),e),this.dispatchEvent(new CustomEvent(N,{bubbles:!0,cancelable:!0,detail:{layer:this.layer}})))},e}(/*#__PURE__*/k(HTMLElement)),ot=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},lt=["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"],st=["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"],ut=["cross-origin"],ct=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}C(e,t);var n=e.prototype;return n.connectedCallback=function(){this.icon=l(this._parseOptions());var t=new CustomEvent(T,{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(t)},n.attributeChangedCallback=function(t,n,r){if(-1!==e.observedAttributes.indexOf(t)&&null!==this.icon){var a={};-1!==lt.indexOf(t)?a[ot(t)]=r:-1!==ut.indexOf(t)?a[ot(t)]="true"===r.toLowerCase():a[ot(t)]=JSON.parse(r),this.icon=l(g({},this.icon.options,a));var i=new CustomEvent(T,{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(i)}},n._parseOptions=function(){var t={};lt.forEach(function(e){t[ot(e)]=G(W(e))}),st.forEach(function(e){t[ot(e)]=V(G(W(e)),D(Z()))}),t.crossOrigin=V(G(W("cross-origin")),D(function(t){return g({},t,{value:"true"===t.value.toLowerCase()})}));var e=U(t);return B(e,this)},e}(/*#__PURE__*/k(HTMLElement));ct.observedAttributes=[].concat(lt,st,ut);var pt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return C(e,t),e.prototype.connectedCallback=function(){var t={html:this.innerHTML},e=this.getAttribute("class-name");null!==e&&(t.className=e),this.icon=s(t),this.dispatchEvent(new CustomEvent(T,{bubbles:!0,cancelable:!0,detail:{icon:this.icon}}))},e}(/*#__PURE__*/k(HTMLElement)),ft=/*#__PURE__*/function(t){function e(){var e,n;return(n=t.call(this)||this).tooltip=u({permanent:n.hasAttribute("permanent"),direction:null!=(e=n.getAttribute("direction"))?e:"auto"}),n}C(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=new CustomEvent(P,{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__*/k(HTMLElement));ft.observedAttributes=["content","permanent","direction"];var bt=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return C(e,t),e.prototype.connectedCallback=function(){this.dispatchEvent(new CustomEvent(_,{bubbles:!0,cancelable:!0,detail:{name:this.getAttribute("name")}}))},e}(/*#__PURE__*/k(HTMLElement)),ht=function(t){switch(t){case"circle":return[vt("latLng","latlng",null)];case"rectangle":return[vt("latLngBounds","latlngbounds",null)];case"polygon":case"polyline":return[vt("latLngs","latlng",null)]}},vt=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:dt(e),defaultValue:n};var r},dt=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}}},mt=function(t){var e={circle:[vt("radius","number",null)],path:[vt("stroke","boolean",!0),vt("color","string","#3388ff"),vt("weight","number",3),vt("opacity","number",1),vt("lineCap","string","round"),vt("lineJoin","string","round"),vt("dashArray","string",null),vt("dashOffset","string",null),vt("fill","boolean",!0),vt("fillColor","string","#3388ff"),vt("fillOpacity","number",.2)],polyline:[vt("smoothFactor","number",1),vt("noClip","boolean",!1)],polygon:[],rectangle:[],interactiveLayer:[vt("interactive","boolean",!0)]};return gt(t).flatMap(function(t){return e[t]})},yt={circle:["path"],polyline:["path"],polygon:["polyline"],rectangle:["polygon"],path:["interactiveLayer"],interactiveLayer:[]},gt=function(t){for(var e=t,n=[t];yt[e].length>0;){var r=yt[e][0];n.push(r),e=r}return n},Et=function(t,e){var n={};return mt(e).forEach(function(e){t.hasAttribute(e.kebab)&&(n[e.camel]=e.parser(t.getAttribute(e.kebab)))}),n},Ct=function(t,e){var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t.addEventListener(P,function(e){null!==t.layer&&t.layer.bindTooltip(e.detail.tooltip)}),t}C(r,n);var a=r.prototype;return a.connectedCallback=function(){var n=function(t,e){return ht(e).map(function(e){var n=W(e.kebab),r=B(n,t);return e.parser(r)})}(this,e),r=Et(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent(N,{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(ht(e),mt(e)).find(function(t){return t.kebab===n});if(void 0!==a){var i=a.parser(r);if(t instanceof c)switch(n){case"lat-lng":t.setLatLng(JSON.parse(r));break;case"radius":t.setRadius(parseFloat(r))}else if(t instanceof p)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 b&&"lat-lngs"===n&&t.setLatLngs(JSON.parse(r));var o,l=mt("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__*/k(HTMLElement));return n.observedAttributes=function(t){var e=ht(t).map(function(t){return t.kebab}),n=mt(t).map(function(t){return t.kebab});return[].concat(e,n)}(e),n};import("leaflet.markercluster").catch(function(t){console.warn("Failed to import leaflet.markercluster",t)});var Lt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}C(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this,e=this.getAttribute("name"),n=this.getAttribute("icon-options");this.layer=L.markerClusterGroup({showCoverageOnHover:this.hasAttribute("show-coverage-on-hover"),iconCreateFunction:this._createIconCreateFunction(n)});var r=new CustomEvent(N,{cancelable:!0,bubbles:!0,detail:{layer:this.layer,name:e}});this.dispatchEvent(r),this.addEventListener(N,function(e){e.stopPropagation(),t.layer.addLayer(e.detail.layer)})},n._createIconCreateFunction=function(t){var e=this;if(t){var n=JSON.parse(t),r=n.size,a=n.content,i=n.className;return function(t){var n=e._callClusterFunction(t,r),o=e._callClusterFunction(t,a);return L.divIcon({html:o,className:i,iconSize:new L.Point(n,n)})}}},n._callClusterFunction=function(t,e){return Function("cluster",'"use strict";return ('+e+")")(t)},e}(I);Lt.observedAttributes=["show-coverage-on-hover","icon-options"];var wt=(customElements.define("l-map",Q),customElements.define("l-pane",bt),customElements.define("l-control-layers",H),customElements.define("l-base-layers",F),customElements.define("l-overlay-layers",Y),customElements.define("l-layer-group",z),customElements.define("l-tile-layer",et),customElements.define("l-marker-cluster-group",Lt),customElements.define("l-marker",X),customElements.define("l-popup",tt),customElements.define("l-lat-lng-bounds",nt),customElements.define("l-image-overlay",rt),customElements.define("l-video-overlay",at),customElements.define("l-geojson",it),customElements.define("l-icon",ct),customElements.define("l-circle",Ct(h,"circle")),customElements.define("l-polyline",Ct(v,"polyline")),customElements.define("l-polygon",Ct(d,"polygon")),customElements.define("l-rectangle",Ct(m,"rectangle")),customElements.define("l-tooltip",ft),void customElements.define("l-div-icon",pt));export{wt 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-div-icon.js","../src/l-tooltip.js","../src/l-pane.js","../src/generator.js","../src/index.js"],"sourcesContent":["// NOTE: These event keys are part of the public API of leaflet-html\nexport const layerConnected = \"l:layer:connected\";\nexport const popupConnected = \"l:popup:connected\";\nexport const iconConnected = \"l:icon:connected\";\nexport const layerRemoved = \"l:layer:removed\";\nexport const latLngBoundsConnected = \"l:latlngbounds:connected\";\nexport const latLngBoundsChanged = \"l:latlngbounds:changed\";\nexport const tooltipConnected = \"l:tooltip:connected\";\nexport const paneConnected = \"l:pane:connected\";\n","// @ts-check\nimport { layerConnected } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(layerConnected, (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 { layerConnected } 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(layerConnected, (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(layerConnected, {\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 disconnectedCallback() {\n this.layer?.remove();\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { layerConnected } 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(layerConnected, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(layerConnected, (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 { layerRemoved, layerConnected, latLngBoundsConnected, latLngBoundsChanged, paneConnected } 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\", \"zoom-control\"];\n\n constructor() {\n super();\n\n this.map = null;\n\n // Handle <l-lat-lng-bounds> connection and modification(s)\n const boundsListener = (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n };\n this.addEventListener(latLngBoundsConnected, boundsListener);\n this.addEventListener(latLngBoundsChanged, boundsListener);\n\n // Observe l-pane\n this.addEventListener(paneConnected, (ev) => {\n const { name } = ev.detail\n this.map.createPane(name)\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 // Notify listeners of layer removal\n el.dispatchEvent(new CustomEvent(layerRemoved, {\n bubbles: true,\n detail: {\n layer: node.layer\n }\n }))\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, { zoomControl: this.hasAttribute(\"zoom-control\") });\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(layerConnected, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemoved, (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 { layerConnected, popupConnected, iconConnected, tooltipConnected } 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(iconConnected, (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n this.addEventListener(tooltipConnected, (ev) => {\n ev.stopPropagation();\n this.layer.bindTooltip(ev.detail.tooltip);\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\n // Pane\n const pane = this.closest(\"l-pane\");\n if (pane !== null) {\n options[\"pane\"] = pane.getAttribute(\"name\");\n }\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(popupConnected, (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(layerConnected, {\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 { layerConnected } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(layerConnected, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupConnected } 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(popupConnected, {\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 { layerConnected } 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 // Pane options\n const paneOptions = {}\n // Support <l-pane> parent element\n if (this.parentElement.tagName.toLowerCase() === \"l-pane\") {\n paneOptions[\"pane\"] = this.parentElement.getAttribute(\"name\")\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, ...paneOptions, ...options });\n const event = new CustomEvent(layerConnected, {\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\";\nimport { latLngBoundsChanged, latLngBoundsConnected } from \"./events\"; \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(latLngBoundsConnected, JSON.parse(value)))\n }\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n this.dispatchEvent(this.getEvent(latLngBoundsChanged, JSON.parse(newValue)));\n }\n\n /**\n * @param {LatLngBounds} bounds\n */\n getEvent(key, bounds) {\n return new CustomEvent(key, {\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 { layerConnected } 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\n // Pane\n const pane = this.closest(\"l-pane\");\n if (pane !== null) {\n options[\"pane\"] = pane.getAttribute(\"name\");\n }\n\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(layerConnected, {\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 { layerConnected } 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(layerConnected, {\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 { layerConnected } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n const options = {};\n\n // Pane\n const pane = this.closest(\"l-pane\");\n if (pane !== null) {\n options[\"pane\"] = pane.getAttribute(\"name\");\n }\n\n if (value !== null) {\n this.layer = geoJSON(JSON.parse(value), options);\n this.dispatchEvent(\n new CustomEvent(layerConnected, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer: this.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 { iconConnected } from \"./events.js\";\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\nconst STRING_ATTRIBUTES = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n];\n\nconst JSON_ATTRIBUTES = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n];\n\nconst BOOL_ATTRIBUTES = [\"cross-origin\"];\n\nclass LIcon extends HTMLElement {\n static observedAttributes = [\n ...STRING_ATTRIBUTES,\n ...JSON_ATTRIBUTES,\n ...BOOL_ATTRIBUTES,\n ];\n\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n this.icon = icon(this._parseOptions());\n\n const event = new CustomEvent(iconConnected, {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} name\n * @param {string} _\n * @param {string} newValue\n */\n attributeChangedCallback(name, _, newValue) {\n if (LIcon.observedAttributes.indexOf(name) !== -1) {\n if (this.icon !== null) {\n let update = {};\n if (STRING_ATTRIBUTES.indexOf(name) !== -1) {\n update[kebabToCamel(name)] = newValue;\n } else if (BOOL_ATTRIBUTES.indexOf(name) !== -1) {\n update[kebabToCamel(name)] = newValue.toLowerCase() === \"true\";\n } else {\n update[kebabToCamel(name)] = JSON.parse(newValue);\n }\n this.icon = icon({\n ...this.icon.options,\n ...update,\n });\n const event = new CustomEvent(iconConnected, {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n }\n }\n\n /**\n * @returns {import(\"leaflet\").IconOptions}\n */\n _parseOptions() {\n // Experimental parse/validate API\n const obj = {};\n STRING_ATTRIBUTES.forEach((key) => {\n obj[kebabToCamel(key)] = optional(htmlAttribute(key));\n });\n JSON_ATTRIBUTES.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 return parse(schema, this);\n }\n}\n\nexport default LIcon;\n","import { divIcon } from \"leaflet\";\nimport { iconConnected } from \"./events\";\n\nexport default class CustomElement extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n // Leaflet JS DivIcon options\n const options = {\n html: this.innerHTML,\n };\n const className = this.getAttribute(\"class-name\");\n if (className !== null) {\n options[\"className\"] = className;\n }\n\n this.icon = divIcon(options);\n this.dispatchEvent(\n new CustomEvent(iconConnected, {\n bubbles: true,\n cancelable: true,\n detail: {\n icon: this.icon,\n },\n })\n );\n }\n}\n","// @ts-check\n\nimport { tooltip } from \"leaflet\";\nimport { tooltipConnected } from \"./events\";\nimport { json, option, parse } from \"./parse.js\";\n\nclass LTooltip extends HTMLElement {\n static observedAttributes = [\"content\", \"permanent\", \"direction\"];\n\n constructor() {\n super();\n this.tooltip = tooltip({\n permanent: this.hasAttribute(\"permanent\"),\n direction: this.getAttribute(\"direction\") ?? \"auto\"\n });\n }\n\n connectedCallback() {\n const event = new CustomEvent(tooltipConnected, {\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","import { paneConnected } from \"./events.js\";\n\nexport default class CustomElement extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.dispatchEvent(\n new CustomEvent(paneConnected, {\n bubbles: true,\n cancelable: true,\n detail: {\n name: this.getAttribute(\"name\"),\n },\n })\n );\n }\n}\n","// @ts-check\nimport { Circle, LatLng, Polygon, Polyline, Rectangle } from \"leaflet\";\nimport { camelToKebab } from \"./util.js\";\nimport { htmlAttribute, parse } from \"./parse.js\";\nimport { layerConnected, tooltipConnected } from \"./events.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(tooltipConnected, (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(layerConnected, {\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 LDivIcon from \"./l-div-icon.js\";\nimport LTooltip from \"./l-tooltip.js\";\nimport LPane from \"./l-pane.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-pane\", LPane);\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 customElements.define(\"l-div-icon\", LDivIcon);\n})();\n\nexport default init;\n"],"names":["layerConnected","popupConnected","iconConnected","layerRemoved","latLngBoundsConnected","latLngBoundsChanged","tooltipConnected","paneConnected","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","disconnectedCallback","_this$layer","remove","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","boundsListener","method","bounds","createPane","target","_proto","_this2","L","zoomControl","hasAttribute","whenReady","on","split","eventName","fitWorld","zoom","isNaN","center","_i2","_Object$keys2","_parse","setView","locate","addTo","attributeChangedCallback","_oldValue","newValue","setZoom","observedAttributes","LMarker","setIcon","icon","bindTooltip","tooltip","latLng","options","opacity","parseFloat","pane","closest","marker","setAttribute","stamp","openPopup","popup","bindPopup","content","setLatLng","setOpacity","LOverlayLayers","LPopup","openPopupAttribute","LTileLayer","_step","urlTemplate","templateOptions","_iterator","_createForOfIteratorHelperLoose","parseTemplateAttributes","done","attribute","paneOptions","parentElement","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","STRING_ATTRIBUTES","JSON_ATTRIBUTES","BOOL_ATTRIBUTES","LIcon","_parseOptions","_","indexOf","update","CustomElement","html","innerHTML","className","divIcon","LTooltip","_this$getAttribute","permanent","direction","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","args","positional","_opt","find","parsedValue","Circle","setRadius","Rectangle","setLatLngs","Polygon","Polyline","_layer$setStyle","opt","setStyle","setter","opts","attributes","init","customElements","define","LPane","LDivIcon"],"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-div-icon.js","../src/l-tooltip.js","../src/l-pane.js","../src/generator.js","../src/l-marker-cluster-group.js","../src/index.js"],"sourcesContent":["// NOTE: These event keys are part of the public API of leaflet-html\nexport const layerConnected = \"l:layer:connected\";\nexport const popupConnected = \"l:popup:connected\";\nexport const iconConnected = \"l:icon:connected\";\nexport const layerRemoved = \"l:layer:removed\";\nexport const latLngBoundsConnected = \"l:latlngbounds:connected\";\nexport const latLngBoundsChanged = \"l:latlngbounds:changed\";\nexport const tooltipConnected = \"l:tooltip:connected\";\nexport const paneConnected = \"l:pane:connected\";\n","// @ts-check\nimport { layerConnected } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(layerConnected, (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 { layerConnected } 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(layerConnected, (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(layerConnected, {\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 disconnectedCallback() {\n this.layer?.remove();\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { layerConnected } 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(layerConnected, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(layerConnected, (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 { layerRemoved, layerConnected, latLngBoundsConnected, latLngBoundsChanged, paneConnected } 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\", \"zoom-control\"];\n\n constructor() {\n super();\n\n this.map = null;\n\n // Handle <l-lat-lng-bounds> connection and modification(s)\n const boundsListener = (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n };\n this.addEventListener(latLngBoundsConnected, boundsListener);\n this.addEventListener(latLngBoundsChanged, boundsListener);\n\n // Observe l-pane\n this.addEventListener(paneConnected, (ev) => {\n const { name } = ev.detail\n this.map.createPane(name)\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 // Notify listeners of layer removal\n el.dispatchEvent(new CustomEvent(layerRemoved, {\n bubbles: true,\n detail: {\n layer: node.layer\n }\n }))\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, { zoomControl: this.hasAttribute(\"zoom-control\") });\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(layerConnected, (ev) => {\n const layer = ev.detail.layer;\n this.map.addLayer(layer);\n });\n\n this.addEventListener(layerRemoved, (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 {\n layerConnected,\n popupConnected,\n iconConnected,\n tooltipConnected,\n} 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\n // Icon connected\n this.addEventListener(iconConnected, (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n\n // Tooltip connected\n this.addEventListener(tooltipConnected, (ev) => {\n ev.stopPropagation();\n this.layer.bindTooltip(ev.detail.tooltip);\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\n // Pane\n const pane = this.closest(\"l-pane\");\n if (pane !== null) {\n options[\"pane\"] = pane.getAttribute(\"name\");\n }\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 // 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.layer !== null) {\n this.layer.on(eventName, (e) => {\n this.dispatchEvent(\n new CustomEvent(eventName, { bubbles: true, detail: e })\n );\n });\n }\n });\n }\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupConnected, (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(layerConnected, {\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 { layerConnected } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(layerConnected, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupConnected } 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(popupConnected, {\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 { layerConnected } 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 // Pane options\n const paneOptions = {}\n // Support <l-pane> parent element\n if (this.parentElement.tagName.toLowerCase() === \"l-pane\") {\n paneOptions[\"pane\"] = this.parentElement.getAttribute(\"name\")\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, ...paneOptions, ...options });\n const event = new CustomEvent(layerConnected, {\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\";\nimport { latLngBoundsChanged, latLngBoundsConnected } from \"./events\"; \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(latLngBoundsConnected, JSON.parse(value)))\n }\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n this.dispatchEvent(this.getEvent(latLngBoundsChanged, JSON.parse(newValue)));\n }\n\n /**\n * @param {LatLngBounds} bounds\n */\n getEvent(key, bounds) {\n return new CustomEvent(key, {\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 { layerConnected } 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\n // Pane\n const pane = this.closest(\"l-pane\");\n if (pane !== null) {\n options[\"pane\"] = pane.getAttribute(\"name\");\n }\n\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(layerConnected, {\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 { layerConnected } 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(layerConnected, {\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 { layerConnected } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n const options = {};\n\n // Pane\n const pane = this.closest(\"l-pane\");\n if (pane !== null) {\n options[\"pane\"] = pane.getAttribute(\"name\");\n }\n\n if (value !== null) {\n this.layer = geoJSON(JSON.parse(value), options);\n this.dispatchEvent(\n new CustomEvent(layerConnected, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer: this.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 { iconConnected } from \"./events.js\";\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\nconst STRING_ATTRIBUTES = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n];\n\nconst JSON_ATTRIBUTES = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n];\n\nconst BOOL_ATTRIBUTES = [\"cross-origin\"];\n\nclass LIcon extends HTMLElement {\n static observedAttributes = [\n ...STRING_ATTRIBUTES,\n ...JSON_ATTRIBUTES,\n ...BOOL_ATTRIBUTES,\n ];\n\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n this.icon = icon(this._parseOptions());\n\n const event = new CustomEvent(iconConnected, {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} name\n * @param {string} _\n * @param {string} newValue\n */\n attributeChangedCallback(name, _, newValue) {\n if (LIcon.observedAttributes.indexOf(name) !== -1) {\n if (this.icon !== null) {\n let update = {};\n if (STRING_ATTRIBUTES.indexOf(name) !== -1) {\n update[kebabToCamel(name)] = newValue;\n } else if (BOOL_ATTRIBUTES.indexOf(name) !== -1) {\n update[kebabToCamel(name)] = newValue.toLowerCase() === \"true\";\n } else {\n update[kebabToCamel(name)] = JSON.parse(newValue);\n }\n this.icon = icon({\n ...this.icon.options,\n ...update,\n });\n const event = new CustomEvent(iconConnected, {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n }\n }\n\n /**\n * @returns {import(\"leaflet\").IconOptions}\n */\n _parseOptions() {\n // Experimental parse/validate API\n const obj = {};\n STRING_ATTRIBUTES.forEach((key) => {\n obj[kebabToCamel(key)] = optional(htmlAttribute(key));\n });\n JSON_ATTRIBUTES.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 return parse(schema, this);\n }\n}\n\nexport default LIcon;\n","import { divIcon } from \"leaflet\";\nimport { iconConnected } from \"./events\";\n\nexport default class CustomElement extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n // Leaflet JS DivIcon options\n const options = {\n html: this.innerHTML,\n };\n const className = this.getAttribute(\"class-name\");\n if (className !== null) {\n options[\"className\"] = className;\n }\n\n this.icon = divIcon(options);\n this.dispatchEvent(\n new CustomEvent(iconConnected, {\n bubbles: true,\n cancelable: true,\n detail: {\n icon: this.icon,\n },\n })\n );\n }\n}\n","// @ts-check\n\nimport { tooltip } from \"leaflet\";\nimport { tooltipConnected } from \"./events\";\nimport { json, option, parse } from \"./parse.js\";\n\nclass LTooltip extends HTMLElement {\n static observedAttributes = [\"content\", \"permanent\", \"direction\"];\n\n constructor() {\n super();\n this.tooltip = tooltip({\n permanent: this.hasAttribute(\"permanent\"),\n direction: this.getAttribute(\"direction\") ?? \"auto\"\n });\n }\n\n connectedCallback() {\n const event = new CustomEvent(tooltipConnected, {\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","import { paneConnected } from \"./events.js\";\n\nexport default class CustomElement extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.dispatchEvent(\n new CustomEvent(paneConnected, {\n bubbles: true,\n cancelable: true,\n detail: {\n name: this.getAttribute(\"name\"),\n },\n })\n );\n }\n}\n","// @ts-check\nimport { Circle, LatLng, Polygon, Polyline, Rectangle } from \"leaflet\";\nimport { camelToKebab } from \"./util.js\";\nimport { htmlAttribute, parse } from \"./parse.js\";\nimport { layerConnected, tooltipConnected } from \"./events.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(tooltipConnected, (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(layerConnected, {\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\n\n// Make L.markerClusterGroup optional\nimport(\"leaflet.markercluster\").catch((error) => {\n console.warn(\"Failed to import leaflet.markercluster\", error)\n});\n\nimport { layerConnected } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LMarkerClusterGroup extends LLayer {\n static observedAttributes = [\n \"show-coverage-on-hover\",\n \"icon-options\"\n ];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const iconOptions = this.getAttribute(\"icon-options\");\n this.layer = L.markerClusterGroup({\n showCoverageOnHover: this.hasAttribute(\"show-coverage-on-hover\"),\n iconCreateFunction: this._createIconCreateFunction(iconOptions)\n });\n\n const event = new CustomEvent(layerConnected, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n name\n }\n });\n this.dispatchEvent(event);\n\n this.addEventListener(layerConnected, (ev) => {\n ev.stopPropagation();\n this.layer.addLayer(ev.detail.layer);\n });\n }\n\n _createIconCreateFunction(iconOptions) {\n if (iconOptions) {\n let { size, content, className } = JSON.parse(iconOptions);\n\n return (cluster) => {\n const resolvedSize = this._callClusterFunction(cluster, size);\n const resolvedContent = this._callClusterFunction(cluster, content);\n\n return L.divIcon({\n html: resolvedContent,\n className: className,\n iconSize: new L.Point(resolvedSize, resolvedSize)\n });\n };\n }\n }\n\n _callClusterFunction(cluster, body) {\n return Function(\"cluster\", `\"use strict\";return (${body})`)(cluster);\n }\n}\n\nexport default LMarkerClusterGroup;\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 LDivIcon from \"./l-div-icon.js\";\nimport LTooltip from \"./l-tooltip.js\";\nimport LPane from \"./l-pane.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\";\nimport LMarkerClusterGroup from \"./l-marker-cluster-group.js\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-pane\", LPane);\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-cluster-group\", LMarkerClusterGroup);\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 customElements.define(\"l-div-icon\", LDivIcon);\n})();\n\nexport default init;\n"],"names":["layerConnected","popupConnected","iconConnected","layerRemoved","latLngBoundsConnected","latLngBoundsChanged","tooltipConnected","paneConnected","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","disconnectedCallback","_this$layer","remove","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","boundsListener","method","bounds","createPane","target","_proto","_this2","L","zoomControl","hasAttribute","whenReady","on","split","eventName","fitWorld","zoom","isNaN","center","_i2","_Object$keys2","_parse","setView","locate","attributeChangedCallback","_oldValue","newValue","setZoom","observedAttributes","LMarker","setIcon","icon","bindTooltip","tooltip","latLng","options","opacity","parseFloat","pane","closest","marker","setAttribute","stamp","openPopup","popup","bindPopup","content","setLatLng","setOpacity","LOverlayLayers","LPopup","openPopupAttribute","LTileLayer","_step","urlTemplate","templateOptions","_iterator","_createForOfIteratorHelperLoose","parseTemplateAttributes","done","attribute","paneOptions","parentElement","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","STRING_ATTRIBUTES","JSON_ATTRIBUTES","BOOL_ATTRIBUTES","LIcon","_parseOptions","_","indexOf","update","CustomElement","html","innerHTML","className","divIcon","LTooltip","_this$getAttribute","permanent","direction","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","args","positional","_opt","find","parsedValue","Circle","setRadius","Rectangle","setLatLngs","Polygon","Polyline","_layer$setStyle","opt","setStyle","setter","opts","attributes","import","error","LMarkerClusterGroup","iconOptions","markerClusterGroup","showCoverageOnHover","iconCreateFunction","_createIconCreateFunction","_this3","_JSON$parse","size","cluster","resolvedSize","_callClusterFunction","resolvedContent","iconSize","Point","body","Function","init","customElements","define","LPane","LDivIcon"],"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.8.5",
4
+ "version": "0.9.0",
5
5
  "description": "Leaflet maps expressed in HTML suitable for HTMX",
6
6
  "keywords": [
7
7
  "leaflet",
@@ -39,6 +39,7 @@
39
39
  "vitest": "^1.6.0"
40
40
  },
41
41
  "dependencies": {
42
- "leaflet": "^1.9.4"
42
+ "leaflet": "^1.9.4",
43
+ "leaflet.markercluster": "^1.5.3"
43
44
  }
44
45
  }