@feltmaps/js-sdk 1.1.0 → 1.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var I=(e,r)=>{for(var n in r)c(e,n,{get:r[n],enumerable:!0})},M=(e,r,n,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of F(r))!G.call(e,o)&&o!==n&&c(e,o,{get:()=>r[o],enumerable:!(i=V(r,o))||i.enumerable});return e};var b=e=>M(c({},"__esModule",{value:!0}),e);var x={};I(x,{Felt:()=>f});module.exports=b(x);function s(e,r){return({handler:n,options:i})=>{let o=new MessageChannel,a=crypto.randomUUID();return e.postMessage({type:"felt.addListener",event:i?{eventName:r,id:a,options:i}:{eventName:r,id:a}},"*",[o.port2]),o.port1.onmessage=l=>{n(l.data)},()=>{o.port1.onmessage=null,o.port1.close(),o.port2.close(),e.postMessage({type:"felt.removeListener",id:a},"*")}}}function t(e,r){return n=>{let i=new MessageChannel;return e.postMessage({type:r,params:n},"*",[i.port2]),new Promise((o,a)=>{i.port1.onmessage=l=>{l.data&&"__error__"in l.data?a(new Error(l.data.__error__)):o(l.data),i.port1.close(),i.port2.close()}})}}var u=e=>({getElement:t(e,"getElement"),getElementGeometry:t(e,"getElementGeometry"),getElements:t(e,"getElements"),setElementGroupVisibility:t(e,"setElementGroupVisibility"),getElementGroup:t(e,"getElementGroup"),getElementGroups:t(e,"getElementGroups"),onElementChange:s(e,"onElementChange"),onElementGroupChange:s(e,"onElementGroupChange")});var C=e=>({onPointerClick:s(e,"onPointerClick"),onPointerMove:s(e,"onPointerMove")});var L=e=>({getLayer:t(e,"getLayer"),getLayers:t(e,"getLayers"),setLayerVisibility:t(e,"setLayerVisibility"),setLayerStyle:t(e,"setLayerStyle"),onLayerChange:s(e,"onLayerChange"),getLayerGroup:t(e,"getLayerGroup"),getLayerGroups:t(e,"getLayerGroups"),setLayerGroupVisibility:t(e,"setLayerGroupVisibility"),onLayerGroupChange:s(e,"onLayerGroupChange"),getLegendItem:t(e,"getLegendItem"),getLegendItems:t(e,"getLegendItems"),setLegendItemVisibility:t(e,"setLegendItemVisibility"),onLegendItemChange:s(e,"onLegendItemChange"),getLayerFilters:t(e,"getLayerFilters"),setLayerFilters:t(e,"setLayerFilters"),getRenderedFeatures:t(e,"getRenderedFeatures")});var h=e=>({onSelectionChange:s(e,"onSelectionChange"),getSelection:t(e,"getSelection")});var E=e=>({updateUiControls:t(e,"updateUiControls"),setOnMapInteractionsUi:t(e,"setOnMapInteractionsUi")});var v=e=>({getViewport:t(e,"getViewport"),setViewport:t(e,"setViewport"),fitViewportToBounds:t(e,"fitViewportToBounds"),onViewportMove:s(e,"onViewportMove"),onViewportMoveEnd:s(e,"onViewportMoveEnd")});function P(e){return{iframe:null,...v(e),...E(e),...L(e),...u(e),...h(e),...C(e)}}var f={embed(e,r,n){let i={uiControls:{showLegend:!0,cooperativeGestures:!0,fullScreenButton:!0,geolocation:!1,zoomControls:!0,scaleBar:!0},initialViewport:void 0,origin:"https://felt.com"},o={showLegend:"legend",cooperativeGestures:"cooperativeGestures",fullScreenButton:"link",geolocation:"geolocation",zoomControls:"zoomControls",scaleBar:"scaleBar"},a={...i.uiControls,...n?.uiControls},l=n?.origin??i.origin,d=new URL(`${l}/embed/map/${r}`);for(let[m,y]of T(a))y!=null&&d.searchParams.set(o[m],y?"1":"0");if(n?.initialViewport){let m=n.initialViewport;d.searchParams.set("loc",`${m.center.latitude},${m.center.longitude},${m.zoom}z`)}let g=e.tagName==="IFRAME",p=g?e:e.ownerDocument.createElement("iframe");return p.src=d.toString(),g||(p.style.width="100%",p.style.height="100%",p.style.border="none",p.style.margin="0",e.appendChild(p)),p.referrerPolicy="strict-origin-when-cross-origin",new Promise((m,y)=>{p.addEventListener("load",()=>{p.contentWindow==null?y(new Error("Failed to load Felt map")):m(p.contentWindow)},{once:!0})}).then(f.connect).then(m=>(Object.defineProperties(m,{iframe:{value:p,writable:!1,configurable:!1}}),m))},connect(e){let r=P(e);return new Promise((n,i)=>{let o=setTimeout(()=>{i(new Error("Failed to load Felt map")),clearInterval(l)},5e3),a=new MessageChannel,l=setInterval(()=>{e.postMessage({type:"felt.ready"},"*",[a.port2])},100);a.port1.onmessage=d=>{d.data===!0&&(clearInterval(l),clearTimeout(o),a.port1.close(),a.port2.close(),n(r))}})}},T=Object.entries;0&&(module.exports={Felt});
1
+ "use strict";var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(e,r)=>{for(var i in r)c(e,i,{get:r[i],enumerable:!0})},G=(e,r,i,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of F(r))!I.call(e,o)&&o!==i&&c(e,o,{get:()=>r[o],enumerable:!(s=f(r,o))||s.enumerable});return e};var b=e=>G(c({},"__esModule",{value:!0}),e);var x={};M(x,{Felt:()=>V});module.exports=b(x);function n(e,r){return({handler:i,options:s})=>{let o=new MessageChannel,a=crypto.randomUUID();return e.postMessage({type:"felt.addListener",event:s?{eventName:r,id:a,options:s}:{eventName:r,id:a}},"*",[o.port2]),o.port1.onmessage=l=>{i(l.data)},()=>{o.port1.onmessage=null,o.port1.close(),o.port2.close(),e.postMessage({type:"felt.removeListener",id:a},"*")}}}function t(e,r){return i=>{let s=new MessageChannel;return e.postMessage({type:r,params:i},"*",[s.port2]),new Promise((o,a)=>{s.port1.onmessage=l=>{l.data&&"__error__"in l.data?a(new Error(l.data.__error__)):o(l.data),s.port1.close(),s.port2.close()}})}}var u=e=>({getElement:t(e,"getElement"),getElementGeometry:t(e,"getElementGeometry"),getElements:t(e,"getElements"),setElementGroupVisibility:t(e,"setElementGroupVisibility"),getElementGroup:t(e,"getElementGroup"),getElementGroups:t(e,"getElementGroups"),onElementChange:n(e,"onElementChange"),onElementGroupChange:n(e,"onElementGroupChange")});var C=e=>({onPointerClick:n(e,"onPointerClick"),onPointerMove:n(e,"onPointerMove")});var L=e=>({getLayer:t(e,"getLayer"),getLayers:t(e,"getLayers"),setLayerVisibility:t(e,"setLayerVisibility"),setLayerStyle:t(e,"setLayerStyle"),onLayerChange:n(e,"onLayerChange"),getLayerGroup:t(e,"getLayerGroup"),getLayerGroups:t(e,"getLayerGroups"),setLayerGroupVisibility:t(e,"setLayerGroupVisibility"),onLayerGroupChange:n(e,"onLayerGroupChange"),getLegendItem:t(e,"getLegendItem"),getLegendItems:t(e,"getLegendItems"),setLegendItemVisibility:t(e,"setLegendItemVisibility"),onLegendItemChange:n(e,"onLegendItemChange"),getLayerFilters:t(e,"getLayerFilters"),setLayerFilters:t(e,"setLayerFilters"),getRenderedFeatures:t(e,"getRenderedFeatures")});var h=e=>({onSelectionChange:n(e,"onSelectionChange"),getSelection:t(e,"getSelection")});var E=e=>({updateUiControls:t(e,"updateUiControls"),setOnMapInteractionsUi:t(e,"setOnMapInteractionsUi")});var v=e=>({getViewport:t(e,"getViewport"),setViewport:t(e,"setViewport"),fitViewportToBounds:t(e,"fitViewportToBounds"),onViewportMove:n(e,"onViewportMove"),onViewportMoveEnd:n(e,"onViewportMoveEnd"),onMapIdle:n(e,"onMapIdle")});function P(e){return{iframe:null,...v(e),...E(e),...L(e),...u(e),...h(e),...C(e)}}var V={embed(e,r,i){let s={uiControls:{showLegend:!0,cooperativeGestures:!0,fullScreenButton:!0,geolocation:!1,zoomControls:!0,scaleBar:!0},initialViewport:void 0,origin:"https://felt.com"},o={showLegend:"legend",cooperativeGestures:"cooperativeGestures",fullScreenButton:"link",geolocation:"geolocation",zoomControls:"zoomControls",scaleBar:"scaleBar"},a={...s.uiControls,...i?.uiControls},l=i?.origin??s.origin,d=new URL(`${l}/embed/map/${r}`);for(let[m,y]of T(a))y!=null&&d.searchParams.set(o[m],y?"1":"0");if(i?.initialViewport){let m=i.initialViewport;d.searchParams.set("loc",`${m.center.latitude},${m.center.longitude},${m.zoom}z`)}let g=e.tagName==="IFRAME",p=g?e:e.ownerDocument.createElement("iframe");return p.src=d.toString(),g||(p.style.width="100%",p.style.height="100%",p.style.border="none",p.style.margin="0",e.appendChild(p)),p.referrerPolicy="strict-origin-when-cross-origin",new Promise((m,y)=>{p.addEventListener("load",()=>{p.contentWindow==null?y(new Error("Failed to load Felt map")):m(p.contentWindow)},{once:!0})}).then(V.connect).then(m=>(Object.defineProperties(m,{iframe:{value:p,writable:!1,configurable:!1}}),m))},connect(e){let r=P(e);return new Promise((i,s)=>{let o=setTimeout(()=>{s(new Error("Failed to load Felt map")),clearInterval(l)},5e3),a=new MessageChannel,l=setInterval(()=>{e.postMessage({type:"felt.ready"},"*",[a.port2])},100);a.port1.onmessage=d=>{d.data===!0&&(clearInterval(l),clearTimeout(o),a.port1.close(),a.port2.close(),i(r))}})}},T=Object.entries;0&&(module.exports={Felt});
package/dist/client.d.cts CHANGED
@@ -802,6 +802,27 @@ interface ViewportController {
802
802
  onViewportMoveEnd(args: {
803
803
  handler: (viewport: ViewportState) => void;
804
804
  }): VoidFunction;
805
+ /**
806
+ * Adds a listener for when the map is idle, which is defined as:
807
+ * - No transitions are in progress
808
+ * - The user is not interacting with the map, e.g. by panning or zooming
809
+ * - All tiles for the current viewport have been loaded
810
+ * - Any fade transitions (e.g. for labels) have completed
811
+ *
812
+ * @returns A function to unsubscribe from the listener
813
+ *
814
+ * @event
815
+ * @example
816
+ * ```typescript
817
+ * const unsubscribe = felt.onMapIdle({ handler: () => console.log("map is idle") });
818
+ *
819
+ * // later on...
820
+ * unsubscribe();
821
+ * ```
822
+ */
823
+ onMapIdle(args: {
824
+ handler: () => void;
825
+ }): VoidFunction;
805
826
  }
806
827
 
807
828
  /**
package/dist/client.d.ts CHANGED
@@ -802,6 +802,27 @@ interface ViewportController {
802
802
  onViewportMoveEnd(args: {
803
803
  handler: (viewport: ViewportState) => void;
804
804
  }): VoidFunction;
805
+ /**
806
+ * Adds a listener for when the map is idle, which is defined as:
807
+ * - No transitions are in progress
808
+ * - The user is not interacting with the map, e.g. by panning or zooming
809
+ * - All tiles for the current viewport have been loaded
810
+ * - Any fade transitions (e.g. for labels) have completed
811
+ *
812
+ * @returns A function to unsubscribe from the listener
813
+ *
814
+ * @event
815
+ * @example
816
+ * ```typescript
817
+ * const unsubscribe = felt.onMapIdle({ handler: () => console.log("map is idle") });
818
+ *
819
+ * // later on...
820
+ * unsubscribe();
821
+ * ```
822
+ */
823
+ onMapIdle(args: {
824
+ handler: () => void;
825
+ }): VoidFunction;
805
826
  }
806
827
 
807
828
  /**
package/dist/client.js CHANGED
@@ -1 +1 @@
1
- function r(e,m){return({handler:l,options:o})=>{let i=new MessageChannel,n=crypto.randomUUID();return e.postMessage({type:"felt.addListener",event:o?{eventName:m,id:n,options:o}:{eventName:m,id:n}},"*",[i.port2]),i.port1.onmessage=s=>{l(s.data)},()=>{i.port1.onmessage=null,i.port1.close(),i.port2.close(),e.postMessage({type:"felt.removeListener",id:n},"*")}}}function t(e,m){return l=>{let o=new MessageChannel;return e.postMessage({type:m,params:l},"*",[o.port2]),new Promise((i,n)=>{o.port1.onmessage=s=>{s.data&&"__error__"in s.data?n(new Error(s.data.__error__)):i(s.data),o.port1.close(),o.port2.close()}})}}var g=e=>({getElement:t(e,"getElement"),getElementGeometry:t(e,"getElementGeometry"),getElements:t(e,"getElements"),setElementGroupVisibility:t(e,"setElementGroupVisibility"),getElementGroup:t(e,"getElementGroup"),getElementGroups:t(e,"getElementGroups"),onElementChange:r(e,"onElementChange"),onElementGroupChange:r(e,"onElementGroupChange")});var u=e=>({onPointerClick:r(e,"onPointerClick"),onPointerMove:r(e,"onPointerMove")});var C=e=>({getLayer:t(e,"getLayer"),getLayers:t(e,"getLayers"),setLayerVisibility:t(e,"setLayerVisibility"),setLayerStyle:t(e,"setLayerStyle"),onLayerChange:r(e,"onLayerChange"),getLayerGroup:t(e,"getLayerGroup"),getLayerGroups:t(e,"getLayerGroups"),setLayerGroupVisibility:t(e,"setLayerGroupVisibility"),onLayerGroupChange:r(e,"onLayerGroupChange"),getLegendItem:t(e,"getLegendItem"),getLegendItems:t(e,"getLegendItems"),setLegendItemVisibility:t(e,"setLegendItemVisibility"),onLegendItemChange:r(e,"onLegendItemChange"),getLayerFilters:t(e,"getLayerFilters"),setLayerFilters:t(e,"setLayerFilters"),getRenderedFeatures:t(e,"getRenderedFeatures")});var L=e=>({onSelectionChange:r(e,"onSelectionChange"),getSelection:t(e,"getSelection")});var h=e=>({updateUiControls:t(e,"updateUiControls"),setOnMapInteractionsUi:t(e,"setOnMapInteractionsUi")});var E=e=>({getViewport:t(e,"getViewport"),setViewport:t(e,"setViewport"),fitViewportToBounds:t(e,"fitViewportToBounds"),onViewportMove:r(e,"onViewportMove"),onViewportMoveEnd:r(e,"onViewportMoveEnd")});function v(e){return{iframe:null,...E(e),...h(e),...C(e),...g(e),...L(e),...u(e)}}var P={embed(e,m,l){let o={uiControls:{showLegend:!0,cooperativeGestures:!0,fullScreenButton:!0,geolocation:!1,zoomControls:!0,scaleBar:!0},initialViewport:void 0,origin:"https://felt.com"},i={showLegend:"legend",cooperativeGestures:"cooperativeGestures",fullScreenButton:"link",geolocation:"geolocation",zoomControls:"zoomControls",scaleBar:"scaleBar"},n={...o.uiControls,...l?.uiControls},s=l?.origin??o.origin,d=new URL(`${s}/embed/map/${m}`);for(let[p,y]of f(n))y!=null&&d.searchParams.set(i[p],y?"1":"0");if(l?.initialViewport){let p=l.initialViewport;d.searchParams.set("loc",`${p.center.latitude},${p.center.longitude},${p.zoom}z`)}let c=e.tagName==="IFRAME",a=c?e:e.ownerDocument.createElement("iframe");return a.src=d.toString(),c||(a.style.width="100%",a.style.height="100%",a.style.border="none",a.style.margin="0",e.appendChild(a)),a.referrerPolicy="strict-origin-when-cross-origin",new Promise((p,y)=>{a.addEventListener("load",()=>{a.contentWindow==null?y(new Error("Failed to load Felt map")):p(a.contentWindow)},{once:!0})}).then(P.connect).then(p=>(Object.defineProperties(p,{iframe:{value:a,writable:!1,configurable:!1}}),p))},connect(e){let m=v(e);return new Promise((l,o)=>{let i=setTimeout(()=>{o(new Error("Failed to load Felt map")),clearInterval(s)},5e3),n=new MessageChannel,s=setInterval(()=>{e.postMessage({type:"felt.ready"},"*",[n.port2])},100);n.port1.onmessage=d=>{d.data===!0&&(clearInterval(s),clearTimeout(i),n.port1.close(),n.port2.close(),l(m))}})}},f=Object.entries;export{P as Felt};
1
+ function r(e,m){return({handler:l,options:o})=>{let i=new MessageChannel,n=crypto.randomUUID();return e.postMessage({type:"felt.addListener",event:o?{eventName:m,id:n,options:o}:{eventName:m,id:n}},"*",[i.port2]),i.port1.onmessage=s=>{l(s.data)},()=>{i.port1.onmessage=null,i.port1.close(),i.port2.close(),e.postMessage({type:"felt.removeListener",id:n},"*")}}}function t(e,m){return l=>{let o=new MessageChannel;return e.postMessage({type:m,params:l},"*",[o.port2]),new Promise((i,n)=>{o.port1.onmessage=s=>{s.data&&"__error__"in s.data?n(new Error(s.data.__error__)):i(s.data),o.port1.close(),o.port2.close()}})}}var g=e=>({getElement:t(e,"getElement"),getElementGeometry:t(e,"getElementGeometry"),getElements:t(e,"getElements"),setElementGroupVisibility:t(e,"setElementGroupVisibility"),getElementGroup:t(e,"getElementGroup"),getElementGroups:t(e,"getElementGroups"),onElementChange:r(e,"onElementChange"),onElementGroupChange:r(e,"onElementGroupChange")});var u=e=>({onPointerClick:r(e,"onPointerClick"),onPointerMove:r(e,"onPointerMove")});var C=e=>({getLayer:t(e,"getLayer"),getLayers:t(e,"getLayers"),setLayerVisibility:t(e,"setLayerVisibility"),setLayerStyle:t(e,"setLayerStyle"),onLayerChange:r(e,"onLayerChange"),getLayerGroup:t(e,"getLayerGroup"),getLayerGroups:t(e,"getLayerGroups"),setLayerGroupVisibility:t(e,"setLayerGroupVisibility"),onLayerGroupChange:r(e,"onLayerGroupChange"),getLegendItem:t(e,"getLegendItem"),getLegendItems:t(e,"getLegendItems"),setLegendItemVisibility:t(e,"setLegendItemVisibility"),onLegendItemChange:r(e,"onLegendItemChange"),getLayerFilters:t(e,"getLayerFilters"),setLayerFilters:t(e,"setLayerFilters"),getRenderedFeatures:t(e,"getRenderedFeatures")});var L=e=>({onSelectionChange:r(e,"onSelectionChange"),getSelection:t(e,"getSelection")});var h=e=>({updateUiControls:t(e,"updateUiControls"),setOnMapInteractionsUi:t(e,"setOnMapInteractionsUi")});var E=e=>({getViewport:t(e,"getViewport"),setViewport:t(e,"setViewport"),fitViewportToBounds:t(e,"fitViewportToBounds"),onViewportMove:r(e,"onViewportMove"),onViewportMoveEnd:r(e,"onViewportMoveEnd"),onMapIdle:r(e,"onMapIdle")});function v(e){return{iframe:null,...E(e),...h(e),...C(e),...g(e),...L(e),...u(e)}}var P={embed(e,m,l){let o={uiControls:{showLegend:!0,cooperativeGestures:!0,fullScreenButton:!0,geolocation:!1,zoomControls:!0,scaleBar:!0},initialViewport:void 0,origin:"https://felt.com"},i={showLegend:"legend",cooperativeGestures:"cooperativeGestures",fullScreenButton:"link",geolocation:"geolocation",zoomControls:"zoomControls",scaleBar:"scaleBar"},n={...o.uiControls,...l?.uiControls},s=l?.origin??o.origin,d=new URL(`${s}/embed/map/${m}`);for(let[p,y]of V(n))y!=null&&d.searchParams.set(i[p],y?"1":"0");if(l?.initialViewport){let p=l.initialViewport;d.searchParams.set("loc",`${p.center.latitude},${p.center.longitude},${p.zoom}z`)}let c=e.tagName==="IFRAME",a=c?e:e.ownerDocument.createElement("iframe");return a.src=d.toString(),c||(a.style.width="100%",a.style.height="100%",a.style.border="none",a.style.margin="0",e.appendChild(a)),a.referrerPolicy="strict-origin-when-cross-origin",new Promise((p,y)=>{a.addEventListener("load",()=>{a.contentWindow==null?y(new Error("Failed to load Felt map")):p(a.contentWindow)},{once:!0})}).then(P.connect).then(p=>(Object.defineProperties(p,{iframe:{value:a,writable:!1,configurable:!1}}),p))},connect(e){let m=v(e);return new Promise((l,o)=>{let i=setTimeout(()=>{o(new Error("Failed to load Felt map")),clearInterval(s)},5e3),n=new MessageChannel,s=setInterval(()=>{e.postMessage({type:"felt.ready"},"*",[n.port2])},100);n.port1.onmessage=d=>{d.data===!0&&(clearInterval(s),clearTimeout(i),n.port1.close(),n.port2.close(),l(m))}})}},V=Object.entries;export{P as Felt};
package/dist/handler.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var C=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var le=(e,n)=>{for(var u in n)C(e,u,{get:n[u],enumerable:!0})},pe=(e,n,u,S)=>{if(n&&typeof n=="object"||typeof n=="function")for(let y of ae(n))!ie.call(e,y)&&y!==u&&C(e,y,{get:()=>n[y],enumerable:!(S=se(n,y))||S.enumerable});return e};var me=e=>pe(C({},"__esModule",{value:!0}),e);var nt={};le(nt,{createMessageHandler:()=>Qe});module.exports=me(nt);var i=require("zod");var g=require("zod");var c=require("zod");function t(e,n){return c.z.strictObject({type:c.z.literal(e),params:n})}function f(e,n){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string(),options:n})}function d(e){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string()})}var p=require("zod"),z=p.z.number(),E=p.z.number(),w=p.z.object({latitude:E,longitude:z}),O=p.z.number().min(1).max(23),T=p.z.tuple([z,E,z,E]),b=p.z.object({show:p.z.array(p.z.string()).optional(),hide:p.z.array(p.z.string()).optional()});var h=require("zod"),j=h.z.object({ids:h.z.array(h.z.string()).optional()}),k=h.z.object({ids:h.z.array(h.z.string()).optional()});var ce=t("getElement",g.z.string()),ye=t("getElementGeometry",g.z.string()),de=t("getElements",j.optional()),ge=t("getElementGroup",g.z.string()),ue=t("getElementGroups",k.optional()),fe=t("setElementGroupVisibility",b),he=f("onElementChange",g.z.object({id:g.z.string()})),Se=f("onElementGroupChange",g.z.object({id:g.z.string()})),R={methods:[ce,ye,de,ge,ue,fe],listeners:[he,Se]};var Me=d("onPointerClick"),Le=d("onPointerMove"),U={methods:null,listeners:[Me,Le]};var s=require("zod");var o=require("zod"),be=o.z.enum(["in","ni"]),Ge=o.z.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),ut=o.z.enum(["and","or"]),B=o.z.union([o.z.number(),o.z.string(),o.z.boolean(),o.z.null()]),Z=o.z.string().or(o.z.null()),Ie=o.z.tuple([Z,be,o.z.array(B).or(o.z.null())]),xe=o.z.tuple([Z,Ge,B]),F=o.z.union([Ie,xe]),v=o.z.tuple([o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()])),o.z.enum(["and","or"]),o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()]))]),N=o.z.union([v,F,o.z.null(),o.z.boolean()]);var r=require("zod"),ht=r.z.enum(["processing","completed","failed","incomplete"]),A=r.z.object({ids:r.z.array(r.z.string()).optional()}),q=r.z.object({ids:r.z.array(r.z.string()).optional()}),M=r.z.object({id:r.z.string(),layerId:r.z.string()}),H=r.z.object({ids:M.array().optional(),layerIds:r.z.string().array().optional()}),_=r.z.object({layerIds:r.z.array(r.z.string()).optional()});var Ce=t("getLayer",s.z.string()),ze=t("getLayers",A.optional()),Ee=t("setLayerVisibility",b),Fe=f("onLayerChange",s.z.object({id:s.z.string()})),ve=t("setLayerStyle",s.z.object({id:s.z.string(),style:s.z.object({}).passthrough()})),Ve=t("getLayerGroup",s.z.string()),Pe=t("getLayerGroups",q.optional()),we=t("setLayerGroupVisibility",b),Oe=f("onLayerGroupChange",s.z.object({id:s.z.string()})),Te=t("getLegendItem",M),je=t("getLegendItems",H.optional()),ke=f("onLegendItemChange",M),Re=t("setLegendItemVisibility",s.z.object({show:M.array().optional(),hide:M.array().optional()})),Ue=t("getLayerFilters",s.z.string()),Be=t("setLayerFilters",s.z.object({layerId:s.z.string(),filters:N})),Ze=t("getRenderedFeatures",_.optional()),W={methods:[Ce,ze,Ee,ve,Ve,Pe,we,Te,je,Re,Ue,Be,Ze],listeners:[Fe,Oe,ke]};var D=require("zod");var Ne=t("getSelection",D.z.undefined()),Ae=d("onSelectionChange"),J={methods:[Ne],listeners:[Ae]};var a=require("zod"),K=a.z.object({showLegend:a.z.boolean().optional(),cooperativeGestures:a.z.boolean().optional(),fullScreenButton:a.z.boolean().optional(),geolocation:a.z.boolean().optional(),zoomControls:a.z.boolean().optional(),scaleBar:a.z.boolean().optional()}),Q=a.z.object({featureSelectPanel:a.z.boolean().optional(),featureHoverPanel:a.z.boolean().optional(),elementSelectPanel:a.z.boolean().optional(),linkClickOpen:a.z.boolean().optional(),imageLightboxOpen:a.z.boolean().optional()});var qe=t("updateUiControls",K),He=t("setOnMapInteractionsUi",Q),X={methods:[qe,He],listeners:null};var te=require("zod");var G=require("zod");var Y=G.z.object({center:w,zoom:O}),$=G.z.object({center:Y.shape.center.optional(),zoom:Y.shape.zoom.optional()}),ee=G.z.object({bounds:T});var _e=t("getViewport",te.z.undefined()),We=t("setViewport",$),De=t("fitViewportToBounds",ee),Je=d("onViewportMove"),Ke=d("onViewportMoveEnd"),oe={methods:[We,_e,De],listeners:[Je,Ke]};var V=[X,oe,W,R,J,U];function Qe(e,n,u){let S=new Map;async function y(m){if(!ot.safeParse(m.data).success){u?.onUnknownMessage?.(m.data);return}let P=re.safeParse(m.data);if(!P.success){u?.onInvalidMessage?.(m.data);return}let{data:l}=P;if(l.type==="felt.ready")m.ports[0]?.postMessage(!0);else if(l.type==="felt.addListener"){if(l.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let L="options"in l.event?{options:"options"in l.event?l.event.options:void 0,handler:x=>{m.ports[0]?.postMessage(x)}}:{handler:x=>{m.ports[0]?.postMessage(x)}},I=n.listeners[l.event.eventName](L);S.set(l.event.id,I)}else if(l.type==="felt.removeListener")S.get(l.id)?.(),S.delete(l.id);else try{let L=n.methods[l.type],I=await L(l.params);m.ports[0]?.postMessage(I)}catch(L){m.ports[0]?.postMessage({__error__:Xe(L)})}}return e.addEventListener("message",y),()=>{e.removeEventListener("message",y)}}function Xe(e){return e instanceof Error?e.message:typeof e=="object"&&e!==null&&"message"in e?String(e.message):typeof e=="string"?e:"Unknown error"}var ne={methods:V.map(e=>e.methods??[]).flat(),listeners:V.map(e=>e.listeners??[]).flat()},Ye=i.z.discriminatedUnion("eventName",[i.z.strictObject({eventName:i.z.literal("")}),...ne.listeners]),$e=i.z.strictObject({type:i.z.literal("felt.addListener"),event:Ye}),et=i.z.strictObject({type:i.z.literal("felt.removeListener"),id:i.z.string()}),tt=i.z.strictObject({type:i.z.literal("felt.ready")}),re=i.z.discriminatedUnion("type",[tt,$e,et,...ne.methods]),ot=i.z.object({type:i.z.enum(re.options.map(e=>e.shape.type.value))});0&&(module.exports={createMessageHandler});
1
+ "use strict";var C=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var le=(e,n)=>{for(var u in n)C(e,u,{get:n[u],enumerable:!0})},pe=(e,n,u,M)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of ae(n))!ie.call(e,d)&&d!==u&&C(e,d,{get:()=>n[d],enumerable:!(M=se(n,d))||M.enumerable});return e};var me=e=>pe(C({},"__esModule",{value:!0}),e);var rt={};le(rt,{createMessageHandler:()=>Xe});module.exports=me(rt);var i=require("zod");var g=require("zod");var c=require("zod");function t(e,n){return c.z.strictObject({type:c.z.literal(e),params:n})}function f(e,n){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string(),options:n})}function y(e){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string()})}var p=require("zod"),z=p.z.number(),E=p.z.number(),w=p.z.object({latitude:E,longitude:z}),O=p.z.number().min(1).max(23),T=p.z.tuple([z,E,z,E]),b=p.z.object({show:p.z.array(p.z.string()).optional(),hide:p.z.array(p.z.string()).optional()});var h=require("zod"),j=h.z.object({ids:h.z.array(h.z.string()).optional()}),k=h.z.object({ids:h.z.array(h.z.string()).optional()});var ce=t("getElement",g.z.string()),ye=t("getElementGeometry",g.z.string()),de=t("getElements",j.optional()),ge=t("getElementGroup",g.z.string()),ue=t("getElementGroups",k.optional()),fe=t("setElementGroupVisibility",b),he=f("onElementChange",g.z.object({id:g.z.string()})),Me=f("onElementGroupChange",g.z.object({id:g.z.string()})),R={methods:[ce,ye,de,ge,ue,fe],listeners:[he,Me]};var Se=y("onPointerClick"),Le=y("onPointerMove"),U={methods:null,listeners:[Se,Le]};var s=require("zod");var o=require("zod"),be=o.z.enum(["in","ni"]),Ge=o.z.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),ft=o.z.enum(["and","or"]),B=o.z.union([o.z.number(),o.z.string(),o.z.boolean(),o.z.null()]),Z=o.z.string().or(o.z.null()),Ie=o.z.tuple([Z,be,o.z.array(B).or(o.z.null())]),xe=o.z.tuple([Z,Ge,B]),F=o.z.union([Ie,xe]),v=o.z.tuple([o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()])),o.z.enum(["and","or"]),o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()]))]),N=o.z.union([v,F,o.z.null(),o.z.boolean()]);var r=require("zod"),Mt=r.z.enum(["processing","completed","failed","incomplete"]),A=r.z.object({ids:r.z.array(r.z.string()).optional()}),q=r.z.object({ids:r.z.array(r.z.string()).optional()}),S=r.z.object({id:r.z.string(),layerId:r.z.string()}),H=r.z.object({ids:S.array().optional(),layerIds:r.z.string().array().optional()}),_=r.z.object({layerIds:r.z.array(r.z.string()).optional()});var Ce=t("getLayer",s.z.string()),ze=t("getLayers",A.optional()),Ee=t("setLayerVisibility",b),Fe=f("onLayerChange",s.z.object({id:s.z.string()})),ve=t("setLayerStyle",s.z.object({id:s.z.string(),style:s.z.object({}).passthrough()})),Ve=t("getLayerGroup",s.z.string()),Pe=t("getLayerGroups",q.optional()),we=t("setLayerGroupVisibility",b),Oe=f("onLayerGroupChange",s.z.object({id:s.z.string()})),Te=t("getLegendItem",S),je=t("getLegendItems",H.optional()),ke=f("onLegendItemChange",S),Re=t("setLegendItemVisibility",s.z.object({show:S.array().optional(),hide:S.array().optional()})),Ue=t("getLayerFilters",s.z.string()),Be=t("setLayerFilters",s.z.object({layerId:s.z.string(),filters:N})),Ze=t("getRenderedFeatures",_.optional()),W={methods:[Ce,ze,Ee,ve,Ve,Pe,we,Te,je,Re,Ue,Be,Ze],listeners:[Fe,Oe,ke]};var D=require("zod");var Ne=t("getSelection",D.z.undefined()),Ae=y("onSelectionChange"),J={methods:[Ne],listeners:[Ae]};var a=require("zod"),K=a.z.object({showLegend:a.z.boolean().optional(),cooperativeGestures:a.z.boolean().optional(),fullScreenButton:a.z.boolean().optional(),geolocation:a.z.boolean().optional(),zoomControls:a.z.boolean().optional(),scaleBar:a.z.boolean().optional()}),Q=a.z.object({featureSelectPanel:a.z.boolean().optional(),featureHoverPanel:a.z.boolean().optional(),elementSelectPanel:a.z.boolean().optional(),linkClickOpen:a.z.boolean().optional(),imageLightboxOpen:a.z.boolean().optional()});var qe=t("updateUiControls",K),He=t("setOnMapInteractionsUi",Q),X={methods:[qe,He],listeners:null};var te=require("zod");var G=require("zod");var Y=G.z.object({center:w,zoom:O}),$=G.z.object({center:Y.shape.center.optional(),zoom:Y.shape.zoom.optional()}),ee=G.z.object({bounds:T});var _e=t("getViewport",te.z.undefined()),We=t("setViewport",$),De=t("fitViewportToBounds",ee),Je=y("onViewportMove"),Ke=y("onViewportMoveEnd"),Qe=y("onMapIdle"),oe={methods:[We,_e,De],listeners:[Je,Ke,Qe]};var V=[X,oe,W,R,J,U];function Xe(e,n,u){let M=new Map;async function d(m){if(!nt.safeParse(m.data).success){u?.onUnknownMessage?.(m.data);return}let P=re.safeParse(m.data);if(!P.success){u?.onInvalidMessage?.(m.data);return}let{data:l}=P;if(l.type==="felt.ready")m.ports[0]?.postMessage(!0);else if(l.type==="felt.addListener"){if(l.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let L="options"in l.event?{options:"options"in l.event?l.event.options:void 0,handler:x=>{m.ports[0]?.postMessage(x)}}:{handler:x=>{m.ports[0]?.postMessage(x)}},I=n.listeners[l.event.eventName](L);M.set(l.event.id,I)}else if(l.type==="felt.removeListener")M.get(l.id)?.(),M.delete(l.id);else try{let L=n.methods[l.type],I=await L(l.params);m.ports[0]?.postMessage(I)}catch(L){m.ports[0]?.postMessage({__error__:Ye(L)})}}return e.addEventListener("message",d),()=>{e.removeEventListener("message",d)}}function Ye(e){return e instanceof Error?e.message:typeof e=="object"&&e!==null&&"message"in e?String(e.message):typeof e=="string"?e:"Unknown error"}var ne={methods:V.map(e=>e.methods??[]).flat(),listeners:V.map(e=>e.listeners??[]).flat()},$e=i.z.discriminatedUnion("eventName",[i.z.strictObject({eventName:i.z.literal("")}),...ne.listeners]),et=i.z.strictObject({type:i.z.literal("felt.addListener"),event:$e}),tt=i.z.strictObject({type:i.z.literal("felt.removeListener"),id:i.z.string()}),ot=i.z.strictObject({type:i.z.literal("felt.ready")}),re=i.z.discriminatedUnion("type",[ot,et,tt,...ne.methods]),nt=i.z.object({type:i.z.enum(re.options.map(e=>e.shape.type.value))});0&&(module.exports={createMessageHandler});
@@ -810,6 +810,7 @@ type ViewportSchema = {
810
810
  listeners: {
811
811
  onViewportMove: Listener<void, ViewportState>;
812
812
  onViewportMoveEnd: Listener<void, ViewportState>;
813
+ onMapIdle: Listener<void, void>;
813
814
  };
814
815
  };
815
816
 
package/dist/handler.d.ts CHANGED
@@ -810,6 +810,7 @@ type ViewportSchema = {
810
810
  listeners: {
811
811
  onViewportMove: Listener<void, ViewportState>;
812
812
  onViewportMoveEnd: Listener<void, ViewportState>;
813
+ onMapIdle: Listener<void, void>;
813
814
  };
814
815
  };
815
816
 
package/dist/handler.js CHANGED
@@ -1 +1 @@
1
- import{z as i}from"zod";import{z as d}from"zod";import{z as m}from"zod";function e(o,g){return m.strictObject({type:m.literal(o),params:g})}function y(o,g){return m.strictObject({eventName:m.literal(o),id:m.string(),options:g})}function c(o){return m.strictObject({eventName:m.literal(o),id:m.string()})}import{z as l}from"zod";var G=l.number(),I=l.number(),P=l.object({latitude:I,longitude:G}),w=l.number().min(1).max(23),O=l.tuple([G,I,G,I]),S=l.object({show:l.array(l.string()).optional(),hide:l.array(l.string()).optional()});import{z as u}from"zod";var T=u.object({ids:u.array(u.string()).optional()}),j=u.object({ids:u.array(u.string()).optional()});var oe=e("getElement",d.string()),ne=e("getElementGeometry",d.string()),re=e("getElements",T.optional()),se=e("getElementGroup",d.string()),ae=e("getElementGroups",j.optional()),ie=e("setElementGroupVisibility",S),le=y("onElementChange",d.object({id:d.string()})),pe=y("onElementGroupChange",d.object({id:d.string()})),k={methods:[oe,ne,re,se,ae,ie],listeners:[le,pe]};var me=c("onPointerClick"),ce=c("onPointerMove"),R={methods:null,listeners:[me,ce]};import{z as s}from"zod";import{z as t}from"zod";var ye=t.enum(["in","ni"]),de=t.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),mt=t.enum(["and","or"]),U=t.union([t.number(),t.string(),t.boolean(),t.null()]),B=t.string().or(t.null()),ge=t.tuple([B,ye,t.array(U).or(t.null())]),ue=t.tuple([B,de,U]),x=t.union([ge,ue]),C=t.tuple([t.lazy(()=>t.union([C,x,t.null(),t.boolean()])),t.enum(["and","or"]),t.lazy(()=>t.union([C,x,t.null(),t.boolean()]))]),Z=t.union([C,x,t.null(),t.boolean()]);import{z as n}from"zod";var dt=n.enum(["processing","completed","failed","incomplete"]),N=n.object({ids:n.array(n.string()).optional()}),A=n.object({ids:n.array(n.string()).optional()}),f=n.object({id:n.string(),layerId:n.string()}),q=n.object({ids:f.array().optional(),layerIds:n.string().array().optional()}),H=n.object({layerIds:n.array(n.string()).optional()});var fe=e("getLayer",s.string()),he=e("getLayers",N.optional()),Se=e("setLayerVisibility",S),Me=y("onLayerChange",s.object({id:s.string()})),Le=e("setLayerStyle",s.object({id:s.string(),style:s.object({}).passthrough()})),be=e("getLayerGroup",s.string()),Ge=e("getLayerGroups",A.optional()),Ie=e("setLayerGroupVisibility",S),xe=y("onLayerGroupChange",s.object({id:s.string()})),Ce=e("getLegendItem",f),ze=e("getLegendItems",q.optional()),Ee=y("onLegendItemChange",f),Fe=e("setLegendItemVisibility",s.object({show:f.array().optional(),hide:f.array().optional()})),ve=e("getLayerFilters",s.string()),Ve=e("setLayerFilters",s.object({layerId:s.string(),filters:Z})),Pe=e("getRenderedFeatures",H.optional()),_={methods:[fe,he,Se,Le,be,Ge,Ie,Ce,ze,Fe,ve,Ve,Pe],listeners:[Me,xe,Ee]};import{z as we}from"zod";var Oe=e("getSelection",we.undefined()),Te=c("onSelectionChange"),W={methods:[Oe],listeners:[Te]};import{z as a}from"zod";var D=a.object({showLegend:a.boolean().optional(),cooperativeGestures:a.boolean().optional(),fullScreenButton:a.boolean().optional(),geolocation:a.boolean().optional(),zoomControls:a.boolean().optional(),scaleBar:a.boolean().optional()}),J=a.object({featureSelectPanel:a.boolean().optional(),featureHoverPanel:a.boolean().optional(),elementSelectPanel:a.boolean().optional(),linkClickOpen:a.boolean().optional(),imageLightboxOpen:a.boolean().optional()});var je=e("updateUiControls",D),ke=e("setOnMapInteractionsUi",J),K={methods:[je,ke],listeners:null};import{z as Re}from"zod";import{z}from"zod";var Q=z.object({center:P,zoom:w}),X=z.object({center:Q.shape.center.optional(),zoom:Q.shape.zoom.optional()}),Y=z.object({bounds:O});var Ue=e("getViewport",Re.undefined()),Be=e("setViewport",X),Ze=e("fitViewportToBounds",Y),Ne=c("onViewportMove"),Ae=c("onViewportMoveEnd"),$={methods:[Be,Ue,Ze],listeners:[Ne,Ae]};var E=[K,$,_,k,W,R];function _t(o,g,F){let M=new Map;async function v(p){if(!Je.safeParse(p.data).success){F?.onUnknownMessage?.(p.data);return}let V=te.safeParse(p.data);if(!V.success){F?.onInvalidMessage?.(p.data);return}let{data:r}=V;if(r.type==="felt.ready")p.ports[0]?.postMessage(!0);else if(r.type==="felt.addListener"){if(r.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let h="options"in r.event?{options:"options"in r.event?r.event.options:void 0,handler:b=>{p.ports[0]?.postMessage(b)}}:{handler:b=>{p.ports[0]?.postMessage(b)}},L=g.listeners[r.event.eventName](h);M.set(r.event.id,L)}else if(r.type==="felt.removeListener")M.get(r.id)?.(),M.delete(r.id);else try{let h=g.methods[r.type],L=await h(r.params);p.ports[0]?.postMessage(L)}catch(h){p.ports[0]?.postMessage({__error__:qe(h)})}}return o.addEventListener("message",v),()=>{o.removeEventListener("message",v)}}function qe(o){return o instanceof Error?o.message:typeof o=="object"&&o!==null&&"message"in o?String(o.message):typeof o=="string"?o:"Unknown error"}var ee={methods:E.map(o=>o.methods??[]).flat(),listeners:E.map(o=>o.listeners??[]).flat()},He=i.discriminatedUnion("eventName",[i.strictObject({eventName:i.literal("")}),...ee.listeners]),_e=i.strictObject({type:i.literal("felt.addListener"),event:He}),We=i.strictObject({type:i.literal("felt.removeListener"),id:i.string()}),De=i.strictObject({type:i.literal("felt.ready")}),te=i.discriminatedUnion("type",[De,_e,We,...ee.methods]),Je=i.object({type:i.enum(te.options.map(o=>o.shape.type.value))});export{_t as createMessageHandler};
1
+ import{z as i}from"zod";import{z as d}from"zod";import{z as c}from"zod";function e(o,g){return c.strictObject({type:c.literal(o),params:g})}function y(o,g){return c.strictObject({eventName:c.literal(o),id:c.string(),options:g})}function m(o){return c.strictObject({eventName:c.literal(o),id:c.string()})}import{z as l}from"zod";var G=l.number(),I=l.number(),P=l.object({latitude:I,longitude:G}),w=l.number().min(1).max(23),O=l.tuple([G,I,G,I]),M=l.object({show:l.array(l.string()).optional(),hide:l.array(l.string()).optional()});import{z as u}from"zod";var T=u.object({ids:u.array(u.string()).optional()}),j=u.object({ids:u.array(u.string()).optional()});var oe=e("getElement",d.string()),ne=e("getElementGeometry",d.string()),re=e("getElements",T.optional()),se=e("getElementGroup",d.string()),ae=e("getElementGroups",j.optional()),ie=e("setElementGroupVisibility",M),le=y("onElementChange",d.object({id:d.string()})),pe=y("onElementGroupChange",d.object({id:d.string()})),k={methods:[oe,ne,re,se,ae,ie],listeners:[le,pe]};var me=m("onPointerClick"),ce=m("onPointerMove"),R={methods:null,listeners:[me,ce]};import{z as s}from"zod";import{z as t}from"zod";var ye=t.enum(["in","ni"]),de=t.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),ct=t.enum(["and","or"]),U=t.union([t.number(),t.string(),t.boolean(),t.null()]),B=t.string().or(t.null()),ge=t.tuple([B,ye,t.array(U).or(t.null())]),ue=t.tuple([B,de,U]),x=t.union([ge,ue]),C=t.tuple([t.lazy(()=>t.union([C,x,t.null(),t.boolean()])),t.enum(["and","or"]),t.lazy(()=>t.union([C,x,t.null(),t.boolean()]))]),Z=t.union([C,x,t.null(),t.boolean()]);import{z as n}from"zod";var gt=n.enum(["processing","completed","failed","incomplete"]),N=n.object({ids:n.array(n.string()).optional()}),A=n.object({ids:n.array(n.string()).optional()}),f=n.object({id:n.string(),layerId:n.string()}),q=n.object({ids:f.array().optional(),layerIds:n.string().array().optional()}),H=n.object({layerIds:n.array(n.string()).optional()});var fe=e("getLayer",s.string()),he=e("getLayers",N.optional()),Me=e("setLayerVisibility",M),Se=y("onLayerChange",s.object({id:s.string()})),Le=e("setLayerStyle",s.object({id:s.string(),style:s.object({}).passthrough()})),be=e("getLayerGroup",s.string()),Ge=e("getLayerGroups",A.optional()),Ie=e("setLayerGroupVisibility",M),xe=y("onLayerGroupChange",s.object({id:s.string()})),Ce=e("getLegendItem",f),ze=e("getLegendItems",q.optional()),Ee=y("onLegendItemChange",f),Fe=e("setLegendItemVisibility",s.object({show:f.array().optional(),hide:f.array().optional()})),ve=e("getLayerFilters",s.string()),Ve=e("setLayerFilters",s.object({layerId:s.string(),filters:Z})),Pe=e("getRenderedFeatures",H.optional()),_={methods:[fe,he,Me,Le,be,Ge,Ie,Ce,ze,Fe,ve,Ve,Pe],listeners:[Se,xe,Ee]};import{z as we}from"zod";var Oe=e("getSelection",we.undefined()),Te=m("onSelectionChange"),W={methods:[Oe],listeners:[Te]};import{z as a}from"zod";var D=a.object({showLegend:a.boolean().optional(),cooperativeGestures:a.boolean().optional(),fullScreenButton:a.boolean().optional(),geolocation:a.boolean().optional(),zoomControls:a.boolean().optional(),scaleBar:a.boolean().optional()}),J=a.object({featureSelectPanel:a.boolean().optional(),featureHoverPanel:a.boolean().optional(),elementSelectPanel:a.boolean().optional(),linkClickOpen:a.boolean().optional(),imageLightboxOpen:a.boolean().optional()});var je=e("updateUiControls",D),ke=e("setOnMapInteractionsUi",J),K={methods:[je,ke],listeners:null};import{z as Re}from"zod";import{z}from"zod";var Q=z.object({center:P,zoom:w}),X=z.object({center:Q.shape.center.optional(),zoom:Q.shape.zoom.optional()}),Y=z.object({bounds:O});var Ue=e("getViewport",Re.undefined()),Be=e("setViewport",X),Ze=e("fitViewportToBounds",Y),Ne=m("onViewportMove"),Ae=m("onViewportMoveEnd"),qe=m("onMapIdle"),$={methods:[Be,Ue,Ze],listeners:[Ne,Ae,qe]};var E=[K,$,_,k,W,R];function Wt(o,g,F){let S=new Map;async function v(p){if(!Ke.safeParse(p.data).success){F?.onUnknownMessage?.(p.data);return}let V=te.safeParse(p.data);if(!V.success){F?.onInvalidMessage?.(p.data);return}let{data:r}=V;if(r.type==="felt.ready")p.ports[0]?.postMessage(!0);else if(r.type==="felt.addListener"){if(r.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let h="options"in r.event?{options:"options"in r.event?r.event.options:void 0,handler:b=>{p.ports[0]?.postMessage(b)}}:{handler:b=>{p.ports[0]?.postMessage(b)}},L=g.listeners[r.event.eventName](h);S.set(r.event.id,L)}else if(r.type==="felt.removeListener")S.get(r.id)?.(),S.delete(r.id);else try{let h=g.methods[r.type],L=await h(r.params);p.ports[0]?.postMessage(L)}catch(h){p.ports[0]?.postMessage({__error__:He(h)})}}return o.addEventListener("message",v),()=>{o.removeEventListener("message",v)}}function He(o){return o instanceof Error?o.message:typeof o=="object"&&o!==null&&"message"in o?String(o.message):typeof o=="string"?o:"Unknown error"}var ee={methods:E.map(o=>o.methods??[]).flat(),listeners:E.map(o=>o.listeners??[]).flat()},_e=i.discriminatedUnion("eventName",[i.strictObject({eventName:i.literal("")}),...ee.listeners]),We=i.strictObject({type:i.literal("felt.addListener"),event:_e}),De=i.strictObject({type:i.literal("felt.removeListener"),id:i.string()}),Je=i.strictObject({type:i.literal("felt.ready")}),te=i.discriminatedUnion("type",[Je,We,De,...ee.methods]),Ke=i.object({type:i.enum(te.options.map(o=>o.shape.type.value))});export{Wt as createMessageHandler};
package/handler.d.ts CHANGED
@@ -810,6 +810,7 @@ type ViewportSchema = {
810
810
  listeners: {
811
811
  onViewportMove: Listener<void, ViewportState>;
812
812
  onViewportMoveEnd: Listener<void, ViewportState>;
813
+ onMapIdle: Listener<void, void>;
813
814
  };
814
815
  };
815
816
 
package/handler.js CHANGED
@@ -1 +1 @@
1
- "use strict";var C=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var le=(e,n)=>{for(var u in n)C(e,u,{get:n[u],enumerable:!0})},pe=(e,n,u,S)=>{if(n&&typeof n=="object"||typeof n=="function")for(let y of ae(n))!ie.call(e,y)&&y!==u&&C(e,y,{get:()=>n[y],enumerable:!(S=se(n,y))||S.enumerable});return e};var me=e=>pe(C({},"__esModule",{value:!0}),e);var nt={};le(nt,{createMessageHandler:()=>Qe});module.exports=me(nt);var i=require("zod");var g=require("zod");var c=require("zod");function t(e,n){return c.z.strictObject({type:c.z.literal(e),params:n})}function f(e,n){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string(),options:n})}function d(e){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string()})}var p=require("zod"),z=p.z.number(),E=p.z.number(),w=p.z.object({latitude:E,longitude:z}),O=p.z.number().min(1).max(23),T=p.z.tuple([z,E,z,E]),b=p.z.object({show:p.z.array(p.z.string()).optional(),hide:p.z.array(p.z.string()).optional()});var h=require("zod"),j=h.z.object({ids:h.z.array(h.z.string()).optional()}),k=h.z.object({ids:h.z.array(h.z.string()).optional()});var ce=t("getElement",g.z.string()),ye=t("getElementGeometry",g.z.string()),de=t("getElements",j.optional()),ge=t("getElementGroup",g.z.string()),ue=t("getElementGroups",k.optional()),fe=t("setElementGroupVisibility",b),he=f("onElementChange",g.z.object({id:g.z.string()})),Se=f("onElementGroupChange",g.z.object({id:g.z.string()})),R={methods:[ce,ye,de,ge,ue,fe],listeners:[he,Se]};var Me=d("onPointerClick"),Le=d("onPointerMove"),U={methods:null,listeners:[Me,Le]};var s=require("zod");var o=require("zod"),be=o.z.enum(["in","ni"]),Ge=o.z.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),ut=o.z.enum(["and","or"]),B=o.z.union([o.z.number(),o.z.string(),o.z.boolean(),o.z.null()]),Z=o.z.string().or(o.z.null()),Ie=o.z.tuple([Z,be,o.z.array(B).or(o.z.null())]),xe=o.z.tuple([Z,Ge,B]),F=o.z.union([Ie,xe]),v=o.z.tuple([o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()])),o.z.enum(["and","or"]),o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()]))]),N=o.z.union([v,F,o.z.null(),o.z.boolean()]);var r=require("zod"),ht=r.z.enum(["processing","completed","failed","incomplete"]),A=r.z.object({ids:r.z.array(r.z.string()).optional()}),q=r.z.object({ids:r.z.array(r.z.string()).optional()}),M=r.z.object({id:r.z.string(),layerId:r.z.string()}),H=r.z.object({ids:M.array().optional(),layerIds:r.z.string().array().optional()}),_=r.z.object({layerIds:r.z.array(r.z.string()).optional()});var Ce=t("getLayer",s.z.string()),ze=t("getLayers",A.optional()),Ee=t("setLayerVisibility",b),Fe=f("onLayerChange",s.z.object({id:s.z.string()})),ve=t("setLayerStyle",s.z.object({id:s.z.string(),style:s.z.object({}).passthrough()})),Ve=t("getLayerGroup",s.z.string()),Pe=t("getLayerGroups",q.optional()),we=t("setLayerGroupVisibility",b),Oe=f("onLayerGroupChange",s.z.object({id:s.z.string()})),Te=t("getLegendItem",M),je=t("getLegendItems",H.optional()),ke=f("onLegendItemChange",M),Re=t("setLegendItemVisibility",s.z.object({show:M.array().optional(),hide:M.array().optional()})),Ue=t("getLayerFilters",s.z.string()),Be=t("setLayerFilters",s.z.object({layerId:s.z.string(),filters:N})),Ze=t("getRenderedFeatures",_.optional()),W={methods:[Ce,ze,Ee,ve,Ve,Pe,we,Te,je,Re,Ue,Be,Ze],listeners:[Fe,Oe,ke]};var D=require("zod");var Ne=t("getSelection",D.z.undefined()),Ae=d("onSelectionChange"),J={methods:[Ne],listeners:[Ae]};var a=require("zod"),K=a.z.object({showLegend:a.z.boolean().optional(),cooperativeGestures:a.z.boolean().optional(),fullScreenButton:a.z.boolean().optional(),geolocation:a.z.boolean().optional(),zoomControls:a.z.boolean().optional(),scaleBar:a.z.boolean().optional()}),Q=a.z.object({featureSelectPanel:a.z.boolean().optional(),featureHoverPanel:a.z.boolean().optional(),elementSelectPanel:a.z.boolean().optional(),linkClickOpen:a.z.boolean().optional(),imageLightboxOpen:a.z.boolean().optional()});var qe=t("updateUiControls",K),He=t("setOnMapInteractionsUi",Q),X={methods:[qe,He],listeners:null};var te=require("zod");var G=require("zod");var Y=G.z.object({center:w,zoom:O}),$=G.z.object({center:Y.shape.center.optional(),zoom:Y.shape.zoom.optional()}),ee=G.z.object({bounds:T});var _e=t("getViewport",te.z.undefined()),We=t("setViewport",$),De=t("fitViewportToBounds",ee),Je=d("onViewportMove"),Ke=d("onViewportMoveEnd"),oe={methods:[We,_e,De],listeners:[Je,Ke]};var V=[X,oe,W,R,J,U];function Qe(e,n,u){let S=new Map;async function y(m){if(!ot.safeParse(m.data).success){u?.onUnknownMessage?.(m.data);return}let P=re.safeParse(m.data);if(!P.success){u?.onInvalidMessage?.(m.data);return}let{data:l}=P;if(l.type==="felt.ready")m.ports[0]?.postMessage(!0);else if(l.type==="felt.addListener"){if(l.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let L="options"in l.event?{options:"options"in l.event?l.event.options:void 0,handler:x=>{m.ports[0]?.postMessage(x)}}:{handler:x=>{m.ports[0]?.postMessage(x)}},I=n.listeners[l.event.eventName](L);S.set(l.event.id,I)}else if(l.type==="felt.removeListener")S.get(l.id)?.(),S.delete(l.id);else try{let L=n.methods[l.type],I=await L(l.params);m.ports[0]?.postMessage(I)}catch(L){m.ports[0]?.postMessage({__error__:Xe(L)})}}return e.addEventListener("message",y),()=>{e.removeEventListener("message",y)}}function Xe(e){return e instanceof Error?e.message:typeof e=="object"&&e!==null&&"message"in e?String(e.message):typeof e=="string"?e:"Unknown error"}var ne={methods:V.map(e=>e.methods??[]).flat(),listeners:V.map(e=>e.listeners??[]).flat()},Ye=i.z.discriminatedUnion("eventName",[i.z.strictObject({eventName:i.z.literal("")}),...ne.listeners]),$e=i.z.strictObject({type:i.z.literal("felt.addListener"),event:Ye}),et=i.z.strictObject({type:i.z.literal("felt.removeListener"),id:i.z.string()}),tt=i.z.strictObject({type:i.z.literal("felt.ready")}),re=i.z.discriminatedUnion("type",[tt,$e,et,...ne.methods]),ot=i.z.object({type:i.z.enum(re.options.map(e=>e.shape.type.value))});0&&(module.exports={createMessageHandler});
1
+ "use strict";var C=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var le=(e,n)=>{for(var u in n)C(e,u,{get:n[u],enumerable:!0})},pe=(e,n,u,M)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of ae(n))!ie.call(e,d)&&d!==u&&C(e,d,{get:()=>n[d],enumerable:!(M=se(n,d))||M.enumerable});return e};var me=e=>pe(C({},"__esModule",{value:!0}),e);var rt={};le(rt,{createMessageHandler:()=>Xe});module.exports=me(rt);var i=require("zod");var g=require("zod");var c=require("zod");function t(e,n){return c.z.strictObject({type:c.z.literal(e),params:n})}function f(e,n){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string(),options:n})}function y(e){return c.z.strictObject({eventName:c.z.literal(e),id:c.z.string()})}var p=require("zod"),z=p.z.number(),E=p.z.number(),w=p.z.object({latitude:E,longitude:z}),O=p.z.number().min(1).max(23),T=p.z.tuple([z,E,z,E]),b=p.z.object({show:p.z.array(p.z.string()).optional(),hide:p.z.array(p.z.string()).optional()});var h=require("zod"),j=h.z.object({ids:h.z.array(h.z.string()).optional()}),k=h.z.object({ids:h.z.array(h.z.string()).optional()});var ce=t("getElement",g.z.string()),ye=t("getElementGeometry",g.z.string()),de=t("getElements",j.optional()),ge=t("getElementGroup",g.z.string()),ue=t("getElementGroups",k.optional()),fe=t("setElementGroupVisibility",b),he=f("onElementChange",g.z.object({id:g.z.string()})),Me=f("onElementGroupChange",g.z.object({id:g.z.string()})),R={methods:[ce,ye,de,ge,ue,fe],listeners:[he,Me]};var Se=y("onPointerClick"),Le=y("onPointerMove"),U={methods:null,listeners:[Se,Le]};var s=require("zod");var o=require("zod"),be=o.z.enum(["in","ni"]),Ge=o.z.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),ft=o.z.enum(["and","or"]),B=o.z.union([o.z.number(),o.z.string(),o.z.boolean(),o.z.null()]),Z=o.z.string().or(o.z.null()),Ie=o.z.tuple([Z,be,o.z.array(B).or(o.z.null())]),xe=o.z.tuple([Z,Ge,B]),F=o.z.union([Ie,xe]),v=o.z.tuple([o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()])),o.z.enum(["and","or"]),o.z.lazy(()=>o.z.union([v,F,o.z.null(),o.z.boolean()]))]),N=o.z.union([v,F,o.z.null(),o.z.boolean()]);var r=require("zod"),Mt=r.z.enum(["processing","completed","failed","incomplete"]),A=r.z.object({ids:r.z.array(r.z.string()).optional()}),q=r.z.object({ids:r.z.array(r.z.string()).optional()}),S=r.z.object({id:r.z.string(),layerId:r.z.string()}),H=r.z.object({ids:S.array().optional(),layerIds:r.z.string().array().optional()}),_=r.z.object({layerIds:r.z.array(r.z.string()).optional()});var Ce=t("getLayer",s.z.string()),ze=t("getLayers",A.optional()),Ee=t("setLayerVisibility",b),Fe=f("onLayerChange",s.z.object({id:s.z.string()})),ve=t("setLayerStyle",s.z.object({id:s.z.string(),style:s.z.object({}).passthrough()})),Ve=t("getLayerGroup",s.z.string()),Pe=t("getLayerGroups",q.optional()),we=t("setLayerGroupVisibility",b),Oe=f("onLayerGroupChange",s.z.object({id:s.z.string()})),Te=t("getLegendItem",S),je=t("getLegendItems",H.optional()),ke=f("onLegendItemChange",S),Re=t("setLegendItemVisibility",s.z.object({show:S.array().optional(),hide:S.array().optional()})),Ue=t("getLayerFilters",s.z.string()),Be=t("setLayerFilters",s.z.object({layerId:s.z.string(),filters:N})),Ze=t("getRenderedFeatures",_.optional()),W={methods:[Ce,ze,Ee,ve,Ve,Pe,we,Te,je,Re,Ue,Be,Ze],listeners:[Fe,Oe,ke]};var D=require("zod");var Ne=t("getSelection",D.z.undefined()),Ae=y("onSelectionChange"),J={methods:[Ne],listeners:[Ae]};var a=require("zod"),K=a.z.object({showLegend:a.z.boolean().optional(),cooperativeGestures:a.z.boolean().optional(),fullScreenButton:a.z.boolean().optional(),geolocation:a.z.boolean().optional(),zoomControls:a.z.boolean().optional(),scaleBar:a.z.boolean().optional()}),Q=a.z.object({featureSelectPanel:a.z.boolean().optional(),featureHoverPanel:a.z.boolean().optional(),elementSelectPanel:a.z.boolean().optional(),linkClickOpen:a.z.boolean().optional(),imageLightboxOpen:a.z.boolean().optional()});var qe=t("updateUiControls",K),He=t("setOnMapInteractionsUi",Q),X={methods:[qe,He],listeners:null};var te=require("zod");var G=require("zod");var Y=G.z.object({center:w,zoom:O}),$=G.z.object({center:Y.shape.center.optional(),zoom:Y.shape.zoom.optional()}),ee=G.z.object({bounds:T});var _e=t("getViewport",te.z.undefined()),We=t("setViewport",$),De=t("fitViewportToBounds",ee),Je=y("onViewportMove"),Ke=y("onViewportMoveEnd"),Qe=y("onMapIdle"),oe={methods:[We,_e,De],listeners:[Je,Ke,Qe]};var V=[X,oe,W,R,J,U];function Xe(e,n,u){let M=new Map;async function d(m){if(!nt.safeParse(m.data).success){u?.onUnknownMessage?.(m.data);return}let P=re.safeParse(m.data);if(!P.success){u?.onInvalidMessage?.(m.data);return}let{data:l}=P;if(l.type==="felt.ready")m.ports[0]?.postMessage(!0);else if(l.type==="felt.addListener"){if(l.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let L="options"in l.event?{options:"options"in l.event?l.event.options:void 0,handler:x=>{m.ports[0]?.postMessage(x)}}:{handler:x=>{m.ports[0]?.postMessage(x)}},I=n.listeners[l.event.eventName](L);M.set(l.event.id,I)}else if(l.type==="felt.removeListener")M.get(l.id)?.(),M.delete(l.id);else try{let L=n.methods[l.type],I=await L(l.params);m.ports[0]?.postMessage(I)}catch(L){m.ports[0]?.postMessage({__error__:Ye(L)})}}return e.addEventListener("message",d),()=>{e.removeEventListener("message",d)}}function Ye(e){return e instanceof Error?e.message:typeof e=="object"&&e!==null&&"message"in e?String(e.message):typeof e=="string"?e:"Unknown error"}var ne={methods:V.map(e=>e.methods??[]).flat(),listeners:V.map(e=>e.listeners??[]).flat()},$e=i.z.discriminatedUnion("eventName",[i.z.strictObject({eventName:i.z.literal("")}),...ne.listeners]),et=i.z.strictObject({type:i.z.literal("felt.addListener"),event:$e}),tt=i.z.strictObject({type:i.z.literal("felt.removeListener"),id:i.z.string()}),ot=i.z.strictObject({type:i.z.literal("felt.ready")}),re=i.z.discriminatedUnion("type",[ot,et,tt,...ne.methods]),nt=i.z.object({type:i.z.enum(re.options.map(e=>e.shape.type.value))});0&&(module.exports={createMessageHandler});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feltmaps/js-sdk",
3
- "version": "1.1.0",
3
+ "version": "1.2.0-next.0",
4
4
  "description": "An SDK for Felt maps",
5
5
  "keywords": [
6
6
  "felt",