leaflet-html 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/leaflet-html.js +1 -1
- package/dist/leaflet-html.js.map +1 -1
- package/package.json +1 -1
package/dist/leaflet-html.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as a,videoOverlay as i,geoJSON as o,tooltip as l,Circle as s,Rectangle as u,Polygon as c,Polyline as p,circle as f,polyline as d,polygon as b,rectangle as h}from"leaflet";function v(){return v=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},v.apply(null,arguments)}function m(t){return m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},m(t)}function y(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,E(t,e)}function g(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(g=function(){return!!t})()}function E(t,e){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},E(t,e)}function w(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function 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(g())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var a=new(t.bind.apply(t,r));return n&&E(a,n.prototype),a}(t,arguments,m(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),E(n,t)},A(t)}var C="map:addTo",L="popup:add",O=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return y(e,t),e.prototype.connectedCallback=function(){this.addEventListener(C,function(t){t.detail.type="base"})},e}(/*#__PURE__*/A(HTMLElement)),k=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return y(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(C,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(C,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/A(HTMLElement)),S=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return y(e,t),e}(/*#__PURE__*/A(HTMLElement)),N=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return y(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(C,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(C,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}(S),J=/*#__PURE__*/function(t){function e(e){var n;return(n=t.call(this)||this).issues=[],n.name="LeafletHTMLError",n.issues=e,n}return y(e,t),n=e,(r=[{key:"message",get:function(){return JSON.stringify(this.issues,null,2)}}])&&function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,w(r.key),r)}}(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(/*#__PURE__*/A(Error)),T=function(t,e){var n=t(function(t){return{status:"clean",issues:[],value:t}}(e));if("clean"!==n.status)throw new J(n.issues);return n.value},j=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}}},P=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}},M=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length;n++)e=t[n](e);return e}},H=function(t){return function(e){return null===e.value?e:t(e)}},_=function(t){return function(e){return null===(e=t(e)).value?{status:"clean",issues:[],value:null}:e}},z=function(t){return function(e){var n=e.value,r=n.getAttribute(t);return null===r?{status:"abort",issues:[].concat(e.issues,[B(n,t)]),value:null}:v({},e,{value:r})}},I=function(){return function(t){var e;try{e=JSON.parse(t.value)}catch(e){return{status:"abort",issues:[].concat(t.issues,[F(e)]),value:null}}return v({},t,{value:e})}},U=function(t){return P.apply(void 0,[z(t)].concat([].slice.call(arguments,1)))},F=function(t){return{code:"parse_json",message:t.message}},B=function(t,e){return{code:"missing_attribute",message:t.tagName.toLowerCase()+" missing attribute '"+e+"'"}},q=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).map=null,t.addEventListener("map:bounds",function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof S&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(t,{childList:!0}),t}y(n,e);var r=n.prototype;return r.connectedCallback=function(){var e,n=this;if(this.map=t.map(this),this.hasAttribute("on")){var r=this.getAttribute("on");null!==r&&r.split(/\s+/).forEach(function(t){null!==n.map&&n.map.on(t,function(e){n.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:e}))})})}if(this.hasAttribute("fit-world"))this.map.fitWorld();else{var a=(e={zoom:U("zoom",function(t){var e,n=parseInt(t.value);return isNaN(n)?{status:"abort",issues:[].concat(t.issues,[(e=t.value,{code:"parse_int",message:'could not parse int given: "'+e+'"'})]),value:n}:v({},t,{value:n})}),center:U("center",I())},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=T(a,this);this.map.setView(i.center,i.zoom)}if(this.hasAttribute("locate")){var o=U("locate",I());this.map.locate(T(o,this))}this.addEventListener(C,function(t){t.detail.layer.addTo(n.map)}),this.addEventListener("layer:remove",function(t){null!==n.map&&n.map.removeLayer(t.detail.layer)})},r.attributeChangedCallback=function(t,e,n){null!==this.map&&("zoom"===t?this.map.setZoom(parseInt(n)):"center"===t&&this.map.setView(JSON.parse(n)))},n}(/*#__PURE__*/A(HTMLElement));q.observedAttributes=["zoom","center"];var x=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t.addEventListener("icon:add",function(e){e.stopPropagation(),t.layer.setIcon(e.detail.icon)}),t}y(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=T(U("lat-lng",I()),this),r=T(j({opacity:M(_(z("opacity")),H(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}:v({},t,{value:n})}))}),this);if(this.layer=t.marker(n,r),this.hasAttribute("icon")){var a=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(L,function(t){var n=t.detail,r=n.openPopup,a=e.layer.bindPopup(n.content);r&&a.openPopup()});var i=new CustomEvent(C,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(S);if(x.observedAttributes=["lat-lng","opacity","icon"],import.meta.vitest){var R=import.meta.vitest,V=R.it,D=R.expect;(0,R.beforeAll)(function(){customElements.define("l-marker",x)}),V("default icon",function(){var e=document.createElement("l-marker");e.setAttribute("lat-lng","[0, 0]"),document.body.appendChild(e);var n=e.layer.getIcon(),r=new t.Icon.Default;D(n).toEqual(r)}),V("adds an icon",function(){var e=document.createElement("l-marker");e.setAttribute("lat-lng","[0, 0]"),e.setAttribute("icon",JSON.stringify({iconUrl:"foo.png"})),document.body.appendChild(e);var n=e.layer.getIcon(),r=t.icon({iconUrl:"foo.png"});D(n).toEqual(r)}),V("changes an icon",function(){var e=document.createElement("l-marker");e.setAttribute("lat-lng","[0, 0]"),document.body.appendChild(e),e.setAttribute("icon",JSON.stringify({iconUrl:"bar.png"}));var n=e.layer.getIcon(),r=t.icon({iconUrl:"bar.png"});D(n).toEqual(r)})}var W=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return y(e,t),e.prototype.connectedCallback=function(){this.addEventListener(C,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/A(HTMLElement)),Z=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return y(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(L,{cancelable:!0,bubbles:!0,detail:{content:t,openPopup:e}});this.dispatchEvent(r)},e}(/*#__PURE__*/A(HTMLElement)),G=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return y(e,t),e.prototype.connectedCallback=function(){var t=T(z("url-template"),this),e=this.getAttribute("name"),n=j({attribution:_(z("attribution"))}),a=T(n,this);this.layer=r(t,a);var i=new CustomEvent(C,{detail:{name:e,layer:this.layer},bubbles:!0});this.dispatchEvent(i)},e}(S),K=/*#__PURE__*/function(t){function e(){return t.call(this)||this}y(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("bounds");null!==t&&this.dispatchEvent(this.getEvent(JSON.parse(t)))},n.attributeChangedCallback=function(t,e,n){this.dispatchEvent(this.getEvent(JSON.parse(n)))},n.getEvent=function(t){return new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:t,method:this.getAttribute("method")||"fitBounds"}})},e}(/*#__PURE__*/A(HTMLElement));K.observedAttributes=["bounds"];var Q=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}y(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(C,{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}(S);Q.observedAttributes=["url","bounds","opacity"];var X=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return y(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(C,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(S),Y=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return y(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=o(JSON.parse(t));this.dispatchEvent(new CustomEvent(C,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/A(HTMLElement)),$=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},tt=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).icon=null,t}return y(n,e),n.prototype.connectedCallback=function(){var e={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(t){e[$(t)]=_(z(t))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(t){e[$(t)]=M(_(z(t)),H(I()))}),e.crossOrigin=M(_(z("cross-origin")),H(function(t){return v({},t,{value:"true"===t.value.toLowerCase()})}));var n=j(e),r=T(n,this);this.icon=t.icon(r);var a=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(a)},n}(/*#__PURE__*/A(HTMLElement));if(import.meta.vitest){var et=import.meta.vitest,nt=et.it,rt=et.expect;(0,et.beforeAll)(function(){customElements.define("l-icon",tt)}),nt("default",function(){var e=document.createElement("l-icon");document.body.appendChild(e);var n=e.icon,r=t.icon();rt(n).toEqual(r)}),nt("emits icon:add event",function(){try{var e=document.createElement("l-icon"),n=new Promise(function(t){e.addEventListener("icon:add",function(e){t(e.detail.icon)})});return document.body.appendChild(e),Promise.resolve(n).then(function(e){var n=t.icon();rt(e).toEqual(n)})}catch(t){return Promise.reject(t)}}),nt("options",function(){var e=document.createElement("l-icon");e.setAttribute("icon-url","url.png"),e.setAttribute("icon-retina-url","retina.png"),e.setAttribute("icon-size","[0, 0]"),e.setAttribute("icon-anchor","[0, 0]"),e.setAttribute("popup-anchor","[0, 0]"),e.setAttribute("tooltip-anchor","[0, 0]"),e.setAttribute("shadow-url","urlShadow.png"),e.setAttribute("shadow-retina-url","retinaShadow.png"),e.setAttribute("shadow-size","[0, 0]"),e.setAttribute("shadow-anchor","[0, 0]"),e.setAttribute("class-name","foo"),e.setAttribute("cross-origin","true"),document.body.appendChild(e);var n=e.icon,r=t.icon({iconUrl:"url.png",iconRetinaUrl:"retina.png",iconSize:[0,0],iconAnchor:[0,0],popupAnchor:[0,0],tooltipAnchor:[0,0],shadowUrl:"urlShadow.png",shadowRetinaUrl:"retinaShadow.png",shadowSize:[0,0],shadowAnchor:[0,0],className:"foo",crossOrigin:!0});rt(n).toEqual(r)})}var at=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).tooltip=l(),e}y(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=new CustomEvent("bindTooltip",{cancelable:!0,bubbles:!0,detail:{tooltip:this.tooltip}});this.dispatchEvent(t)},n.attributeChangedCallback=function(t,e,n){"content"===t&&this.tooltip.setContent(n)},e}(/*#__PURE__*/A(HTMLElement));at.observedAttributes=["content"];var it=function(t){switch(t){case"circle":return[ot("latLng","latlng",null)];case"rectangle":return[ot("latLngBounds","latlngbounds",null)];case"polygon":case"polyline":return[ot("latLngs","latlng",null)]}},ot=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:lt(e),defaultValue:n};var r},lt=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}}},st=function(t){var e={circle:[ot("radius","number",null)],path:[ot("stroke","boolean",!0),ot("color","string","#3388ff"),ot("weight","number",3),ot("opacity","number",1),ot("lineCap","string","round"),ot("lineJoin","string","round"),ot("dashArray","string",null),ot("dashOffset","string",null),ot("fill","boolean",!0),ot("fillColor","string","#3388ff"),ot("fillOpacity","number",.2)],polyline:[ot("smoothFactor","number",1),ot("noClip","boolean",!1)],polygon:[],rectangle:[],interactiveLayer:[ot("interactive","boolean",!0)]};return ct(t).flatMap(function(t){return e[t]})},ut={circle:["path"],polyline:["path"],polygon:["polyline"],rectangle:["polygon"],path:["interactiveLayer"],interactiveLayer:[]},ct=function(t){for(var e=t,n=[t];ut[e].length>0;){var r=ut[e][0];n.push(r),e=r}return n},pt=function(t,e){var n={};return st(e).forEach(function(e){t.hasAttribute(e.kebab)&&(n[e.camel]=e.parser(t.getAttribute(e.kebab)))}),n},ft=function(t,e){var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t.addEventListener("bindTooltip",function(e){null!==t.layer&&t.layer.bindTooltip(e.detail.tooltip)}),t}y(r,n);var a=r.prototype;return a.connectedCallback=function(){var n=function(t,e){return it(e).map(function(e){var n=z(e.kebab),r=T(n,t);return e.parser(r)})}(this,e),r=pt(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},a.attributeChangedCallback=function(t,n,r){null!==this.layer&&function(t,e,n,r){var a=[].concat(it(e),st(e)).find(function(t){return t.kebab===n});if(void 0!==a){var i=a.parser(r);if(t instanceof s)switch(n){case"lat-lng":t.setLatLng(JSON.parse(r));break;case"radius":t.setRadius(parseFloat(r))}else if(t instanceof u)switch(n){case"lat-lngs":t.setLatLngs(JSON.parse(r));break;case"lat-lng-bounds":t.setBounds(JSON.parse(r))}else t instanceof c?"lat-lngs"===n&&t.setLatLngs(JSON.parse(r)):t instanceof p&&"lat-lngs"===n&&t.setLatLngs(JSON.parse(r));var o,l=st("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=it(t).map(function(t){return t.kebab}),n=st(t).map(function(t){return t.kebab});return[].concat(e,n)}(e),n},dt=(customElements.define("l-map",q),customElements.define("l-control-layers",k),customElements.define("l-base-layers",O),customElements.define("l-overlay-layers",W),customElements.define("l-layer-group",N),customElements.define("l-tile-layer",G),customElements.define("l-marker",x),customElements.define("l-popup",Z),customElements.define("l-lat-lng-bounds",K),customElements.define("l-image-overlay",Q),customElements.define("l-video-overlay",X),customElements.define("l-geojson",Y),customElements.define("l-icon",tt),customElements.define("l-circle",ft(f,"circle")),customElements.define("l-polyline",ft(d,"polyline")),customElements.define("l-polygon",ft(b,"polygon")),customElements.define("l-rectangle",ft(h,"rectangle")),void customElements.define("l-tooltip",at));export{dt as default};
|
1
|
+
import*as t from"leaflet";import{control as e,layerGroup as n,tileLayer as r,imageOverlay as a,videoOverlay as i,geoJSON as o,icon as l,tooltip as s,Circle as u,Rectangle as c,Polygon as f,Polyline as p,circle as b,polyline as v,polygon as h,rectangle as d}from"leaflet";function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function m(){return m=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},m.apply(null,arguments)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function E(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,C(t,e)}function L(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(L=function(){return!!t})()}function C(t,e){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},C(t,e)}function O(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function w(t){var e="function"==typeof Map?new Map:void 0;return w=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(L())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var a=new(t.bind.apply(t,r));return n&&C(a,n.prototype),a}(t,arguments,g(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),C(n,t)},w(t)}var A="map:addTo",k="popup:add",S=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="base"})},e}(/*#__PURE__*/w(HTMLElement)),N=/*#__PURE__*/function(t){function n(){return t.call(this)||this}return E(n,t),n.prototype.connectedCallback=function(){var t=e.layers({},{});this.addEventListener(A,function(e){var n=e.detail,r=n.type,a=n.name,i=n.layer;"overlay"===r?t.addOverlay(i,a):"base"===r&&t.addBaseLayer(i,a),e.preventDefault()});var n=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:t}});this.dispatchEvent(n)},n}(/*#__PURE__*/w(HTMLElement)),T=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e}(/*#__PURE__*/w(HTMLElement)),j=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("name"),e=n();this.layer=e;var r=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:e,name:t}});this.dispatchEvent(r),this.addEventListener(A,function(t){t.stopPropagation(),e.addLayer(t.detail.layer)}),new MutationObserver(function(t){t.forEach(function(t){t.removedNodes.forEach(function(t){if(t instanceof HTMLElement){var n=t.getAttribute("leaflet-id");if(null!==n){var r=e.getLayer(parseInt(n));void 0!==r&&e.removeLayer(r)}}})})}).observe(this,{childList:!0})},e}(T),J=/*#__PURE__*/function(t){function e(e){var n;return(n=t.call(this)||this).issues=[],n.name="LeafletHTMLError",n.issues=e,n}return E(e,t),n=e,(r=[{key:"message",get:function(){return JSON.stringify(this.issues,null,2)}}])&&function(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,O(r.key),r)}}(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(/*#__PURE__*/w(Error)),M=function(t,e){var n=t(function(t){return{status:"clean",issues:[],value:t}}(e));if("clean"!==n.status)throw new J(n.issues);return n.value},P=function(t){return function(e){for(var n=e.issues,r="clean",a={},i=0,o=Object.keys(t);i<o.length;i++){var l=o[i],s=t[l](e);"clean"!==s.status&&(r=s.status),null===s.value&&"clean"===s.status||(n=[].concat(n,s.issues),a[l]=s.value)}return{status:r,issues:n,value:a}}},H=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length&&"abort"!==(e=t[n](e)).status;n++);return e}},_=function(){var t=[].slice.call(arguments);return function(e){for(var n=0;n<t.length;n++)e=t[n](e);return e}},I=function(t){return function(e){return null===e.value?e:t(e)}},F=function(t){return function(e){return null===(e=t(e)).value?{status:"clean",issues:[],value:null}:e}},z=function(t){return function(e){var n=e.value,r=n.getAttribute(t);return null===r?{status:"abort",issues:[].concat(e.issues,[R(n,t)]),value:null}:m({},e,{value:r})}},B=function(){return function(t){var e;try{e=JSON.parse(t.value)}catch(e){return{status:"abort",issues:[].concat(t.issues,[U(e)]),value:null}}return m({},t,{value:e})}},x=function(t){return H.apply(void 0,[z(t)].concat([].slice.call(arguments,1)))},U=function(t){return{code:"parse_json",message:t.message}},R=function(t,e){return{code:"missing_attribute",message:t.tagName.toLowerCase()+" missing attribute '"+e+"'"}},V=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).map=null,t.addEventListener("map:bounds",function(e){var n=e.detail;null!==t.map&&t.map[n.method](n.bounds)}),new MutationObserver(function(t){t.forEach(function(t){if(t.target instanceof n){var e=t.target;t.removedNodes.forEach(function(t){t instanceof T&&null!==e.map&&null!==t.layer&&e.map.removeLayer(t.layer)})}})}).observe(t,{childList:!0}),t}E(n,e);var r=n.prototype;return r.connectedCallback=function(){var e,n=this;if(this.map=t.map(this),this.hasAttribute("on")){var r=this.getAttribute("on");null!==r&&r.split(/\s+/).forEach(function(t){null!==n.map&&n.map.on(t,function(e){n.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:e}))})})}if(this.hasAttribute("fit-world"))this.map.fitWorld();else{var a=(e={zoom:x("zoom",function(t){var e,n=parseInt(t.value);return isNaN(n)?{status:"abort",issues:[].concat(t.issues,[(e=t.value,{code:"parse_int",message:'could not parse int given: "'+e+'"'})]),value:n}:m({},t,{value:n})}),center:x("center",B())},function(t){for(var n=t.status,r=t.issues,a={},i=0,o=Object.keys(e);i<o.length;i++){var l=o[i],s=e[l](t);"abort"===s.status&&(n="abort",r=[].concat(r,s.issues)),a[l]=s.value}return{status:n,issues:r,value:a}}),i=M(a,this);this.map.setView(i.center,i.zoom)}if(this.hasAttribute("locate")){var o=x("locate",B());this.map.locate(M(o,this))}this.addEventListener(A,function(t){t.detail.layer.addTo(n.map)}),this.addEventListener("layer:remove",function(t){null!==n.map&&n.map.removeLayer(t.detail.layer)})},r.attributeChangedCallback=function(t,e,n){null!==this.map&&("zoom"===t?this.map.setZoom(parseInt(n)):"center"===t&&this.map.setView(JSON.parse(n)))},n}(/*#__PURE__*/w(HTMLElement));V.observedAttributes=["zoom","center"];var D=/*#__PURE__*/function(e){function n(){var t;return(t=e.call(this)||this).layer=null,t.addEventListener("icon:add",function(e){e.stopPropagation(),t.layer.setIcon(e.detail.icon)}),t}E(n,e);var r=n.prototype;return r.connectedCallback=function(){var e=this,n=M(x("lat-lng",B()),this),r=M(P({opacity:_(F(z("opacity")),I(function(t){var e,n=parseFloat(t.value);return isNaN(n)?{status:"abort",issues:[].concat(t.issues,[(e=t.value,{code:"parse_float",message:'could not parse float given: "'+e+'"'})]),value:n}:m({},t,{value:n})}))}),this);if(this.layer=t.marker(n,r),this.hasAttribute("icon")){var a=t.icon(JSON.parse(this.getAttribute("icon")));this.layer.setIcon(a)}this.setAttribute("leaflet-id",t.stamp(this.layer)),this.addEventListener(k,function(t){var n=t.detail,r=n.openPopup,a=e.layer.bindPopup(n.content);r&&a.openPopup()});var i=new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(i)},r.attributeChangedCallback=function(e,n,r){null!==this.layer&&("lat-lng"===e&&this.layer.setLatLng(JSON.parse(r)),"opacity"===e&&this.layer.setOpacity(parseFloat(r)),"icon"===e&&this.layer.setIcon(t.icon(JSON.parse(r))))},n}(T);D.observedAttributes=["lat-lng","opacity","icon"];var W=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){this.addEventListener(A,function(t){t.detail.type="overlay"})},e}(/*#__PURE__*/w(HTMLElement)),Z=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("content"),e=!1,n=this.getAttribute("open-popup");null!==n&&(e="false"!==n);var r=new CustomEvent(k,{cancelable:!0,bubbles:!0,detail:{content:t,openPopup:e}});this.dispatchEvent(r)},e}(/*#__PURE__*/w(HTMLElement)),$=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}return E(e,t),e.prototype.connectedCallback=function(){for(var t,n=M(z("url-template"),this),a={},i=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return y(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}(t))){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e.parseTemplateAttributes(n));!(t=i()).done;){var o=t.value,l=this.getAttribute(o);null!==l&&(a[o]=l)}var s=this.getAttribute("name"),u=P({attribution:F(z("attribution"))}),c=M(u,this);this.layer=r(n,m({},a,c));var f=new CustomEvent(A,{detail:{name:s,layer:this.layer},bubbles:!0});this.dispatchEvent(f)},e.parseTemplateAttributes=function(t){return[].concat(t.matchAll(/{(.*?)}/g)).map(function(t){return t[1]})},e}(T),q=/*#__PURE__*/function(t){function e(){return t.call(this)||this}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("bounds");null!==t&&this.dispatchEvent(this.getEvent(JSON.parse(t)))},n.attributeChangedCallback=function(t,e,n){this.dispatchEvent(this.getEvent(JSON.parse(n)))},n.getEvent=function(t){return new CustomEvent("map:bounds",{bubbles:!0,detail:{bounds:t,method:this.getAttribute("method")||"fitBounds"}})},e}(/*#__PURE__*/w(HTMLElement));q.observedAttributes=["bounds"];var G=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).layer=null,e}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=this.getAttribute("url");if(null!==t){var e=this.getAttribute("bounds");if(null!==e){var n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||""};this.layer=a(t,JSON.parse(e),n),this.dispatchEvent(new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:this.layer}}))}else console.warn("attribute 'bounds' not set")}else console.warn("attribute 'url' not set")},n.attributeChangedCallback=function(t,e,n){null!==this.layer&&("url"===t?this.layer.setUrl(n):"bounds"===t?this.layer.setBounds(JSON.parse(n)):"opacity"===t&&this.layer.setOpacity(parseFloat(n)))},e}(T);G.observedAttributes=["url","bounds","opacity"];var K=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=JSON.parse(this.getAttribute("url")),e=JSON.parse(this.getAttribute("bounds")),n={opacity:parseFloat(this.getAttribute("opacity")||"1.0"),alt:this.getAttribute("alt")||"",autoplay:!0,muted:!0,playsInline:!0},r=i(t,e,n);this.dispatchEvent(new CustomEvent(A,{cancelable:!0,bubbles:!0,detail:{layer:r}}))},e}(T),Q=/*#__PURE__*/function(t){function e(){return t.call(this)||this}return E(e,t),e.prototype.connectedCallback=function(){var t=this.getAttribute("geojson");if(null!==t){var e=o(JSON.parse(t));this.dispatchEvent(new CustomEvent(A,{bubbles:!0,cancelable:!0,detail:{layer:e}}))}},e}(/*#__PURE__*/w(HTMLElement)),X=function(t){return t.replace(/-./g,function(t){return t[1].toUpperCase()})},Y=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).icon=null,e}return E(e,t),e.prototype.connectedCallback=function(){var t={};["icon-url","icon-retina-url","shadow-url","shadow-retina-url","class-name"].forEach(function(e){t[X(e)]=F(z(e))}),["icon-anchor","icon-size","shadow-anchor","shadow-size","tooltip-anchor","popup-anchor"].forEach(function(e){t[X(e)]=_(F(z(e)),I(B()))}),t.crossOrigin=_(F(z("cross-origin")),I(function(t){return m({},t,{value:"true"===t.value.toLowerCase()})}));var e=P(t),n=M(e,this);this.icon=l(n);var r=new CustomEvent("icon:add",{cancelable:!0,bubbles:!0,detail:{icon:this.icon}});this.dispatchEvent(r)},e}(/*#__PURE__*/w(HTMLElement)),tt=/*#__PURE__*/function(t){function e(){var e;return(e=t.call(this)||this).tooltip=s(),e}E(e,t);var n=e.prototype;return n.connectedCallback=function(){var t=new CustomEvent("bindTooltip",{cancelable:!0,bubbles:!0,detail:{tooltip:this.tooltip}});this.dispatchEvent(t)},n.attributeChangedCallback=function(t,e,n){"content"===t&&this.tooltip.setContent(n)},e}(/*#__PURE__*/w(HTMLElement));tt.observedAttributes=["content"];var et=function(t){switch(t){case"circle":return[nt("latLng","latlng",null)];case"rectangle":return[nt("latLngBounds","latlngbounds",null)];case"polygon":case"polyline":return[nt("latLngs","latlng",null)]}},nt=function(t,e,n){return{camel:t,kebab:(r=t,r.split("").map(function(t,e){return t.toUpperCase()===t?(0!==e?"-":"")+t.toLowerCase():t}).join("")),parser:rt(e),defaultValue:n};var r},rt=function(t){switch(t.toLowerCase()){case"boolean":return function(t){return"true"===t};case"number":return parseFloat;case"latlng":case"latlngbounds":return JSON.parse;default:return function(t){return t}}},at=function(t){var e={circle:[nt("radius","number",null)],path:[nt("stroke","boolean",!0),nt("color","string","#3388ff"),nt("weight","number",3),nt("opacity","number",1),nt("lineCap","string","round"),nt("lineJoin","string","round"),nt("dashArray","string",null),nt("dashOffset","string",null),nt("fill","boolean",!0),nt("fillColor","string","#3388ff"),nt("fillOpacity","number",.2)],polyline:[nt("smoothFactor","number",1),nt("noClip","boolean",!1)],polygon:[],rectangle:[],interactiveLayer:[nt("interactive","boolean",!0)]};return ot(t).flatMap(function(t){return e[t]})},it={circle:["path"],polyline:["path"],polygon:["polyline"],rectangle:["polygon"],path:["interactiveLayer"],interactiveLayer:[]},ot=function(t){for(var e=t,n=[t];it[e].length>0;){var r=it[e][0];n.push(r),e=r}return n},lt=function(t,e){var n={};return at(e).forEach(function(e){t.hasAttribute(e.kebab)&&(n[e.camel]=e.parser(t.getAttribute(e.kebab)))}),n},st=function(t,e){var n=/*#__PURE__*/function(n){function r(){var t;return(t=n.call(this)||this).layer=null,t.addEventListener("bindTooltip",function(e){null!==t.layer&&t.layer.bindTooltip(e.detail.tooltip)}),t}E(r,n);var a=r.prototype;return a.connectedCallback=function(){var n=function(t,e){return et(e).map(function(e){var n=z(e.kebab),r=M(n,t);return e.parser(r)})}(this,e),r=lt(this,e);this.layer=t.apply(void 0,n.concat([r]));var a=new CustomEvent("map:addTo",{cancelable:!0,bubbles:!0,detail:{layer:this.layer}});this.dispatchEvent(a)},a.attributeChangedCallback=function(t,n,r){null!==this.layer&&function(t,e,n,r){var a=[].concat(et(e),at(e)).find(function(t){return t.kebab===n});if(void 0!==a){var i=a.parser(r);if(t instanceof u)switch(n){case"lat-lng":t.setLatLng(JSON.parse(r));break;case"radius":t.setRadius(parseFloat(r))}else if(t instanceof c)switch(n){case"lat-lngs":t.setLatLngs(JSON.parse(r));break;case"lat-lng-bounds":t.setBounds(JSON.parse(r))}else t instanceof f?"lat-lngs"===n&&t.setLatLngs(JSON.parse(r)):t instanceof p&&"lat-lngs"===n&&t.setLatLngs(JSON.parse(r));var o,l=at("polyline").find(function(t){return t.kebab===n});void 0!==l&&t.setStyle(((o={})[l.camel]=i,o))}}(this.layer,e,t,r)},r}(/*#__PURE__*/w(HTMLElement));return n.observedAttributes=function(t){var e=et(t).map(function(t){return t.kebab}),n=at(t).map(function(t){return t.kebab});return[].concat(e,n)}(e),n},ut=(customElements.define("l-map",V),customElements.define("l-control-layers",N),customElements.define("l-base-layers",S),customElements.define("l-overlay-layers",W),customElements.define("l-layer-group",j),customElements.define("l-tile-layer",$),customElements.define("l-marker",D),customElements.define("l-popup",Z),customElements.define("l-lat-lng-bounds",q),customElements.define("l-image-overlay",G),customElements.define("l-video-overlay",K),customElements.define("l-geojson",Q),customElements.define("l-icon",Y),customElements.define("l-circle",st(b,"circle")),customElements.define("l-polyline",st(v,"polyline")),customElements.define("l-polygon",st(h,"polygon")),customElements.define("l-rectangle",st(d,"rectangle")),void customElements.define("l-tooltip",tt));export{ut as default};
|
2
2
|
//# sourceMappingURL=leaflet-html.js.map
|
package/dist/leaflet-html.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leaflet-html.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/parse.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/util.js","../src/l-icon.js","../src/l-tooltip.js","../src/generator.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","/// <reference path=\"./parser.d.ts\" />\n \nexport class LeafletHTMLError extends Error {\n /** @type {Issue[]} */\n issues = [];\n\n /**\n * @param {Issue[]} issues\n */\n constructor(issues) {\n super();\n this.name = \"LeafletHTMLError\";\n this.issues = issues;\n }\n\n get message() {\n return JSON.stringify(this.issues, null, 2);\n }\n}\n\n/**\n * @template T\n * @param {T} value\n * @returns {Context<T>}\n */\nconst wrap = (value) => {\n return {\n status: \"clean\",\n issues: [],\n value,\n };\n};\n\n/**\n * @template T\n * @param {Context<T>} value\n * @returns {T}\n */\nconst unwrap = ({ value }) => value;\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {S}\n */\nexport const parse = (schema, value) => {\n const result = schema(wrap(value));\n if (result.status !== \"clean\") {\n throw new LeafletHTMLError(result.issues);\n } else {\n return unwrap(result);\n }\n};\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {Context<S>}\n */\nexport const safeParse = (schema, value) => schema(wrap(value));\n\n/**\n * @param {Object} obj\n * @returns {(ctx: Context<Object>) => Context<Object>}\n */\nexport const object = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n if (key in ctx.value) {\n result[key] = obj[key](wrap(ctx.value[key])).value;\n } else {\n status = \"abort\";\n issues = [...issues, missingKeyIssue(key)];\n }\n }\n return { status, issues, value: result };\n};\n\n// CONNECTORS\n\n/**\n * @template T\n * @param {Object} obj\n * @returns {(ctx: Context<T>) => Context<Object>}\n */\nexport const distribute = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status === \"abort\") {\n status = \"abort\";\n issues = [...issues, ...localCtx.issues];\n }\n result[key] = localCtx.value;\n }\n return { status, issues, value: result };\n};\n\nexport const partial = (obj) => (ctx) => {\n let { issues } = ctx;\n let status = \"clean\"\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status !== \"clean\") {\n status = localCtx.status\n }\n \n if ((localCtx.value === null) && (localCtx.status === \"clean\")) {\n continue\n } else {\n issues = [...issues, ...localCtx.issues];\n result[key] = localCtx.value;\n }\n }\n return { status, issues, value: result };\n};\n\nexport const pipe =\n (...parsers) =>\n (ctx) => {\n for (let i = 0; i < parsers.length; i++) {\n ctx = parsers[i](ctx);\n if (ctx.status === \"abort\") {\n break;\n }\n }\n return ctx;\n };\n\nexport const chain = (...parsers) => (ctx) => {\n for (let i=0; i<parsers.length; i++) {\n ctx = parsers[i](ctx)\n }\n return ctx\n}\n\n\n// PRIMITIVES\nexport const nullable = (parser) => (ctx) => {\n if (ctx.value === null) {\n return ctx\n }\n return parser(ctx)\n}\n\nexport const optional = (parser) => (ctx) => {\n ctx = parser(ctx)\n if (ctx.value === null) {\n return {status: \"clean\", issues: [], value: null}\n } else {\n return ctx\n }\n}\n\n/**\n * @param {string} attributeName\n * @returns {Parser<HTMLElement, string>}\n */\nexport const htmlAttribute = (attributeName) => (ctx) => {\n const el = ctx.value;\n let result = el.getAttribute(attributeName);\n if (result === null) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, htmlAttributeIssue(el, attributeName)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const int = () => (ctx) => {\n let result = parseInt(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, intIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const float = () => (ctx) => {\n let result = parseFloat(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, floatIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const json = () => (ctx) => {\n let result;\n try {\n result = JSON.parse(ctx.value);\n } catch (e) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, jsonIssue(e)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<boolean>}\n */\nexport const bool = () => (ctx) => {\n return { ...ctx, value: ctx.value.toLowerCase() === \"true\" };\n};\n\n/**\n * @template T\n * @template S\n * @param {string} key\n * @param {Parser<T, S>[]} fns\n */\nexport const option = (key, ...fns) => pipe(htmlAttribute(key), ...fns);\n\n\n// ISSUES\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const intIssue = (value) => {\n return {\n code: \"parse_int\",\n message: `could not parse int given: \"${value}\"`,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const floatIssue = (value) => {\n return {\n code: \"parse_float\",\n message: `could not parse float given: \"${value}\"`,\n };\n};\n\n/**\n * @param {SyntaxError} e\n * @returns {Issue}\n */\nexport const jsonIssue = (e) => {\n return {\n code: \"parse_json\",\n message: e.message,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const missingKeyIssue = (value) => {\n return {\n code: \"missing_key\",\n message: `key not found: ${value}`,\n };\n};\n\n/**\n * @param {HTMLElement} el\n * @param {string} attributeName\n * @returns {Issue}\n */\nexport const htmlAttributeIssue = (el, attributeName) => {\n return {\n code: \"missing_attribute\",\n message: `${el.tagName.toLowerCase()} missing attribute '${attributeName}'`,\n };\n};\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { distribute, int, json, option, parse } from \"./parse.js\";\n\nclass LMap extends HTMLElement {\n static observedAttributes = [\"zoom\", \"center\"];\n\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target;\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if (el.map !== null && node.layer !== null) {\n el.map.removeLayer(node.layer);\n }\n }\n });\n }\n });\n });\n observer.observe(this, { childList: true });\n }\n\n connectedCallback() {\n this.map = L.map(this);\n\n // Connect Leaflet events\n if (this.hasAttribute(\"on\")) {\n const on = this.getAttribute(\"on\");\n if (on !== null) {\n on.split(/\\s+/).forEach((eventName) => {\n if (this.map !== null) {\n this.map.on(eventName, (e) => {\n this.dispatchEvent(\n new CustomEvent(eventName, { bubbles: true, detail: e })\n );\n });\n }\n });\n }\n }\n\n if (this.hasAttribute(\"fit-world\")) {\n this.map.fitWorld();\n } else {\n const schema = distribute({\n zoom: option(\"zoom\", int()),\n center: option(\"center\", json())\n })\n const { zoom, center } = parse(schema, this)\n this.map.setView(center, zoom);\n }\n\n if (this.hasAttribute(\"locate\")) {\n const schema = option(\"locate\", json())\n this.map.locate(parse(schema, this));\n }\n\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.map !== null) {\n if (name === \"zoom\") {\n this.map.setZoom(parseInt(newValue));\n } else if (name === \"center\") {\n this.map.setView(JSON.parse(newValue));\n }\n }\n }\n}\n\nexport default LMap;\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { chain, float, json, option, optional, htmlAttribute, parse, partial, nullable } from \"./parse.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const latLng = parse(option(\"lat-lng\", json()), this);\n const options = parse(\n partial({\n opacity: chain(optional(htmlAttribute(\"opacity\")), nullable(float())),\n }),\n this\n );\n this.layer = L.marker(latLng, options);\n\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content, openPopup } = ev.detail;\n const popup = this.layer.bindPopup(content);\n if (openPopup) {\n popup.openPopup();\n }\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-marker\", LMarker);\n });\n\n it(\"default icon\", () => {\n const el = document.createElement(\"l-marker\");\n el.setAttribute(\"lat-lng\", \"[0, 0]\");\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = new L.Icon.Default();\n expect(actual).toEqual(expected);\n });\n\n it(\"adds an icon\", () => {\n const el = document.createElement(\"l-marker\");\n el.setAttribute(\"lat-lng\", \"[0, 0]\");\n // Set attribute before appendChild\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"foo.png\" }));\n document.body.appendChild(el);\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"foo.png\" });\n expect(actual).toEqual(expected);\n });\n\n it(\"changes an icon\", () => {\n const el = document.createElement(\"l-marker\");\n el.setAttribute(\"lat-lng\", \"[0, 0]\");\n // Set attribute after appendChild\n document.body.appendChild(el);\n el.setAttribute(\"icon\", JSON.stringify({ iconUrl: \"bar.png\" }));\n let actual = el.layer.getIcon();\n let expected = L.icon({ iconUrl: \"bar.png\" });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n let openPopup = false;\n const openPopupAttribute = this.getAttribute(\"open-popup\");\n if (openPopupAttribute !== null) {\n openPopup = openPopupAttribute !== \"false\";\n }\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n openPopup,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { htmlAttribute, optional, parse, partial } from \"./parse.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const urlTemplate = parse(htmlAttribute(\"url-template\"), this)\n const name = this.getAttribute(\"name\");\n const schema = partial({\n attribution: optional(htmlAttribute(\"attribution\"))\n })\n const options = parse(schema, this)\n this.layer = tileLayer(urlTemplate, options);\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nimport { LatLngBounds } from \"leaflet\";\n\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n connectedCallback() {\n let value = this.getAttribute(\"bounds\")\n if (value !== null) {\n this.dispatchEvent(this.getEvent(JSON.parse(value)))\n }\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n this.dispatchEvent(this.getEvent(JSON.parse(newValue)));\n }\n\n /**\n * @param {LatLngBounds} bounds\n */\n getEvent(bounds) {\n return new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds,\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n }),\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// Utility functions\nexport const kebabToCamel = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\nexport const camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\n","// @vitest-environment happy-dom\nimport * as L from \"leaflet\";\nimport {\n bool,\n chain,\n htmlAttribute,\n json,\n nullable,\n optional,\n parse,\n partial,\n} from \"./parse.js\";\nimport { kebabToCamel } from \"./util.js\";\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const obj = {};\n const keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n obj[kebabToCamel(key)] = optional(htmlAttribute(key));\n });\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n obj[kebabToCamel(key)] = chain(optional(htmlAttribute(key)), nullable(json()));\n });\n obj[\"crossOrigin\"] = chain(optional(htmlAttribute(\"cross-origin\")), nullable(bool()));\n const schema = partial(obj);\n const options = parse(schema, this);\n\n this.icon = L.icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nif (import.meta.vitest) {\n const { it, expect, beforeAll } = import.meta.vitest;\n\n beforeAll(() => {\n customElements.define(\"l-icon\", LIcon);\n });\n\n it(\"default\", () => {\n const el = document.createElement(\"l-icon\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"emits icon:add event\", async () => {\n const el = document.createElement(\"l-icon\");\n let promise = new Promise((resolve) => {\n el.addEventListener(\"icon:add\", (ev) => {\n resolve(ev.detail.icon);\n });\n });\n document.body.appendChild(el);\n let actual = await promise;\n let expected = L.icon();\n expect(actual).toEqual(expected);\n });\n\n it(\"options\", () => {\n const el = document.createElement(\"l-icon\");\n el.setAttribute(\"icon-url\", \"url.png\");\n el.setAttribute(\"icon-retina-url\", \"retina.png\");\n el.setAttribute(\"icon-size\", \"[0, 0]\");\n el.setAttribute(\"icon-anchor\", \"[0, 0]\");\n el.setAttribute(\"popup-anchor\", \"[0, 0]\");\n el.setAttribute(\"tooltip-anchor\", \"[0, 0]\");\n el.setAttribute(\"shadow-url\", \"urlShadow.png\");\n el.setAttribute(\"shadow-retina-url\", \"retinaShadow.png\");\n el.setAttribute(\"shadow-size\", \"[0, 0]\");\n el.setAttribute(\"shadow-anchor\", \"[0, 0]\");\n el.setAttribute(\"class-name\", \"foo\");\n el.setAttribute(\"cross-origin\", \"true\");\n document.body.appendChild(el);\n\n let actual = el.icon;\n let expected = L.icon({\n iconUrl: \"url.png\",\n iconRetinaUrl: \"retina.png\",\n iconSize: [0, 0],\n iconAnchor: [0, 0],\n popupAnchor: [0, 0],\n tooltipAnchor: [0, 0],\n shadowUrl: \"urlShadow.png\",\n shadowRetinaUrl: \"retinaShadow.png\",\n shadowSize: [0, 0],\n shadowAnchor: [0, 0],\n className: \"foo\",\n crossOrigin: true,\n });\n expect(actual).toEqual(expected);\n });\n}\n\nexport default LIcon;\n","// @ts-check\n\nimport { tooltip } from \"leaflet\";\n\nclass LTooltip extends HTMLElement {\n static observedAttributes = [\"content\"];\n\n constructor() {\n super();\n this.tooltip = tooltip();\n }\n\n connectedCallback() {\n const event = new CustomEvent(\"bindTooltip\", {\n cancelable: true,\n bubbles: true,\n detail: {\n tooltip: this.tooltip,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (attName === \"content\") {\n this.tooltip.setContent(newValue);\n }\n }\n}\n\nexport default LTooltip;\n","// @ts-check\nimport { Circle, LatLng, Polygon, Polyline, Rectangle } from \"leaflet\";\nimport { camelToKebab } from \"./util.js\";\nimport { htmlAttribute, parse } from \"./parse.js\";\n\n/**\n * @typedef {Object} TagOption\n * @property {string} camel\n * @property {string} kebab\n * @property {(s: string) => AttributeValue} parser\n * @property {AttributeValue | null} defaultValue\n */\n/**\n * @typedef {(\"circle\"|\"rectangle\"|\"polygon\"|\"polyline\")} MethodName\n * @typedef {(\"path\"|\"interactiveLayer\")} LayerName\n * @typedef {(\"boolean\"|\"number\"|\"string\"|\"latlng\"|\"latlngbounds\")} AttributeType\n * @typedef {(boolean|number|string|LatLng)} AttributeValue\n */\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst positionalArguments = (methodName) => {\n switch (methodName) {\n case \"circle\":\n return [option(\"latLng\", \"latlng\", null)];\n case \"rectangle\":\n return [option(\"latLngBounds\", \"latlngbounds\", null)];\n case \"polygon\":\n return [option(\"latLngs\", \"latlng\", null)];\n case \"polyline\":\n return [option(\"latLngs\", \"latlng\", null)];\n }\n};\n\n/**\n * @param {string} name\n * @param {AttributeType} type\n * @param {AttributeValue | null} defaultValue\n * @returns {TagOption}\n */\nconst option = (name, type, defaultValue) => {\n return {\n camel: name,\n kebab: camelToKebab(name),\n parser: inferParser(type),\n defaultValue,\n };\n};\n\n/**\n * @param {AttributeType} type\n * @returns {(s: string) => AttributeValue}\n */\nconst inferParser = (type) => {\n switch (type.toLowerCase()) {\n case \"boolean\":\n return (s) => s === \"true\";\n case \"number\":\n return parseFloat;\n case \"latlng\":\n case \"latlngbounds\":\n return JSON.parse;\n case \"string\":\n return (s) => s;\n default:\n return (s) => s;\n }\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst options = (methodName) => {\n const _OPTIONS = {\n circle: [option(\"radius\", \"number\", null)],\n path: [\n option(\"stroke\", \"boolean\", true),\n option(\"color\", \"string\", \"#3388ff\"),\n option(\"weight\", \"number\", 3),\n option(\"opacity\", \"number\", 1.0),\n option(\"lineCap\", \"string\", \"round\"),\n option(\"lineJoin\", \"string\", \"round\"),\n option(\"dashArray\", \"string\", null),\n option(\"dashOffset\", \"string\", null),\n option(\"fill\", \"boolean\", true),\n option(\"fillColor\", \"string\", \"#3388ff\"),\n option(\"fillOpacity\", \"number\", 0.2),\n ],\n polyline: [\n option(\"smoothFactor\", \"number\", 1.0),\n option(\"noClip\", \"boolean\", false),\n ],\n polygon: [],\n rectangle: [],\n interactiveLayer: [option(\"interactive\", \"boolean\", true)],\n };\n return inheritance(methodName).flatMap((parent) => _OPTIONS[parent]);\n};\n\n/**\n * @type {Object.<string, (MethodName | LayerName)[]>}\n */\nconst INHERITS = {\n circle: [\"path\"],\n polyline: [\"path\"],\n polygon: [\"polyline\"],\n rectangle: [\"polygon\"],\n path: [\"interactiveLayer\"],\n interactiveLayer: [],\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {(MethodName | LayerName)[]}\n */\nconst inheritance = (methodName) => {\n /** @type {(MethodName | LayerName)} */\n let name = methodName;\n let chain = [methodName];\n while (INHERITS[name].length > 0) {\n let parent = INHERITS[name][0];\n chain.push(parent);\n name = parent;\n }\n return chain;\n};\n\n/**\n * @param {MethodName} methodName\n * @param {string} newValue\n * @param {string} name\n * @param {(Circle | Rectangle | Polygon | Polyline)} layer\n */\nconst setter = (layer, methodName, name, newValue) => {\n // Parse\n const allOptions = [\n ...positionalArguments(methodName),\n ...options(methodName),\n ];\n let _opt = allOptions.find((o) => o.kebab === name);\n if (typeof _opt === \"undefined\") {\n return;\n }\n const parsedValue = _opt.parser(newValue);\n\n // Update\n if (layer instanceof Circle) {\n switch (name) {\n case \"lat-lng\":\n layer.setLatLng(JSON.parse(newValue));\n break;\n case \"radius\":\n layer.setRadius(parseFloat(newValue));\n break;\n }\n } else if (layer instanceof Rectangle) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n case \"lat-lng-bounds\":\n layer.setBounds(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polygon) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polyline) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n }\n\n // setStyle options\n let opt = options(\"polyline\").find((o) => o.kebab === name);\n if (typeof opt !== \"undefined\") {\n layer.setStyle({ [opt.camel]: parsedValue });\n }\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst attributes = (methodName) => {\n let args = positionalArguments(methodName).map((o) => o.kebab);\n let opts = options(methodName).map((o) => o.kebab);\n return [...args, ...opts];\n};\n\n/**\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {};\n\n // Process inheritance chain\n options(methodName).forEach((o) => {\n if (el.hasAttribute(o.kebab)) {\n result[o.camel] = o.parser(el.getAttribute(o.kebab));\n }\n });\n return result;\n};\n\n/**\n * Read positional arguments from HTMLElement\n *\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst positional = (el, methodName) => {\n return positionalArguments(methodName).map(option => {\n const schema = htmlAttribute(option.kebab)\n const value = parse(schema, el)\n return option.parser(value);\n })\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst generator = (method, methodName) => {\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"bindTooltip\", (ev) => {\n if (this.layer !== null) {\n this.layer.bindTooltip(ev.detail.tooltip);\n }\n });\n }\n\n connectedCallback() {\n const args = positional(this, methodName);\n const options = settings(this, methodName);\n this.layer = method(...args, options);\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, methodName, attName, newValue);\n }\n }\n }\n return cls;\n};\n\nexport default generator;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport LTooltip from \"./l-tooltip.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"));\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"));\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"));\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"));\n customElements.define(\"l-tooltip\", LTooltip);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LeafletHTMLError","_Error","issues","key","get","JSON","stringify","Error","parse","schema","value","result","status","wrap","partial","obj","ctx","_i3","_Object$keys3","Object","keys","length","localCtx","concat","pipe","parsers","slice","arguments","i","chain","nullable","parser","optional","htmlAttribute","attributeName","el","htmlAttributeIssue","_extends","json","e","jsonIssue","option","apply","code","message","tagName","toLowerCase","LMap","map","method","bounds","target","_proto","_this2","L","hasAttribute","on","split","eventName","fitWorld","zoom","isNaN","center","_i2","_Object$keys2","_parse","setView","locate","addTo","attributeChangedCallback","_oldValue","newValue","setZoom","observedAttributes","LMarker","setIcon","icon","latLng","options","opacity","parseFloat","marker","setAttribute","stamp","openPopup","popup","bindPopup","content","setLatLng","setOpacity","vitest","_import$meta$vitest","it","expect","beforeAll","customElements","define","document","createElement","body","appendChild","actual","getIcon","expected","Icon","Default","toEqual","iconUrl","LOverlayLayers","LPopup","openPopupAttribute","LTileLayer","urlTemplate","attribution","tileLayer","LLatLngBounds","getEvent","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","geoJSON","kebabToCamel","kebab","replace","x","toUpperCase","LIcon","promise","Promise","resolve","then","reject","iconRetinaUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowUrl","shadowRetinaUrl","shadowSize","shadowAnchor","className","crossOrigin","LTooltip","tooltip","attName","_","setContent","positionalArguments","methodName","defaultValue","camel","s","letter","idx","join","inferParser","_OPTIONS","circle","path","polyline","polygon","rectangle","interactiveLayer","inheritance","flatMap","parent","INHERITS","push","settings","o","generator","cls","bindTooltip","args","positional","_opt","find","parsedValue","Circle","setRadius","Rectangle","setLatLngs","Polygon","Polyline","_layer$setStyle","opt","setStyle","setter","opts","attributes","init"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"leaflet-html.js","sources":["../src/events.js","../src/l-base-layers.js","../src/l-control-layers.js","../src/l-layer.js","../src/l-layer-group.js","../src/parse.js","../src/l-map.js","../src/l-marker.js","../src/l-overlay-layers.js","../src/l-popup.js","../src/l-tile-layer.js","../src/l-lat-lng-bounds.js","../src/l-image-overlay.js","../src/l-video-overlay.js","../src/l-geojson.js","../src/util.js","../src/l-icon.js","../src/l-tooltip.js","../src/generator.js","../src/index.js"],"sourcesContent":["export const mapAddTo = \"map:addTo\";\nexport const popupAdd = \"popup:add\";\nexport const layerRemove = \"layer:remove\";\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LBaseLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"base\";\n });\n }\n}\n\nexport default LBaseLayers;\n","// @ts-check\n/** @typedef {import(\"leaflet\").Layer} Layer */\nimport { control } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LControlLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n /** @type {{ [key: string]: Layer }} */\n const base = {};\n /** @type {{ [key: string]: Layer }} */\n const overlay = {};\n const controlLayers = control.layers(base, overlay);\n\n this.addEventListener(mapAddTo, (ev) => {\n const { type, name, layer } = ev.detail;\n if (type === \"overlay\") {\n controlLayers.addOverlay(layer, name);\n } else if (type === \"base\") {\n controlLayers.addBaseLayer(layer, name);\n }\n ev.preventDefault();\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: controlLayers,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LControlLayers;\n","class LLayer extends HTMLElement {\n constructor() {\n super()\n this.layer = null\n }\n}\n\nexport default LLayer\n","// @ts-check\nimport { layerGroup } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LLayerGroup extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const name = this.getAttribute(\"name\");\n const group = layerGroup();\n this.layer = group;\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: group,\n name,\n },\n });\n this.dispatchEvent(event);\n\n this.addEventListener(mapAddTo, (ev) => {\n ev.stopPropagation();\n group.addLayer(ev.detail.layer);\n });\n\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n mutation.removedNodes.forEach((node) => {\n if (node instanceof HTMLElement) {\n const leafletId = node.getAttribute(\"leaflet-id\");\n if (leafletId !== null) {\n const layer = group.getLayer(parseInt(leafletId));\n if (typeof layer !== \"undefined\") {\n group.removeLayer(layer);\n }\n }\n }\n });\n });\n });\n observer.observe(this, { childList: true });\n }\n}\n\nexport default LLayerGroup;\n","/// <reference path=\"./parser.d.ts\" />\n \nexport class LeafletHTMLError extends Error {\n /** @type {Issue[]} */\n issues = [];\n\n /**\n * @param {Issue[]} issues\n */\n constructor(issues) {\n super();\n this.name = \"LeafletHTMLError\";\n this.issues = issues;\n }\n\n get message() {\n return JSON.stringify(this.issues, null, 2);\n }\n}\n\n/**\n * @template T\n * @param {T} value\n * @returns {Context<T>}\n */\nconst wrap = (value) => {\n return {\n status: \"clean\",\n issues: [],\n value,\n };\n};\n\n/**\n * @template T\n * @param {Context<T>} value\n * @returns {T}\n */\nconst unwrap = ({ value }) => value;\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {S}\n */\nexport const parse = (schema, value) => {\n const result = schema(wrap(value));\n if (result.status !== \"clean\") {\n throw new LeafletHTMLError(result.issues);\n } else {\n return unwrap(result);\n }\n};\n\n/**\n * @template S\n * @template T\n * @param {Parser<T, S>} schema\n * @param {T} value\n * @returns {Context<S>}\n */\nexport const safeParse = (schema, value) => schema(wrap(value));\n\n/**\n * @param {Object} obj\n * @returns {(ctx: Context<Object>) => Context<Object>}\n */\nexport const object = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n if (key in ctx.value) {\n result[key] = obj[key](wrap(ctx.value[key])).value;\n } else {\n status = \"abort\";\n issues = [...issues, missingKeyIssue(key)];\n }\n }\n return { status, issues, value: result };\n};\n\n// CONNECTORS\n\n/**\n * @template T\n * @param {Object} obj\n * @returns {(ctx: Context<T>) => Context<Object>}\n */\nexport const distribute = (obj) => (ctx) => {\n let { status, issues } = ctx;\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status === \"abort\") {\n status = \"abort\";\n issues = [...issues, ...localCtx.issues];\n }\n result[key] = localCtx.value;\n }\n return { status, issues, value: result };\n};\n\nexport const partial = (obj) => (ctx) => {\n let { issues } = ctx;\n let status = \"clean\"\n const result = {};\n for (const key of Object.keys(obj)) {\n let localCtx = obj[key](ctx);\n if (localCtx.status !== \"clean\") {\n status = localCtx.status\n }\n \n if ((localCtx.value === null) && (localCtx.status === \"clean\")) {\n continue\n } else {\n issues = [...issues, ...localCtx.issues];\n result[key] = localCtx.value;\n }\n }\n return { status, issues, value: result };\n};\n\nexport const pipe =\n (...parsers) =>\n (ctx) => {\n for (let i = 0; i < parsers.length; i++) {\n ctx = parsers[i](ctx);\n if (ctx.status === \"abort\") {\n break;\n }\n }\n return ctx;\n };\n\nexport const chain = (...parsers) => (ctx) => {\n for (let i=0; i<parsers.length; i++) {\n ctx = parsers[i](ctx)\n }\n return ctx\n}\n\n\n// PRIMITIVES\nexport const nullable = (parser) => (ctx) => {\n if (ctx.value === null) {\n return ctx\n }\n return parser(ctx)\n}\n\nexport const optional = (parser) => (ctx) => {\n ctx = parser(ctx)\n if (ctx.value === null) {\n return {status: \"clean\", issues: [], value: null}\n } else {\n return ctx\n }\n}\n\n/**\n * @param {string} attributeName\n * @returns {Parser<HTMLElement, string>}\n */\nexport const htmlAttribute = (attributeName) => (ctx) => {\n const el = ctx.value;\n let result = el.getAttribute(attributeName);\n if (result === null) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, htmlAttributeIssue(el, attributeName)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const int = () => (ctx) => {\n let result = parseInt(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, intIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const float = () => (ctx) => {\n let result = parseFloat(ctx.value);\n if (isNaN(result)) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, floatIssue(ctx.value)],\n value: result,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<number>}\n */\nexport const json = () => (ctx) => {\n let result;\n try {\n result = JSON.parse(ctx.value);\n } catch (e) {\n return {\n status: \"abort\",\n issues: [...ctx.issues, jsonIssue(e)],\n value: null,\n };\n }\n return { ...ctx, value: result };\n};\n\n/**\n * @returns {(ctx: Context<string>) => Context<boolean>}\n */\nexport const bool = () => (ctx) => {\n return { ...ctx, value: ctx.value.toLowerCase() === \"true\" };\n};\n\n/**\n * @template T\n * @template S\n * @param {string} key\n * @param {Parser<T, S>[]} fns\n */\nexport const option = (key, ...fns) => pipe(htmlAttribute(key), ...fns);\n\n\n// ISSUES\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const intIssue = (value) => {\n return {\n code: \"parse_int\",\n message: `could not parse int given: \"${value}\"`,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const floatIssue = (value) => {\n return {\n code: \"parse_float\",\n message: `could not parse float given: \"${value}\"`,\n };\n};\n\n/**\n * @param {SyntaxError} e\n * @returns {Issue}\n */\nexport const jsonIssue = (e) => {\n return {\n code: \"parse_json\",\n message: e.message,\n };\n};\n\n/**\n * @param {string} value\n * @returns {Issue}\n */\nexport const missingKeyIssue = (value) => {\n return {\n code: \"missing_key\",\n message: `key not found: ${value}`,\n };\n};\n\n/**\n * @param {HTMLElement} el\n * @param {string} attributeName\n * @returns {Issue}\n */\nexport const htmlAttributeIssue = (el, attributeName) => {\n return {\n code: \"missing_attribute\",\n message: `${el.tagName.toLowerCase()} missing attribute '${attributeName}'`,\n };\n};\n","// @ts-check\nimport * as L from \"leaflet\";\nimport { layerRemove, mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { distribute, int, json, option, parse } from \"./parse.js\";\n\nclass LMap extends HTMLElement {\n static observedAttributes = [\"zoom\", \"center\"];\n\n constructor() {\n super();\n\n this.map = null;\n this.addEventListener(\"map:bounds\", (ev) => {\n const { bounds, method } = ev.detail;\n if (this.map !== null) {\n this.map[method](bounds);\n }\n });\n\n // Observe removed l-tile-layers\n const observer = new MutationObserver(function (mutations) {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof LMap) {\n const el = mutation.target;\n mutation.removedNodes.forEach((node) => {\n if (node instanceof LLayer) {\n if (el.map !== null && node.layer !== null) {\n el.map.removeLayer(node.layer);\n }\n }\n });\n }\n });\n });\n observer.observe(this, { childList: true });\n }\n\n connectedCallback() {\n this.map = L.map(this);\n\n // Connect Leaflet events\n if (this.hasAttribute(\"on\")) {\n const on = this.getAttribute(\"on\");\n if (on !== null) {\n on.split(/\\s+/).forEach((eventName) => {\n if (this.map !== null) {\n this.map.on(eventName, (e) => {\n this.dispatchEvent(\n new CustomEvent(eventName, { bubbles: true, detail: e })\n );\n });\n }\n });\n }\n }\n\n if (this.hasAttribute(\"fit-world\")) {\n this.map.fitWorld();\n } else {\n const schema = distribute({\n zoom: option(\"zoom\", int()),\n center: option(\"center\", json())\n })\n const { zoom, center } = parse(schema, this)\n this.map.setView(center, zoom);\n }\n\n if (this.hasAttribute(\"locate\")) {\n const schema = option(\"locate\", json())\n this.map.locate(parse(schema, this));\n }\n\n this.addEventListener(mapAddTo, (ev) => {\n const layer = ev.detail.layer;\n layer.addTo(this.map);\n });\n\n this.addEventListener(layerRemove, (ev) => {\n if (this.map !== null) {\n this.map.removeLayer(ev.detail.layer);\n }\n });\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.map !== null) {\n if (name === \"zoom\") {\n this.map.setZoom(parseInt(newValue));\n } else if (name === \"center\") {\n this.map.setView(JSON.parse(newValue));\n }\n }\n }\n}\n\nexport default LMap;\n","import * as L from \"leaflet\";\nimport { mapAddTo, popupAdd } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport {\n chain,\n float,\n json,\n option,\n optional,\n htmlAttribute,\n parse,\n partial,\n nullable,\n} from \"./parse.js\";\n\nclass LMarker extends LLayer {\n static observedAttributes = [\"lat-lng\", \"opacity\", \"icon\"];\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"icon:add\", (ev) => {\n ev.stopPropagation();\n this.layer.setIcon(ev.detail.icon);\n });\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const latLng = parse(option(\"lat-lng\", json()), this);\n const options = parse(\n partial({\n opacity: chain(optional(htmlAttribute(\"opacity\")), nullable(float())),\n }),\n this\n );\n this.layer = L.marker(latLng, options);\n\n if (this.hasAttribute(\"icon\")) {\n const icon = L.icon(JSON.parse(this.getAttribute(\"icon\")));\n this.layer.setIcon(icon);\n }\n\n this.setAttribute(\"leaflet-id\", L.stamp(this.layer));\n\n this.addEventListener(popupAdd, (ev) => {\n const { content, openPopup } = ev.detail;\n const popup = this.layer.bindPopup(content);\n if (openPopup) {\n popup.openPopup();\n }\n });\n\n const event = new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"lat-lng\") {\n this.layer.setLatLng(JSON.parse(newValue));\n }\n if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n if (name === \"icon\") {\n this.layer.setIcon(L.icon(JSON.parse(newValue)));\n }\n }\n }\n}\n\nexport default LMarker;\n","// @ts-check\nimport { mapAddTo } from \"./events.js\";\n\nclass LOverlayLayers extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n this.addEventListener(mapAddTo, (ev) => {\n ev.detail[\"type\"] = \"overlay\";\n });\n }\n}\n\nexport default LOverlayLayers;\n","// @ts-check\nimport { popupAdd } from \"./events.js\";\n\nclass LPopup extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const content = this.getAttribute(\"content\");\n let openPopup = false;\n const openPopupAttribute = this.getAttribute(\"open-popup\");\n if (openPopupAttribute !== null) {\n openPopup = openPopupAttribute !== \"false\";\n }\n const event = new CustomEvent(popupAdd, {\n cancelable: true,\n bubbles: true,\n detail: {\n content,\n openPopup,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LPopup;\n","// @ts-check\nimport { tileLayer } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\nimport { htmlAttribute, optional, parse, partial } from \"./parse.js\";\n\nclass LTileLayer extends LLayer {\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const urlTemplate = parse(htmlAttribute(\"url-template\"), this)\n \n // Template attributes\n const urlAttributes = LTileLayer.parseTemplateAttributes(urlTemplate)\n const templateOptions = {}\n for (const attribute of urlAttributes) {\n const value = this.getAttribute(attribute)\n if (value !== null) {\n templateOptions[attribute] = value\n }\n }\n \n // Options\n const name = this.getAttribute(\"name\");\n const schema = partial({\n attribution: optional(htmlAttribute(\"attribution\"))\n })\n const options = parse(schema, this)\n this.layer = tileLayer(urlTemplate, { ...templateOptions, ...options });\n const event = new CustomEvent(mapAddTo, {\n detail: { name, layer: this.layer },\n bubbles: true,\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} urlTemplate\n * @returns {string[]}\n */\n static parseTemplateAttributes(urlTemplate) {\n const regex = /{(.*?)}/g\n return [...urlTemplate.matchAll(regex)].map(match => match[1])\n }\n}\n\nexport default LTileLayer;\n","// @ts-check\nimport { LatLngBounds } from \"leaflet\";\n\nclass LLatLngBounds extends HTMLElement {\n static observedAttributes = [\"bounds\"];\n\n constructor() {\n super();\n }\n\n connectedCallback() {\n let value = this.getAttribute(\"bounds\")\n if (value !== null) {\n this.dispatchEvent(this.getEvent(JSON.parse(value)))\n }\n }\n\n attributeChangedCallback(_name, _oldValue, newValue) {\n this.dispatchEvent(this.getEvent(JSON.parse(newValue)));\n }\n\n /**\n * @param {LatLngBounds} bounds\n */\n getEvent(bounds) {\n return new CustomEvent(\"map:bounds\", {\n bubbles: true,\n detail: {\n bounds,\n method: this.getAttribute(\"method\") || \"fitBounds\",\n },\n });\n }\n}\n\nexport default LLatLngBounds;\n","// @ts-check\nimport { imageOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LImageOverlay extends LLayer {\n static observedAttributes = [\"url\", \"bounds\", \"opacity\"];\n\n constructor() {\n super();\n this.layer = null;\n }\n\n connectedCallback() {\n const url = this.getAttribute(\"url\");\n if (url === null) {\n console.warn(\"attribute 'url' not set\");\n return;\n }\n let bounds = this.getAttribute(\"bounds\");\n if (bounds === null) {\n console.warn(\"attribute 'bounds' not set\");\n return;\n }\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n };\n this.layer = imageOverlay(url, JSON.parse(bounds), options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n })\n );\n }\n\n attributeChangedCallback(name, _oldValue, newValue) {\n if (this.layer !== null) {\n if (name === \"url\") {\n this.layer.setUrl(newValue);\n } else if (name === \"bounds\") {\n this.layer.setBounds(JSON.parse(newValue));\n } else if (name === \"opacity\") {\n this.layer.setOpacity(parseFloat(newValue));\n }\n }\n }\n}\n\nexport default LImageOverlay;\n","// @ts-check\nimport { videoOverlay } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\nimport LLayer from \"./l-layer.js\";\n\nclass LVideoOverlay extends LLayer {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const url = JSON.parse(this.getAttribute(\"url\"));\n const bounds = JSON.parse(this.getAttribute(\"bounds\"));\n const options = {\n opacity: parseFloat(this.getAttribute(\"opacity\") || \"1.0\"),\n alt: this.getAttribute(\"alt\") || \"\",\n autoplay: true,\n muted: true,\n playsInline: true,\n };\n const layer = videoOverlay(url, bounds, options);\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n cancelable: true,\n bubbles: true,\n detail: {\n layer,\n },\n }),\n );\n }\n}\n\nexport default LVideoOverlay;\n","// @ts-check\nimport { geoJSON } from \"leaflet\";\nimport { mapAddTo } from \"./events.js\";\n\nclass LGeoJSON extends HTMLElement {\n constructor() {\n super();\n }\n\n connectedCallback() {\n const value = this.getAttribute(\"geojson\");\n if (value !== null) {\n const layer = geoJSON(JSON.parse(value));\n this.dispatchEvent(\n new CustomEvent(mapAddTo, {\n bubbles: true,\n cancelable: true,\n detail: {\n layer,\n },\n }),\n );\n }\n }\n}\n\nexport default LGeoJSON;\n","// Utility functions\nexport const kebabToCamel = (kebab) => kebab.replace(/-./g, (x) => x[1].toUpperCase());\nexport const camelToKebab = (s) => {\n return s.split('').map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n }).join('');\n}\n\n","import { icon } from \"leaflet\";\nimport {\n bool,\n chain,\n htmlAttribute,\n json,\n nullable,\n optional,\n parse,\n partial,\n} from \"./parse.js\";\nimport { kebabToCamel } from \"./util.js\";\n\nclass LIcon extends HTMLElement {\n constructor() {\n super();\n this.icon = null;\n }\n\n connectedCallback() {\n // Experimental parse/validate API\n const obj = {};\n const keys = [\n \"icon-url\",\n \"icon-retina-url\",\n \"shadow-url\",\n \"shadow-retina-url\",\n \"class-name\",\n ];\n keys.forEach((key) => {\n obj[kebabToCamel(key)] = optional(htmlAttribute(key));\n });\n let points = [\n \"icon-anchor\",\n \"icon-size\",\n \"shadow-anchor\",\n \"shadow-size\",\n \"tooltip-anchor\",\n \"popup-anchor\",\n ];\n points.forEach((key) => {\n obj[kebabToCamel(key)] = chain(\n optional(htmlAttribute(key)),\n nullable(json())\n );\n });\n obj[\"crossOrigin\"] = chain(\n optional(htmlAttribute(\"cross-origin\")),\n nullable(bool())\n );\n const schema = partial(obj);\n const options = parse(schema, this);\n\n this.icon = icon(options);\n\n const event = new CustomEvent(\"icon:add\", {\n cancelable: true,\n bubbles: true,\n detail: {\n icon: this.icon,\n },\n });\n this.dispatchEvent(event);\n }\n}\n\nexport default LIcon;\n","// @ts-check\n\nimport { tooltip } from \"leaflet\";\n\nclass LTooltip extends HTMLElement {\n static observedAttributes = [\"content\"];\n\n constructor() {\n super();\n this.tooltip = tooltip();\n }\n\n connectedCallback() {\n const event = new CustomEvent(\"bindTooltip\", {\n cancelable: true,\n bubbles: true,\n detail: {\n tooltip: this.tooltip,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (attName === \"content\") {\n this.tooltip.setContent(newValue);\n }\n }\n}\n\nexport default LTooltip;\n","// @ts-check\nimport { Circle, LatLng, Polygon, Polyline, Rectangle } from \"leaflet\";\nimport { camelToKebab } from \"./util.js\";\nimport { htmlAttribute, parse } from \"./parse.js\";\n\n/**\n * @typedef {Object} TagOption\n * @property {string} camel\n * @property {string} kebab\n * @property {(s: string) => AttributeValue} parser\n * @property {AttributeValue | null} defaultValue\n */\n/**\n * @typedef {(\"circle\"|\"rectangle\"|\"polygon\"|\"polyline\")} MethodName\n * @typedef {(\"path\"|\"interactiveLayer\")} LayerName\n * @typedef {(\"boolean\"|\"number\"|\"string\"|\"latlng\"|\"latlngbounds\")} AttributeType\n * @typedef {(boolean|number|string|LatLng)} AttributeValue\n */\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst positionalArguments = (methodName) => {\n switch (methodName) {\n case \"circle\":\n return [option(\"latLng\", \"latlng\", null)];\n case \"rectangle\":\n return [option(\"latLngBounds\", \"latlngbounds\", null)];\n case \"polygon\":\n return [option(\"latLngs\", \"latlng\", null)];\n case \"polyline\":\n return [option(\"latLngs\", \"latlng\", null)];\n }\n};\n\n/**\n * @param {string} name\n * @param {AttributeType} type\n * @param {AttributeValue | null} defaultValue\n * @returns {TagOption}\n */\nconst option = (name, type, defaultValue) => {\n return {\n camel: name,\n kebab: camelToKebab(name),\n parser: inferParser(type),\n defaultValue,\n };\n};\n\n/**\n * @param {AttributeType} type\n * @returns {(s: string) => AttributeValue}\n */\nconst inferParser = (type) => {\n switch (type.toLowerCase()) {\n case \"boolean\":\n return (s) => s === \"true\";\n case \"number\":\n return parseFloat;\n case \"latlng\":\n case \"latlngbounds\":\n return JSON.parse;\n case \"string\":\n return (s) => s;\n default:\n return (s) => s;\n }\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {TagOption[]}\n */\nconst options = (methodName) => {\n const _OPTIONS = {\n circle: [option(\"radius\", \"number\", null)],\n path: [\n option(\"stroke\", \"boolean\", true),\n option(\"color\", \"string\", \"#3388ff\"),\n option(\"weight\", \"number\", 3),\n option(\"opacity\", \"number\", 1.0),\n option(\"lineCap\", \"string\", \"round\"),\n option(\"lineJoin\", \"string\", \"round\"),\n option(\"dashArray\", \"string\", null),\n option(\"dashOffset\", \"string\", null),\n option(\"fill\", \"boolean\", true),\n option(\"fillColor\", \"string\", \"#3388ff\"),\n option(\"fillOpacity\", \"number\", 0.2),\n ],\n polyline: [\n option(\"smoothFactor\", \"number\", 1.0),\n option(\"noClip\", \"boolean\", false),\n ],\n polygon: [],\n rectangle: [],\n interactiveLayer: [option(\"interactive\", \"boolean\", true)],\n };\n return inheritance(methodName).flatMap((parent) => _OPTIONS[parent]);\n};\n\n/**\n * @type {Object.<string, (MethodName | LayerName)[]>}\n */\nconst INHERITS = {\n circle: [\"path\"],\n polyline: [\"path\"],\n polygon: [\"polyline\"],\n rectangle: [\"polygon\"],\n path: [\"interactiveLayer\"],\n interactiveLayer: [],\n};\n\n/**\n * @param {MethodName} methodName\n * @returns {(MethodName | LayerName)[]}\n */\nconst inheritance = (methodName) => {\n /** @type {(MethodName | LayerName)} */\n let name = methodName;\n let chain = [methodName];\n while (INHERITS[name].length > 0) {\n let parent = INHERITS[name][0];\n chain.push(parent);\n name = parent;\n }\n return chain;\n};\n\n/**\n * @param {MethodName} methodName\n * @param {string} newValue\n * @param {string} name\n * @param {(Circle | Rectangle | Polygon | Polyline)} layer\n */\nconst setter = (layer, methodName, name, newValue) => {\n // Parse\n const allOptions = [\n ...positionalArguments(methodName),\n ...options(methodName),\n ];\n let _opt = allOptions.find((o) => o.kebab === name);\n if (typeof _opt === \"undefined\") {\n return;\n }\n const parsedValue = _opt.parser(newValue);\n\n // Update\n if (layer instanceof Circle) {\n switch (name) {\n case \"lat-lng\":\n layer.setLatLng(JSON.parse(newValue));\n break;\n case \"radius\":\n layer.setRadius(parseFloat(newValue));\n break;\n }\n } else if (layer instanceof Rectangle) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n case \"lat-lng-bounds\":\n layer.setBounds(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polygon) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n } else if (layer instanceof Polyline) {\n switch (name) {\n case \"lat-lngs\":\n layer.setLatLngs(JSON.parse(newValue));\n break;\n }\n }\n\n // setStyle options\n let opt = options(\"polyline\").find((o) => o.kebab === name);\n if (typeof opt !== \"undefined\") {\n layer.setStyle({ [opt.camel]: parsedValue });\n }\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst attributes = (methodName) => {\n let args = positionalArguments(methodName).map((o) => o.kebab);\n let opts = options(methodName).map((o) => o.kebab);\n return [...args, ...opts];\n};\n\n/**\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst settings = (el, methodName) => {\n // Gather settings\n let result = {};\n\n // Process inheritance chain\n options(methodName).forEach((o) => {\n if (el.hasAttribute(o.kebab)) {\n result[o.camel] = o.parser(el.getAttribute(o.kebab));\n }\n });\n return result;\n};\n\n/**\n * Read positional arguments from HTMLElement\n *\n * @param {HTMLElement} el\n * @param {MethodName} methodName\n */\nconst positional = (el, methodName) => {\n return positionalArguments(methodName).map(option => {\n const schema = htmlAttribute(option.kebab)\n const value = parse(schema, el)\n return option.parser(value);\n })\n};\n\n/**\n * @param {MethodName} methodName\n */\nconst generator = (method, methodName) => {\n class cls extends HTMLElement {\n static observedAttributes = attributes(methodName);\n\n constructor() {\n super();\n this.layer = null;\n this.addEventListener(\"bindTooltip\", (ev) => {\n if (this.layer !== null) {\n this.layer.bindTooltip(ev.detail.tooltip);\n }\n });\n }\n\n connectedCallback() {\n const args = positional(this, methodName);\n const options = settings(this, methodName);\n this.layer = method(...args, options);\n const event = new CustomEvent(\"map:addTo\", {\n cancelable: true,\n bubbles: true,\n detail: {\n layer: this.layer,\n },\n });\n this.dispatchEvent(event);\n }\n\n /**\n * @param {string} attName\n * @param {string} newValue\n */\n attributeChangedCallback(attName, _, newValue) {\n if (this.layer !== null) {\n setter(this.layer, methodName, attName, newValue);\n }\n }\n }\n return cls;\n};\n\nexport default generator;\n","// @ts-check\nimport LBaseLayers from \"./l-base-layers.js\";\nimport LControlLayers from \"./l-control-layers.js\";\nimport LLayerGroup from \"./l-layer-group.js\";\nimport LMap from \"./l-map.js\";\nimport LMarker from \"./l-marker.js\";\nimport LOverlayLayers from \"./l-overlay-layers.js\";\nimport LPopup from \"./l-popup.js\";\nimport LTileLayer from \"./l-tile-layer.js\";\nimport LLatLngBounds from \"./l-lat-lng-bounds.js\";\nimport LImageOverlay from \"./l-image-overlay.js\";\nimport LVideoOverlay from \"./l-video-overlay.js\";\nimport LGeoJSON from \"./l-geojson.js\";\nimport LIcon from \"./l-icon.js\";\nimport LTooltip from \"./l-tooltip.js\";\nimport generator from \"./generator.js\";\nimport { circle, polyline, polygon, rectangle } from \"leaflet\";\n\nconst init = (() => {\n // Custom elements (order of definition is important)\n customElements.define(\"l-map\", LMap);\n customElements.define(\"l-control-layers\", LControlLayers);\n customElements.define(\"l-base-layers\", LBaseLayers);\n customElements.define(\"l-overlay-layers\", LOverlayLayers);\n customElements.define(\"l-layer-group\", LLayerGroup);\n customElements.define(\"l-tile-layer\", LTileLayer);\n customElements.define(\"l-marker\", LMarker);\n customElements.define(\"l-popup\", LPopup);\n customElements.define(\"l-lat-lng-bounds\", LLatLngBounds);\n customElements.define(\"l-image-overlay\", LImageOverlay);\n customElements.define(\"l-video-overlay\", LVideoOverlay);\n customElements.define(\"l-geojson\", LGeoJSON);\n customElements.define(\"l-icon\", LIcon);\n customElements.define(\"l-circle\", generator(circle, \"circle\"));\n customElements.define(\"l-polyline\", generator(polyline, \"polyline\"));\n customElements.define(\"l-polygon\", generator(polygon, \"polygon\"));\n customElements.define(\"l-rectangle\", generator(rectangle, \"rectangle\"));\n customElements.define(\"l-tooltip\", LTooltip);\n})();\n\nexport default init;\n"],"names":["mapAddTo","popupAdd","LBaseLayers","_HTMLElement","call","this","_inheritsLoose","prototype","connectedCallback","addEventListener","ev","detail","_wrapNativeSuper","HTMLElement","LControlLayers","controlLayers","control","layers","_ev$detail","type","name","layer","addOverlay","addBaseLayer","preventDefault","event","CustomEvent","cancelable","bubbles","dispatchEvent","LLayer","_this","LLayerGroup","_LLayer","getAttribute","group","layerGroup","stopPropagation","addLayer","MutationObserver","mutations","forEach","mutation","removedNodes","node","leafletId","getLayer","parseInt","removeLayer","observe","childList","LeafletHTMLError","_Error","issues","key","get","JSON","stringify","Error","parse","schema","value","result","status","wrap","partial","obj","ctx","_i3","_Object$keys3","Object","keys","length","localCtx","concat","pipe","parsers","slice","arguments","i","chain","nullable","parser","optional","htmlAttribute","attributeName","el","htmlAttributeIssue","_extends","json","e","jsonIssue","option","apply","code","message","tagName","toLowerCase","LMap","map","method","bounds","target","_proto","_this2","L","hasAttribute","on","split","eventName","fitWorld","zoom","isNaN","center","_i2","_Object$keys2","_parse","setView","locate","addTo","attributeChangedCallback","_oldValue","newValue","setZoom","observedAttributes","LMarker","setIcon","icon","latLng","options","opacity","parseFloat","marker","setAttribute","stamp","openPopup","popup","bindPopup","content","setLatLng","setOpacity","LOverlayLayers","LPopup","openPopupAttribute","LTileLayer","_step","urlTemplate","templateOptions","_iterator","_createForOfIteratorHelperLoose","parseTemplateAttributes","done","attribute","attribution","tileLayer","matchAll","match","LLatLngBounds","getEvent","_name","LImageOverlay","url","alt","imageOverlay","console","warn","setUrl","setBounds","LVideoOverlay","autoplay","muted","playsInline","videoOverlay","LGeoJSON","geoJSON","kebabToCamel","kebab","replace","x","toUpperCase","LIcon","LTooltip","tooltip","attName","_","setContent","positionalArguments","methodName","defaultValue","camel","s","letter","idx","join","inferParser","_OPTIONS","circle","path","polyline","polygon","rectangle","interactiveLayer","inheritance","flatMap","parent","INHERITS","push","settings","o","generator","cls","bindTooltip","args","positional","_opt","find","parsedValue","Circle","setRadius","Rectangle","setLatLngs","Polygon","Polyline","_layer$setStyle","opt","setStyle","setter","opts","attributes","init","customElements","define"],"mappings":"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"}
|