@feltmaps/js-sdk 1.11.1 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/handler.js CHANGED
@@ -1 +1 @@
1
- import{z as h}from"zod";import{z as K}from"zod";import{z as N}from"zod";function e(r,Y){return N.strictObject({type:N.literal(r),params:Y})}function z(r,Y){return N.strictObject({eventName:N.literal(r),id:N.string(),options:Y})}function f(r){return N.strictObject({eventName:N.literal(r),id:N.string()})}import{z as v}from"zod";var Bt=v.object({id:v.string(),name:v.string(),uiColorScheme:v.enum(["light","dark"]),attribution:v.string().optional()}),vt=Bt.extend({type:v.literal("color"),color:v.string()}),At=Bt.extend({type:v.literal("xyz_tile"),tileUrl:v.string()});var lo=e("getCurrentBasemap",K.void()),so=e("getBasemaps",K.void()),mo=e("chooseBasemap",K.string()),po=e("removeBasemap",K.string()),co=e("addCustomBasemap",K.object({basemap:K.discriminatedUnion("type",[vt.omit({id:!0,uiColorScheme:!0}),At.omit({id:!0})]),select:K.boolean().optional()})),go=f("onBasemapChange"),Ot={methods:[lo,so,mo,co,po],listeners:[go]};import{z as k}from"zod";import{z as c}from"zod";var Le=c.number(),Ge=c.number(),Pe=c.object({latitude:Ge,longitude:Le}),H=c.tuple([Le,Ge]),oe=c.object({type:c.literal("Polygon"),coordinates:c.array(c.array(H).min(4).refine(r=>r[0][0]===r[r.length-1][0]&&r[0][1]===r[r.length-1][1],"The last point of each ring must be identical to the first"))}),Te=c.object({type:c.literal("MultiPolygon"),coordinates:c.array(oe.shape.coordinates)}),Ze=c.object({type:c.literal("LineString"),coordinates:c.array(H).min(2)}),W=c.object({type:c.literal("MultiLineString"),coordinates:c.array(Ze.shape.coordinates)}),wt=c.number().min(1).max(23),A=c.tuple([Le,Ge,Le,Ge]),_=c.object({show:c.array(c.string()).optional(),hide:c.array(c.string()).optional()}),uo=c.enum(["asc","desc"]),ze=c.object({attribute:c.string(),direction:uo});import{z as t}from"zod";var F=t.object({id:t.string(),groupId:t.string().nullable(),color:t.string(),name:t.string().nullable(),description:t.string().nullable(),attributes:t.record(t.string(),t.unknown()),interaction:t.enum(["default","locked"]).optional()}),Re=t.object({imageUrl:t.string().nullable()}),Ke=t.object({strokeOpacity:t.number(),strokeWidth:t.number(),strokeStyle:t.enum(["solid","dashed","dotted"])}),yo=t.enum(["meter","kilometer","foot","mile"]),Fe=F.extend(Re.shape).extend({type:t.literal("Place"),coordinates:H,symbol:t.string(),frame:t.enum(["frame-circle","frame-square"]).nullable(),hideLabel:t.boolean()}),ne=F.extend(Re.shape).extend(Ke.shape).extend({type:t.literal("Path"),coordinates:W.shape.coordinates,distanceMarker:t.boolean(),routingMode:t.enum(["driving","cycling","walking","flying"]).nullable(),endCaps:t.boolean()}),re=F.extend(Re.shape).extend(Ke.shape).extend({type:t.literal("Polygon"),coordinates:oe.shape.coordinates,fillOpacity:t.number().min(0).max(1),areaMarker:t.boolean()}),ke=F.extend(Re.shape).extend(Ke.shape).extend({type:t.literal("Circle"),center:H,radius:t.number(),radiusMarker:t.boolean(),radiusDisplayAngle:t.number(),radiusDisplayUnit:yo.nullable(),fillOpacity:t.number().min(0).max(1)}),ie=F.extend({type:t.literal("Marker"),coordinates:W.shape.coordinates,opacity:t.number().min(0).max(1),size:t.number().min(0).max(100),zoom:t.number().min(0).max(23)}),le=F.extend({type:t.literal("Highlighter"),coordinates:Te.shape.coordinates,renderHoles:t.boolean(),opacity:t.number().min(0).max(1)}),jt=t.object({position:H,rotation:t.number(),scale:t.number(),zoom:t.number().min(0).max(23),text:t.string(),align:t.enum(["left","center","right"]),style:t.enum(["italic","light","regular","caps"]),name:t.string()}),Je=F.extend(jt.shape).extend({type:t.literal("Text")}),qe=F.extend(jt.shape).extend({type:t.literal("Note"),widthScale:t.number().min(0)}),se=F.extend({type:t.literal("Image"),coordinates:W.shape.coordinates,imageUrl:t.string(),opacity:t.number().min(0).max(1)}).omit({color:!0}),ho=F.extend({type:t.literal("Link"),coordinates:W.shape.coordinates,url:t.string()}),ee={type:!0,coordinates:!0},O={id:!0},We=Fe.partial().extend(Fe.pick(ee).shape).omit(O),Be=ne.partial().extend(ne.pick(ee).shape).omit(O),_e=re.partial().extend(re.pick(ee).shape).omit(O),Qe=ke.partial().extend(ke.pick({type:!0,center:!0,radius:!0}).shape).omit(O),$e=ie.partial().extend(ie.pick(ee).shape).omit(O),Xe=le.partial().extend(le.pick(ee).shape).omit(O),Ye=Je.partial().omit({...O,name:!0,type:!0}).extend({type:t.literal("Text"),text:t.string()}),et=qe.partial().omit({...O,name:!0,type:!0}).extend({type:t.literal("Note"),text:t.string()}),fo=se.partial().extend(se.pick({...ee,imageUrl:!0}).shape).omit(O),Dt=t.discriminatedUnion("type",[We,Be,_e,Qe,$e,Xe,fo,Ye,et]);var di=ne.omit({coordinates:!0}),gi=re.omit({coordinates:!0});var ui=ie.omit({coordinates:!0}),yi=le.omit({coordinates:!0});var hi=se.omit({coordinates:!0}),fi=ho.omit({coordinates:!0}),w={type:!0,id:!0},So=Fe.partial().extend(Fe.pick(w).shape),xo=ne.partial().extend(ne.pick(w).shape),Co=re.partial().extend(re.pick(w).shape),bo=ke.partial().extend(ke.pick(w).shape),Io=ie.partial().extend(ie.pick(w).shape),Eo=le.partial().extend(le.pick(w).shape),Uo=Je.partial().extend(Je.pick(w).shape).omit({name:!0}),Mo=qe.partial().extend(qe.pick(w).shape).omit({name:!0}),Lo=se.partial().extend(se.pick(w).shape),Vt=t.discriminatedUnion("type",[So,xo,Co,bo,Io,Eo,Uo,Mo,Lo]),Nt=t.object({ids:t.array(t.string()).optional()}),Ht=t.object({ids:t.array(t.string()).optional()});var Go=e("getElement",k.string()),Po=e("getElementGeometry",k.string()),To=e("getElements",Nt.optional()),zo=e("getElementGroup",k.string()),Fo=e("getElementGroups",Ht.optional()),ko=e("setElementGroupVisibility",_),Ro=z("onElementChange",k.object({id:k.string()})),Bo=f("onElementCreate"),vo=f("onElementCreateEnd"),Ao=z("onElementDelete",k.object({id:k.string()})),Oo=z("onElementGroupChange",k.object({id:k.string()})),wo=e("createElement",Dt),jo=e("updateElement",Vt),Do=e("deleteElement",k.string()),Zt={methods:[Go,Po,To,zo,Fo,ko,wo,jo,Do],listeners:[Ro,Bo,vo,Ao,Oo]};var Vo=f("onPointerClick"),No=f("onPointerMove"),Jt={methods:null,listeners:[Vo,No]};import{z as i}from"zod";import{z as s}from"zod";var Ho=s.enum(["in","ni"]),Zo=s.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),Pi=s.enum(["and","or"]),qt=s.union([s.number(),s.string(),s.boolean(),s.null()]),Kt=s.string().or(s.null()),Jo=s.tuple([Kt,Ho,s.array(qt).or(s.null())]),qo=s.tuple([Kt,Zo,qt]),tt=s.union([Jo,qo]),at=s.tuple([s.lazy(()=>s.union([at,tt,s.null(),s.boolean()])),s.enum(["and","or"]),s.lazy(()=>s.union([at,tt,s.null(),s.boolean()]))]),U=s.union([at,tt,s.null(),s.boolean()]),M=s.union([A,oe,Te,s.array(H)]);import{z as m}from"zod";import{z as o}from"zod";var Wt=o.enum(["avg","max","min","sum","median"]),_t=o.enum(["avg","max","min","sum","count"]),Ko=o.object({method:Wt,attribute:o.string()}),Wo=o.object({methods:o.array(o.union([Wt,o.literal("count")])),attribute:o.string().optional()}),Qt=o.object({boundary:M.optional(),filters:U.optional(),aggregation:Ko.optional()}),$t=o.object({layerId:o.string(),attribute:o.string(),limit:o.number().optional(),boundary:M.optional(),filters:U.optional(),values:Qt.optional()}),ki=o.object({key:o.union([o.number(),o.string(),o.boolean()]),value:o.number().nullable()}),ot=o.object({type:o.literal("equal-intervals"),count:o.number()}),_o=o.object({type:o.literal("time-interval"),interval:o.enum(["hour","day","week","month","year"])}),Xt=o.object({layerId:o.string(),attribute:o.string(),steps:o.union([ot,_o,o.array(o.number())]),boundary:M.optional(),filters:U.optional(),values:Qt.optional()}),Ri=o.object({min:o.number(),max:o.number(),value:o.number()}),Yt=o.object({layerId:o.string(),boundary:M.optional(),filters:U.optional(),aggregation:Wo}),ea=o.enum(["h3"]),Qo=o.object({type:ea,resolution:o.number(),method:_t.extract(["count"])}),$o=o.object({type:ea,resolution:o.number(),method:_t.exclude(["count"]),attribute:o.string()}),Xo=o.union([Qo,$o]),ta=o.object({layerId:o.string(),boundary:M.optional(),filters:U.optional(),gridConfig:Xo});var Yo=m.enum(["avg","min","max","sum","median","stddev","majority","area"]),nt=m.object({layerId:m.string(),bandId:m.string(),boundary:M.optional(),filters:U.optional()}),en=m.object({methods:m.array(Yo),percentiles:m.array(m.number()).optional()}),aa=nt.extend({aggregation:en}),ji=m.object({rank:m.number(),value:m.number().nullable()}),oa=nt.extend({steps:m.union([ot,m.array(m.number())])}),Di=m.object({min:m.number(),max:m.number(),value:m.number()}),na=nt.extend({limit:m.number().optional()}),Vi=m.object({key:m.number(),value:m.number(),areaM2:m.number().optional()}),ra=m.object({layerId:m.string(),bandId:m.string(),boundary:m.union([Ze,W])}),Ni=m.object({distanceM:m.number(),value:m.number().nullable()});import{z as n}from"zod";var qi=n.enum(["processing","completed","failed","incomplete"]),ia=n.object({type:n.literal("geoJsonUrl"),url:n.string().url(),refreshInterval:n.number().min(250).max(5*60*1e3).nullable().optional()}),la=n.object({type:n.literal("geoJsonData"),data:n.object({}).passthrough().or(n.instanceof(ArrayBuffer))}),sa=n.object({type:n.literal("geoJsonFile"),file:n.instanceof(File)}),tn=n.enum(["default","nameOnly"]),ma=n.object({id:n.string(),style:n.object({}).passthrough().optional(),shownInLegend:n.boolean().optional(),legendDisplay:tn.optional(),name:n.string().optional(),caption:n.string().optional(),description:n.string().optional(),bounds:A.optional(),source:n.union([ia,la,sa]).optional()}),pa=n.object({ids:n.array(n.string()).optional()}),ca=n.object({ids:n.array(n.string()).optional()}),te=n.object({id:n.string(),layerId:n.string()}),da=n.object({ids:te.array().optional(),layerIds:n.string().array().optional()}),ga=n.object({layerIds:n.array(n.string()).optional(),areaQuery:n.union([n.object({coordinates:Pe}),n.object({boundary:A})]).optional()}),an=n.object({Point:n.object({}).passthrough().optional(),Line:n.object({}).passthrough().optional(),Polygon:n.object({}).passthrough().optional()}),ua=n.object({source:n.union([ia,la,sa]),name:n.string(),bounds:A.optional(),caption:n.string().optional(),description:n.string().optional(),geometryStyles:an.optional()});var on=e("getLayer",i.string()),nn=e("getLayers",pa.optional()),rn=e("setLayerVisibility",_),ln=z("onLayerChange",i.object({id:i.string()})),sn=e("setLayerStyle",i.object({id:i.string(),style:i.object({}).passthrough()})),mn=e("setLayerLegendVisibility",_),pn=e("createLayersFromGeoJson",ua),cn=e("updateLayer",ma),dn=e("deleteLayer",i.string()),gn=e("duplicateLayer",i.string()),un=e("getLayerGroup",i.string()),yn=e("getLayerGroups",ca.optional()),hn=e("setLayerGroupVisibility",_),fn=e("setLayerGroupLegendVisibility",_),Sn=z("onLayerGroupChange",i.object({id:i.string()})),xn=e("getLegendItem",te),Cn=e("getLegendItems",da.optional()),bn=z("onLegendItemChange",te),In=e("setLegendItemVisibility",i.object({show:te.array().optional(),hide:te.array().optional()})),En=e("getLayerFilters",i.string()),Un=e("setLayerFilters",i.object({layerId:i.string(),filters:U,note:i.string().optional()})),Mn=z("onLayerFiltersChange",i.object({layerId:i.string()})),Ln=e("getLayerBoundaries",i.string()),Gn=e("setLayerBoundary",i.object({layerIds:i.array(i.string()),boundary:M.nullable()})),Pn=z("onLayerBoundariesChange",i.object({layerId:i.string()})),Tn=e("getRenderedFeatures",ga.optional()),zn=e("getFeature",i.object({id:i.string().or(i.number()),layerId:i.string()})),Fn=e("getFeatures",i.object({layerId:i.string(),filters:U.optional(),sorting:ze.optional(),boundary:M.optional(),search:i.string().optional(),pagination:i.string().optional().nullish(),pageSize:i.number().optional(),select:i.array(i.string()).optional()})),kn=e("getGeoJsonFeature",i.object({id:i.string().or(i.number()),layerId:i.string()})),Rn=e("getCategoryData",$t),Bn=e("getHistogramData",Xt),vn=e("getAggregates",Yt),An=e("getPrecomputedAggregates",ta),On=e("getRasterAggregates",aa),wn=e("getRasterHistogramData",oa),jn=e("getRasterCategoryData",na),Dn=e("getRasterProfile",ra),Vn=e("getLayerSchema",i.string()),ya={methods:[on,nn,rn,sn,mn,pn,dn,cn,gn,un,yn,hn,fn,xn,Cn,In,En,Un,Ln,Gn,Tn,zn,Fn,kn,Rn,Bn,vn,An,On,wn,jn,Dn,Vn],listeners:[ln,Sn,bn,Mn,Pn]};import{z as Nn}from"zod";var Hn=e("getMapDetails",Nn.undefined()),ha={methods:[Hn],listeners:[]};import{z as ve}from"zod";import{z as Z}from"zod";var fa=Z.object({id:Z.string().or(Z.number()),layerId:Z.string(),showPopup:Z.boolean().optional(),fitViewport:Z.boolean().or(Z.object({maxZoom:Z.number()})).optional()});var Zn=e("getSelection",ve.undefined()),Jn=f("onSelectionChange"),qn=e("selectFeature",fa),Kn=e("clearSelection",ve.object({features:ve.boolean().optional(),elements:ve.boolean().optional()}).optional()),Sa={methods:[Zn,qn,Kn],listeners:[Jn]};import{z as nr}from"zod";import{z as x}from"zod";var xa=["circle","highlighter","line","marker","note","pin","polygon","route","text"],Wn=[...xa,"link"],Ca=x.enum(Wn),ba=x.enum(xa),j={showInspector:x.boolean().optional()},_n=We.pick({color:!0,symbol:!0,frame:!0}).extend({afterCreation:x.enum(["enter name","add another","select"])}).required(),Qn=Be.pick({color:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,distanceMarker:!0}).required(),$n=Be.pick({color:!0,routingMode:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,distanceMarker:!0,endCaps:!0}).required(),Xn=_e.pick({color:!0,fillOpacity:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,areaMarker:!0}).required(),Yn=Qe.pick({color:!0,fillOpacity:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,radiusMarker:!0}).required(),er=$e.pick({color:!0,opacity:!0,size:!0}).required(),tr=Xe.pick({color:!0,opacity:!0,renderHoles:!0}).extend({size:x.number().min(0).max(200)}).required(),ar=Ye.pick({color:!0,align:!0,style:!0}).required(),or=et.pick({color:!0,align:!0,style:!0}).required(),Ia=x.discriminatedUnion("tool",[_n.partial().extend({tool:x.literal("pin"),...j}),Qn.partial().extend({tool:x.literal("line"),...j}),$n.partial().extend({tool:x.literal("route"),...j}),Xn.partial().extend({tool:x.literal("polygon"),...j}),Yn.partial().extend({tool:x.literal("circle"),...j}),er.partial().extend({tool:x.literal("marker"),...j}),tr.partial().extend({tool:x.literal("highlighter"),...j}),ar.partial().extend({tool:x.literal("text"),...j}),or.partial().extend({tool:x.literal("note"),...j})]);var rr=e("setTool",Ca.nullable()),ir=e("getTool",nr.undefined()),lr=f("onToolChange"),sr=e("setToolSettings",Ia),mr=e("getToolSettings",ba),pr=f("onToolSettingsChange"),Ea={methods:[rr,ir,sr,mr],listeners:[lr,pr]};import{z as X}from"zod";import{z as a}from"zod";import{z as Q}from"zod";var D=Q.union([Q.object({after:Q.string()}),Q.object({before:Q.string()}),Q.object({at:Q.enum(["start","end"])})]);import{z as C}from"zod";import{z as u}from"zod";var cr=u.object({onCreate:u.function().args(u.object({id:u.string()})).returns(u.void()).optional(),onDestroy:u.function().args(u.object({id:u.string()})).returns(u.void()).optional()}),dr=u.object({onCreate:u.string().optional(),onDestroy:u.string().optional()}),g=cr.extend({id:u.string()}),Ua=g.partial({id:!0}),p={params:Ua,clonable:Ua.extend(dr.shape)},b=g.extend({label:u.string().optional()}),y={params:b.extend(p.params.shape),clonable:b.extend(p.clonable.shape)};function l(r){return r.partial().extend({id:u.string(),type:r.shape.type})}var L=u.object({label:u.string(),value:u.string(),disabled:u.boolean().optional()});var rt=C.object({type:C.literal("ActionTrigger"),label:C.string(),disabled:C.boolean().optional()}),me={read:g.extend(rt.shape).extend({onTrigger:C.function().args(C.object({id:C.string()})).returns(C.void())}),create:p.params.extend(rt.shape).extend({type:C.undefined()}).extend({onTrigger:C.function().args(C.object({id:C.string()})).returns(C.void())}),clonable:p.clonable.extend(rt.shape).extend({type:C.undefined()}).extend({onTrigger:C.string()})};import{z as S}from"zod";var Ae=S.object({type:S.literal("FeatureAction"),label:S.string(),onTrigger:S.function().args(S.object({feature:S.custom()})).returns(S.void()),layerIds:S.array(S.string()).optional(),geometryTypes:S.array(S.enum(["Polygon","Line","Point","Raster"])).optional()}),Oe={read:g.extend(Ae.shape).extend({id:S.string()}),create:p.params.extend(Ae.shape).extend({type:S.undefined()}),clonable:p.clonable.extend(Ae.shape).extend({type:S.undefined()}).extend({onTrigger:S.string()}),update:l(p.params.extend(Ae.shape).extend({type:S.undefined()}))};import{z as gr}from"zod";var it=g.extend({type:gr.literal("FlexibleSpace")}),Ma=it.partial({id:!0}),pe={params:Ma,clonable:Ma.extend(p.clonable.shape)},lt={params:l(pe.params),clonable:l(pe.clonable)};import{z as E}from"zod";import{z as Ue}from"zod";import{z as R}from"zod";var ce=g.extend({type:R.literal("Button"),label:R.string(),variant:R.enum(["filled","transparent","outlined"]).optional(),tint:R.enum(["default","primary","accent","danger"]).optional(),disabled:R.boolean().optional(),onClick:R.function().args(R.object({id:R.string()})).returns(R.void())}),La=ce.extend(p.params.shape),J={params:La,clonable:La.extend(p.clonable.shape).extend({onClick:R.string()})},st={params:l(J.params),clonable:l(J.clonable)};import{z as de}from"zod";var mt=b.extend({type:de.literal("ButtonRow"),align:de.enum(["start","end"]).optional(),items:de.array(ce)}),Ga=mt.extend(y.params.shape).omit({items:!0}).extend({items:de.array(J.params)}),ur=Ga.extend(y.clonable.shape).extend({items:de.array(J.clonable)}),ge={params:Ga,clonable:ur},pt={params:l(ge.params),clonable:l(ge.clonable)};import{z as q}from"zod";var Pa=q.array(L.shape.value),ct=b.extend({type:q.literal("CheckboxGroup"),options:q.array(L),value:Pa,onChange:q.function().args(q.object({value:Pa,id:q.string()})).returns(q.void())}),Ta=ct.extend(y.params.shape),ue={params:Ta,clonable:Ta.extend(y.clonable.shape).extend({onChange:q.string()})},dt={params:l(ue.params),clonable:l(ue.clonable)};import{z as yr}from"zod";var gt=g.extend({type:yr.literal("Divider")}),za=gt.partial({id:!0}),ye={params:za,clonable:za.extend(p.clonable.shape)},ut={params:l(ye.params),clonable:l(ye.clonable)};import{z as B}from"zod";var hr=B.lazy(()=>B.array(fe.refine(r=>r.type!=="Grid"))),fr=B.lazy(()=>B.array(G.params.refine(r=>r.type!=="Grid"))),Sr=B.lazy(()=>B.array(G.clonable.refine(r=>r.type!=="Grid"))),yt=g.extend({type:B.literal("Grid"),grid:B.string().optional(),verticalAlignment:B.enum(["top","center","bottom"]).optional(),horizontalDistribution:B.enum(["start","center","end","space-between","space-around","space-evenly"]).optional(),items:hr}),Fa=yt.extend(p.params.shape).omit({items:!0}).extend({items:fr}),xr=Fa.extend(p.clonable.shape).extend({items:Sr}),he={params:Fa,clonable:xr},ht={params:l(he.params),clonable:l(he.clonable)};import{z as we}from"zod";var ft=g.extend({type:we.literal("Iframe"),height:we.number().or(we.string()).optional(),url:we.string()}),ka=ft.extend(p.params.shape),Se={params:ka,clonable:ka.extend(p.clonable.shape)},St={params:l(Se.params),clonable:l(Se.clonable)};import{z as $}from"zod";var Ra=L.shape.value.optional(),xt=b.extend({type:$.literal("RadioGroup"),options:$.array(L),value:Ra,onChange:$.function().args($.object({value:Ra,id:$.string()})).returns($.void())}),Ba=xt.extend(y.params.shape),xe={params:Ba,clonable:Ba.extend(y.clonable.shape).extend({onChange:$.string()})},Ct={params:l(xe.params),clonable:l(xe.clonable)};import{z as P}from"zod";var bt=b.extend({type:P.literal("Select"),options:P.array(L),value:P.string().optional(),placeholder:P.string().optional(),search:P.boolean().optional(),onChange:P.function().args(P.object({value:P.string(),id:P.string()})).returns(P.void())}),va=bt.extend(y.params.shape),Ce={params:va,clonable:va.extend(y.clonable.shape).extend({onChange:P.string()})},It={params:l(Ce.params),clonable:l(Ce.clonable)};import{z as Aa}from"zod";var Et=g.extend({type:Aa.literal("Text"),content:Aa.string()}),Oa=Et.extend(p.params.shape),be={params:Oa,clonable:Oa.extend(p.clonable.shape)},Ut={params:l(be.params),clonable:l(be.clonable)};import{z as d}from"zod";var Mt=b.extend({type:d.literal("TextInput"),value:d.string(),placeholder:d.string().optional(),onChange:d.function().args(d.object({value:d.string(),id:d.string()})).returns(d.void()).optional(),onBlur:d.function().args(d.object({value:d.string(),id:d.string()})).returns(d.void()).optional(),onFocus:d.function().args(d.object({value:d.string(),id:d.string()})).returns(d.void()).optional()}),wa=Mt.extend(y.params.shape),Ie={params:wa,clonable:wa.extend(y.clonable.shape).extend({onChange:d.string().optional(),onBlur:d.string().optional(),onFocus:d.string().optional()})},Lt={params:l(Ie.params),clonable:l(Ie.clonable)};import{z as V}from"zod";var ja=V.array(L.shape.value),Gt=b.extend({type:V.literal("ToggleGroup"),alignment:V.enum(["start","end"]).optional(),options:V.array(L),value:ja,onChange:V.function().args(V.object({value:ja,id:V.string()})).returns(V.void())}),Da=Gt.extend(y.params.shape),Ee={params:Da,clonable:Da.extend(y.clonable.shape).extend({onChange:V.string()})},Pt={params:l(Ee.params),clonable:l(Ee.clonable)};var fe=Ue.discriminatedUnion("type",[ce,Et,gt,Mt,bt,it,mt,ct,xt,Gt,ft,yt]),Cr=Ue.discriminatedUnion("type",[J.params,be.params,ye.params,Ie.params,Ce.params,pe.params,ge.params,ue.params,xe.params,Ee.params,Se.params,he.params]),br=Ue.discriminatedUnion("type",[J.clonable,be.clonable,ye.clonable,Ie.clonable,Ce.clonable,pe.clonable,ge.clonable,ue.clonable,xe.clonable,Ee.clonable,Se.clonable,he.clonable]),G={params:Cr,clonable:br},Tt={params:Ue.discriminatedUnion("type",[st.params,Ut.params,Lt.params,It.params,ut.params,lt.params,pt.params,dt.params,Ct.params,Pt.params,St.params,ht.params]),clonable:Ue.discriminatedUnion("type",[st.clonable,Ut.clonable,Lt.clonable,It.clonable,ut.clonable,lt.clonable,pt.clonable,dt.clonable,Ct.clonable,Pt.clonable,St.clonable,ht.clonable])};var Ir=g.extend({type:E.literal("Panel"),title:E.string().optional(),body:E.array(fe).optional(),footer:E.array(fe).optional(),onClickClose:E.function().args(E.object({id:E.string()})).returns(E.void()).optional()}),Va=Ir.extend(p.params.shape).required({id:!0}).partial({type:!0}).omit({body:!0,footer:!0}).extend({body:E.array(G.params).optional(),footer:E.array(G.params).optional()}),zt={params:Va,clonable:Va.extend(p.clonable.shape).required({id:!0}).extend({onClickClose:E.string().optional(),body:E.array(G.clonable).optional(),footer:E.array(G.clonable).optional()})};var Os=a.object({actionTrigger:me.create,placement:D.optional()}),Na=a.object({actionTrigger:me.clonable,placement:D.optional()}),ws=me.create.partial().required({id:!0}),Ha=me.clonable.partial().required({id:!0}),js=a.object({action:Oe.create,placement:D.optional()}),Za=a.object({action:Oe.clonable,placement:D.optional()}),Ja=Oe.clonable.partial().required({id:!0}),Ds=a.object({panel:zt.params,placement:D.optional()}),qa=a.object({panel:zt.clonable,initialPlacement:D.optional()}),Vs=a.object({panelId:a.string(),elements:a.array(a.object({element:G.params,container:a.union([a.literal("body"),a.literal("footer"),a.object({id:a.string()})]).optional(),placement:D.optional()}))}),Ka=a.object({panelId:a.string(),elements:a.array(a.object({element:G.clonable,container:a.union([a.literal("body"),a.literal("footer"),a.object({id:a.string()})]).optional(),placement:D.optional()}))}),Ns=a.object({panelId:a.string(),elements:a.array(a.object({element:Tt.params}))}),Wa=a.object({panelId:a.string(),elements:a.array(a.object({element:Tt.clonable}))}),_a=a.object({panelId:a.string(),elements:a.array(a.string())}),Qa=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(),rotation:a.boolean().optional(),contextMenu:a.boolean().optional()}),$a=a.object({featureSelectPanel:a.boolean().optional(),featureHoverPanel:a.boolean().optional(),elementSelectPanel:a.boolean().optional(),linkClickOpen:a.boolean().optional(),imageLightboxOpen:a.boolean().optional()});var Er=e("createActionTrigger",Na),Ur=e("updateActionTrigger",Ha),Mr=e("deleteActionTrigger",X.string()),Lr=e("createFeatureAction",Za),Gr=e("updateFeatureAction",Ja),Pr=e("deleteFeatureAction",X.string()),Tr=e("createPanelId",X.void()),zr=e("createOrUpdatePanel",qa),Fr=e("deletePanel",X.string()),kr=e("createPanelElements",Ka),Rr=e("updatePanelElements",Wa),Br=e("deletePanelElements",_a),vr=e("updateUiControls",Qa),Ar=e("setOnMapInteractionsUi",$a),Or=e("showLayerDataTable",X.object({layerId:X.string(),sorting:ze.optional()}).optional()),wr=e("hideLayerDataTable",X.undefined()),Xa={methods:[Er,Ur,Mr,Lr,Gr,Pr,Tr,zr,Fr,kr,Rr,Br,vr,Ar,Or,wr],listeners:null};import{z as ao}from"zod";import{z as De}from"zod";var je=De.object({center:Pe,zoom:wt}),Ya=De.object({center:je.shape.center.optional(),zoom:je.shape.zoom.optional()}),eo=De.object({minZoom:je.shape.zoom.nullish(),maxZoom:je.shape.zoom.nullish(),bounds:A.nullish()}).nullable(),to=De.object({bounds:A});var jr=e("getViewport",ao.undefined()),Dr=e("setViewport",Ya),Vr=e("getViewportConstraints",ao.undefined()),Nr=e("setViewportConstraints",eo),Hr=e("fitViewportToBounds",to),Zr=f("onViewportMove"),Jr=f("onViewportMoveEnd"),qr=f("onMapIdle"),oo={methods:[Dr,jr,Vr,Nr,Hr],listeners:[Zr,Jr,qr]};var Ft=[Xa,oo,ya,Zt,Sa,Jt,Ea,ha,Ot];function ym(r,Y,kt){let Ve=new Map;async function Rt(T){if(!$r.safeParse(T.data).success){kt?.onUnknownMessage?.(T.data);return}let Me=io.safeParse(T.data);if(!Me.success){kt?.onInvalidMessage?.(T.data,Me.error),T.ports[0]?.postMessage(no(Me.error.message));return}let{data:I}=Me;if(I.type==="felt.ready")T.ports[0]?.postMessage(!0);else if(I.type==="felt.addListener"){if(I.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let ae="options"in I.event?{options:"options"in I.event?I.event.options:void 0,handler:He=>{T.ports[0]?.postMessage(He)}}:{handler:He=>{T.ports[0]?.postMessage(He)}},Ne=Y.listeners[I.event.eventName](ae);Ve.set(I.event.id,Ne)}else if(I.type==="felt.removeListener")Ve.get(I.id)?.(),Ve.delete(I.id);else try{let ae=Y.methods[I.type],Ne=await ae(I.params);T.ports[0]?.postMessage(Ne)}catch(ae){T.ports[0]?.postMessage(no(ae))}}return r.addEventListener("message",Rt),()=>{r.removeEventListener("message",Rt)}}var ro={methods:Ft.map(r=>r.methods??[]).flat(),listeners:Ft.map(r=>r.listeners??[]).flat()},Kr=h.discriminatedUnion("eventName",[h.strictObject({eventName:h.literal("")}),h.strictObject({eventName:h.literal("onGenericEvent"),id:h.string(),options:h.object({id:h.string()})}),...ro.listeners]),Wr=h.strictObject({type:h.literal("felt.addListener"),event:Kr}),_r=h.strictObject({type:h.literal("felt.removeListener"),id:h.string()}),Qr=h.strictObject({type:h.literal("felt.ready")}),io=h.discriminatedUnion("type",[Qr,Wr,_r,...ro.methods]),$r=h.object({type:h.enum(io.options.map(r=>r.shape.type.value))});function no(r){return{__error__:Xr(r)}}function Xr(r){return r instanceof Error?r.message:typeof r=="object"&&r!==null&&"message"in r?String(r.message):typeof r=="string"?r:"Unknown error"}export{ym as createMessageHandler};
1
+ import{z as h}from"zod";import{z as W}from"zod";import{z as Z}from"zod";function e(a,U){return Z.strictObject({type:Z.literal(a),params:U})}function F(a,U){return Z.strictObject({eventName:Z.literal(a),id:Z.string(),options:U})}function f(a){return Z.strictObject({eventName:Z.literal(a),id:Z.string()})}import{z as w}from"zod";var vt=w.object({id:w.string(),name:w.string(),uiColorScheme:w.enum(["light","dark"]),attribution:w.string().optional()}),At=vt.extend({type:w.literal("color"),color:w.string()}),Ot=vt.extend({type:w.literal("xyz_tile"),tileUrl:w.string()});var mo=e("getCurrentBasemap",W.void()),po=e("getBasemaps",W.void()),co=e("chooseBasemap",W.string()),go=e("removeBasemap",W.string()),uo=e("addCustomBasemap",W.object({basemap:W.discriminatedUnion("type",[At.omit({id:!0,uiColorScheme:!0}),Ot.omit({id:!0})]),select:W.boolean().optional()})),yo=f("onBasemapChange"),wt={methods:[mo,po,co,uo,go],listeners:[yo]};import{z as B}from"zod";import{z as c}from"zod";var Pe=c.number(),Ge=c.number(),Te=c.object({latitude:Ge,longitude:Pe}),j=c.tuple([Pe,Ge]),re=c.object({type:c.literal("Polygon"),coordinates:c.array(c.array(j).min(4).refine(a=>a[0][0]===a[a.length-1][0]&&a[0][1]===a[a.length-1][1],"The last point of each ring must be identical to the first"))}),ze=c.object({type:c.literal("MultiPolygon"),coordinates:c.array(re.shape.coordinates)}),Je=c.object({type:c.literal("LineString"),coordinates:c.array(j).min(2)}),_=c.object({type:c.literal("MultiLineString"),coordinates:c.array(Je.shape.coordinates)}),jt=c.number().min(1).max(23),D=c.tuple([Pe,Ge,Pe,Ge]),Q=c.object({show:c.array(c.string()).optional(),hide:c.array(c.string()).optional()}),ho=c.enum(["asc","desc"]),Fe=c.object({attribute:c.string(),direction:ho});import{z as t}from"zod";var k=t.object({id:t.string(),groupId:t.string().nullable(),color:t.string(),name:t.string().nullable(),description:t.string().nullable(),attributes:t.record(t.string(),t.unknown()),interaction:t.enum(["default","locked"]).optional()}),Be=t.object({imageUrl:t.string().nullable()}),We=t.object({strokeOpacity:t.number(),strokeWidth:t.number(),strokeStyle:t.enum(["solid","dashed","dotted"])}),fo=t.enum(["meter","kilometer","foot","mile"]),ke=k.extend(Be.shape).extend({type:t.literal("Place"),coordinates:j,symbol:t.string(),frame:t.enum(["frame-circle","frame-square"]).nullable(),hideLabel:t.boolean()}),ie=k.extend(Be.shape).extend(We.shape).extend({type:t.literal("Path"),coordinates:_.shape.coordinates,distanceMarker:t.boolean(),routingMode:t.enum(["driving","cycling","walking","flying"]).nullable(),endCaps:t.boolean()}),te=t.object({origin:j,mode:t.enum(["driving","cycling","walking"]),minutes:t.number().int().min(1).max(120)}),ee=k.extend(Be.shape).extend(We.shape).extend({type:t.literal("Polygon"),coordinates:re.shape.coordinates,fillOpacity:t.number().min(0).max(1),areaMarker:t.boolean()}),Re=k.extend(Be.shape).extend(We.shape).extend({type:t.literal("Circle"),center:j,radius:t.number(),radiusMarker:t.boolean(),radiusDisplayAngle:t.number(),radiusDisplayUnit:fo.nullable(),fillOpacity:t.number().min(0).max(1)}),le=k.extend({type:t.literal("Marker"),coordinates:_.shape.coordinates,opacity:t.number().min(0).max(1),size:t.number().min(0).max(100),zoom:t.number().min(0).max(23)}),se=k.extend({type:t.literal("Highlighter"),coordinates:ze.shape.coordinates,renderHoles:t.boolean(),opacity:t.number().min(0).max(1)}),Dt=t.object({position:j,rotation:t.number(),scale:t.number(),zoom:t.number().min(0).max(23),text:t.string(),align:t.enum(["left","center","right"]),style:t.enum(["italic","light","regular","caps"]),name:t.string()}),qe=k.extend(Dt.shape).extend({type:t.literal("Text")}),Ke=k.extend(Dt.shape).extend({type:t.literal("Note"),widthScale:t.number().min(0)}),me=k.extend({type:t.literal("Image"),coordinates:_.shape.coordinates,imageUrl:t.string(),opacity:t.number().min(0).max(1)}).omit({color:!0}),So=k.extend({type:t.literal("Link"),coordinates:_.shape.coordinates,url:t.string()}),ae={type:!0,coordinates:!0},R={id:!0},_e=ke.partial().extend(ke.pick(ae).shape).omit(R),ve=ie.partial().extend(ie.pick(ae).shape).omit(R),Qe=ee.partial().extend(ee.pick(ae).shape).omit(R),yi=ee.partial().omit({...R,coordinates:!0}).extend({type:t.literal("Polygon"),isochrone:te}),xo=Qe.partial({coordinates:!0}).extend({isochrone:te.optional()}),$e=Re.partial().extend(Re.pick({type:!0,center:!0,radius:!0}).shape).omit(R),Xe=le.partial().extend(le.pick(ae).shape).omit(R),Ye=se.partial().extend(se.pick(ae).shape).omit(R),et=qe.partial().omit({...R,name:!0,type:!0}).extend({type:t.literal("Text"),text:t.string()}),tt=Ke.partial().omit({...R,name:!0,type:!0}).extend({type:t.literal("Note"),text:t.string()}),Co=me.partial().extend(me.pick({...ae,imageUrl:!0}).shape).omit(R),Vt=t.discriminatedUnion("type",[_e,ve,xo,$e,Xe,Ye,Co,et,tt]).superRefine((a,U)=>{a.type==="Polygon"&&(a.coordinates===void 0&&a.isochrone===void 0&&U.addIssue({code:t.ZodIssueCode.custom,message:"A Polygon needs either coordinates or an isochrone"}),a.coordinates!==void 0&&a.isochrone!==void 0&&U.addIssue({code:t.ZodIssueCode.custom,message:"A Polygon needs either coordinates or an isochrone, not both"}))});var hi=ie.omit({coordinates:!0}),fi=ee.omit({coordinates:!0}).extend({isochrone:te.nullable()});var Si=le.omit({coordinates:!0}),xi=se.omit({coordinates:!0});var Ci=me.omit({coordinates:!0}),bi=So.omit({coordinates:!0}),V={type:!0,id:!0},bo=ke.partial().extend(ke.pick(V).shape),Io=ie.partial().extend(ie.pick(V).shape),Eo=ee.partial().extend(ee.pick(V).shape).extend({isochrone:te.optional()}),Uo=Re.partial().extend(Re.pick(V).shape),Mo=le.partial().extend(le.pick(V).shape),Lo=se.partial().extend(se.pick(V).shape),Po=qe.partial().extend(qe.pick(V).shape).omit({name:!0}),Go=Ke.partial().extend(Ke.pick(V).shape).omit({name:!0}),To=me.partial().extend(me.pick(V).shape),Nt=t.discriminatedUnion("type",[bo,Io,Eo,Uo,Mo,Lo,Po,Go,To]).superRefine((a,U)=>{a.type==="Polygon"&&a.coordinates!==void 0&&a.isochrone!==void 0&&U.addIssue({code:t.ZodIssueCode.custom,message:"A Polygon update can set coordinates or an isochrone, not both"})}),Ht=t.object({ids:t.array(t.string()).optional()}),Zt=t.object({ids:t.array(t.string()).optional()});var zo=e("getElement",B.string()),Fo=e("getElementGeometry",B.string()),ko=e("getElements",Ht.optional()),Ro=e("getElementGroup",B.string()),Bo=e("getElementGroups",Zt.optional()),vo=e("setElementGroupVisibility",Q),Ao=F("onElementChange",B.object({id:B.string()})),Oo=f("onElementCreate"),wo=f("onElementCreateEnd"),jo=F("onElementDelete",B.object({id:B.string()})),Do=F("onElementGroupChange",B.object({id:B.string()})),Vo=e("createElement",Vt),No=e("updateElement",Nt),Ho=e("deleteElement",B.string()),Jt={methods:[zo,Fo,ko,Ro,Bo,vo,Vo,No,Ho],listeners:[Ao,Oo,wo,jo,Do]};var Zo=f("onPointerClick"),Jo=f("onPointerMove"),qt={methods:null,listeners:[Zo,Jo]};import{z as i}from"zod";import{z as s}from"zod";var qo=s.enum(["in","ni"]),Ko=s.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),ki=s.enum(["and","or"]),Kt=s.union([s.number(),s.string(),s.boolean(),s.null()]),Wt=s.string().or(s.null()),Wo=s.tuple([Wt,qo,s.array(Kt).or(s.null())]),_o=s.tuple([Wt,Ko,Kt]),at=s.union([Wo,_o]),ot=s.tuple([s.lazy(()=>s.union([ot,at,s.null(),s.boolean()])),s.enum(["and","or"]),s.lazy(()=>s.union([ot,at,s.null(),s.boolean()]))]),M=s.union([ot,at,s.null(),s.boolean()]),L=s.union([D,re,ze,s.array(j)]);import{z as m}from"zod";import{z as n}from"zod";var _t=n.enum(["avg","max","min","sum","median"]),Qt=n.enum(["avg","max","min","sum","count"]),Qo=n.object({method:_t,attribute:n.string()}),$o=n.object({methods:n.array(n.union([_t,n.literal("count")])),attribute:n.string().optional()}),$t=n.object({boundary:L.optional(),filters:M.optional(),aggregation:Qo.optional()}),Xt=n.object({layerId:n.string(),attribute:n.string(),limit:n.number().optional(),boundary:L.optional(),filters:M.optional(),values:$t.optional()}),Ai=n.object({key:n.union([n.number(),n.string(),n.boolean()]),value:n.number().nullable()}),nt=n.object({type:n.literal("equal-intervals"),count:n.number()}),Xo=n.object({type:n.literal("time-interval"),interval:n.enum(["hour","day","week","month","year"])}),Yt=n.object({layerId:n.string(),attribute:n.string(),steps:n.union([nt,Xo,n.array(n.number())]),boundary:L.optional(),filters:M.optional(),values:$t.optional()}),Oi=n.object({min:n.number(),max:n.number(),value:n.number()}),ea=n.object({layerId:n.string(),boundary:L.optional(),filters:M.optional(),aggregation:$o}),ta=n.enum(["h3"]),Yo=n.object({type:ta,resolution:n.number(),method:Qt.extract(["count"])}),en=n.object({type:ta,resolution:n.number(),method:Qt.exclude(["count"]),attribute:n.string()}),tn=n.union([Yo,en]),aa=n.object({layerId:n.string(),boundary:L.optional(),filters:M.optional(),gridConfig:tn});var an=m.enum(["avg","min","max","sum","median","stddev","majority","area"]),rt=m.object({layerId:m.string(),bandId:m.string(),boundary:L.optional(),filters:M.optional()}),on=m.object({methods:m.array(an),percentiles:m.array(m.number()).optional()}),oa=rt.extend({aggregation:on}),Hi=m.object({rank:m.number(),value:m.number().nullable()}),na=rt.extend({steps:m.union([nt,m.array(m.number())])}),Zi=m.object({min:m.number(),max:m.number(),value:m.number()}),ra=rt.extend({limit:m.number().optional()}),Ji=m.object({key:m.number(),value:m.number(),areaM2:m.number().optional()}),ia=m.object({layerId:m.string(),bandId:m.string(),boundary:m.union([Je,_])}),qi=m.object({distanceM:m.number(),value:m.number().nullable()});import{z as r}from"zod";var Qi=r.enum(["processing","completed","failed","incomplete"]),la=r.object({type:r.literal("geoJsonUrl"),url:r.string().url(),refreshInterval:r.number().min(250).max(5*60*1e3).nullable().optional()}),sa=r.object({type:r.literal("geoJsonData"),data:r.object({}).passthrough().or(r.instanceof(ArrayBuffer))}),ma=r.object({type:r.literal("geoJsonFile"),file:r.instanceof(File)}),nn=r.enum(["default","nameOnly"]),pa=r.object({id:r.string(),style:r.object({}).passthrough().optional(),shownInLegend:r.boolean().optional(),legendDisplay:nn.optional(),name:r.string().optional(),caption:r.string().optional(),description:r.string().optional(),bounds:D.optional(),source:r.union([la,sa,ma]).optional()}),ca=r.object({ids:r.array(r.string()).optional()}),da=r.object({ids:r.array(r.string()).optional()}),oe=r.object({id:r.string(),layerId:r.string()}),ga=r.object({ids:oe.array().optional(),layerIds:r.string().array().optional()}),ua=r.object({layerIds:r.array(r.string()).optional(),areaQuery:r.union([r.object({coordinates:Te}),r.object({boundary:D})]).optional()}),rn=r.object({Point:r.object({}).passthrough().optional(),Line:r.object({}).passthrough().optional(),Polygon:r.object({}).passthrough().optional()}),ya=r.object({source:r.union([la,sa,ma]),name:r.string(),bounds:D.optional(),caption:r.string().optional(),description:r.string().optional(),geometryStyles:rn.optional()});var ln=e("getLayer",i.string()),sn=e("getLayers",ca.optional()),mn=e("setLayerVisibility",Q),pn=F("onLayerChange",i.object({id:i.string()})),cn=e("setLayerStyle",i.object({id:i.string(),style:i.object({}).passthrough()})),dn=e("setLayerLegendVisibility",Q),gn=e("createLayersFromGeoJson",ya),un=e("updateLayer",pa),yn=e("deleteLayer",i.string()),hn=e("duplicateLayer",i.string()),fn=e("getLayerGroup",i.string()),Sn=e("getLayerGroups",da.optional()),xn=e("setLayerGroupVisibility",Q),Cn=e("setLayerGroupLegendVisibility",Q),bn=F("onLayerGroupChange",i.object({id:i.string()})),In=e("getLegendItem",oe),En=e("getLegendItems",ga.optional()),Un=F("onLegendItemChange",oe),Mn=e("setLegendItemVisibility",i.object({show:oe.array().optional(),hide:oe.array().optional()})),Ln=e("getLayerFilters",i.string()),Pn=e("setLayerFilters",i.object({layerId:i.string(),filters:M,note:i.string().optional()})),Gn=F("onLayerFiltersChange",i.object({layerId:i.string()})),Tn=e("getLayerBoundaries",i.string()),zn=e("setLayerBoundary",i.object({layerIds:i.array(i.string()),boundary:L.nullable()})),Fn=F("onLayerBoundariesChange",i.object({layerId:i.string()})),kn=e("getRenderedFeatures",ua.optional()),Rn=e("getFeature",i.object({id:i.string().or(i.number()),layerId:i.string()})),Bn=e("getFeatures",i.object({layerId:i.string(),filters:M.optional(),sorting:Fe.optional(),boundary:L.optional(),search:i.string().optional(),pagination:i.string().optional().nullish(),pageSize:i.number().optional(),select:i.array(i.string()).optional()})),vn=e("getGeoJsonFeature",i.object({id:i.string().or(i.number()),layerId:i.string()})),An=e("getCategoryData",Xt),On=e("getHistogramData",Yt),wn=e("getAggregates",ea),jn=e("getPrecomputedAggregates",aa),Dn=e("getRasterAggregates",oa),Vn=e("getRasterHistogramData",na),Nn=e("getRasterCategoryData",ra),Hn=e("getRasterProfile",ia),Zn=e("getLayerSchema",i.string()),ha={methods:[ln,sn,mn,cn,dn,gn,yn,un,hn,fn,Sn,xn,Cn,In,En,Mn,Ln,Pn,Tn,zn,kn,Rn,Bn,vn,An,On,wn,jn,Dn,Vn,Nn,Hn,Zn],listeners:[pn,bn,Un,Gn,Fn]};import{z as Jn}from"zod";var qn=e("getMapDetails",Jn.undefined()),fa={methods:[qn],listeners:[]};import{z as Ae}from"zod";import{z as J}from"zod";var Sa=J.object({id:J.string().or(J.number()),layerId:J.string(),showPopup:J.boolean().optional(),fitViewport:J.boolean().or(J.object({maxZoom:J.number()})).optional()});var Kn=e("getSelection",Ae.undefined()),Wn=f("onSelectionChange"),_n=e("selectFeature",Sa),Qn=e("clearSelection",Ae.object({features:Ae.boolean().optional(),elements:Ae.boolean().optional()}).optional()),xa={methods:[Kn,_n,Qn],listeners:[Wn]};import{z as lr}from"zod";import{z as S}from"zod";var Ca=["circle","highlighter","isochrone","line","marker","note","pin","polygon","route","text"],$n=[...Ca,"link"],ba=S.enum($n),Ia=S.enum(Ca),v={showInspector:S.boolean().optional()},Xn=_e.pick({color:!0,symbol:!0,frame:!0}).extend({afterCreation:S.enum(["enter name","add another","select"])}).required(),Yn=ve.pick({color:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,distanceMarker:!0}).required(),er=ve.pick({color:!0,routingMode:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,distanceMarker:!0,endCaps:!0}).required(),Ea=Qe.pick({color:!0,fillOpacity:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,areaMarker:!0}).required(),tr=S.object({...Ea.omit({areaMarker:!0}).shape,...te.pick({mode:!0,minutes:!0}).shape}),ar=$e.pick({color:!0,fillOpacity:!0,strokeOpacity:!0,strokeWidth:!0,strokeStyle:!0,radiusMarker:!0}).required(),or=Xe.pick({color:!0,opacity:!0,size:!0}).required(),nr=Ye.pick({color:!0,opacity:!0,renderHoles:!0}).extend({size:S.number().min(0).max(200)}).required(),rr=et.pick({color:!0,align:!0,style:!0}).required(),ir=tt.pick({color:!0,align:!0,style:!0}).required(),Ua=S.discriminatedUnion("tool",[Xn.partial().extend({tool:S.literal("pin"),...v}),Yn.partial().extend({tool:S.literal("line"),...v}),er.partial().extend({tool:S.literal("route"),...v}),Ea.partial().extend({tool:S.literal("polygon"),...v}),tr.partial().extend({tool:S.literal("isochrone"),...v}),ar.partial().extend({tool:S.literal("circle"),...v}),or.partial().extend({tool:S.literal("marker"),...v}),nr.partial().extend({tool:S.literal("highlighter"),...v}),rr.partial().extend({tool:S.literal("text"),...v}),ir.partial().extend({tool:S.literal("note"),...v})]);var sr=e("setTool",ba.nullable()),mr=e("getTool",lr.undefined()),pr=f("onToolChange"),cr=e("setToolSettings",Ua),dr=e("getToolSettings",Ia),gr=f("onToolSettingsChange"),Ma={methods:[sr,mr,cr,dr],listeners:[pr,gr]};import{z as Y}from"zod";import{z as o}from"zod";import{z as $}from"zod";var N=$.union([$.object({after:$.string()}),$.object({before:$.string()}),$.object({at:$.enum(["start","end"])})]);import{z as C}from"zod";import{z as u}from"zod";var ur=u.object({onCreate:u.function().args(u.object({id:u.string()})).returns(u.void()).optional(),onDestroy:u.function().args(u.object({id:u.string()})).returns(u.void()).optional()}),yr=u.object({onCreate:u.string().optional(),onDestroy:u.string().optional()}),g=ur.extend({id:u.string()}),La=g.partial({id:!0}),p={params:La,clonable:La.extend(yr.shape)},b=g.extend({label:u.string().optional()}),y={params:b.extend(p.params.shape),clonable:b.extend(p.clonable.shape)};function l(a){return a.partial().extend({id:u.string(),type:a.shape.type})}var P=u.object({label:u.string(),value:u.string(),disabled:u.boolean().optional()});var it=C.object({type:C.literal("ActionTrigger"),label:C.string(),disabled:C.boolean().optional()}),pe={read:g.extend(it.shape).extend({onTrigger:C.function().args(C.object({id:C.string()})).returns(C.void())}),create:p.params.extend(it.shape).extend({type:C.undefined()}).extend({onTrigger:C.function().args(C.object({id:C.string()})).returns(C.void())}),clonable:p.clonable.extend(it.shape).extend({type:C.undefined()}).extend({onTrigger:C.string()})};import{z as x}from"zod";var Oe=x.object({type:x.literal("FeatureAction"),label:x.string(),onTrigger:x.function().args(x.object({feature:x.custom()})).returns(x.void()),layerIds:x.array(x.string()).optional(),geometryTypes:x.array(x.enum(["Polygon","Line","Point","Raster"])).optional()}),we={read:g.extend(Oe.shape).extend({id:x.string()}),create:p.params.extend(Oe.shape).extend({type:x.undefined()}),clonable:p.clonable.extend(Oe.shape).extend({type:x.undefined()}).extend({onTrigger:x.string()}),update:l(p.params.extend(Oe.shape).extend({type:x.undefined()}))};import{z as hr}from"zod";var lt=g.extend({type:hr.literal("FlexibleSpace")}),Pa=lt.partial({id:!0}),ce={params:Pa,clonable:Pa.extend(p.clonable.shape)},st={params:l(ce.params),clonable:l(ce.clonable)};import{z as E}from"zod";import{z as Me}from"zod";import{z as A}from"zod";var de=g.extend({type:A.literal("Button"),label:A.string(),variant:A.enum(["filled","transparent","outlined"]).optional(),tint:A.enum(["default","primary","accent","danger"]).optional(),disabled:A.boolean().optional(),onClick:A.function().args(A.object({id:A.string()})).returns(A.void())}),Ga=de.extend(p.params.shape),q={params:Ga,clonable:Ga.extend(p.clonable.shape).extend({onClick:A.string()})},mt={params:l(q.params),clonable:l(q.clonable)};import{z as ge}from"zod";var pt=b.extend({type:ge.literal("ButtonRow"),align:ge.enum(["start","end"]).optional(),items:ge.array(de)}),Ta=pt.extend(y.params.shape).omit({items:!0}).extend({items:ge.array(q.params)}),fr=Ta.extend(y.clonable.shape).extend({items:ge.array(q.clonable)}),ue={params:Ta,clonable:fr},ct={params:l(ue.params),clonable:l(ue.clonable)};import{z as K}from"zod";var za=K.array(P.shape.value),dt=b.extend({type:K.literal("CheckboxGroup"),options:K.array(P),value:za,onChange:K.function().args(K.object({value:za,id:K.string()})).returns(K.void())}),Fa=dt.extend(y.params.shape),ye={params:Fa,clonable:Fa.extend(y.clonable.shape).extend({onChange:K.string()})},gt={params:l(ye.params),clonable:l(ye.clonable)};import{z as Sr}from"zod";var ut=g.extend({type:Sr.literal("Divider")}),ka=ut.partial({id:!0}),he={params:ka,clonable:ka.extend(p.clonable.shape)},yt={params:l(he.params),clonable:l(he.clonable)};import{z as O}from"zod";var xr=O.lazy(()=>O.array(Se.refine(a=>a.type!=="Grid"))),Cr=O.lazy(()=>O.array(G.params.refine(a=>a.type!=="Grid"))),br=O.lazy(()=>O.array(G.clonable.refine(a=>a.type!=="Grid"))),ht=g.extend({type:O.literal("Grid"),grid:O.string().optional(),verticalAlignment:O.enum(["top","center","bottom"]).optional(),horizontalDistribution:O.enum(["start","center","end","space-between","space-around","space-evenly"]).optional(),items:xr}),Ra=ht.extend(p.params.shape).omit({items:!0}).extend({items:Cr}),Ir=Ra.extend(p.clonable.shape).extend({items:br}),fe={params:Ra,clonable:Ir},ft={params:l(fe.params),clonable:l(fe.clonable)};import{z as je}from"zod";var St=g.extend({type:je.literal("Iframe"),height:je.number().or(je.string()).optional(),url:je.string()}),Ba=St.extend(p.params.shape),xe={params:Ba,clonable:Ba.extend(p.clonable.shape)},xt={params:l(xe.params),clonable:l(xe.clonable)};import{z as X}from"zod";var va=P.shape.value.optional(),Ct=b.extend({type:X.literal("RadioGroup"),options:X.array(P),value:va,onChange:X.function().args(X.object({value:va,id:X.string()})).returns(X.void())}),Aa=Ct.extend(y.params.shape),Ce={params:Aa,clonable:Aa.extend(y.clonable.shape).extend({onChange:X.string()})},bt={params:l(Ce.params),clonable:l(Ce.clonable)};import{z as T}from"zod";var It=b.extend({type:T.literal("Select"),options:T.array(P),value:T.string().optional(),placeholder:T.string().optional(),search:T.boolean().optional(),onChange:T.function().args(T.object({value:T.string(),id:T.string()})).returns(T.void())}),Oa=It.extend(y.params.shape),be={params:Oa,clonable:Oa.extend(y.clonable.shape).extend({onChange:T.string()})},Et={params:l(be.params),clonable:l(be.clonable)};import{z as wa}from"zod";var Ut=g.extend({type:wa.literal("Text"),content:wa.string()}),ja=Ut.extend(p.params.shape),Ie={params:ja,clonable:ja.extend(p.clonable.shape)},Mt={params:l(Ie.params),clonable:l(Ie.clonable)};import{z as d}from"zod";var Lt=b.extend({type:d.literal("TextInput"),value:d.string(),placeholder:d.string().optional(),onChange:d.function().args(d.object({value:d.string(),id:d.string()})).returns(d.void()).optional(),onBlur:d.function().args(d.object({value:d.string(),id:d.string()})).returns(d.void()).optional(),onFocus:d.function().args(d.object({value:d.string(),id:d.string()})).returns(d.void()).optional()}),Da=Lt.extend(y.params.shape),Ee={params:Da,clonable:Da.extend(y.clonable.shape).extend({onChange:d.string().optional(),onBlur:d.string().optional(),onFocus:d.string().optional()})},Pt={params:l(Ee.params),clonable:l(Ee.clonable)};import{z as H}from"zod";var Va=H.array(P.shape.value),Gt=b.extend({type:H.literal("ToggleGroup"),alignment:H.enum(["start","end"]).optional(),options:H.array(P),value:Va,onChange:H.function().args(H.object({value:Va,id:H.string()})).returns(H.void())}),Na=Gt.extend(y.params.shape),Ue={params:Na,clonable:Na.extend(y.clonable.shape).extend({onChange:H.string()})},Tt={params:l(Ue.params),clonable:l(Ue.clonable)};var Se=Me.discriminatedUnion("type",[de,Ut,ut,Lt,It,lt,pt,dt,Ct,Gt,St,ht]),Er=Me.discriminatedUnion("type",[q.params,Ie.params,he.params,Ee.params,be.params,ce.params,ue.params,ye.params,Ce.params,Ue.params,xe.params,fe.params]),Ur=Me.discriminatedUnion("type",[q.clonable,Ie.clonable,he.clonable,Ee.clonable,be.clonable,ce.clonable,ue.clonable,ye.clonable,Ce.clonable,Ue.clonable,xe.clonable,fe.clonable]),G={params:Er,clonable:Ur},zt={params:Me.discriminatedUnion("type",[mt.params,Mt.params,Pt.params,Et.params,yt.params,st.params,ct.params,gt.params,bt.params,Tt.params,xt.params,ft.params]),clonable:Me.discriminatedUnion("type",[mt.clonable,Mt.clonable,Pt.clonable,Et.clonable,yt.clonable,st.clonable,ct.clonable,gt.clonable,bt.clonable,Tt.clonable,xt.clonable,ft.clonable])};var Mr=g.extend({type:E.literal("Panel"),title:E.string().optional(),body:E.array(Se).optional(),footer:E.array(Se).optional(),onClickClose:E.function().args(E.object({id:E.string()})).returns(E.void()).optional()}),Ha=Mr.extend(p.params.shape).required({id:!0}).partial({type:!0}).omit({body:!0,footer:!0}).extend({body:E.array(G.params).optional(),footer:E.array(G.params).optional()}),Ft={params:Ha,clonable:Ha.extend(p.clonable.shape).required({id:!0}).extend({onClickClose:E.string().optional(),body:E.array(G.clonable).optional(),footer:E.array(G.clonable).optional()})};var Vs=o.object({actionTrigger:pe.create,placement:N.optional()}),Za=o.object({actionTrigger:pe.clonable,placement:N.optional()}),Ns=pe.create.partial().required({id:!0}),Ja=pe.clonable.partial().required({id:!0}),Hs=o.object({action:we.create,placement:N.optional()}),qa=o.object({action:we.clonable,placement:N.optional()}),Ka=we.clonable.partial().required({id:!0}),Zs=o.object({panel:Ft.params,placement:N.optional()}),Wa=o.object({panel:Ft.clonable,initialPlacement:N.optional()}),Js=o.object({panelId:o.string(),elements:o.array(o.object({element:G.params,container:o.union([o.literal("body"),o.literal("footer"),o.object({id:o.string()})]).optional(),placement:N.optional()}))}),_a=o.object({panelId:o.string(),elements:o.array(o.object({element:G.clonable,container:o.union([o.literal("body"),o.literal("footer"),o.object({id:o.string()})]).optional(),placement:N.optional()}))}),qs=o.object({panelId:o.string(),elements:o.array(o.object({element:zt.params}))}),Qa=o.object({panelId:o.string(),elements:o.array(o.object({element:zt.clonable}))}),$a=o.object({panelId:o.string(),elements:o.array(o.string())}),Xa=o.object({showLegend:o.boolean().optional(),cooperativeGestures:o.boolean().optional(),fullScreenButton:o.boolean().optional(),geolocation:o.boolean().optional(),zoomControls:o.boolean().optional(),scaleBar:o.boolean().optional(),rotation:o.boolean().optional(),contextMenu:o.boolean().optional()}),Ya=o.object({featureSelectPanel:o.boolean().optional(),featureHoverPanel:o.boolean().optional(),elementSelectPanel:o.boolean().optional(),linkClickOpen:o.boolean().optional(),imageLightboxOpen:o.boolean().optional()});var Lr=e("createActionTrigger",Za),Pr=e("updateActionTrigger",Ja),Gr=e("deleteActionTrigger",Y.string()),Tr=e("createFeatureAction",qa),zr=e("updateFeatureAction",Ka),Fr=e("deleteFeatureAction",Y.string()),kr=e("createPanelId",Y.void()),Rr=e("createOrUpdatePanel",Wa),Br=e("deletePanel",Y.string()),vr=e("createPanelElements",_a),Ar=e("updatePanelElements",Qa),Or=e("deletePanelElements",$a),wr=e("updateUiControls",Xa),jr=e("setOnMapInteractionsUi",Ya),Dr=e("showLayerDataTable",Y.object({layerId:Y.string(),sorting:Fe.optional()}).optional()),Vr=e("hideLayerDataTable",Y.undefined()),eo={methods:[Lr,Pr,Gr,Tr,zr,Fr,kr,Rr,Br,vr,Ar,Or,wr,jr,Dr,Vr],listeners:null};import{z as no}from"zod";import{z as Ve}from"zod";var De=Ve.object({center:Te,zoom:jt}),to=Ve.object({center:De.shape.center.optional(),zoom:De.shape.zoom.optional()}),ao=Ve.object({minZoom:De.shape.zoom.nullish(),maxZoom:De.shape.zoom.nullish(),bounds:D.nullish()}).nullable(),oo=Ve.object({bounds:D});var Nr=e("getViewport",no.undefined()),Hr=e("setViewport",to),Zr=e("getViewportConstraints",no.undefined()),Jr=e("setViewportConstraints",ao),qr=e("fitViewportToBounds",oo),Kr=f("onViewportMove"),Wr=f("onViewportMoveEnd"),_r=f("onMapIdle"),ro={methods:[Hr,Nr,Zr,Jr,qr],listeners:[Kr,Wr,_r]};var kt=[eo,ro,ha,Jt,xa,qt,Ma,fa,wt];function xm(a,U,Rt){let Ne=new Map;async function Bt(z){if(!ei.safeParse(z.data).success){Rt?.onUnknownMessage?.(z.data);return}let Le=so.safeParse(z.data);if(!Le.success){Rt?.onInvalidMessage?.(z.data,Le.error),z.ports[0]?.postMessage(io(Le.error.message));return}let{data:I}=Le;if(I.type==="felt.ready")z.ports[0]?.postMessage(!0);else if(I.type==="felt.addListener"){if(I.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let ne="options"in I.event?{options:"options"in I.event?I.event.options:void 0,handler:Ze=>{z.ports[0]?.postMessage(Ze)}}:{handler:Ze=>{z.ports[0]?.postMessage(Ze)}},He=U.listeners[I.event.eventName](ne);Ne.set(I.event.id,He)}else if(I.type==="felt.removeListener")Ne.get(I.id)?.(),Ne.delete(I.id);else try{let ne=U.methods[I.type],He=await ne(I.params);z.ports[0]?.postMessage(He)}catch(ne){z.ports[0]?.postMessage(io(ne))}}return a.addEventListener("message",Bt),()=>{a.removeEventListener("message",Bt)}}var lo={methods:kt.map(a=>a.methods??[]).flat(),listeners:kt.map(a=>a.listeners??[]).flat()},Qr=h.discriminatedUnion("eventName",[h.strictObject({eventName:h.literal("")}),h.strictObject({eventName:h.literal("onGenericEvent"),id:h.string(),options:h.object({id:h.string()})}),...lo.listeners]),$r=h.strictObject({type:h.literal("felt.addListener"),event:Qr}),Xr=h.strictObject({type:h.literal("felt.removeListener"),id:h.string()}),Yr=h.strictObject({type:h.literal("felt.ready")}),so=h.discriminatedUnion("type",[Yr,$r,Xr,...lo.methods]),ei=h.object({type:h.enum(so.options.map(a=>a.shape.type.value))});function io(a){return{__error__:ti(a)}}function ti(a){return a instanceof Error?a.message:typeof a=="object"&&a!==null&&"message"in a?String(a.message):typeof a=="string"?a:"Unknown error"}export{xm as createMessageHandler};
package/llms-full.txt CHANGED
@@ -844,6 +844,15 @@ felt.onLayerBoundariesChange(params: {
844
844
  ## Elements
845
845
 
846
846
  ```typescript
847
+ // The travel time that an isochrone Polygon covers.
848
+ // Felt computes an isochrone's shape as the area reachable from `origin` within `minutes` by `mode`,
849
+ // following roads and paths.
850
+ type IsochroneParams = {
851
+ mode: "driving" | "cycling" | "walking"; // The mode of transport used to travel from the origin.
852
+ minutes: number; // The travel time in whole minutes, from 1 to 120.
853
+ origin: LngLatTuple; // The point that travel time is measured from.
854
+ };
855
+
847
856
  // Shared by every ElementCreate variant. Documentation shorthand, not an exported type.
848
857
  type ElementCreateCommon = {
849
858
  groupId?: string | null;
@@ -910,10 +919,48 @@ type PolygonElementCreate = ElementCreateCommon & {
910
919
 
911
920
  type PolygonElementRead = {
912
921
  id: string;
922
+ // The travel time the polygon's shape was computed from, or `null` for a polygon drawn from coordinates.
923
+ isochrone: IsochroneParams | null;
913
924
  interaction?: "default" | "locked"; // default: "default"
914
925
  } & Required<Omit<PolygonElementCreate, "interaction" | "coordinates">>;
915
926
 
916
- type PolygonElementUpdate = { id: string; coordinates?: LngLatTuple[][] } & Omit<PolygonElementCreate, "coordinates">;
927
+ type PolygonElementUpdate = {
928
+ id: string;
929
+ // Setting `coordinates` on an isochrone polygon replaces its computed shape and clears its
930
+ // `isochrone`, which then reads back as `null`.
931
+ coordinates?: LngLatTuple[][];
932
+ isochrone?: undefined;
933
+ } & Omit<PolygonElementCreate, "coordinates">;
934
+
935
+ // A Polygon element whose shape Felt computes from a travel time.
936
+ type IsochronePolygonElementCreate = ElementCreateCommon & {
937
+ type: "Polygon";
938
+ // The travel time to compute the polygon's shape from.
939
+ // Felt computes the area reachable from `origin` within `minutes` by `mode` and uses it as the
940
+ // polygon's shape. `createElement` rejects when travel time is not available on the map, or when no
941
+ // area is reachable from the origin.
942
+ isochrone: IsochroneParams;
943
+ color?: string; // The color of the element in some CSS-like format. (default: "#C93535")
944
+ name?: string | null;
945
+ imageUrl?: string | null; // The URL of an image that has been added to the element.
946
+ strokeOpacity?: number; // default: 1
947
+ strokeWidth?: number; // default: 2
948
+ strokeStyle?: "solid" | "dashed" | "dotted"; // default: "solid"
949
+ fillOpacity?: number; // default: 0.25
950
+ areaMarker?: boolean; // default: false
951
+ coordinates?: undefined;
952
+ };
953
+
954
+ // An update to a Polygon element that recomputes its shape from a travel time.
955
+ type IsochronePolygonElementUpdate = {
956
+ id: string;
957
+ // A new travel time to recompute the polygon's shape from.
958
+ // Felt replaces the polygon's shape with the area reachable from `origin` within `minutes` by `mode`.
959
+ // Cannot be combined with `coordinates`. `updateElement` rejects when travel time is not available on
960
+ // the map, or when no area is reachable from the origin, and the polygon keeps its previous travel
961
+ // time and shape.
962
+ isochrone?: IsochroneParams;
963
+ } & Omit<IsochronePolygonElementCreate, "isochrone">;
917
964
 
918
965
  type CircleElementCreate = ElementCreateCommon & {
919
966
  type: "Circle";
@@ -1079,9 +1126,9 @@ type ElementChangeCallbackParams = {
1079
1126
  // The parameters for the `onElementGroupChange` listener.
1080
1127
  type ElementGroupChangeCallbackParams = { elementGroup: ElementGroup | null };
1081
1128
 
1082
- type ElementCreate = PlaceElementCreate | PathElementCreate | PolygonElementCreate | CircleElementCreate | MarkerElementCreate | HighlighterElementCreate | ImageElementCreate | TextElementCreate | NoteElementCreate;
1129
+ type ElementCreate = PlaceElementCreate | PathElementCreate | PolygonElementCreate | IsochronePolygonElementCreate | CircleElementCreate | MarkerElementCreate | HighlighterElementCreate | ImageElementCreate | TextElementCreate | NoteElementCreate;
1083
1130
 
1084
- type ElementUpdate = PlaceElementUpdate | PathElementUpdate | PolygonElementUpdate | CircleElementUpdate | MarkerElementUpdate | HighlighterElementUpdate | TextElementUpdate | NoteElementUpdate | ImageElementUpdate;
1131
+ type ElementUpdate = PlaceElementUpdate | PathElementUpdate | PolygonElementUpdate | IsochronePolygonElementUpdate | CircleElementUpdate | MarkerElementUpdate | HighlighterElementUpdate | TextElementUpdate | NoteElementUpdate | ImageElementUpdate;
1085
1132
 
1086
1133
  type Element = PlaceElementRead | PathElementRead | PolygonElementRead | CircleElementRead | MarkerElementRead | HighlighterElementRead | TextElementRead | NoteElementRead | ImageElementRead | LinkElementRead;
1087
1134
  ```
@@ -1285,7 +1332,7 @@ felt.onBasemapChange(args: { handler: (basemap: Basemap) => void }): VoidFunctio
1285
1332
  ## Tools
1286
1333
 
1287
1334
  ```typescript
1288
- type ToolType = "circle" | "highlighter" | "line" | "link" | "marker" | "note" | "pin" | "polygon" | "route" | "text";
1335
+ type ToolType = "circle" | "highlighter" | "isochrone" | "line" | "link" | "marker" | "note" | "pin" | "polygon" | "route" | "text";
1289
1336
 
1290
1337
  type PlaceFrame = "frame-circle" | "frame-square" | null;
1291
1338
 
@@ -1333,6 +1380,18 @@ type PolygonToolSettings = {
1333
1380
  showInspector: boolean; // default: false
1334
1381
  };
1335
1382
 
1383
+ type IsochroneToolSettings = {
1384
+ color: string; // The color of the element in some CSS-like format. (default: "#C93535")
1385
+ // A value between 0 and 1 that describes the opacity of the element's stroke.
1386
+ strokeOpacity: number; // default: 1
1387
+ strokeWidth: number; // default: 2
1388
+ strokeStyle: "solid" | "dashed" | "dotted"; // default: "solid"
1389
+ mode: "driving" | "cycling" | "walking"; // The mode of transport used to travel from the origin.
1390
+ minutes: number; // The travel time in whole minutes, from 1 to 120.
1391
+ fillOpacity: number; // default: 0.25
1392
+ showInspector: boolean; // default: false
1393
+ };
1394
+
1336
1395
  type CircleToolSettings = {
1337
1396
  color: string; // The color of the element in some CSS-like format. (default: "#C93535")
1338
1397
  // A value between 0 and 1 that describes the opacity of the element's stroke.
@@ -1383,6 +1442,7 @@ type ToolSettingsMap = {
1383
1442
  line: LineToolSettings;
1384
1443
  route: RouteToolSettings;
1385
1444
  polygon: PolygonToolSettings;
1445
+ isochrone: IsochroneToolSettings;
1386
1446
  circle: CircleToolSettings;
1387
1447
  marker: MarkerToolSettings;
1388
1448
  highlighter: HighlighterToolSettings;
@@ -1391,10 +1451,10 @@ type ToolSettingsMap = {
1391
1451
  };
1392
1452
 
1393
1453
  // The parameters for changing the settings of each tool.
1394
- type InputToolSettings = { tool: "pin" } & Partial<PinToolSettings> | { tool: "line" } & Partial<LineToolSettings> | { tool: "route" } & Partial<RouteToolSettings> | { tool: "polygon" } & Partial<PolygonToolSettings> | { tool: "circle" } & Partial<CircleToolSettings> | { tool: "marker" } & Partial<MarkerToolSettings> | { tool: "highlighter" } & Partial<HighlighterToolSettings> | { tool: "text" } & Partial<TextToolSettings> | { tool: "note" } & Partial<NoteToolSettings>;
1454
+ type InputToolSettings = { tool: "pin" } & Partial<PinToolSettings> | { tool: "line" } & Partial<LineToolSettings> | { tool: "route" } & Partial<RouteToolSettings> | { tool: "polygon" } & Partial<PolygonToolSettings> | { tool: "isochrone" } & Partial<IsochroneToolSettings> | { tool: "circle" } & Partial<CircleToolSettings> | { tool: "marker" } & Partial<MarkerToolSettings> | { tool: "highlighter" } & Partial<HighlighterToolSettings> | { tool: "text" } & Partial<TextToolSettings> | { tool: "note" } & Partial<NoteToolSettings>;
1395
1455
 
1396
1456
  // The result of listening for changes to the settings of each tool.
1397
- type ToolSettingsChangeEvent = { tool: "pin" } & PinToolSettings | { tool: "line" } & LineToolSettings | { tool: "route" } & RouteToolSettings | { tool: "polygon" } & PolygonToolSettings | { tool: "circle" } & CircleToolSettings | { tool: "marker" } & MarkerToolSettings | { tool: "highlighter" } & HighlighterToolSettings | { tool: "text" } & TextToolSettings | { tool: "note" } & NoteToolSettings;
1457
+ type ToolSettingsChangeEvent = { tool: "pin" } & PinToolSettings | { tool: "line" } & LineToolSettings | { tool: "route" } & RouteToolSettings | { tool: "polygon" } & PolygonToolSettings | { tool: "isochrone" } & IsochroneToolSettings | { tool: "circle" } & CircleToolSettings | { tool: "marker" } & MarkerToolSettings | { tool: "highlighter" } & HighlighterToolSettings | { tool: "text" } & TextToolSettings | { tool: "note" } & NoteToolSettings;
1398
1458
 
1399
1459
  type PlaceSymbol = "dot" | "square" | "diamond" | "triangle" | "x" | "plus" | "circle-line" | "circle-slash" | "star" | "heart" | "hexagon" | "octagon" | "pedestrian" | "bicycle" | "wheelchair" | "airport" | "car" | "bus" | "train" | "truck" | "ferry" | "sailboat" | "electric-service" | "gas-service" | "blood-clinic" | "badge" | "traffic-light" | "traffic-cone" | "road-sign-caution" | "person" | "restroom" | "house" | "work" | "letter" | "hotel" | "factory" | "hospital" | "religious-facility" | "school" | "government" | "university" | "bank" | "landmark" | "museum" | "clothing" | "shopping" | "store" | "bar" | "pub" | "cafe" | "food" | "park" | "amusement-park" | "camping-tent" | "cabin" | "picnic" | "water-refill" | "trailhead" | "guidepost" | "viewpoint" | "camera" | "us-football" | "football" | "tennis" | "binoculars" | "swimming" | "zap" | "battery-full" | "battery-half" | "battery-low" | "boom" | "radar" | "wind-turbine" | "solar-panel" | "antenna" | "telephone-pole" | "oil-well" | "oil-barrel" | "railroad-track" | "bridge" | "lighthouse" | "lock-closed" | "lock-open" | "wifi" | "trash" | "recycle" | "tree" | "flower" | "leaf" | "fire" | "mountain" | "snowy-mountain" | "volcano" | "island" | "wave" | "hot-springs" | "water" | "lake" | "ocean" | "animal" | "bird" | "duck" | "dog" | "fish" | "beach" | "wetland" | "sun" | "moon" | "cloud" | "partial-sun" | "rain" | "lightning" | "snowflake" | "wind" | "snow" | "fog" | "sleet" | "hurricane" | "warning" | "parking" | "info" | "circle-exclamation" | "circle-triangle" | "circle-x" | "circle-plus" | `:${string}:` & {};
1400
1460
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feltmaps/js-sdk",
3
- "version": "1.11.1",
3
+ "version": "1.12.0",
4
4
  "description": "An SDK for Felt maps",
5
5
  "keywords": [
6
6
  "felt",