@feltmaps/js-sdk 1.5.0-next.0 → 1.5.0-next.2
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 +1 -1
- package/dist/client.d.cts +119 -4
- package/dist/client.d.ts +119 -4
- package/dist/client.js +1 -1
- package/dist/handler.cjs +1 -1
- package/dist/handler.d.cts +401 -6
- package/dist/handler.d.ts +401 -6
- package/dist/handler.js +1 -1
- package/dist/{types-BDviYZ-T.d.cts → types-BLsf5GHN.d.cts} +228 -3
- package/dist/{types-BDviYZ-T.d.ts → types-BLsf5GHN.d.ts} +228 -3
- package/handler.d.ts +401 -6
- package/handler.js +1 -1
- package/package.json +5 -5
- package/{types-BDviYZ-T.d.ts → types-BLsf5GHN.d.ts} +228 -3
package/dist/client.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var g=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var b=(e,r)=>{for(var n in r)g(e,n,{get:r[n],enumerable:!0})},I=(e,r,n,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of S(r))!M.call(e,s)&&s!==n&&g(e,s,{get:()=>r[s],enumerable:!(i=F(r,s))||i.enumerable});return e};var f=e=>I(g({},"__esModule",{value:!0}),e);var x={};b(x,{Felt:()=>P});module.exports=f(x);function o(e,r){return({handler:n,options:i})=>{let s=new MessageChannel,a=crypto.randomUUID();return e.postMessage({type:"felt.addListener",event:i?{eventName:r,id:a,options:i}:{eventName:r,id:a}},"*",[s.port2]),s.port1.onmessage=l=>{n(l.data)},()=>{s.port1.onmessage=null,s.port1.close(),s.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((s,a)=>{i.port1.onmessage=l=>{l.data&&typeof l.data=="object"&&"__error__"in l.data?a(new Error(l.data.__error__)):s(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:o(e,"onElementChange"),onElementGroupChange:o(e,"onElementGroupChange")});var C=e=>({onPointerClick:o(e,"onPointerClick"),onPointerMove:o(e,"onPointerMove")});var h=e=>({getLayer:t(e,"getLayer"),getLayers:t(e,"getLayers"),setLayerVisibility:t(e,"setLayerVisibility"),setLayerStyle:t(e,"setLayerStyle"),setLayerLegendVisibility:t(e,"setLayerLegendVisibility"),onLayerChange:o(e,"onLayerChange"),getLayerGroup:t(e,"getLayerGroup"),getLayerGroups:t(e,"getLayerGroups"),setLayerGroupVisibility:t(e,"setLayerGroupVisibility"),setLayerGroupLegendVisibility:t(e,"setLayerGroupLegendVisibility"),onLayerGroupChange:o(e,"onLayerGroupChange"),getLegendItem:t(e,"getLegendItem"),getLegendItems:t(e,"getLegendItems"),setLegendItemVisibility:t(e,"setLegendItemVisibility"),onLegendItemChange:o(e,"onLegendItemChange"),getLayerFilters:t(e,"getLayerFilters"),setLayerFilters:t(e,"setLayerFilters"),getRenderedFeatures:t(e,"getRenderedFeatures")});var L=e=>({onSelectionChange:o(e,"onSelectionChange"),getSelection:t(e,"getSelection"),selectFeature:t(e,"selectFeature"),clearSelection:t(e,"clearSelection")});var T=e=>({setTool:t(e,"setTool"),getTool:t(e,"getTool"),onToolChange:o(e,"onToolChange"),setToolSettings:t(e,"setToolSettings"),getToolSettings:t(e,"getToolSettings"),onToolSettingsChange:o(e,"onToolSettingsChange")});var v=e=>({updateUiControls:t(e,"updateUiControls"),setOnMapInteractionsUi:t(e,"setOnMapInteractionsUi")});var V=e=>({getViewport:t(e,"getViewport"),setViewport:t(e,"setViewport"),getViewportConstraints:t(e,"getViewportConstraints"),setViewportConstraints:t(e,"setViewportConstraints"),fitViewportToBounds:t(e,"fitViewportToBounds"),onViewportMove:o(e,"onViewportMove"),onViewportMoveEnd:o(e,"onViewportMoveEnd"),onMapIdle:o(e,"onMapIdle")});function E(e){return{iframe:null,...V(e),...v(e),...h(e),...u(e),...L(e),...C(e),...T(e)}}var P={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"},s=n?.origin??i.origin,a=new URL(`${s}/embed/map/${r}`),l={showLegend:"legend",cooperativeGestures:"cooperativeGestures",fullScreenButton:"link",geolocation:"geolocation",zoomControls:"zoomControls",scaleBar:"scaleBar"},y={...i.uiControls,...n?.uiControls};for(let[m,d]of G(y))d!=null&&a.searchParams.set(l[m],d?"1":"0");if(n?.token&&a.searchParams.set("token",n.token),n?.initialViewport){let m=n.initialViewport;a.searchParams.set("loc",`${m.center.latitude},${m.center.longitude},${m.zoom}z`)}let c=e.tagName==="IFRAME",p=c?e:e.ownerDocument.createElement("iframe");return p.src=a.toString(),c||(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,d)=>{p.addEventListener("load",()=>{p.contentWindow==null?d(new Error("Failed to load Felt map")):m(p.contentWindow)},{once:!0})}).then(P.connect).then(m=>(Object.defineProperties(m,{iframe:{value:p,writable:!1,configurable:!1}}),m))},connect(e){let r=E(e);return new Promise((n,i)=>{let s=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=y=>{y.data===!0&&(clearInterval(l),clearTimeout(s),a.port1.close(),a.port2.close(),n(r))}})}},G=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, s as FeatureSelection, z as zInfer, V as ViewportState,
|
|
2
|
-
export {
|
|
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, s as FeatureSelection, T as ToolType, I as InputToolSettings, C as ConfigurableToolType, t as ToolSettingsMap, u as ToolSettingsChangeEvent, z as zInfer, V as ViewportState, v as SetViewportCenterZoomParams, w as ViewportConstraints, x as ViewportFitBoundsParams, y as ViewportCenterZoom } from './types-BLsf5GHN.cjs';
|
|
2
|
+
export { a1 as CircleToolSettings, J as ElementGroupNode, K as ElementNode, N as FeatureNode, Q as FeltBoundary, U as FeltZoom, B as FilterExpression, D as FilterLogicGate, H as FilterTernary, a2 as HighlighterToolSettings, W as LatLng, O as LayerGroupNode, P as LayerNode, A as LayerProcessingStatus, X as LineStringGeometry, a3 as LineToolSettings, Y as LngLatTuple, a4 as MarkerToolSettings, Z as MultiLineStringGeometry, _ as MultiPolygonGeometry, a5 as NoteToolSettings, a6 as PinFrame, a7 as PinSymbol, a8 as PinToolSettings, $ as PointGeometry, a0 as PolygonGeometry, a9 as PolygonToolSettings, R as RasterValue, aa as RouteToolSettings, ab as TextToolSettings } from './types-BLsf5GHN.cjs';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -624,6 +624,84 @@ interface SelectionController {
|
|
|
624
624
|
}): Promise<void>;
|
|
625
625
|
}
|
|
626
626
|
|
|
627
|
+
/**
|
|
628
|
+
* The Tools controller allows you to let users draw elements on the map.
|
|
629
|
+
*
|
|
630
|
+
* @group Controller
|
|
631
|
+
* @public
|
|
632
|
+
*/
|
|
633
|
+
interface ToolsController {
|
|
634
|
+
/**
|
|
635
|
+
* Sets the tool to use for drawing elements on the map.
|
|
636
|
+
*
|
|
637
|
+
* @param tool - The tool to set.
|
|
638
|
+
*
|
|
639
|
+
* @example
|
|
640
|
+
* ```ts
|
|
641
|
+
* // Set the tool to "marker"
|
|
642
|
+
* felt.setTool("marker");
|
|
643
|
+
*
|
|
644
|
+
* // put down the tool
|
|
645
|
+
* felt.setTool(null);
|
|
646
|
+
* ```
|
|
647
|
+
*/
|
|
648
|
+
setTool(tool: ToolType | null): void;
|
|
649
|
+
/**
|
|
650
|
+
* Gets the current tool, if any is in use.
|
|
651
|
+
*
|
|
652
|
+
* @returns The current tool, or `null` if no tool is in use.
|
|
653
|
+
*
|
|
654
|
+
* @example
|
|
655
|
+
* ```ts
|
|
656
|
+
* const tool = await felt.getTool(); // "marker", "polygon", etc.
|
|
657
|
+
* ```
|
|
658
|
+
*/
|
|
659
|
+
getTool(): Promise<ToolType | null>;
|
|
660
|
+
/**
|
|
661
|
+
* Listens for changes to the current tool.
|
|
662
|
+
*
|
|
663
|
+
* @returns A function to unsubscribe from the listener
|
|
664
|
+
*
|
|
665
|
+
* @example
|
|
666
|
+
* ```ts
|
|
667
|
+
* const unsubscribe = felt.onToolChange({
|
|
668
|
+
* handler: tool => console.log(tool),
|
|
669
|
+
* });
|
|
670
|
+
*
|
|
671
|
+
* // later on...
|
|
672
|
+
* unsubscribe();
|
|
673
|
+
* ```
|
|
674
|
+
*/
|
|
675
|
+
onToolChange(args: {
|
|
676
|
+
/**
|
|
677
|
+
* This callback is called with the current tool whenever the tool changes.
|
|
678
|
+
*
|
|
679
|
+
* @param tool - The current tool, or `null` if no tool is in use.
|
|
680
|
+
*/
|
|
681
|
+
handler: (tool: ToolType | null) => void;
|
|
682
|
+
}): VoidFunction;
|
|
683
|
+
/**
|
|
684
|
+
* Sets the settings for the current tool.
|
|
685
|
+
*
|
|
686
|
+
* @param settings - The settings to set.
|
|
687
|
+
*/
|
|
688
|
+
setToolSettings(settings: InputToolSettings): void;
|
|
689
|
+
/**
|
|
690
|
+
* Gets the settings for the current tool.
|
|
691
|
+
*
|
|
692
|
+
* @returns The settings for the current tool.
|
|
693
|
+
*/
|
|
694
|
+
getToolSettings<T extends ConfigurableToolType>(tool: T): Promise<ToolSettingsMap[T]>;
|
|
695
|
+
/**
|
|
696
|
+
* Listens for changes to the settings on all tools.
|
|
697
|
+
*
|
|
698
|
+
* @returns A function to unsubscribe from the listener
|
|
699
|
+
*/
|
|
700
|
+
onToolSettingsChange(args: {
|
|
701
|
+
handler: (settings: ToolSettingsChangeEvent) => void;
|
|
702
|
+
}): VoidFunction;
|
|
703
|
+
}
|
|
704
|
+
|
|
627
705
|
/**
|
|
628
706
|
* @public
|
|
629
707
|
*/
|
|
@@ -816,6 +894,43 @@ interface ViewportController {
|
|
|
816
894
|
* ```
|
|
817
895
|
*/
|
|
818
896
|
setViewport(viewport: SetViewportCenterZoomParams): void;
|
|
897
|
+
/**
|
|
898
|
+
* Gets the current state of the viewport constraints.
|
|
899
|
+
*/
|
|
900
|
+
getViewportConstraints(): Promise<ViewportConstraints | null>;
|
|
901
|
+
/**
|
|
902
|
+
* Constrains the map viewport so it stays inside certain bounds and/or certain zoom levels.
|
|
903
|
+
*
|
|
904
|
+
* @example
|
|
905
|
+
* ```typescript
|
|
906
|
+
* felt.setViewportConstraints({
|
|
907
|
+
* bounds: [-122.5372532, 37.6652478, -122.1927016, 37.881707],
|
|
908
|
+
* minZoom: 1,
|
|
909
|
+
* maxZoom: 23,
|
|
910
|
+
* });
|
|
911
|
+
* ```
|
|
912
|
+
*
|
|
913
|
+
* @example
|
|
914
|
+
* every constraint is optional
|
|
915
|
+
* ```typescript
|
|
916
|
+
* felt.setViewportConstraints({
|
|
917
|
+
* bounds: [-122.5372532, 37.6652478, -122.1927016, 37.881707],
|
|
918
|
+
* });
|
|
919
|
+
* ```
|
|
920
|
+
*
|
|
921
|
+
* @example
|
|
922
|
+
* if a constraint is null, it will be removed but keeping the others
|
|
923
|
+
* ```typescript
|
|
924
|
+
* felt.setViewportConstraints({ bounds: null });
|
|
925
|
+
* ```
|
|
926
|
+
*
|
|
927
|
+
* @example
|
|
928
|
+
* if method receives null, it will remove the constraints
|
|
929
|
+
* ```typescript
|
|
930
|
+
* felt.setViewportConstraints(null);
|
|
931
|
+
* ```
|
|
932
|
+
*/
|
|
933
|
+
setViewportConstraints(constraints: Partial<ViewportConstraints> | null): void;
|
|
819
934
|
/**
|
|
820
935
|
* Fits the map to the specified bounds.
|
|
821
936
|
*
|
|
@@ -910,7 +1025,7 @@ interface ViewportController {
|
|
|
910
1025
|
* @group Controller
|
|
911
1026
|
* @public
|
|
912
1027
|
*/
|
|
913
|
-
interface FeltController extends ViewportController, UiController, LayersController, ElementsController, SelectionController, InteractionsController {
|
|
1028
|
+
interface FeltController extends ViewportController, UiController, LayersController, ElementsController, SelectionController, InteractionsController, ToolsController {
|
|
914
1029
|
/**
|
|
915
1030
|
* The iframe element containing the Felt map, if it is an embedded map.
|
|
916
1031
|
*
|
|
@@ -1081,4 +1196,4 @@ declare const Felt: {
|
|
|
1081
1196
|
connect(feltWindow: Window): Promise<FeltController>;
|
|
1082
1197
|
};
|
|
1083
1198
|
|
|
1084
|
-
export { Element, ElementChangeCallbackParams, ElementGroup, ElementGroupChangeCallbackParams, type ElementsController, EntityNode, Feature, FeatureSelection, Felt, type FeltController, type FeltEmbedOptions, Filters, Geometry, GetElementGroupsConstraint, GetElementsConstraint, GetLayerGroupsConstraint, GetLayersConstraint, GetRenderedFeaturesConstraint, type InteractionsController, Layer, LayerChangeCallbackParams, LayerFilters, LayerGroup, LayerGroupChangeCallbackParams, type LayersController, LegendItem, LegendItemChangeCallbackParams, LegendItemIdentifier, LegendItemsConstraint, MapInteractionEvent, type UiOnMapInteractionsOptions as OnMapInteractionsOptions, type SelectionController, SetViewportCenterZoomParams, SetVisibilityRequest, type UiController, type UiControlsOptions, ViewportCenterZoom, type ViewportController, ViewportFitBoundsParams, ViewportState };
|
|
1199
|
+
export { ConfigurableToolType, Element, ElementChangeCallbackParams, ElementGroup, ElementGroupChangeCallbackParams, type ElementsController, EntityNode, Feature, FeatureSelection, Felt, type FeltController, type FeltEmbedOptions, Filters, Geometry, GetElementGroupsConstraint, GetElementsConstraint, GetLayerGroupsConstraint, GetLayersConstraint, GetRenderedFeaturesConstraint, InputToolSettings, type InteractionsController, Layer, LayerChangeCallbackParams, LayerFilters, LayerGroup, LayerGroupChangeCallbackParams, type LayersController, LegendItem, LegendItemChangeCallbackParams, LegendItemIdentifier, LegendItemsConstraint, MapInteractionEvent, type UiOnMapInteractionsOptions as OnMapInteractionsOptions, type SelectionController, SetViewportCenterZoomParams, SetVisibilityRequest, ToolSettingsChangeEvent, ToolSettingsMap, ToolType, type ToolsController, type UiController, type UiControlsOptions, ViewportCenterZoom, ViewportConstraints, type ViewportController, ViewportFitBoundsParams, ViewportState };
|
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, s as FeatureSelection, z as zInfer, V as ViewportState,
|
|
2
|
-
export {
|
|
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, s as FeatureSelection, T as ToolType, I as InputToolSettings, C as ConfigurableToolType, t as ToolSettingsMap, u as ToolSettingsChangeEvent, z as zInfer, V as ViewportState, v as SetViewportCenterZoomParams, w as ViewportConstraints, x as ViewportFitBoundsParams, y as ViewportCenterZoom } from './types-BLsf5GHN.js';
|
|
2
|
+
export { a1 as CircleToolSettings, J as ElementGroupNode, K as ElementNode, N as FeatureNode, Q as FeltBoundary, U as FeltZoom, B as FilterExpression, D as FilterLogicGate, H as FilterTernary, a2 as HighlighterToolSettings, W as LatLng, O as LayerGroupNode, P as LayerNode, A as LayerProcessingStatus, X as LineStringGeometry, a3 as LineToolSettings, Y as LngLatTuple, a4 as MarkerToolSettings, Z as MultiLineStringGeometry, _ as MultiPolygonGeometry, a5 as NoteToolSettings, a6 as PinFrame, a7 as PinSymbol, a8 as PinToolSettings, $ as PointGeometry, a0 as PolygonGeometry, a9 as PolygonToolSettings, R as RasterValue, aa as RouteToolSettings, ab as TextToolSettings } from './types-BLsf5GHN.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -624,6 +624,84 @@ interface SelectionController {
|
|
|
624
624
|
}): Promise<void>;
|
|
625
625
|
}
|
|
626
626
|
|
|
627
|
+
/**
|
|
628
|
+
* The Tools controller allows you to let users draw elements on the map.
|
|
629
|
+
*
|
|
630
|
+
* @group Controller
|
|
631
|
+
* @public
|
|
632
|
+
*/
|
|
633
|
+
interface ToolsController {
|
|
634
|
+
/**
|
|
635
|
+
* Sets the tool to use for drawing elements on the map.
|
|
636
|
+
*
|
|
637
|
+
* @param tool - The tool to set.
|
|
638
|
+
*
|
|
639
|
+
* @example
|
|
640
|
+
* ```ts
|
|
641
|
+
* // Set the tool to "marker"
|
|
642
|
+
* felt.setTool("marker");
|
|
643
|
+
*
|
|
644
|
+
* // put down the tool
|
|
645
|
+
* felt.setTool(null);
|
|
646
|
+
* ```
|
|
647
|
+
*/
|
|
648
|
+
setTool(tool: ToolType | null): void;
|
|
649
|
+
/**
|
|
650
|
+
* Gets the current tool, if any is in use.
|
|
651
|
+
*
|
|
652
|
+
* @returns The current tool, or `null` if no tool is in use.
|
|
653
|
+
*
|
|
654
|
+
* @example
|
|
655
|
+
* ```ts
|
|
656
|
+
* const tool = await felt.getTool(); // "marker", "polygon", etc.
|
|
657
|
+
* ```
|
|
658
|
+
*/
|
|
659
|
+
getTool(): Promise<ToolType | null>;
|
|
660
|
+
/**
|
|
661
|
+
* Listens for changes to the current tool.
|
|
662
|
+
*
|
|
663
|
+
* @returns A function to unsubscribe from the listener
|
|
664
|
+
*
|
|
665
|
+
* @example
|
|
666
|
+
* ```ts
|
|
667
|
+
* const unsubscribe = felt.onToolChange({
|
|
668
|
+
* handler: tool => console.log(tool),
|
|
669
|
+
* });
|
|
670
|
+
*
|
|
671
|
+
* // later on...
|
|
672
|
+
* unsubscribe();
|
|
673
|
+
* ```
|
|
674
|
+
*/
|
|
675
|
+
onToolChange(args: {
|
|
676
|
+
/**
|
|
677
|
+
* This callback is called with the current tool whenever the tool changes.
|
|
678
|
+
*
|
|
679
|
+
* @param tool - The current tool, or `null` if no tool is in use.
|
|
680
|
+
*/
|
|
681
|
+
handler: (tool: ToolType | null) => void;
|
|
682
|
+
}): VoidFunction;
|
|
683
|
+
/**
|
|
684
|
+
* Sets the settings for the current tool.
|
|
685
|
+
*
|
|
686
|
+
* @param settings - The settings to set.
|
|
687
|
+
*/
|
|
688
|
+
setToolSettings(settings: InputToolSettings): void;
|
|
689
|
+
/**
|
|
690
|
+
* Gets the settings for the current tool.
|
|
691
|
+
*
|
|
692
|
+
* @returns The settings for the current tool.
|
|
693
|
+
*/
|
|
694
|
+
getToolSettings<T extends ConfigurableToolType>(tool: T): Promise<ToolSettingsMap[T]>;
|
|
695
|
+
/**
|
|
696
|
+
* Listens for changes to the settings on all tools.
|
|
697
|
+
*
|
|
698
|
+
* @returns A function to unsubscribe from the listener
|
|
699
|
+
*/
|
|
700
|
+
onToolSettingsChange(args: {
|
|
701
|
+
handler: (settings: ToolSettingsChangeEvent) => void;
|
|
702
|
+
}): VoidFunction;
|
|
703
|
+
}
|
|
704
|
+
|
|
627
705
|
/**
|
|
628
706
|
* @public
|
|
629
707
|
*/
|
|
@@ -816,6 +894,43 @@ interface ViewportController {
|
|
|
816
894
|
* ```
|
|
817
895
|
*/
|
|
818
896
|
setViewport(viewport: SetViewportCenterZoomParams): void;
|
|
897
|
+
/**
|
|
898
|
+
* Gets the current state of the viewport constraints.
|
|
899
|
+
*/
|
|
900
|
+
getViewportConstraints(): Promise<ViewportConstraints | null>;
|
|
901
|
+
/**
|
|
902
|
+
* Constrains the map viewport so it stays inside certain bounds and/or certain zoom levels.
|
|
903
|
+
*
|
|
904
|
+
* @example
|
|
905
|
+
* ```typescript
|
|
906
|
+
* felt.setViewportConstraints({
|
|
907
|
+
* bounds: [-122.5372532, 37.6652478, -122.1927016, 37.881707],
|
|
908
|
+
* minZoom: 1,
|
|
909
|
+
* maxZoom: 23,
|
|
910
|
+
* });
|
|
911
|
+
* ```
|
|
912
|
+
*
|
|
913
|
+
* @example
|
|
914
|
+
* every constraint is optional
|
|
915
|
+
* ```typescript
|
|
916
|
+
* felt.setViewportConstraints({
|
|
917
|
+
* bounds: [-122.5372532, 37.6652478, -122.1927016, 37.881707],
|
|
918
|
+
* });
|
|
919
|
+
* ```
|
|
920
|
+
*
|
|
921
|
+
* @example
|
|
922
|
+
* if a constraint is null, it will be removed but keeping the others
|
|
923
|
+
* ```typescript
|
|
924
|
+
* felt.setViewportConstraints({ bounds: null });
|
|
925
|
+
* ```
|
|
926
|
+
*
|
|
927
|
+
* @example
|
|
928
|
+
* if method receives null, it will remove the constraints
|
|
929
|
+
* ```typescript
|
|
930
|
+
* felt.setViewportConstraints(null);
|
|
931
|
+
* ```
|
|
932
|
+
*/
|
|
933
|
+
setViewportConstraints(constraints: Partial<ViewportConstraints> | null): void;
|
|
819
934
|
/**
|
|
820
935
|
* Fits the map to the specified bounds.
|
|
821
936
|
*
|
|
@@ -910,7 +1025,7 @@ interface ViewportController {
|
|
|
910
1025
|
* @group Controller
|
|
911
1026
|
* @public
|
|
912
1027
|
*/
|
|
913
|
-
interface FeltController extends ViewportController, UiController, LayersController, ElementsController, SelectionController, InteractionsController {
|
|
1028
|
+
interface FeltController extends ViewportController, UiController, LayersController, ElementsController, SelectionController, InteractionsController, ToolsController {
|
|
914
1029
|
/**
|
|
915
1030
|
* The iframe element containing the Felt map, if it is an embedded map.
|
|
916
1031
|
*
|
|
@@ -1081,4 +1196,4 @@ declare const Felt: {
|
|
|
1081
1196
|
connect(feltWindow: Window): Promise<FeltController>;
|
|
1082
1197
|
};
|
|
1083
1198
|
|
|
1084
|
-
export { Element, ElementChangeCallbackParams, ElementGroup, ElementGroupChangeCallbackParams, type ElementsController, EntityNode, Feature, FeatureSelection, Felt, type FeltController, type FeltEmbedOptions, Filters, Geometry, GetElementGroupsConstraint, GetElementsConstraint, GetLayerGroupsConstraint, GetLayersConstraint, GetRenderedFeaturesConstraint, type InteractionsController, Layer, LayerChangeCallbackParams, LayerFilters, LayerGroup, LayerGroupChangeCallbackParams, type LayersController, LegendItem, LegendItemChangeCallbackParams, LegendItemIdentifier, LegendItemsConstraint, MapInteractionEvent, type UiOnMapInteractionsOptions as OnMapInteractionsOptions, type SelectionController, SetViewportCenterZoomParams, SetVisibilityRequest, type UiController, type UiControlsOptions, ViewportCenterZoom, type ViewportController, ViewportFitBoundsParams, ViewportState };
|
|
1199
|
+
export { ConfigurableToolType, Element, ElementChangeCallbackParams, ElementGroup, ElementGroupChangeCallbackParams, type ElementsController, EntityNode, Feature, FeatureSelection, Felt, type FeltController, type FeltEmbedOptions, Filters, Geometry, GetElementGroupsConstraint, GetElementsConstraint, GetLayerGroupsConstraint, GetLayersConstraint, GetRenderedFeaturesConstraint, InputToolSettings, type InteractionsController, Layer, LayerChangeCallbackParams, LayerFilters, LayerGroup, LayerGroupChangeCallbackParams, type LayersController, LegendItem, LegendItemChangeCallbackParams, LegendItemIdentifier, LegendItemsConstraint, MapInteractionEvent, type UiOnMapInteractionsOptions as OnMapInteractionsOptions, type SelectionController, SetViewportCenterZoomParams, SetVisibilityRequest, ToolSettingsChangeEvent, ToolSettingsMap, ToolType, type ToolsController, type UiController, type UiControlsOptions, ViewportCenterZoom, ViewportConstraints, type ViewportController, ViewportFitBoundsParams, ViewportState };
|
package/dist/client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function o(e,m){return({handler:n,options:s})=>{let a=new MessageChannel,r=crypto.randomUUID();return e.postMessage({type:"felt.addListener",event:s?{eventName:m,id:r,options:s}:{eventName:m,id:r}},"*",[a.port2]),a.port1.onmessage=i=>{n(i.data)},()=>{a.port1.onmessage=null,a.port1.close(),a.port2.close(),e.postMessage({type:"felt.removeListener",id:r},"*")}}}function t(e,m){return n=>{let s=new MessageChannel;return e.postMessage({type:m,params:n},"*",[s.port2]),new Promise((a,r)=>{s.port1.onmessage=i=>{i.data&&typeof i.data=="object"&&"__error__"in i.data?r(new Error(i.data.__error__)):a(i.data),s.port1.close(),s.port2.close()}})}}var c=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:o(e,"onElementChange"),onElementGroupChange:o(e,"onElementGroupChange")});var u=e=>({onPointerClick:o(e,"onPointerClick"),onPointerMove:o(e,"onPointerMove")});var C=e=>({getLayer:t(e,"getLayer"),getLayers:t(e,"getLayers"),setLayerVisibility:t(e,"setLayerVisibility"),setLayerStyle:t(e,"setLayerStyle"),setLayerLegendVisibility:t(e,"setLayerLegendVisibility"),onLayerChange:o(e,"onLayerChange"),getLayerGroup:t(e,"getLayerGroup"),getLayerGroups:t(e,"getLayerGroups"),setLayerGroupVisibility:t(e,"setLayerGroupVisibility"),setLayerGroupLegendVisibility:t(e,"setLayerGroupLegendVisibility"),onLayerGroupChange:o(e,"onLayerGroupChange"),getLegendItem:t(e,"getLegendItem"),getLegendItems:t(e,"getLegendItems"),setLegendItemVisibility:t(e,"setLegendItemVisibility"),onLegendItemChange:o(e,"onLegendItemChange"),getLayerFilters:t(e,"getLayerFilters"),setLayerFilters:t(e,"setLayerFilters"),getRenderedFeatures:t(e,"getRenderedFeatures")});var h=e=>({onSelectionChange:o(e,"onSelectionChange"),getSelection:t(e,"getSelection"),selectFeature:t(e,"selectFeature"),clearSelection:t(e,"clearSelection")});var L=e=>({setTool:t(e,"setTool"),getTool:t(e,"getTool"),onToolChange:o(e,"onToolChange"),setToolSettings:t(e,"setToolSettings"),getToolSettings:t(e,"getToolSettings"),onToolSettingsChange:o(e,"onToolSettingsChange")});var T=e=>({updateUiControls:t(e,"updateUiControls"),setOnMapInteractionsUi:t(e,"setOnMapInteractionsUi")});var v=e=>({getViewport:t(e,"getViewport"),setViewport:t(e,"setViewport"),getViewportConstraints:t(e,"getViewportConstraints"),setViewportConstraints:t(e,"setViewportConstraints"),fitViewportToBounds:t(e,"fitViewportToBounds"),onViewportMove:o(e,"onViewportMove"),onViewportMoveEnd:o(e,"onViewportMoveEnd"),onMapIdle:o(e,"onMapIdle")});function V(e){return{iframe:null,...v(e),...T(e),...C(e),...c(e),...h(e),...u(e),...L(e)}}var E={embed(e,m,n){let s={uiControls:{showLegend:!0,cooperativeGestures:!0,fullScreenButton:!0,geolocation:!1,zoomControls:!0,scaleBar:!0},initialViewport:void 0,origin:"https://felt.com"},a=n?.origin??s.origin,r=new URL(`${a}/embed/map/${m}`),i={showLegend:"legend",cooperativeGestures:"cooperativeGestures",fullScreenButton:"link",geolocation:"geolocation",zoomControls:"zoomControls",scaleBar:"scaleBar"},y={...s.uiControls,...n?.uiControls};for(let[p,d]of P(y))d!=null&&r.searchParams.set(i[p],d?"1":"0");if(n?.token&&r.searchParams.set("token",n.token),n?.initialViewport){let p=n.initialViewport;r.searchParams.set("loc",`${p.center.latitude},${p.center.longitude},${p.zoom}z`)}let g=e.tagName==="IFRAME",l=g?e:e.ownerDocument.createElement("iframe");return l.src=r.toString(),g||(l.style.width="100%",l.style.height="100%",l.style.border="none",l.style.margin="0",e.appendChild(l)),l.referrerPolicy="strict-origin-when-cross-origin",new Promise((p,d)=>{l.addEventListener("load",()=>{l.contentWindow==null?d(new Error("Failed to load Felt map")):p(l.contentWindow)},{once:!0})}).then(E.connect).then(p=>(Object.defineProperties(p,{iframe:{value:l,writable:!1,configurable:!1}}),p))},connect(e){let m=V(e);return new Promise((n,s)=>{let a=setTimeout(()=>{s(new Error("Failed to load Felt map")),clearInterval(i)},5e3),r=new MessageChannel,i=setInterval(()=>{e.postMessage({type:"felt.ready"},"*",[r.port2])},100);r.port1.onmessage=y=>{y.data===!0&&(clearInterval(i),clearTimeout(a),r.port1.close(),r.port2.close(),n(m))}})}},P=Object.entries;export{E as Felt};
|
package/dist/handler.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var v=Object.defineProperty;var
|
|
1
|
+
"use strict";var v=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var he=Object.prototype.hasOwnProperty;var Se=(o,s)=>{for(var h in s)v(o,h,{get:s[h],enumerable:!0})},be=(o,s,h,L)=>{if(s&&typeof s=="object"||typeof s=="function")for(let u of fe(s))!he.call(o,u)&&u!==h&&v(o,u,{get:()=>s[u],enumerable:!(L=ue(s,u))||L.enumerable});return o};var Me=o=>be(v({},"__esModule",{value:!0}),o);var Ot={};Se(Ot,{createMessageHandler:()=>Ft});module.exports=Me(Ot);var l=require("zod");var f=require("zod");var g=require("zod");function t(o,s){return g.z.strictObject({type:g.z.literal(o),params:s})}function S(o,s){return g.z.strictObject({eventName:g.z.literal(o),id:g.z.string(),options:s})}function m(o){return g.z.strictObject({eventName:g.z.literal(o),id:g.z.string()})}var c=require("zod"),V=c.z.number(),P=c.z.number(),z=c.z.object({latitude:P,longitude:V}),Z=c.z.number().min(1).max(23),I=c.z.tuple([V,P,V,P]),b=c.z.object({show:c.z.array(c.z.string()).optional(),hide:c.z.array(c.z.string()).optional()});var M=require("zod"),U=M.z.object({ids:M.z.array(M.z.string()).optional()}),B=M.z.object({ids:M.z.array(M.z.string()).optional()});var Le=t("getElement",f.z.string()),xe=t("getElementGeometry",f.z.string()),Ge=t("getElements",U.optional()),Ie=t("getElementGroup",f.z.string()),Te=t("getElementGroups",B.optional()),Ce=t("setElementGroupVisibility",b),ze=S("onElementChange",f.z.object({id:f.z.string()})),Fe=S("onElementGroupChange",f.z.object({id:f.z.string()})),A={methods:[Le,xe,Ge,Ie,Te,Ce],listeners:[ze,Fe]};var Ee=m("onPointerClick"),we=m("onPointerMove"),q={methods:null,listeners:[Ee,we]};var i=require("zod");var n=require("zod"),ve=n.z.enum(["in","ni"]),Ve=n.z.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),_t=n.z.enum(["and","or"]),H=n.z.union([n.z.number(),n.z.string(),n.z.boolean(),n.z.null()]),W=n.z.string().or(n.z.null()),Pe=n.z.tuple([W,ve,n.z.array(H).or(n.z.null())]),ke=n.z.tuple([W,Ve,H]),k=n.z.union([Pe,ke]),O=n.z.tuple([n.z.lazy(()=>n.z.union([O,k,n.z.null(),n.z.boolean()])),n.z.enum(["and","or"]),n.z.lazy(()=>n.z.union([O,k,n.z.null(),n.z.boolean()]))]),K=n.z.union([O,k,n.z.null(),n.z.boolean()]);var r=require("zod");var $t=r.z.enum(["processing","completed","failed","incomplete"]),_=r.z.object({ids:r.z.array(r.z.string()).optional()}),Q=r.z.object({ids:r.z.array(r.z.string()).optional()}),x=r.z.object({id:r.z.string(),layerId:r.z.string()}),D=r.z.object({ids:x.array().optional(),layerIds:r.z.string().array().optional()}),$=r.z.object({layerIds:r.z.array(r.z.string()).optional(),areaQuery:r.z.union([r.z.object({coordinates:z}),r.z.object({boundary:I})]).optional()});var Oe=t("getLayer",i.z.string()),je=t("getLayers",_.optional()),Ne=t("setLayerVisibility",b),Re=S("onLayerChange",i.z.object({id:i.z.string()})),Ze=t("setLayerStyle",i.z.object({id:i.z.string(),style:i.z.object({}).passthrough()})),Ue=t("setLayerLegendVisibility",b),Be=t("getLayerGroup",i.z.string()),Ae=t("getLayerGroups",Q.optional()),qe=t("setLayerGroupVisibility",b),He=t("setLayerGroupLegendVisibility",b),We=S("onLayerGroupChange",i.z.object({id:i.z.string()})),Ke=t("getLegendItem",x),_e=t("getLegendItems",D.optional()),Qe=S("onLegendItemChange",x),De=t("setLegendItemVisibility",i.z.object({show:x.array().optional(),hide:x.array().optional()})),$e=t("getLayerFilters",i.z.string()),Je=t("setLayerFilters",i.z.object({layerId:i.z.string(),filters:K,note:i.z.string().optional()})),Xe=t("getRenderedFeatures",$.optional()),J={methods:[Oe,je,Ne,Ze,Ue,Be,Ae,qe,He,Ke,_e,De,$e,Je,Xe],listeners:[Re,We,Qe]};var T=require("zod");var d=require("zod"),X=d.z.object({id:d.z.string().or(d.z.number()),layerId:d.z.string(),showPopup:d.z.boolean().optional(),fitViewport:d.z.boolean().or(d.z.object({maxZoom:d.z.number()})).optional()});var Ye=t("getSelection",T.z.undefined()),et=m("onSelectionChange"),tt=t("selectFeature",X),ot=t("clearSelection",T.z.object({features:T.z.boolean().optional(),elements:T.z.boolean().optional()}).optional()),Y={methods:[Ye,tt,ot],listeners:[et]};var re=require("zod");var e=require("zod"),ee=["pin","line","route","polygon","circle","marker","highlighter","text","note"],te=e.z.enum([...ee,"link"]),oe=e.z.enum(ee),nt=e.z.object({color:e.z.string(),symbol:e.z.string(),frame:e.z.enum(["frame-circle","frame-square"]).nullable()}),rt=e.z.object({color:e.z.string(),strokeOpacity:e.z.number(),strokeWidth:e.z.number(),strokeStyle:e.z.enum(["solid","dashed","dotted"]),distanceMarker:e.z.boolean()}),st=e.z.object({color:e.z.string(),routingMode:e.z.enum(["driving","cycling","walking","flying"]),strokeOpacity:e.z.number(),strokeWidth:e.z.number(),strokeStyle:e.z.enum(["solid","dashed","dotted"]),distanceMarker:e.z.boolean(),endCaps:e.z.boolean()}),it=e.z.object({color:e.z.string(),fillOpacity:e.z.number().min(0).max(1),strokeOpacity:e.z.number().min(0).max(1),strokeWidth:e.z.number().min(0),strokeStyle:e.z.enum(["solid","dashed","dotted"]),areaMarker:e.z.boolean()}),at=e.z.object({color:e.z.string(),fillOpacity:e.z.number().min(0).max(1),strokeOpacity:e.z.number().min(0).max(1),strokeWidth:e.z.number().min(0),strokeStyle:e.z.enum(["solid","dashed","dotted"]),radiusMarker:e.z.boolean()}),lt=e.z.object({color:e.z.string(),opacity:e.z.number().min(0).max(1),size:e.z.number().min(0).max(100)}),pt=e.z.object({color:e.z.string(),opacity:e.z.number().min(0).max(1),size:e.z.number().min(0).max(200)}),mt=e.z.object({color:e.z.string(),align:e.z.enum(["left","center","right"]),style:e.z.enum(["italic","light","regular","caps"])}),ct=e.z.object({color:e.z.string(),align:e.z.enum(["left","center","right"]),style:e.z.enum(["italic","light","regular","caps"])}),ne=e.z.discriminatedUnion("tool",[nt.partial().extend({tool:e.z.literal("pin")}),rt.partial().extend({tool:e.z.literal("line")}),st.partial().extend({tool:e.z.literal("route")}),it.partial().extend({tool:e.z.literal("polygon")}),at.partial().extend({tool:e.z.literal("circle")}),lt.partial().extend({tool:e.z.literal("marker")}),pt.partial().extend({tool:e.z.literal("highlighter")}),mt.partial().extend({tool:e.z.literal("text")}),ct.partial().extend({tool:e.z.literal("note")})]);var yt=t("setTool",te.nullable()),gt=t("getTool",re.z.undefined()),dt=m("onToolChange"),ut=t("setToolSettings",ne),ft=t("getToolSettings",oe),ht=m("onToolSettingsChange"),se={methods:[yt,gt,ut,ft],listeners:[dt,ht]};var a=require("zod"),ie=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()}),ae=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 St=t("updateUiControls",ie),bt=t("setOnMapInteractionsUi",ae),le={methods:[St,bt],listeners:null};var j=require("zod");var C=require("zod");var F=C.z.object({center:z,zoom:Z}),pe=C.z.object({center:F.shape.center.optional(),zoom:F.shape.zoom.optional()}),me=C.z.object({minZoom:F.shape.zoom.nullish(),maxZoom:F.shape.zoom.nullish(),bounds:I.nullish()}).nullable(),ce=C.z.object({bounds:I});var Mt=t("getViewport",j.z.undefined()),Lt=t("setViewport",pe),xt=t("getViewportConstraints",j.z.undefined()),Gt=t("setViewportConstraints",me),It=t("fitViewportToBounds",ce),Tt=m("onViewportMove"),Ct=m("onViewportMoveEnd"),zt=m("onMapIdle"),ye={methods:[Lt,Mt,xt,Gt,It],listeners:[Tt,Ct,zt]};var N=[le,ye,J,A,Y,q,se];function Ft(o,s,h){let L=new Map;async function u(y){if(!kt.safeParse(y.data).success){h?.onUnknownMessage?.(y.data);return}let R=de.safeParse(y.data);if(!R.success){h?.onInvalidMessage?.(y.data);return}let{data:p}=R;if(p.type==="felt.ready")y.ports[0]?.postMessage(!0);else if(p.type==="felt.addListener"){if(p.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let G="options"in p.event?{options:"options"in p.event?p.event.options:void 0,handler:w=>{y.ports[0]?.postMessage(w)}}:{handler:w=>{y.ports[0]?.postMessage(w)}},E=s.listeners[p.event.eventName](G);L.set(p.event.id,E)}else if(p.type==="felt.removeListener")L.get(p.id)?.(),L.delete(p.id);else try{let G=s.methods[p.type],E=await G(p.params);y.ports[0]?.postMessage(E)}catch(G){y.ports[0]?.postMessage({__error__:Et(G)})}}return o.addEventListener("message",u),()=>{o.removeEventListener("message",u)}}function Et(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 ge={methods:N.map(o=>o.methods??[]).flat(),listeners:N.map(o=>o.listeners??[]).flat()},wt=l.z.discriminatedUnion("eventName",[l.z.strictObject({eventName:l.z.literal("")}),...ge.listeners]),vt=l.z.strictObject({type:l.z.literal("felt.addListener"),event:wt}),Vt=l.z.strictObject({type:l.z.literal("felt.removeListener"),id:l.z.string()}),Pt=l.z.strictObject({type:l.z.literal("felt.ready")}),de=l.z.discriminatedUnion("type",[Pt,vt,Vt,...ge.methods]),kt=l.z.object({type:l.z.enum(de.options.map(o=>o.shape.type.value))});0&&(module.exports={createMessageHandler});
|