UNPKG

@feltmaps/js-sdk

Version:

An SDK for Felt maps

2 lines (1 loc) 5.88 kB
import{z as i}from"zod";import{z as g}from"zod";import{z as c}from"zod";function e(o,u){return c.strictObject({type:c.literal(o),params:u})}function d(o,u){return c.strictObject({eventName:c.literal(o),id:c.string(),options:u})}function m(o){return c.strictObject({eventName:c.literal(o),id:c.string()})}import{z as l}from"zod";var F=l.number(),E=l.number(),L=l.object({latitude:E,longitude:F}),j=l.number().min(1).max(23),b=l.tuple([F,E,F,E]),M=l.object({show:l.array(l.string()).optional(),hide:l.array(l.string()).optional()});import{z as f}from"zod";var k=f.object({ids:f.array(f.string()).optional()}),N=f.object({ids:f.array(f.string()).optional()});var se=e("getElement",g.string()),ae=e("getElementGeometry",g.string()),ie=e("getElements",k.optional()),le=e("getElementGroup",g.string()),pe=e("getElementGroups",N.optional()),me=e("setElementGroupVisibility",M),ce=d("onElementChange",g.object({id:g.string()})),ye=d("onElementGroupChange",g.object({id:g.string()})),R={methods:[se,ae,ie,le,pe,me],listeners:[ce,ye]};var de=m("onPointerClick"),ge=m("onPointerMove"),U={methods:null,listeners:[de,ge]};import{z as r}from"zod";import{z as t}from"zod";var ue=t.enum(["in","ni"]),fe=t.enum(["lt","gt","le","ge","eq","ne","cn","nc","is","isnt"]),ut=t.enum(["and","or"]),B=t.union([t.number(),t.string(),t.boolean(),t.null()]),Z=t.string().or(t.null()),he=t.tuple([Z,ue,t.array(B).or(t.null())]),Se=t.tuple([Z,fe,B]),z=t.union([he,Se]),v=t.tuple([t.lazy(()=>t.union([v,z,t.null(),t.boolean()])),t.enum(["and","or"]),t.lazy(()=>t.union([v,z,t.null(),t.boolean()]))]),A=t.union([v,z,t.null(),t.boolean()]);import{z as n}from"zod";var Mt=n.enum(["processing","completed","failed","incomplete"]),q=n.object({ids:n.array(n.string()).optional()}),H=n.object({ids:n.array(n.string()).optional()}),h=n.object({id:n.string(),layerId:n.string()}),_=n.object({ids:h.array().optional(),layerIds:n.string().array().optional()}),W=n.object({layerIds:n.array(n.string()).optional(),areaQuery:n.union([n.object({coordinates:L}),n.object({boundary:b})]).optional()});var Me=e("getLayer",r.string()),Le=e("getLayers",q.optional()),be=e("setLayerVisibility",M),Ge=d("onLayerChange",r.object({id:r.string()})),Ie=e("setLayerStyle",r.object({id:r.string(),style:r.object({}).passthrough()})),xe=e("getLayerGroup",r.string()),Ce=e("getLayerGroups",H.optional()),Fe=e("setLayerGroupVisibility",M),Ee=d("onLayerGroupChange",r.object({id:r.string()})),ze=e("getLegendItem",h),ve=e("getLegendItems",_.optional()),Ve=d("onLegendItemChange",h),Pe=e("setLegendItemVisibility",r.object({show:h.array().optional(),hide:h.array().optional()})),we=e("getLayerFilters",r.string()),Oe=e("setLayerFilters",r.object({layerId:r.string(),filters:A,note:r.string().optional()})),Te=e("getRenderedFeatures",W.optional()),Q={methods:[Me,Le,be,Ie,xe,Ce,Fe,ze,ve,Pe,we,Oe,Te],listeners:[Ge,Ee,Ve]};import{z as G}from"zod";import{z as y}from"zod";var D=y.object({id:y.string().or(y.number()),layerId:y.string(),showPopup:y.boolean().optional(),fitViewport:y.boolean().or(y.object({maxZoom:y.number()})).optional()});var je=e("getSelection",G.undefined()),ke=m("onSelectionChange"),Ne=e("selectFeature",D),Re=e("clearSelection",G.object({features:G.boolean().optional(),elements:G.boolean().optional()}).optional()),J={methods:[je,Ne,Re],listeners:[ke]};import{z as a}from"zod";var K=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()}),X=a.object({featureSelectPanel:a.boolean().optional(),featureHoverPanel:a.boolean().optional(),elementSelectPanel:a.boolean().optional(),linkClickOpen:a.boolean().optional(),imageLightboxOpen:a.boolean().optional()});var Ue=e("updateUiControls",K),Be=e("setOnMapInteractionsUi",X),Y={methods:[Ue,Be],listeners:null};import{z as Ze}from"zod";import{z as V}from"zod";var $=V.object({center:L,zoom:j}),ee=V.object({center:$.shape.center.optional(),zoom:$.shape.zoom.optional()}),te=V.object({bounds:b});var Ae=e("getViewport",Ze.undefined()),qe=e("setViewport",ee),He=e("fitViewportToBounds",te),_e=m("onViewportMove"),We=m("onViewportMoveEnd"),Qe=m("onMapIdle"),oe={methods:[qe,Ae,He],listeners:[_e,We,Qe]};var P=[Y,oe,Q,R,J,U];function eo(o,u,w){let I=new Map;async function O(p){if(!$e.safeParse(p.data).success){w?.onUnknownMessage?.(p.data);return}let T=re.safeParse(p.data);if(!T.success){w?.onInvalidMessage?.(p.data);return}let{data:s}=T;if(s.type==="felt.ready")p.ports[0]?.postMessage(!0);else if(s.type==="felt.addListener"){if(s.event.eventName==="")throw new Error("felt.addListener eventName cannot be empty");let S="options"in s.event?{options:"options"in s.event?s.event.options:void 0,handler:C=>{p.ports[0]?.postMessage(C)}}:{handler:C=>{p.ports[0]?.postMessage(C)}},x=u.listeners[s.event.eventName](S);I.set(s.event.id,x)}else if(s.type==="felt.removeListener")I.get(s.id)?.(),I.delete(s.id);else try{let S=u.methods[s.type],x=await S(s.params);p.ports[0]?.postMessage(x)}catch(S){p.ports[0]?.postMessage({__error__:De(S)})}}return o.addEventListener("message",O),()=>{o.removeEventListener("message",O)}}function De(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 ne={methods:P.map(o=>o.methods??[]).flat(),listeners:P.map(o=>o.listeners??[]).flat()},Je=i.discriminatedUnion("eventName",[i.strictObject({eventName:i.literal("")}),...ne.listeners]),Ke=i.strictObject({type:i.literal("felt.addListener"),event:Je}),Xe=i.strictObject({type:i.literal("felt.removeListener"),id:i.string()}),Ye=i.strictObject({type:i.literal("felt.ready")}),re=i.discriminatedUnion("type",[Ye,Ke,Xe,...ne.methods]),$e=i.object({type:i.enum(re.options.map(o=>o.shape.type.value))});export{eo as createMessageHandler};