@feltmaps/js-sdk 1.0.2 → 1.1.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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  An SDK for Felt maps.
4
4
 
5
5
  - [Documentation](https://developers.felt.com/js-sdk)
6
- - [API Reference](https://developers.felt.com/js-api)
6
+ - [API Reference](https://developers.felt.com/js-sdk-api-reference)
7
7
 
8
8
  ## Quickstart
9
9
 
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 h=e=>({getLayer:t(e,"getLayer"),getLayers:t(e,"getLayers"),setLayerVisibility:t(e,"setLayerVisibility"),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 L=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),...h(e),...u(e),...L(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 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});
package/dist/client.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as Element, G as Geometry, a as GetElementsConstraint, b as ElementGroup, c as GetElementGroupsConstraint, S as SetVisibilityRequest, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, L as Layer, f as GetLayersConstraint, g as LayerChangeCallbackParams, h as LayerGroup, i as GetLayerGroupsConstraint, j as LayerGroupChangeCallbackParams, k as LegendItemIdentifier, l as LegendItem, m as LegendItemsConstraint, n as LegendItemChangeCallbackParams, o as LayerFilters, F as Filters, p as GetRenderedFeaturesConstraint, q as Feature, M as MapInteractionEvent, r as EntityNode, z as zInfer, V as ViewportState, s as SetViewportCenterZoomParams, t as ViewportFitBoundsParams, u as ViewportCenterZoom } from './types-0v6svQ9V.cjs';
2
- export { A as ElementGroupNode, B as ElementNode, C as FeatureNode, I as FeltBoundary, J as FeltZoom, w as FilterExpression, x as FilterLogicGate, y as FilterTernary, K as LatLng, D as LayerGroupNode, H as LayerNode, v as LayerProcessingStatus, N as LineStringGeometry, O as LngLatTuple, P as MultiLineStringGeometry, Q as MultiPolygonGeometry, T as PointGeometry, U as PolygonGeometry, R as RasterValue } from './types-0v6svQ9V.cjs';
1
+ import { E as Element, G as Geometry, a as GetElementsConstraint, b as ElementGroup, c as GetElementGroupsConstraint, S as SetVisibilityRequest, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, L as Layer, f as GetLayersConstraint, g as LayerChangeCallbackParams, h as LayerGroup, i as GetLayerGroupsConstraint, j as LayerGroupChangeCallbackParams, k as LegendItemIdentifier, l as LegendItem, m as LegendItemsConstraint, n as LegendItemChangeCallbackParams, o as LayerFilters, F as Filters, p as GetRenderedFeaturesConstraint, q as Feature, M as MapInteractionEvent, r as EntityNode, z as zInfer, V as ViewportState, s as SetViewportCenterZoomParams, t as ViewportFitBoundsParams, u as ViewportCenterZoom } from './types-BHqOjrOq.cjs';
2
+ export { A as ElementGroupNode, B as ElementNode, C as FeatureNode, I as FeltBoundary, J as FeltZoom, w as FilterExpression, x as FilterLogicGate, y as FilterTernary, K as LatLng, D as LayerGroupNode, H as LayerNode, v as LayerProcessingStatus, N as LineStringGeometry, O as LngLatTuple, P as MultiLineStringGeometry, Q as MultiPolygonGeometry, T as PointGeometry, U as PolygonGeometry, R as RasterValue } from './types-BHqOjrOq.cjs';
3
3
  import { z } from 'zod';
4
4
 
5
5
  /**
@@ -202,6 +202,43 @@ interface LayersController {
202
202
  * ```
203
203
  */
204
204
  setLayerVisibility(visibility: SetVisibilityRequest): Promise<void>;
205
+ /**
206
+ * Set the style for a layer using FSL, the Felt Style Language.
207
+ *
208
+ * Changes are only for this session, and not persisted. This is useful to make
209
+ * temporary changes to a layer's style, such as to highlight a particular layer
210
+ * or feature.
211
+ *
212
+ * See the [FSL documentation](https://developers.felt.com/felt-style-language) for details
213
+ * on how to read and write styles.
214
+ *
215
+ * If the style you set is invalid, you will receive an error explaining the problem
216
+ * in the rejected promise value.
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * // first get the current style
221
+ * const oldStyle = (await felt.getLayer("layer-1")).style;
222
+ *
223
+ * felt.setLayerStyle({ id: "layer-1", style: {
224
+ * ...oldStyle,
225
+ * paint: {
226
+ * ...oldStyle.paint,
227
+ * color: "red",
228
+ * },
229
+ * } });
230
+ * ```
231
+ */
232
+ setLayerStyle(params: {
233
+ /**
234
+ * The id of the layer to set the style for.
235
+ */
236
+ id: string;
237
+ /**
238
+ * The style to set for the layer.
239
+ */
240
+ style: object;
241
+ }): Promise<void>;
205
242
  /**
206
243
  * Adds a listener for when a layer changes.
207
244
  *
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as Element, G as Geometry, a as GetElementsConstraint, b as ElementGroup, c as GetElementGroupsConstraint, S as SetVisibilityRequest, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, L as Layer, f as GetLayersConstraint, g as LayerChangeCallbackParams, h as LayerGroup, i as GetLayerGroupsConstraint, j as LayerGroupChangeCallbackParams, k as LegendItemIdentifier, l as LegendItem, m as LegendItemsConstraint, n as LegendItemChangeCallbackParams, o as LayerFilters, F as Filters, p as GetRenderedFeaturesConstraint, q as Feature, M as MapInteractionEvent, r as EntityNode, z as zInfer, V as ViewportState, s as SetViewportCenterZoomParams, t as ViewportFitBoundsParams, u as ViewportCenterZoom } from './types-0v6svQ9V.js';
2
- export { A as ElementGroupNode, B as ElementNode, C as FeatureNode, I as FeltBoundary, J as FeltZoom, w as FilterExpression, x as FilterLogicGate, y as FilterTernary, K as LatLng, D as LayerGroupNode, H as LayerNode, v as LayerProcessingStatus, N as LineStringGeometry, O as LngLatTuple, P as MultiLineStringGeometry, Q as MultiPolygonGeometry, T as PointGeometry, U as PolygonGeometry, R as RasterValue } from './types-0v6svQ9V.js';
1
+ import { E as Element, G as Geometry, a as GetElementsConstraint, b as ElementGroup, c as GetElementGroupsConstraint, S as SetVisibilityRequest, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, L as Layer, f as GetLayersConstraint, g as LayerChangeCallbackParams, h as LayerGroup, i as GetLayerGroupsConstraint, j as LayerGroupChangeCallbackParams, k as LegendItemIdentifier, l as LegendItem, m as LegendItemsConstraint, n as LegendItemChangeCallbackParams, o as LayerFilters, F as Filters, p as GetRenderedFeaturesConstraint, q as Feature, M as MapInteractionEvent, r as EntityNode, z as zInfer, V as ViewportState, s as SetViewportCenterZoomParams, t as ViewportFitBoundsParams, u as ViewportCenterZoom } from './types-BHqOjrOq.js';
2
+ export { A as ElementGroupNode, B as ElementNode, C as FeatureNode, I as FeltBoundary, J as FeltZoom, w as FilterExpression, x as FilterLogicGate, y as FilterTernary, K as LatLng, D as LayerGroupNode, H as LayerNode, v as LayerProcessingStatus, N as LineStringGeometry, O as LngLatTuple, P as MultiLineStringGeometry, Q as MultiPolygonGeometry, T as PointGeometry, U as PolygonGeometry, R as RasterValue } from './types-BHqOjrOq.js';
3
3
  import { z } from 'zod';
4
4
 
5
5
  /**
@@ -202,6 +202,43 @@ interface LayersController {
202
202
  * ```
203
203
  */
204
204
  setLayerVisibility(visibility: SetVisibilityRequest): Promise<void>;
205
+ /**
206
+ * Set the style for a layer using FSL, the Felt Style Language.
207
+ *
208
+ * Changes are only for this session, and not persisted. This is useful to make
209
+ * temporary changes to a layer's style, such as to highlight a particular layer
210
+ * or feature.
211
+ *
212
+ * See the [FSL documentation](https://developers.felt.com/felt-style-language) for details
213
+ * on how to read and write styles.
214
+ *
215
+ * If the style you set is invalid, you will receive an error explaining the problem
216
+ * in the rejected promise value.
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * // first get the current style
221
+ * const oldStyle = (await felt.getLayer("layer-1")).style;
222
+ *
223
+ * felt.setLayerStyle({ id: "layer-1", style: {
224
+ * ...oldStyle,
225
+ * paint: {
226
+ * ...oldStyle.paint,
227
+ * color: "red",
228
+ * },
229
+ * } });
230
+ * ```
231
+ */
232
+ setLayerStyle(params: {
233
+ /**
234
+ * The id of the layer to set the style for.
235
+ */
236
+ id: string;
237
+ /**
238
+ * The style to set for the layer.
239
+ */
240
+ style: object;
241
+ }): Promise<void>;
205
242
  /**
206
243
  * Adds a listener for when a layer changes.
207
244
  *
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"),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 h=e=>({onSelectionChange:r(e,"onSelectionChange"),getSelection:t(e,"getSelection")});var L=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),...L(e),...C(e),...g(e),...h(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")});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};
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 ot={};le(ot,{createMessageHandler:()=>Ke});module.exports=me(ot);var a=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 l=require("zod"),z=l.z.number(),E=l.z.number(),w=l.z.object({latitude:E,longitude:z}),O=l.z.number().min(1).max(23),T=l.z.tuple([z,E,z,E]),b=l.z.object({show:l.z.array(l.z.string()).optional(),hide:l.z.array(l.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 p=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"]),gt=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"),ft=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",p.z.string()),ze=t("getLayers",A.optional()),Ee=t("setLayerVisibility",b),Fe=f("onLayerChange",p.z.object({id:p.z.string()})),ve=t("getLayerGroup",p.z.string()),Ve=t("getLayerGroups",q.optional()),Pe=t("setLayerGroupVisibility",b),we=f("onLayerGroupChange",p.z.object({id:p.z.string()})),Oe=t("getLegendItem",M),Te=t("getLegendItems",H.optional()),je=f("onLegendItemChange",M),ke=t("setLegendItemVisibility",p.z.object({show:M.array().optional(),hide:M.array().optional()})),Re=t("getLayerFilters",p.z.string()),Ue=t("setLayerFilters",p.z.object({layerId:p.z.string(),filters:N})),Be=t("getRenderedFeatures",_.optional()),W={methods:[Ce,ze,Ee,ve,Ve,Pe,Oe,Te,ke,Re,Ue,Be],listeners:[Fe,we,je]};var D=require("zod");var Ze=t("getSelection",D.z.undefined()),Ne=d("onSelectionChange"),J={methods:[Ze],listeners:[Ne]};var s=require("zod"),K=s.z.object({showLegend:s.z.boolean().optional(),cooperativeGestures:s.z.boolean().optional(),fullScreenButton:s.z.boolean().optional(),geolocation:s.z.boolean().optional(),zoomControls:s.z.boolean().optional(),scaleBar:s.z.boolean().optional()}),Q=s.z.object({featureSelectPanel:s.z.boolean().optional(),featureHoverPanel:s.z.boolean().optional(),elementSelectPanel:s.z.boolean().optional(),linkClickOpen:s.z.boolean().optional(),imageLightboxOpen:s.z.boolean().optional()});var Ae=t("updateUiControls",K),qe=t("setOnMapInteractionsUi",Q),X={methods:[Ae,qe],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 He=t("getViewport",te.z.undefined()),_e=t("setViewport",$),We=t("fitViewportToBounds",ee),De=d("onViewportMove"),Je=d("onViewportMoveEnd"),oe={methods:[_e,He,We],listeners:[De,Je]};var V=[X,oe,W,R,J,U];function Ke(e,n,u){let S=new Map;async function y(m){if(!tt.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:i}=P;if(i.type==="felt.ready")m.ports[0]?.postMessage(!0);else if(i.type==="felt.addListener"){if(i.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let L="options"in i.event?{options:"options"in i.event?i.event.options:void 0,handler:x=>{m.ports[0]?.postMessage(x)}}:{handler:x=>{m.ports[0]?.postMessage(x)}},I=n.listeners[i.event.eventName](L);S.set(i.event.id,I)}else if(i.type==="felt.removeListener")S.get(i.id)?.(),S.delete(i.id);else try{let L=n.methods[i.type],I=await L(i.params);m.ports[0]?.postMessage(I)}catch(L){m.ports[0]?.postMessage({__error__:Qe(L)})}}return e.addEventListener("message",y),()=>{e.removeEventListener("message",y)}}function Qe(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()},Xe=a.z.discriminatedUnion("eventName",[a.z.strictObject({eventName:a.z.literal("")}),...ne.listeners]),Ye=a.z.strictObject({type:a.z.literal("felt.addListener"),event:Xe}),$e=a.z.strictObject({type:a.z.literal("felt.removeListener"),id:a.z.string()}),et=a.z.strictObject({type:a.z.literal("felt.ready")}),re=a.z.discriminatedUnion("type",[et,Ye,$e,...ne.methods]),tt=a.z.object({type:a.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,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,6 +1,6 @@
1
1
  import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
- import { z as zInfer, E as Element, G as Geometry, b as ElementGroup, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, M as MapInteractionEvent, L as Layer, h as LayerGroup, l as LegendItem, o as LayerFilters, q as Feature, g as LayerChangeCallbackParams, j as LayerGroupChangeCallbackParams, n as LegendItemChangeCallbackParams, y as FilterTernary, r as EntityNode, V as ViewportState, W as UnionToIntersection, X as PromiseOrNot } from './types-0v6svQ9V.cjs';
3
+ import { z as zInfer, E as Element, G as Geometry, b as ElementGroup, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, M as MapInteractionEvent, L as Layer, h as LayerGroup, l as LegendItem, o as LayerFilters, q as Feature, g as LayerChangeCallbackParams, j as LayerGroupChangeCallbackParams, n as LegendItemChangeCallbackParams, y as FilterTernary, r as EntityNode, V as ViewportState, W as UnionToIntersection, X as PromiseOrNot } from './types-BHqOjrOq.cjs';
4
4
 
5
5
  type Method<TRequest extends {
6
6
  type: string;
@@ -256,6 +256,39 @@ declare const OnLayerChangeMessage: z.ZodObject<{
256
256
  eventName: "onLayerChange";
257
257
  id: string;
258
258
  }>;
259
+ declare const SetLayerStyleMessage: z.ZodObject<{
260
+ type: z.ZodLiteral<"setLayerStyle">;
261
+ params: z.ZodObject<{
262
+ id: z.ZodString;
263
+ style: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
264
+ }, "strip", z.ZodTypeAny, {
265
+ id: string;
266
+ style: {} & {
267
+ [k: string]: unknown;
268
+ };
269
+ }, {
270
+ id: string;
271
+ style: {} & {
272
+ [k: string]: unknown;
273
+ };
274
+ }>;
275
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
276
+ params: {
277
+ id: string;
278
+ style: {} & {
279
+ [k: string]: unknown;
280
+ };
281
+ };
282
+ type: "setLayerStyle";
283
+ }, {
284
+ params: {
285
+ id: string;
286
+ style: {} & {
287
+ [k: string]: unknown;
288
+ };
289
+ };
290
+ type: "setLayerStyle";
291
+ }>;
259
292
  declare const GetGroupMessage: z.ZodObject<{
260
293
  type: z.ZodLiteral<"getLayerGroup">;
261
294
  params: z.ZodString;
@@ -560,6 +593,7 @@ type LayersSchema = {
560
593
  getLayer: Method<zInfer<typeof GetLayerMessage>, Layer | null>;
561
594
  getLayers: Method<zInfer<typeof GetLayersMessage>, Array<Layer | null>>;
562
595
  setLayerVisibility: Method<zInfer<typeof SetLayerVisibilityMessage>, void>;
596
+ setLayerStyle: Method<zInfer<typeof SetLayerStyleMessage>, void>;
563
597
  getLayerGroup: Method<zInfer<typeof GetGroupMessage>, LayerGroup | null>;
564
598
  getLayerGroups: Method<zInfer<typeof GetGroupsMessage>, Array<LayerGroup | null>>;
565
599
  setLayerGroupVisibility: Method<zInfer<typeof SetLayerGroupVisibilityMessage>, void>;
package/dist/handler.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
- import { z as zInfer, E as Element, G as Geometry, b as ElementGroup, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, M as MapInteractionEvent, L as Layer, h as LayerGroup, l as LegendItem, o as LayerFilters, q as Feature, g as LayerChangeCallbackParams, j as LayerGroupChangeCallbackParams, n as LegendItemChangeCallbackParams, y as FilterTernary, r as EntityNode, V as ViewportState, W as UnionToIntersection, X as PromiseOrNot } from './types-0v6svQ9V.js';
3
+ import { z as zInfer, E as Element, G as Geometry, b as ElementGroup, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, M as MapInteractionEvent, L as Layer, h as LayerGroup, l as LegendItem, o as LayerFilters, q as Feature, g as LayerChangeCallbackParams, j as LayerGroupChangeCallbackParams, n as LegendItemChangeCallbackParams, y as FilterTernary, r as EntityNode, V as ViewportState, W as UnionToIntersection, X as PromiseOrNot } from './types-BHqOjrOq.js';
4
4
 
5
5
  type Method<TRequest extends {
6
6
  type: string;
@@ -256,6 +256,39 @@ declare const OnLayerChangeMessage: z.ZodObject<{
256
256
  eventName: "onLayerChange";
257
257
  id: string;
258
258
  }>;
259
+ declare const SetLayerStyleMessage: z.ZodObject<{
260
+ type: z.ZodLiteral<"setLayerStyle">;
261
+ params: z.ZodObject<{
262
+ id: z.ZodString;
263
+ style: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
264
+ }, "strip", z.ZodTypeAny, {
265
+ id: string;
266
+ style: {} & {
267
+ [k: string]: unknown;
268
+ };
269
+ }, {
270
+ id: string;
271
+ style: {} & {
272
+ [k: string]: unknown;
273
+ };
274
+ }>;
275
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
276
+ params: {
277
+ id: string;
278
+ style: {} & {
279
+ [k: string]: unknown;
280
+ };
281
+ };
282
+ type: "setLayerStyle";
283
+ }, {
284
+ params: {
285
+ id: string;
286
+ style: {} & {
287
+ [k: string]: unknown;
288
+ };
289
+ };
290
+ type: "setLayerStyle";
291
+ }>;
259
292
  declare const GetGroupMessage: z.ZodObject<{
260
293
  type: z.ZodLiteral<"getLayerGroup">;
261
294
  params: z.ZodString;
@@ -560,6 +593,7 @@ type LayersSchema = {
560
593
  getLayer: Method<zInfer<typeof GetLayerMessage>, Layer | null>;
561
594
  getLayers: Method<zInfer<typeof GetLayersMessage>, Array<Layer | null>>;
562
595
  setLayerVisibility: Method<zInfer<typeof SetLayerVisibilityMessage>, void>;
596
+ setLayerStyle: Method<zInfer<typeof SetLayerStyleMessage>, void>;
563
597
  getLayerGroup: Method<zInfer<typeof GetGroupMessage>, LayerGroup | null>;
564
598
  getLayerGroups: Method<zInfer<typeof GetGroupsMessage>, Array<LayerGroup | null>>;
565
599
  setLayerGroupVisibility: Method<zInfer<typeof SetLayerGroupVisibilityMessage>, void>;
package/dist/handler.js CHANGED
@@ -1 +1 @@
1
- import{z as a}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 i}from"zod";var G=i.number(),I=i.number(),P=i.object({latitude:I,longitude:G}),w=i.number().min(1).max(23),O=i.tuple([G,I,G,I]),S=i.object({show:i.array(i.string()).optional(),hide:i.array(i.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 l}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"]),pt=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 yt=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",l.string()),he=e("getLayers",N.optional()),Se=e("setLayerVisibility",S),Me=y("onLayerChange",l.object({id:l.string()})),Le=e("getLayerGroup",l.string()),be=e("getLayerGroups",A.optional()),Ge=e("setLayerGroupVisibility",S),Ie=y("onLayerGroupChange",l.object({id:l.string()})),xe=e("getLegendItem",f),Ce=e("getLegendItems",q.optional()),ze=y("onLegendItemChange",f),Ee=e("setLegendItemVisibility",l.object({show:f.array().optional(),hide:f.array().optional()})),Fe=e("getLayerFilters",l.string()),ve=e("setLayerFilters",l.object({layerId:l.string(),filters:Z})),Ve=e("getRenderedFeatures",H.optional()),_={methods:[fe,he,Se,Le,be,Ge,xe,Ce,Ee,Fe,ve,Ve],listeners:[Me,Ie,ze]};import{z as Pe}from"zod";var we=e("getSelection",Pe.undefined()),Oe=c("onSelectionChange"),W={methods:[we],listeners:[Oe]};import{z as s}from"zod";var D=s.object({showLegend:s.boolean().optional(),cooperativeGestures:s.boolean().optional(),fullScreenButton:s.boolean().optional(),geolocation:s.boolean().optional(),zoomControls:s.boolean().optional(),scaleBar:s.boolean().optional()}),J=s.object({featureSelectPanel:s.boolean().optional(),featureHoverPanel:s.boolean().optional(),elementSelectPanel:s.boolean().optional(),linkClickOpen:s.boolean().optional(),imageLightboxOpen:s.boolean().optional()});var Te=e("updateUiControls",D),je=e("setOnMapInteractionsUi",J),K={methods:[Te,je],listeners:null};import{z as ke}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 Re=e("getViewport",ke.undefined()),Ue=e("setViewport",X),Be=e("fitViewportToBounds",Y),Ze=c("onViewportMove"),Ne=c("onViewportMoveEnd"),$={methods:[Ue,Re,Be],listeners:[Ze,Ne]};var E=[K,$,_,k,W,R];function Ht(o,g,F){let M=new Map;async function v(p){if(!De.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__:Ae(h)})}}return o.addEventListener("message",v),()=>{o.removeEventListener("message",v)}}function Ae(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()},qe=a.discriminatedUnion("eventName",[a.strictObject({eventName:a.literal("")}),...ee.listeners]),He=a.strictObject({type:a.literal("felt.addListener"),event:qe}),_e=a.strictObject({type:a.literal("felt.removeListener"),id:a.string()}),We=a.strictObject({type:a.literal("felt.ready")}),te=a.discriminatedUnion("type",[We,He,_e,...ee.methods]),De=a.object({type:a.enum(te.options.map(o=>o.shape.type.value))});export{Ht as createMessageHandler};
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};
@@ -343,6 +343,16 @@ interface Layer {
343
343
  * Whether the layer is shown in the legend or not.
344
344
  */
345
345
  shownInLegend: boolean;
346
+ /**
347
+ * The FSL style for the layer.
348
+ *
349
+ * See the [FSL documentation](https://developers.felt.com/felt-style-language) for details
350
+ * on how to read and write styles.
351
+ *
352
+ * As the types of the styles are very complex, we return `object` here and advise that you
353
+ * program defensively while reading the styles.
354
+ */
355
+ style: object;
346
356
  /**
347
357
  * The current processing status of the layer.
348
358
  */
@@ -343,6 +343,16 @@ interface Layer {
343
343
  * Whether the layer is shown in the legend or not.
344
344
  */
345
345
  shownInLegend: boolean;
346
+ /**
347
+ * The FSL style for the layer.
348
+ *
349
+ * See the [FSL documentation](https://developers.felt.com/felt-style-language) for details
350
+ * on how to read and write styles.
351
+ *
352
+ * As the types of the styles are very complex, we return `object` here and advise that you
353
+ * program defensively while reading the styles.
354
+ */
355
+ style: object;
346
356
  /**
347
357
  * The current processing status of the layer.
348
358
  */
package/handler.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
- import { z as zInfer, E as Element, G as Geometry, b as ElementGroup, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, M as MapInteractionEvent, L as Layer, h as LayerGroup, l as LegendItem, o as LayerFilters, q as Feature, g as LayerChangeCallbackParams, j as LayerGroupChangeCallbackParams, n as LegendItemChangeCallbackParams, y as FilterTernary, r as EntityNode, V as ViewportState, W as UnionToIntersection, X as PromiseOrNot } from './types-0v6svQ9V.js';
3
+ import { z as zInfer, E as Element, G as Geometry, b as ElementGroup, d as ElementChangeCallbackParams, e as ElementGroupChangeCallbackParams, M as MapInteractionEvent, L as Layer, h as LayerGroup, l as LegendItem, o as LayerFilters, q as Feature, g as LayerChangeCallbackParams, j as LayerGroupChangeCallbackParams, n as LegendItemChangeCallbackParams, y as FilterTernary, r as EntityNode, V as ViewportState, W as UnionToIntersection, X as PromiseOrNot } from './types-BHqOjrOq.js';
4
4
 
5
5
  type Method<TRequest extends {
6
6
  type: string;
@@ -256,6 +256,39 @@ declare const OnLayerChangeMessage: z.ZodObject<{
256
256
  eventName: "onLayerChange";
257
257
  id: string;
258
258
  }>;
259
+ declare const SetLayerStyleMessage: z.ZodObject<{
260
+ type: z.ZodLiteral<"setLayerStyle">;
261
+ params: z.ZodObject<{
262
+ id: z.ZodString;
263
+ style: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
264
+ }, "strip", z.ZodTypeAny, {
265
+ id: string;
266
+ style: {} & {
267
+ [k: string]: unknown;
268
+ };
269
+ }, {
270
+ id: string;
271
+ style: {} & {
272
+ [k: string]: unknown;
273
+ };
274
+ }>;
275
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
276
+ params: {
277
+ id: string;
278
+ style: {} & {
279
+ [k: string]: unknown;
280
+ };
281
+ };
282
+ type: "setLayerStyle";
283
+ }, {
284
+ params: {
285
+ id: string;
286
+ style: {} & {
287
+ [k: string]: unknown;
288
+ };
289
+ };
290
+ type: "setLayerStyle";
291
+ }>;
259
292
  declare const GetGroupMessage: z.ZodObject<{
260
293
  type: z.ZodLiteral<"getLayerGroup">;
261
294
  params: z.ZodString;
@@ -560,6 +593,7 @@ type LayersSchema = {
560
593
  getLayer: Method<zInfer<typeof GetLayerMessage>, Layer | null>;
561
594
  getLayers: Method<zInfer<typeof GetLayersMessage>, Array<Layer | null>>;
562
595
  setLayerVisibility: Method<zInfer<typeof SetLayerVisibilityMessage>, void>;
596
+ setLayerStyle: Method<zInfer<typeof SetLayerStyleMessage>, void>;
563
597
  getLayerGroup: Method<zInfer<typeof GetGroupMessage>, LayerGroup | null>;
564
598
  getLayerGroups: Method<zInfer<typeof GetGroupsMessage>, Array<LayerGroup | null>>;
565
599
  setLayerGroupVisibility: Method<zInfer<typeof SetLayerGroupVisibilityMessage>, void>;
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 ot={};le(ot,{createMessageHandler:()=>Ke});module.exports=me(ot);var a=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 l=require("zod"),z=l.z.number(),E=l.z.number(),w=l.z.object({latitude:E,longitude:z}),O=l.z.number().min(1).max(23),T=l.z.tuple([z,E,z,E]),b=l.z.object({show:l.z.array(l.z.string()).optional(),hide:l.z.array(l.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 p=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"]),gt=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"),ft=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",p.z.string()),ze=t("getLayers",A.optional()),Ee=t("setLayerVisibility",b),Fe=f("onLayerChange",p.z.object({id:p.z.string()})),ve=t("getLayerGroup",p.z.string()),Ve=t("getLayerGroups",q.optional()),Pe=t("setLayerGroupVisibility",b),we=f("onLayerGroupChange",p.z.object({id:p.z.string()})),Oe=t("getLegendItem",M),Te=t("getLegendItems",H.optional()),je=f("onLegendItemChange",M),ke=t("setLegendItemVisibility",p.z.object({show:M.array().optional(),hide:M.array().optional()})),Re=t("getLayerFilters",p.z.string()),Ue=t("setLayerFilters",p.z.object({layerId:p.z.string(),filters:N})),Be=t("getRenderedFeatures",_.optional()),W={methods:[Ce,ze,Ee,ve,Ve,Pe,Oe,Te,ke,Re,Ue,Be],listeners:[Fe,we,je]};var D=require("zod");var Ze=t("getSelection",D.z.undefined()),Ne=d("onSelectionChange"),J={methods:[Ze],listeners:[Ne]};var s=require("zod"),K=s.z.object({showLegend:s.z.boolean().optional(),cooperativeGestures:s.z.boolean().optional(),fullScreenButton:s.z.boolean().optional(),geolocation:s.z.boolean().optional(),zoomControls:s.z.boolean().optional(),scaleBar:s.z.boolean().optional()}),Q=s.z.object({featureSelectPanel:s.z.boolean().optional(),featureHoverPanel:s.z.boolean().optional(),elementSelectPanel:s.z.boolean().optional(),linkClickOpen:s.z.boolean().optional(),imageLightboxOpen:s.z.boolean().optional()});var Ae=t("updateUiControls",K),qe=t("setOnMapInteractionsUi",Q),X={methods:[Ae,qe],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 He=t("getViewport",te.z.undefined()),_e=t("setViewport",$),We=t("fitViewportToBounds",ee),De=d("onViewportMove"),Je=d("onViewportMoveEnd"),oe={methods:[_e,He,We],listeners:[De,Je]};var V=[X,oe,W,R,J,U];function Ke(e,n,u){let S=new Map;async function y(m){if(!tt.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:i}=P;if(i.type==="felt.ready")m.ports[0]?.postMessage(!0);else if(i.type==="felt.addListener"){if(i.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let L="options"in i.event?{options:"options"in i.event?i.event.options:void 0,handler:x=>{m.ports[0]?.postMessage(x)}}:{handler:x=>{m.ports[0]?.postMessage(x)}},I=n.listeners[i.event.eventName](L);S.set(i.event.id,I)}else if(i.type==="felt.removeListener")S.get(i.id)?.(),S.delete(i.id);else try{let L=n.methods[i.type],I=await L(i.params);m.ports[0]?.postMessage(I)}catch(L){m.ports[0]?.postMessage({__error__:Qe(L)})}}return e.addEventListener("message",y),()=>{e.removeEventListener("message",y)}}function Qe(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()},Xe=a.z.discriminatedUnion("eventName",[a.z.strictObject({eventName:a.z.literal("")}),...ne.listeners]),Ye=a.z.strictObject({type:a.z.literal("felt.addListener"),event:Xe}),$e=a.z.strictObject({type:a.z.literal("felt.removeListener"),id:a.z.string()}),et=a.z.strictObject({type:a.z.literal("felt.ready")}),re=a.z.discriminatedUnion("type",[et,Ye,$e,...ne.methods]),tt=a.z.object({type:a.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,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});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feltmaps/js-sdk",
3
- "version": "1.0.2",
3
+ "version": "1.1.0-next.0",
4
4
  "description": "An SDK for Felt maps",
5
5
  "keywords": [
6
6
  "felt",
@@ -343,6 +343,16 @@ interface Layer {
343
343
  * Whether the layer is shown in the legend or not.
344
344
  */
345
345
  shownInLegend: boolean;
346
+ /**
347
+ * The FSL style for the layer.
348
+ *
349
+ * See the [FSL documentation](https://developers.felt.com/felt-style-language) for details
350
+ * on how to read and write styles.
351
+ *
352
+ * As the types of the styles are very complex, we return `object` here and advise that you
353
+ * program defensively while reading the styles.
354
+ */
355
+ style: object;
346
356
  /**
347
357
  * The current processing status of the layer.
348
358
  */