react-listing-engine 0.7.9 → 0.7.10

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # react-listing-engine
2
2
 
3
+ ## 0.7.10
4
+
5
+ ### Patch Changes
6
+
7
+ - Overlay markers use `preventMapHitsFrom` instead of `preventMapHitsAndGesturesFrom`: click-through to the map stays blocked (the popup-dismiss guard still works), but map gestures now pass through markers -- most visibly, the scroll wheel zooms the map even when the cursor rests on a marker (the AndGestures variant turned every marker into a zoom dead zone). The popup overlay keeps AndGestures: it's a card floating over the map, and interacting inside it must never pan/zoom the map.
8
+
3
9
  ## 0.7.9
4
10
 
5
11
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2;"use client";
2
- var _chunk76JZ5SOAcjs = require('./chunk-76JZ5SOA.cjs');var b=(r=>(r.Paged="paged",r.Infinite="infinite",r))(b||{});var v=(i=>(i.FiltersChanged="FiltersChanged",i.ResultsLoaded="ResultsLoaded",i.PointClicked="PointClicked",i.BoundsChanged="BoundsChanged",i.LayerToggled="LayerToggled",i))(v||{});var d= (_class =class{__init() {this.listeners=new Set}constructor(t={}){;_class.prototype.__init.call(this);this.query={...t}}getQuery(){return{...this.query}}setQuery(t){this.query={...t},this.notify()}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}notify(){for(let t of[...this.listeners])t()}}, _class);function F(e,t){let r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r)if(e[s]!==t[s])return!1;return!0}var h= (_class2 =class{__init2() {this.isSyncing=!1}__init3() {this.unsubscribeEngine=null}__init4() {this.unsubscribeHistory=null}constructor(t){;_class2.prototype.__init2.call(this);_class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this);this.history=t.history,this.toQueryFn=t.toQuery,this.toFiltersFn=t.toFilters,this.hydrateOnStart=_nullishCoalesce(t.hydrateOnStart, () => (!0))}start(t){this.stop(),this.unsubscribeEngine=t.subscribe(()=>{this.isSyncing||this.syncEngineToHistory(t)}),this.unsubscribeHistory=this.history.subscribe(()=>{this.isSyncing||this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}),this.hydrateOnStart&&this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}stop(){_optionalChain([this, 'access', _ => _.unsubscribeEngine, 'optionalCall', _2 => _2()]),this.unsubscribeEngine=null,_optionalChain([this, 'access', _3 => _3.unsubscribeHistory, 'optionalCall', _4 => _4()]),this.unsubscribeHistory=null}syncEngineToHistory(t){let r=this.toQueryFn(t.state.filters);F(r,this.history.getQuery())||this.withSyncGuard(()=>this.history.setQuery(r))}applyFiltersSafely(t,r){Promise.resolve(t.applyFilters(r)).catch(()=>{})}withSyncGuard(t){this.isSyncing=!0;try{t()}finally{this.isSyncing=!1}}}, _class2);var f=class{constructor(t={}){this.mode=_nullishCoalesce(t.mode, () => ("replace"))}getQuery(){if(typeof window>"u")return{};let t=new URLSearchParams(window.location.search),r={};for(let[s,o]of t)o!==""&&(r[s]=o);return r}setQuery(t){if(typeof window>"u")return;let r=new URLSearchParams;for(let[c,l]of Object.entries(t))l===void 0||l===""||r.set(c,l);let s=r.toString(),o=s?`?${s}`:"";if(o===window.location.search)return;let i=`${window.location.pathname}${o}${window.location.hash}`;this.mode==="push"?window.history.pushState(window.history.state,"",i):window.history.replaceState(window.history.state,"",i)}subscribe(t){return typeof window>"u"?()=>{}:(window.addEventListener("popstate",t),()=>{window.removeEventListener("popstate",t)})}};var _jsxruntime = require('react/jsx-runtime');function st({children:e}){let{Toolbar:t}=_chunk76JZ5SOAcjs.r.call(void 0, );return _jsxruntime.jsx.call(void 0, t,{children:e})}var _react = require('react');function ut(){let e=_chunk76JZ5SOAcjs.t.call(void 0, ),t=_chunk76JZ5SOAcjs.u.call(void 0, ),r=_react.useCallback.call(void 0, n=>e.loadPoints(n),[e]),s=_react.useCallback.call(void 0, (n,g)=>e.selectPoint(n,g),[e]),o=_react.useCallback.call(void 0, n=>e.setHovered(e.primaryDatasetId,n),[e]),i=_react.useCallback.call(void 0, ()=>_optionalChain([e, 'access', _5 => _5.map, 'optionalAccess', _6 => _6.zoomIn, 'call', _7 => _7()]),[e]),c=_react.useCallback.call(void 0, ()=>_optionalChain([e, 'access', _8 => _8.map, 'optionalAccess', _9 => _9.zoomOut, 'call', _10 => _10()]),[e]),l=_react.useCallback.call(void 0, ()=>_optionalChain([e, 'access', _11 => _11.map, 'optionalAccess', _12 => _12.toggleFullscreen, 'call', _13 => _13()]),[e]),m=_react.useCallback.call(void 0, n=>e.fitBounds(n),[e]);return{bounds:t.bounds,points:t.points,hovered:t.hovered,loadPoints:r,selectPoint:s,setHovered:o,zoomIn:i,zoomOut:c,toggleFullscreen:l,fitBounds:m}}function ht(e){let t=_chunk76JZ5SOAcjs.t.call(void 0, ),r=_chunk76JZ5SOAcjs.u.call(void 0, ),s=_react.useCallback.call(void 0, ()=>t.toggleLayer(e),[t,e]);return{visible:_nullishCoalesce(r.layers[e], () => (!0)),points:_nullishCoalesce(r.points[e], () => ([])),toggle:s}}exports.BrowserHistoryPort = f; exports.DatasetRegistry = _chunk76JZ5SOAcjs.c; exports.FallbackPopup = _chunk76JZ5SOAcjs.p; exports.FilterRegistry = _chunk76JZ5SOAcjs.b; exports.ListingApp = _chunk76JZ5SOAcjs.S; exports.ListingComponentsProvider = _chunk76JZ5SOAcjs.q; exports.ListingConfig = _chunk76JZ5SOAcjs.f; exports.ListingEngine = _chunk76JZ5SOAcjs.g; exports.ListingEngineContext = _chunk76JZ5SOAcjs.s; exports.ListingEventType = v; exports.ListingFilters = _chunk76JZ5SOAcjs.w; exports.ListingList = _chunk76JZ5SOAcjs.y; exports.ListingMap = _chunk76JZ5SOAcjs.z; exports.ListingPagination = _chunk76JZ5SOAcjs.A; exports.ListingProvider = _chunk76JZ5SOAcjs.D; exports.ListingResultHeader = _chunk76JZ5SOAcjs.B; exports.ListingStore = _chunk76JZ5SOAcjs.a; exports.ListingToolbar = st; exports.MemoryHistoryPort = d; exports.PaginationMode = b; exports.TypedEmitter = _chunk76JZ5SOAcjs.d; exports.UrlSyncController = h; exports.composeListingProviders = _chunk76JZ5SOAcjs.h; exports.listingDefaultConfig = _chunk76JZ5SOAcjs.e; exports.useListing = _chunk76JZ5SOAcjs.t; exports.useListingComponents = _chunk76JZ5SOAcjs.r; exports.useListingEvent = _chunk76JZ5SOAcjs.C; exports.useListingFilters = _chunk76JZ5SOAcjs.v; exports.useListingLayer = ht; exports.useListingMap = ut; exports.useListingResults = _chunk76JZ5SOAcjs.x; exports.useListingState = _chunk76JZ5SOAcjs.u; exports.withConfig = _chunk76JZ5SOAcjs.i; exports.withDataset = _chunk76JZ5SOAcjs.k; exports.withFilters = _chunk76JZ5SOAcjs.l; exports.withInitialFilters = _chunk76JZ5SOAcjs.n; exports.withMap = _chunk76JZ5SOAcjs.j; exports.withPrimaryDataset = _chunk76JZ5SOAcjs.o; exports.withUrlSync = _chunk76JZ5SOAcjs.m;
2
+ var _chunkN2VOJIO3cjs = require('./chunk-N2VOJIO3.cjs');var b=(r=>(r.Paged="paged",r.Infinite="infinite",r))(b||{});var v=(i=>(i.FiltersChanged="FiltersChanged",i.ResultsLoaded="ResultsLoaded",i.PointClicked="PointClicked",i.BoundsChanged="BoundsChanged",i.LayerToggled="LayerToggled",i))(v||{});var d= (_class =class{__init() {this.listeners=new Set}constructor(t={}){;_class.prototype.__init.call(this);this.query={...t}}getQuery(){return{...this.query}}setQuery(t){this.query={...t},this.notify()}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}notify(){for(let t of[...this.listeners])t()}}, _class);function F(e,t){let r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r)if(e[s]!==t[s])return!1;return!0}var h= (_class2 =class{__init2() {this.isSyncing=!1}__init3() {this.unsubscribeEngine=null}__init4() {this.unsubscribeHistory=null}constructor(t){;_class2.prototype.__init2.call(this);_class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this);this.history=t.history,this.toQueryFn=t.toQuery,this.toFiltersFn=t.toFilters,this.hydrateOnStart=_nullishCoalesce(t.hydrateOnStart, () => (!0))}start(t){this.stop(),this.unsubscribeEngine=t.subscribe(()=>{this.isSyncing||this.syncEngineToHistory(t)}),this.unsubscribeHistory=this.history.subscribe(()=>{this.isSyncing||this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}),this.hydrateOnStart&&this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}stop(){_optionalChain([this, 'access', _ => _.unsubscribeEngine, 'optionalCall', _2 => _2()]),this.unsubscribeEngine=null,_optionalChain([this, 'access', _3 => _3.unsubscribeHistory, 'optionalCall', _4 => _4()]),this.unsubscribeHistory=null}syncEngineToHistory(t){let r=this.toQueryFn(t.state.filters);F(r,this.history.getQuery())||this.withSyncGuard(()=>this.history.setQuery(r))}applyFiltersSafely(t,r){Promise.resolve(t.applyFilters(r)).catch(()=>{})}withSyncGuard(t){this.isSyncing=!0;try{t()}finally{this.isSyncing=!1}}}, _class2);var f=class{constructor(t={}){this.mode=_nullishCoalesce(t.mode, () => ("replace"))}getQuery(){if(typeof window>"u")return{};let t=new URLSearchParams(window.location.search),r={};for(let[s,o]of t)o!==""&&(r[s]=o);return r}setQuery(t){if(typeof window>"u")return;let r=new URLSearchParams;for(let[c,l]of Object.entries(t))l===void 0||l===""||r.set(c,l);let s=r.toString(),o=s?`?${s}`:"";if(o===window.location.search)return;let i=`${window.location.pathname}${o}${window.location.hash}`;this.mode==="push"?window.history.pushState(window.history.state,"",i):window.history.replaceState(window.history.state,"",i)}subscribe(t){return typeof window>"u"?()=>{}:(window.addEventListener("popstate",t),()=>{window.removeEventListener("popstate",t)})}};var _jsxruntime = require('react/jsx-runtime');function st({children:e}){let{Toolbar:t}=_chunkN2VOJIO3cjs.r.call(void 0, );return _jsxruntime.jsx.call(void 0, t,{children:e})}var _react = require('react');function ut(){let e=_chunkN2VOJIO3cjs.t.call(void 0, ),t=_chunkN2VOJIO3cjs.u.call(void 0, ),r=_react.useCallback.call(void 0, n=>e.loadPoints(n),[e]),s=_react.useCallback.call(void 0, (n,g)=>e.selectPoint(n,g),[e]),o=_react.useCallback.call(void 0, n=>e.setHovered(e.primaryDatasetId,n),[e]),i=_react.useCallback.call(void 0, ()=>_optionalChain([e, 'access', _5 => _5.map, 'optionalAccess', _6 => _6.zoomIn, 'call', _7 => _7()]),[e]),c=_react.useCallback.call(void 0, ()=>_optionalChain([e, 'access', _8 => _8.map, 'optionalAccess', _9 => _9.zoomOut, 'call', _10 => _10()]),[e]),l=_react.useCallback.call(void 0, ()=>_optionalChain([e, 'access', _11 => _11.map, 'optionalAccess', _12 => _12.toggleFullscreen, 'call', _13 => _13()]),[e]),m=_react.useCallback.call(void 0, n=>e.fitBounds(n),[e]);return{bounds:t.bounds,points:t.points,hovered:t.hovered,loadPoints:r,selectPoint:s,setHovered:o,zoomIn:i,zoomOut:c,toggleFullscreen:l,fitBounds:m}}function ht(e){let t=_chunkN2VOJIO3cjs.t.call(void 0, ),r=_chunkN2VOJIO3cjs.u.call(void 0, ),s=_react.useCallback.call(void 0, ()=>t.toggleLayer(e),[t,e]);return{visible:_nullishCoalesce(r.layers[e], () => (!0)),points:_nullishCoalesce(r.points[e], () => ([])),toggle:s}}exports.BrowserHistoryPort = f; exports.DatasetRegistry = _chunkN2VOJIO3cjs.c; exports.FallbackPopup = _chunkN2VOJIO3cjs.p; exports.FilterRegistry = _chunkN2VOJIO3cjs.b; exports.ListingApp = _chunkN2VOJIO3cjs.S; exports.ListingComponentsProvider = _chunkN2VOJIO3cjs.q; exports.ListingConfig = _chunkN2VOJIO3cjs.f; exports.ListingEngine = _chunkN2VOJIO3cjs.g; exports.ListingEngineContext = _chunkN2VOJIO3cjs.s; exports.ListingEventType = v; exports.ListingFilters = _chunkN2VOJIO3cjs.w; exports.ListingList = _chunkN2VOJIO3cjs.y; exports.ListingMap = _chunkN2VOJIO3cjs.z; exports.ListingPagination = _chunkN2VOJIO3cjs.A; exports.ListingProvider = _chunkN2VOJIO3cjs.D; exports.ListingResultHeader = _chunkN2VOJIO3cjs.B; exports.ListingStore = _chunkN2VOJIO3cjs.a; exports.ListingToolbar = st; exports.MemoryHistoryPort = d; exports.PaginationMode = b; exports.TypedEmitter = _chunkN2VOJIO3cjs.d; exports.UrlSyncController = h; exports.composeListingProviders = _chunkN2VOJIO3cjs.h; exports.listingDefaultConfig = _chunkN2VOJIO3cjs.e; exports.useListing = _chunkN2VOJIO3cjs.t; exports.useListingComponents = _chunkN2VOJIO3cjs.r; exports.useListingEvent = _chunkN2VOJIO3cjs.C; exports.useListingFilters = _chunkN2VOJIO3cjs.v; exports.useListingLayer = ht; exports.useListingMap = ut; exports.useListingResults = _chunkN2VOJIO3cjs.x; exports.useListingState = _chunkN2VOJIO3cjs.u; exports.withConfig = _chunkN2VOJIO3cjs.i; exports.withDataset = _chunkN2VOJIO3cjs.k; exports.withFilters = _chunkN2VOJIO3cjs.l; exports.withInitialFilters = _chunkN2VOJIO3cjs.n; exports.withMap = _chunkN2VOJIO3cjs.j; exports.withPrimaryDataset = _chunkN2VOJIO3cjs.o; exports.withUrlSync = _chunkN2VOJIO3cjs.m;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{A as V,B as W,C as X,D as Y,S as P,a as Q,b as x,c as T,d as L,e as H,f as O,g as E,h as k,i as q,j as C,k as I,l as B,m as U,n as z,o as G,p as R,q as $,r as p,s as j,t as u,u as y,v as A,w as D,x as J,y as K,z as N}from"./chunk-Q55G4XMJ.js";var b=(r=>(r.Paged="paged",r.Infinite="infinite",r))(b||{});var v=(i=>(i.FiltersChanged="FiltersChanged",i.ResultsLoaded="ResultsLoaded",i.PointClicked="PointClicked",i.BoundsChanged="BoundsChanged",i.LayerToggled="LayerToggled",i))(v||{});var d=class{query;listeners=new Set;constructor(t={}){this.query={...t}}getQuery(){return{...this.query}}setQuery(t){this.query={...t},this.notify()}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}notify(){for(let t of[...this.listeners])t()}};function F(e,t){let r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r)if(e[s]!==t[s])return!1;return!0}var h=class{history;toQueryFn;toFiltersFn;hydrateOnStart;isSyncing=!1;unsubscribeEngine=null;unsubscribeHistory=null;constructor(t){this.history=t.history,this.toQueryFn=t.toQuery,this.toFiltersFn=t.toFilters,this.hydrateOnStart=t.hydrateOnStart??!0}start(t){this.stop(),this.unsubscribeEngine=t.subscribe(()=>{this.isSyncing||this.syncEngineToHistory(t)}),this.unsubscribeHistory=this.history.subscribe(()=>{this.isSyncing||this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}),this.hydrateOnStart&&this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}stop(){this.unsubscribeEngine?.(),this.unsubscribeEngine=null,this.unsubscribeHistory?.(),this.unsubscribeHistory=null}syncEngineToHistory(t){let r=this.toQueryFn(t.state.filters);F(r,this.history.getQuery())||this.withSyncGuard(()=>this.history.setQuery(r))}applyFiltersSafely(t,r){Promise.resolve(t.applyFilters(r)).catch(()=>{})}withSyncGuard(t){this.isSyncing=!0;try{t()}finally{this.isSyncing=!1}}};var f=class{mode;constructor(t={}){this.mode=t.mode??"replace"}getQuery(){if(typeof window>"u")return{};let t=new URLSearchParams(window.location.search),r={};for(let[s,o]of t)o!==""&&(r[s]=o);return r}setQuery(t){if(typeof window>"u")return;let r=new URLSearchParams;for(let[c,l]of Object.entries(t))l===void 0||l===""||r.set(c,l);let s=r.toString(),o=s?`?${s}`:"";if(o===window.location.search)return;let i=`${window.location.pathname}${o}${window.location.hash}`;this.mode==="push"?window.history.pushState(window.history.state,"",i):window.history.replaceState(window.history.state,"",i)}subscribe(t){return typeof window>"u"?()=>{}:(window.addEventListener("popstate",t),()=>{window.removeEventListener("popstate",t)})}};import{jsx as w}from"react/jsx-runtime";function st({children:e}){let{Toolbar:t}=p();return w(t,{children:e})}import{useCallback as a}from"react";function ut(){let e=u(),t=y(),r=a(n=>e.loadPoints(n),[e]),s=a((n,g)=>e.selectPoint(n,g),[e]),o=a(n=>e.setHovered(e.primaryDatasetId,n),[e]),i=a(()=>e.map?.zoomIn(),[e]),c=a(()=>e.map?.zoomOut(),[e]),l=a(()=>e.map?.toggleFullscreen(),[e]),m=a(n=>e.fitBounds(n),[e]);return{bounds:t.bounds,points:t.points,hovered:t.hovered,loadPoints:r,selectPoint:s,setHovered:o,zoomIn:i,zoomOut:c,toggleFullscreen:l,fitBounds:m}}import{useCallback as S}from"react";function ht(e){let t=u(),r=y(),s=S(()=>t.toggleLayer(e),[t,e]);return{visible:r.layers[e]??!0,points:r.points[e]??[],toggle:s}}export{f as BrowserHistoryPort,T as DatasetRegistry,R as FallbackPopup,x as FilterRegistry,P as ListingApp,$ as ListingComponentsProvider,O as ListingConfig,E as ListingEngine,j as ListingEngineContext,v as ListingEventType,D as ListingFilters,K as ListingList,N as ListingMap,V as ListingPagination,Y as ListingProvider,W as ListingResultHeader,Q as ListingStore,st as ListingToolbar,d as MemoryHistoryPort,b as PaginationMode,L as TypedEmitter,h as UrlSyncController,k as composeListingProviders,H as listingDefaultConfig,u as useListing,p as useListingComponents,X as useListingEvent,A as useListingFilters,ht as useListingLayer,ut as useListingMap,J as useListingResults,y as useListingState,q as withConfig,I as withDataset,B as withFilters,z as withInitialFilters,C as withMap,G as withPrimaryDataset,U as withUrlSync};
2
+ import{A as V,B as W,C as X,D as Y,S as P,a as Q,b as x,c as T,d as L,e as H,f as O,g as E,h as k,i as q,j as C,k as I,l as B,m as U,n as z,o as G,p as R,q as $,r as p,s as j,t as u,u as y,v as A,w as D,x as J,y as K,z as N}from"./chunk-WIBKE6RD.js";var b=(r=>(r.Paged="paged",r.Infinite="infinite",r))(b||{});var v=(i=>(i.FiltersChanged="FiltersChanged",i.ResultsLoaded="ResultsLoaded",i.PointClicked="PointClicked",i.BoundsChanged="BoundsChanged",i.LayerToggled="LayerToggled",i))(v||{});var d=class{query;listeners=new Set;constructor(t={}){this.query={...t}}getQuery(){return{...this.query}}setQuery(t){this.query={...t},this.notify()}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}notify(){for(let t of[...this.listeners])t()}};function F(e,t){let r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r)if(e[s]!==t[s])return!1;return!0}var h=class{history;toQueryFn;toFiltersFn;hydrateOnStart;isSyncing=!1;unsubscribeEngine=null;unsubscribeHistory=null;constructor(t){this.history=t.history,this.toQueryFn=t.toQuery,this.toFiltersFn=t.toFilters,this.hydrateOnStart=t.hydrateOnStart??!0}start(t){this.stop(),this.unsubscribeEngine=t.subscribe(()=>{this.isSyncing||this.syncEngineToHistory(t)}),this.unsubscribeHistory=this.history.subscribe(()=>{this.isSyncing||this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}),this.hydrateOnStart&&this.withSyncGuard(()=>{this.applyFiltersSafely(t,this.toFiltersFn(this.history.getQuery()))})}stop(){this.unsubscribeEngine?.(),this.unsubscribeEngine=null,this.unsubscribeHistory?.(),this.unsubscribeHistory=null}syncEngineToHistory(t){let r=this.toQueryFn(t.state.filters);F(r,this.history.getQuery())||this.withSyncGuard(()=>this.history.setQuery(r))}applyFiltersSafely(t,r){Promise.resolve(t.applyFilters(r)).catch(()=>{})}withSyncGuard(t){this.isSyncing=!0;try{t()}finally{this.isSyncing=!1}}};var f=class{mode;constructor(t={}){this.mode=t.mode??"replace"}getQuery(){if(typeof window>"u")return{};let t=new URLSearchParams(window.location.search),r={};for(let[s,o]of t)o!==""&&(r[s]=o);return r}setQuery(t){if(typeof window>"u")return;let r=new URLSearchParams;for(let[c,l]of Object.entries(t))l===void 0||l===""||r.set(c,l);let s=r.toString(),o=s?`?${s}`:"";if(o===window.location.search)return;let i=`${window.location.pathname}${o}${window.location.hash}`;this.mode==="push"?window.history.pushState(window.history.state,"",i):window.history.replaceState(window.history.state,"",i)}subscribe(t){return typeof window>"u"?()=>{}:(window.addEventListener("popstate",t),()=>{window.removeEventListener("popstate",t)})}};import{jsx as w}from"react/jsx-runtime";function st({children:e}){let{Toolbar:t}=p();return w(t,{children:e})}import{useCallback as a}from"react";function ut(){let e=u(),t=y(),r=a(n=>e.loadPoints(n),[e]),s=a((n,g)=>e.selectPoint(n,g),[e]),o=a(n=>e.setHovered(e.primaryDatasetId,n),[e]),i=a(()=>e.map?.zoomIn(),[e]),c=a(()=>e.map?.zoomOut(),[e]),l=a(()=>e.map?.toggleFullscreen(),[e]),m=a(n=>e.fitBounds(n),[e]);return{bounds:t.bounds,points:t.points,hovered:t.hovered,loadPoints:r,selectPoint:s,setHovered:o,zoomIn:i,zoomOut:c,toggleFullscreen:l,fitBounds:m}}import{useCallback as S}from"react";function ht(e){let t=u(),r=y(),s=S(()=>t.toggleLayer(e),[t,e]);return{visible:r.layers[e]??!0,points:r.points[e]??[],toggle:s}}export{f as BrowserHistoryPort,T as DatasetRegistry,R as FallbackPopup,x as FilterRegistry,P as ListingApp,$ as ListingComponentsProvider,O as ListingConfig,E as ListingEngine,j as ListingEngineContext,v as ListingEventType,D as ListingFilters,K as ListingList,N as ListingMap,V as ListingPagination,Y as ListingProvider,W as ListingResultHeader,Q as ListingStore,st as ListingToolbar,d as MemoryHistoryPort,b as PaginationMode,L as TypedEmitter,h as UrlSyncController,k as composeListingProviders,H as listingDefaultConfig,u as useListing,p as useListingComponents,X as useListingEvent,A as useListingFilters,ht as useListingLayer,ut as useListingMap,J as useListingResults,y as useListingState,q as withConfig,I as withDataset,B as withFilters,z as withInitialFilters,C as withMap,G as withPrimaryDataset,U as withUrlSync};
@@ -1,2 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
- var _jsapiloader = require('@googlemaps/js-api-loader');var H="DEMO_MAP_ID";function f(r){return r.raw}function x(r,o){if(r.element)return r.element;if(r.iconUrl)return new o.PinElement({glyphSrc:r.iconUrl}).element}var E=12,I="#b3261e";function R(r){if(r.element)return r.element;if(r.iconUrl){let a=document.createElement("img");return a.src=r.iconUrl,a}let o=document.createElement("div");return o.style.width=`${E}px`,o.style.height=`${E}px`,o.style.borderRadius="50%",o.style.backgroundColor=I,o.style.border="2px solid #ffffff",o.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",o}var g;function A(){if(g)return g;class r extends google.maps.OverlayView{constructor(e,i,s,t){super();r.prototype.__init.call(this);;this.position=e;this.content=i;this.onClick=s;this.lifecycle=t}__init() {this.div=null}onAdd(){let e=document.createElement("div");e.style.position="absolute",e.style.transform="translate(-50%, -50%)",this.onClick&&(e.style.cursor="pointer",e.addEventListener("click",this.onClick)),e.appendChild(this.content),this.div=e,_optionalChain([this, 'access', _2 => _2.getPanes, 'call', _3 => _3(), 'optionalAccess', _4 => _4.overlayMouseTarget, 'access', _5 => _5.appendChild, 'call', _6 => _6(e)]),typeof google.maps.OverlayView.preventMapHitsAndGesturesFrom=="function"&&google.maps.OverlayView.preventMapHitsAndGesturesFrom(e),this.lifecycle.onContainerAdd(e)}draw(){if(!this.div)return;let e=this.getProjection();if(!e)return;let i=e.fromLatLngToDivPixel(new google.maps.LatLng(this.position.lat,this.position.lng));i&&(this.div.style.left=`${i.x}px`,this.div.style.top=`${i.y}px`)}onRemove(){let e=this.div;_optionalChain([this, 'access', _7 => _7.div, 'optionalAccess', _8 => _8.remove, 'call', _9 => _9()]),this.div=null,e&&this.lifecycle.onContainerRemove(e)}}return g=r,g}var v=14,T=8;function G(r){let{anchorX:o,anchorY:a,popupW:e,popupH:i,mapW:s,mapH:t,offsetY:n,pad:l}=r,d=o-e/2,c=o+e/2,p=0;e>s-l*2?p=l-d:c>s-l?p=s-l-c:d<l&&(p=l-d);let u=a-n-i,y=a+n+i,m=u<l&&y<=t-l;return{dx:p,flipBelow:m}}var M;function S(){if(M)return M;class r extends google.maps.OverlayView{constructor(e,i,s){super();r.prototype.__init2.call(this);r.prototype.__init3.call(this);;this.container=e;this.position=i;this.mapContainerEl=s}__init2() {this.attached=!1}__init3() {this.clampOffset=null}onAdd(){this.attached=!0,_optionalChain([this, 'access', _10 => _10.getPanes, 'call', _11 => _11(), 'optionalAccess', _12 => _12.floatPane, 'access', _13 => _13.appendChild, 'call', _14 => _14(this.container)]),typeof google.maps.OverlayView.preventMapHitsAndGesturesFrom=="function"&&google.maps.OverlayView.preventMapHitsAndGesturesFrom(this.container),typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>this.draw())}draw(){let e=this.getProjection();if(!e)return;let i=new google.maps.LatLng(this.position.lat,this.position.lng),s=e.fromLatLngToDivPixel(i);if(!s)return;if(this.clampOffset===null){let l=this.container.offsetWidth,d=this.container.offsetHeight,c=l&&d?e.fromLatLngToContainerPixel(i):null;if(!c){this.container.style.transform="translate(-50%, -100%)",this.container.style.left=`${s.x}px`,this.container.style.top=`${s.y-v}px`;return}this.clampOffset=G({anchorX:c.x,anchorY:c.y,popupW:l,popupH:d,mapW:this.mapContainerEl.clientWidth,mapH:this.mapContainerEl.clientHeight,offsetY:v,pad:T})}let{dx:t,flipBelow:n}=this.clampOffset;this.container.style.left=`${s.x+t}px`,n?(this.container.style.top=`${s.y+v}px`,this.container.style.transform="translate(-50%, 0)"):(this.container.style.top=`${s.y-v}px`,this.container.style.transform="translate(-50%, -100%)")}onRemove(){this.attached=!1,this.container.remove()}updatePosition(e){(e.lat!==this.position.lat||e.lng!==this.position.lng)&&(this.clampOffset=null),this.position=e,this.attached&&this.draw()}}return M=r,M}function k(r){for(let o of r)typeof o.setMap=="function"?o.setMap(null):o.map=null}var _="#b3261e",F=40,B=64,U=14;function z(r,o){let a=o.count,e=Math.min(B,F+Math.round(Math.log10(a+1)*U)),i=document.createElement("div");return i.textContent=String(a),i.style.display="flex",i.style.alignItems="center",i.style.justifyContent="center",i.style.width=`${e}px`,i.style.height=`${e}px`,i.style.borderRadius="50%",i.style.backgroundColor=_,i.style.border="2px solid #ffffff",i.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",i.style.color="#ffffff",i.style.fontFamily="inherit",i.style.fontWeight="700",i.style.fontSize=e>=52?"15px":"13px",new r.AdvancedMarkerElement({position:o.position,content:i})}var b=!1;async function V(r,o,a,e){let i;try{i=await Promise.resolve().then(() => _interopRequireWildcard(require("@googlemaps/markerclusterer")))}catch(t){b||(b=!0,console.warn('[react-listing-engine] "@googlemaps/markerclusterer" is not installed -- rendering plain (unclustered) markers instead. Install "@googlemaps/markerclusterer" to enable clustering.',t));return}if(r.layers.get(o)!==a)return;let s=new i.MarkerClusterer({map:r.map,markers:a,algorithmOptions:{maxZoom:e.maxZoom},renderer:{render:t=>z(r.markerLib,t)}});r.clusterers.set(o,s)}function L(r,o){let a=r.clusterers.get(o);a&&(a.setMap(null),r.clusterers.delete(o))}var C=!1;function W(){C||(C=!0,console.warn('[react-listing-engine] Marker clustering is not supported in `styles` (OverlayView) mode -- "@googlemaps/markerclusterer" only manages Marker/AdvancedMarkerElement instances. Rendering plain, unclustered overlay markers instead. Use a `mapId` (advanced-marker mode) to enable clustering.'))}function $(r,o){return o.markers.map(a=>{let e=new r.markerLib.AdvancedMarkerElement({map:r.map,position:a.position,content:x(a,r.markerLib),gmpClickable:!!o.onMarkerClick});if(o.onMarkerClick){let i=o.onMarkerClick;e.addListener("click",()=>i(a.id))}return e})}function w(r,o,a,e){r.classList.toggle("rle-marker--selected",o===a),r.classList.toggle("rle-marker--hovered",o===e&&o!==a)}function D(r,o){let a=A();return o.markers.map(e=>{let i=o.onMarkerClick,s=i?()=>i(e.id):void 0,t=new a(e.position,R(e),s,{onContainerAdd:n=>{r.markerElements.set(e.id,n),w(n,e.id,r.selectedMarkerId,r.hoveredMarkerId)},onContainerRemove:n=>{r.markerElements.get(e.id)===n&&r.markerElements.delete(e.id)}});return t.setMap(r.map),t})}function O(r,o){let a=r.layerMarkerIds.get(o);if(a){for(let e of a)r.markerElements.delete(e);r.layerMarkerIds.delete(o)}}function X(r){let o=r.getSouthWest(),a=r.getNorthEast();return{west:o.lng(),south:o.lat(),east:a.lng(),north:a.lat()}}function Z(r,o,a){if(typeof ResizeObserver>"u")return;let e=!1,i=()=>{let{width:t,height:n}=r.getBoundingClientRect();t===0||n===0||(google.maps.event.trigger(o,"resize"),e||(e=!0,o.setCenter(a)))},s=new ResizeObserver(i);return s.observe(r),typeof requestAnimationFrame<"u"?requestAnimationFrame(i):queueMicrotask(i),s}function q(r){if(!r.apiKey)throw new Error("googleProvider: config.apiKey is required (no hardcoded fallback key is ever used).");let o=!1,a=()=>{o||(_jsapiloader.setOptions.call(void 0, {...r.loaderOptions,key:r.apiKey}),o=!0)},e,i=0;return{async mount(s,t){let n=++i;a();let l=await _jsapiloader.importLibrary.call(void 0, "maps"),d=await _jsapiloader.importLibrary.call(void 0, "marker"),c=_nullishCoalesce(t.center, () => ({lat:0,lng:0})),p=r.styles!=null,u=new l.Map(s,{...r.mapOptions,center:c,zoom:_nullishCoalesce(t.zoom, () => (10)),...p?{styles:r.styles}:{mapId:_nullishCoalesce(r.mapId, () => (H))}}),y=Z(s,u,c),m={map:u,containerEl:s,fullscreenEl:_nullishCoalesce(t.fullscreenTarget, () => (s)),markerLib:d,markerMode:p?"overlay":"advanced",layers:new Map,clusterers:new Map,boundsListeners:new Set,clickListeners:new Set,resizeObserver:y,markerElements:new Map,layerMarkerIds:new Map,selectedMarkerId:null,hoveredMarkerId:null};return n===i&&(e=m),{raw:m}},renderLayer(s,t){let n=f(s),l=n.layers.get(t.id);l&&(k(l),n.layers.delete(t.id),O(n,t.id)),L(n,t.id);let d=n.markerMode==="overlay"?D(n,t):$(n,t);n.layers.set(t.id,d),n.markerMode==="overlay"&&n.layerMarkerIds.set(t.id,t.markers.map(p=>p.id)),t.clustering&&(n.markerMode==="overlay"?W():V(n,t.id,d,t.clustering));let c=!1;return()=>{c||(c=!0,n.layers.get(t.id)===d&&(k(d),n.layers.delete(t.id),L(n,t.id),O(n,t.id)))}},onBoundsChange(s,t){let n=f(s),l=n.map.addListener("idle",()=>{let c=n.map.getBounds();c&&t(X(c))});n.boundsListeners.add(l);let d=!1;return()=>{d||(d=!0,l.remove(),n.boundsListeners.delete(l))}},onMapClick(s){let t=e;if(!t)return()=>{};let n=t.map.addListener("click",()=>s());t.clickListeners.add(n);let l=!1;return()=>{l||(l=!0,n.remove(),t.clickListeners.delete(n))}},fitBounds(s,t){f(s).map.fitBounds(t)},destroy(s){let t=f(s);_optionalChain([t, 'access', _15 => _15.resizeObserver, 'optionalAccess', _16 => _16.disconnect, 'call', _17 => _17()]);for(let n of t.boundsListeners)n.remove();t.boundsListeners.clear();for(let n of t.clickListeners)n.remove();t.clickListeners.clear();for(let n of[...t.clusterers.keys()])L(t,n);for(let n of t.layers.values())k(n);t.layers.clear(),t.markerElements.clear(),t.layerMarkerIds.clear(),e===t&&(e=void 0)},updateMarkerStates(s,t){if(e){e.selectedMarkerId=s,e.hoveredMarkerId=t;for(let[n,l]of e.markerElements)w(l,n,s,t)}},mountOverlay(s){let t=document.createElement("div");if(t.style.position="absolute",t.style.transform="translate(-50%, -100%)",t.style.pointerEvents="auto",!e)return{container:t,setPosition:()=>{},unmount:()=>t.remove()};let n=S(),l=new n(t,s,e.containerEl);return l.setMap(e.map),{container:t,setPosition:d=>l.updatePosition(d),unmount:()=>{l.setMap(null),t.remove()}}},zoomIn(){e&&e.map.setZoom((_nullishCoalesce(e.map.getZoom(), () => (0)))+1)},zoomOut(){e&&e.map.setZoom((_nullishCoalesce(e.map.getZoom(), () => (0)))-1)},toggleFullscreen(){if(!e)return;let s=e.fullscreenEl,t=document.fullscreenElement;t!=null&&s.contains(t)?typeof document.exitFullscreen=="function"&&_optionalChain([document, 'access', _18 => _18.exitFullscreen, 'call', _19 => _19(), 'optionalAccess', _20 => _20.catch, 'call', _21 => _21(()=>{})]):typeof s.requestFullscreen=="function"&&_optionalChain([s, 'access', _22 => _22.requestFullscreen, 'call', _23 => _23(), 'optionalAccess', _24 => _24.catch, 'call', _25 => _25(()=>{})])}}}exports.googleProvider = q;
2
+ var _jsapiloader = require('@googlemaps/js-api-loader');var H="DEMO_MAP_ID";function f(r){return r.raw}function x(r,o){if(r.element)return r.element;if(r.iconUrl)return new o.PinElement({glyphSrc:r.iconUrl}).element}var E=12,I="#b3261e";function R(r){if(r.element)return r.element;if(r.iconUrl){let a=document.createElement("img");return a.src=r.iconUrl,a}let o=document.createElement("div");return o.style.width=`${E}px`,o.style.height=`${E}px`,o.style.borderRadius="50%",o.style.backgroundColor=I,o.style.border="2px solid #ffffff",o.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",o}var g;function A(){if(g)return g;class r extends google.maps.OverlayView{constructor(e,s,i,t){super();r.prototype.__init.call(this);;this.position=e;this.content=s;this.onClick=i;this.lifecycle=t}__init() {this.div=null}onAdd(){let e=document.createElement("div");e.style.position="absolute",e.style.transform="translate(-50%, -50%)",this.onClick&&(e.style.cursor="pointer",e.addEventListener("click",this.onClick)),e.appendChild(this.content),this.div=e,_optionalChain([this, 'access', _2 => _2.getPanes, 'call', _3 => _3(), 'optionalAccess', _4 => _4.overlayMouseTarget, 'access', _5 => _5.appendChild, 'call', _6 => _6(e)]),typeof google.maps.OverlayView.preventMapHitsFrom=="function"&&google.maps.OverlayView.preventMapHitsFrom(e),this.lifecycle.onContainerAdd(e)}draw(){if(!this.div)return;let e=this.getProjection();if(!e)return;let s=e.fromLatLngToDivPixel(new google.maps.LatLng(this.position.lat,this.position.lng));s&&(this.div.style.left=`${s.x}px`,this.div.style.top=`${s.y}px`)}onRemove(){let e=this.div;_optionalChain([this, 'access', _7 => _7.div, 'optionalAccess', _8 => _8.remove, 'call', _9 => _9()]),this.div=null,e&&this.lifecycle.onContainerRemove(e)}}return g=r,g}var v=14,T=8;function S(r){let{anchorX:o,anchorY:a,popupW:e,popupH:s,mapW:i,mapH:t,offsetY:n,pad:l}=r,d=o-e/2,c=o+e/2,p=0;e>i-l*2?p=l-d:c>i-l?p=i-l-c:d<l&&(p=l-d);let u=a-n-s,y=a+n+s,m=u<l&&y<=t-l;return{dx:p,flipBelow:m}}var M;function G(){if(M)return M;class r extends google.maps.OverlayView{constructor(e,s,i){super();r.prototype.__init2.call(this);r.prototype.__init3.call(this);;this.container=e;this.position=s;this.mapContainerEl=i}__init2() {this.attached=!1}__init3() {this.clampOffset=null}onAdd(){this.attached=!0,_optionalChain([this, 'access', _10 => _10.getPanes, 'call', _11 => _11(), 'optionalAccess', _12 => _12.floatPane, 'access', _13 => _13.appendChild, 'call', _14 => _14(this.container)]),typeof google.maps.OverlayView.preventMapHitsAndGesturesFrom=="function"&&google.maps.OverlayView.preventMapHitsAndGesturesFrom(this.container),typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>this.draw())}draw(){let e=this.getProjection();if(!e)return;let s=new google.maps.LatLng(this.position.lat,this.position.lng),i=e.fromLatLngToDivPixel(s);if(!i)return;if(this.clampOffset===null){let l=this.container.offsetWidth,d=this.container.offsetHeight,c=l&&d?e.fromLatLngToContainerPixel(s):null;if(!c){this.container.style.transform="translate(-50%, -100%)",this.container.style.left=`${i.x}px`,this.container.style.top=`${i.y-v}px`;return}this.clampOffset=S({anchorX:c.x,anchorY:c.y,popupW:l,popupH:d,mapW:this.mapContainerEl.clientWidth,mapH:this.mapContainerEl.clientHeight,offsetY:v,pad:T})}let{dx:t,flipBelow:n}=this.clampOffset;this.container.style.left=`${i.x+t}px`,n?(this.container.style.top=`${i.y+v}px`,this.container.style.transform="translate(-50%, 0)"):(this.container.style.top=`${i.y-v}px`,this.container.style.transform="translate(-50%, -100%)")}onRemove(){this.attached=!1,this.container.remove()}updatePosition(e){(e.lat!==this.position.lat||e.lng!==this.position.lng)&&(this.clampOffset=null),this.position=e,this.attached&&this.draw()}}return M=r,M}function k(r){for(let o of r)typeof o.setMap=="function"?o.setMap(null):o.map=null}var _="#b3261e",F=40,B=64,U=14;function z(r,o){let a=o.count,e=Math.min(B,F+Math.round(Math.log10(a+1)*U)),s=document.createElement("div");return s.textContent=String(a),s.style.display="flex",s.style.alignItems="center",s.style.justifyContent="center",s.style.width=`${e}px`,s.style.height=`${e}px`,s.style.borderRadius="50%",s.style.backgroundColor=_,s.style.border="2px solid #ffffff",s.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",s.style.color="#ffffff",s.style.fontFamily="inherit",s.style.fontWeight="700",s.style.fontSize=e>=52?"15px":"13px",new r.AdvancedMarkerElement({position:o.position,content:s})}var b=!1;async function V(r,o,a,e){let s;try{s=await Promise.resolve().then(() => _interopRequireWildcard(require("@googlemaps/markerclusterer")))}catch(t){b||(b=!0,console.warn('[react-listing-engine] "@googlemaps/markerclusterer" is not installed -- rendering plain (unclustered) markers instead. Install "@googlemaps/markerclusterer" to enable clustering.',t));return}if(r.layers.get(o)!==a)return;let i=new s.MarkerClusterer({map:r.map,markers:a,algorithmOptions:{maxZoom:e.maxZoom},renderer:{render:t=>z(r.markerLib,t)}});r.clusterers.set(o,i)}function L(r,o){let a=r.clusterers.get(o);a&&(a.setMap(null),r.clusterers.delete(o))}var C=!1;function W(){C||(C=!0,console.warn('[react-listing-engine] Marker clustering is not supported in `styles` (OverlayView) mode -- "@googlemaps/markerclusterer" only manages Marker/AdvancedMarkerElement instances. Rendering plain, unclustered overlay markers instead. Use a `mapId` (advanced-marker mode) to enable clustering.'))}function $(r,o){return o.markers.map(a=>{let e=new r.markerLib.AdvancedMarkerElement({map:r.map,position:a.position,content:x(a,r.markerLib),gmpClickable:!!o.onMarkerClick});if(o.onMarkerClick){let s=o.onMarkerClick;e.addListener("click",()=>s(a.id))}return e})}function w(r,o,a,e){r.classList.toggle("rle-marker--selected",o===a),r.classList.toggle("rle-marker--hovered",o===e&&o!==a)}function D(r,o){let a=A();return o.markers.map(e=>{let s=o.onMarkerClick,i=s?()=>s(e.id):void 0,t=new a(e.position,R(e),i,{onContainerAdd:n=>{r.markerElements.set(e.id,n),w(n,e.id,r.selectedMarkerId,r.hoveredMarkerId)},onContainerRemove:n=>{r.markerElements.get(e.id)===n&&r.markerElements.delete(e.id)}});return t.setMap(r.map),t})}function O(r,o){let a=r.layerMarkerIds.get(o);if(a){for(let e of a)r.markerElements.delete(e);r.layerMarkerIds.delete(o)}}function X(r){let o=r.getSouthWest(),a=r.getNorthEast();return{west:o.lng(),south:o.lat(),east:a.lng(),north:a.lat()}}function Z(r,o,a){if(typeof ResizeObserver>"u")return;let e=!1,s=()=>{let{width:t,height:n}=r.getBoundingClientRect();t===0||n===0||(google.maps.event.trigger(o,"resize"),e||(e=!0,o.setCenter(a)))},i=new ResizeObserver(s);return i.observe(r),typeof requestAnimationFrame<"u"?requestAnimationFrame(s):queueMicrotask(s),i}function q(r){if(!r.apiKey)throw new Error("googleProvider: config.apiKey is required (no hardcoded fallback key is ever used).");let o=!1,a=()=>{o||(_jsapiloader.setOptions.call(void 0, {...r.loaderOptions,key:r.apiKey}),o=!0)},e,s=0;return{async mount(i,t){let n=++s;a();let l=await _jsapiloader.importLibrary.call(void 0, "maps"),d=await _jsapiloader.importLibrary.call(void 0, "marker"),c=_nullishCoalesce(t.center, () => ({lat:0,lng:0})),p=r.styles!=null,u=new l.Map(i,{...r.mapOptions,center:c,zoom:_nullishCoalesce(t.zoom, () => (10)),...p?{styles:r.styles}:{mapId:_nullishCoalesce(r.mapId, () => (H))}}),y=Z(i,u,c),m={map:u,containerEl:i,fullscreenEl:_nullishCoalesce(t.fullscreenTarget, () => (i)),markerLib:d,markerMode:p?"overlay":"advanced",layers:new Map,clusterers:new Map,boundsListeners:new Set,clickListeners:new Set,resizeObserver:y,markerElements:new Map,layerMarkerIds:new Map,selectedMarkerId:null,hoveredMarkerId:null};return n===s&&(e=m),{raw:m}},renderLayer(i,t){let n=f(i),l=n.layers.get(t.id);l&&(k(l),n.layers.delete(t.id),O(n,t.id)),L(n,t.id);let d=n.markerMode==="overlay"?D(n,t):$(n,t);n.layers.set(t.id,d),n.markerMode==="overlay"&&n.layerMarkerIds.set(t.id,t.markers.map(p=>p.id)),t.clustering&&(n.markerMode==="overlay"?W():V(n,t.id,d,t.clustering));let c=!1;return()=>{c||(c=!0,n.layers.get(t.id)===d&&(k(d),n.layers.delete(t.id),L(n,t.id),O(n,t.id)))}},onBoundsChange(i,t){let n=f(i),l=n.map.addListener("idle",()=>{let c=n.map.getBounds();c&&t(X(c))});n.boundsListeners.add(l);let d=!1;return()=>{d||(d=!0,l.remove(),n.boundsListeners.delete(l))}},onMapClick(i){let t=e;if(!t)return()=>{};let n=t.map.addListener("click",()=>i());t.clickListeners.add(n);let l=!1;return()=>{l||(l=!0,n.remove(),t.clickListeners.delete(n))}},fitBounds(i,t){f(i).map.fitBounds(t)},destroy(i){let t=f(i);_optionalChain([t, 'access', _15 => _15.resizeObserver, 'optionalAccess', _16 => _16.disconnect, 'call', _17 => _17()]);for(let n of t.boundsListeners)n.remove();t.boundsListeners.clear();for(let n of t.clickListeners)n.remove();t.clickListeners.clear();for(let n of[...t.clusterers.keys()])L(t,n);for(let n of t.layers.values())k(n);t.layers.clear(),t.markerElements.clear(),t.layerMarkerIds.clear(),e===t&&(e=void 0)},updateMarkerStates(i,t){if(e){e.selectedMarkerId=i,e.hoveredMarkerId=t;for(let[n,l]of e.markerElements)w(l,n,i,t)}},mountOverlay(i){let t=document.createElement("div");if(t.style.position="absolute",t.style.transform="translate(-50%, -100%)",t.style.pointerEvents="auto",!e)return{container:t,setPosition:()=>{},unmount:()=>t.remove()};let n=G(),l=new n(t,i,e.containerEl);return l.setMap(e.map),{container:t,setPosition:d=>l.updatePosition(d),unmount:()=>{l.setMap(null),t.remove()}}},zoomIn(){e&&e.map.setZoom((_nullishCoalesce(e.map.getZoom(), () => (0)))+1)},zoomOut(){e&&e.map.setZoom((_nullishCoalesce(e.map.getZoom(), () => (0)))-1)},toggleFullscreen(){if(!e)return;let i=e.fullscreenEl,t=document.fullscreenElement;t!=null&&i.contains(t)?typeof document.exitFullscreen=="function"&&_optionalChain([document, 'access', _18 => _18.exitFullscreen, 'call', _19 => _19(), 'optionalAccess', _20 => _20.catch, 'call', _21 => _21(()=>{})]):typeof i.requestFullscreen=="function"&&_optionalChain([i, 'access', _22 => _22.requestFullscreen, 'call', _23 => _23(), 'optionalAccess', _24 => _24.catch, 'call', _25 => _25(()=>{})])}}}exports.googleProvider = q;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{importLibrary as h,setOptions as P}from"@googlemaps/js-api-loader";var H="DEMO_MAP_ID";function f(r){return r.raw}function x(r,o){if(r.element)return r.element;if(r.iconUrl)return new o.PinElement({glyphSrc:r.iconUrl}).element}var E=12,I="#b3261e";function R(r){if(r.element)return r.element;if(r.iconUrl){let a=document.createElement("img");return a.src=r.iconUrl,a}let o=document.createElement("div");return o.style.width=`${E}px`,o.style.height=`${E}px`,o.style.borderRadius="50%",o.style.backgroundColor=I,o.style.border="2px solid #ffffff",o.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",o}var g;function A(){if(g)return g;class r extends google.maps.OverlayView{constructor(e,i,s,t){super();this.position=e;this.content=i;this.onClick=s;this.lifecycle=t}position;content;onClick;lifecycle;div=null;onAdd(){let e=document.createElement("div");e.style.position="absolute",e.style.transform="translate(-50%, -50%)",this.onClick&&(e.style.cursor="pointer",e.addEventListener("click",this.onClick)),e.appendChild(this.content),this.div=e,this.getPanes()?.overlayMouseTarget.appendChild(e),typeof google.maps.OverlayView.preventMapHitsAndGesturesFrom=="function"&&google.maps.OverlayView.preventMapHitsAndGesturesFrom(e),this.lifecycle.onContainerAdd(e)}draw(){if(!this.div)return;let e=this.getProjection();if(!e)return;let i=e.fromLatLngToDivPixel(new google.maps.LatLng(this.position.lat,this.position.lng));i&&(this.div.style.left=`${i.x}px`,this.div.style.top=`${i.y}px`)}onRemove(){let e=this.div;this.div?.remove(),this.div=null,e&&this.lifecycle.onContainerRemove(e)}}return g=r,g}var v=14,T=8;function G(r){let{anchorX:o,anchorY:a,popupW:e,popupH:i,mapW:s,mapH:t,offsetY:n,pad:l}=r,d=o-e/2,c=o+e/2,p=0;e>s-l*2?p=l-d:c>s-l?p=s-l-c:d<l&&(p=l-d);let u=a-n-i,y=a+n+i,m=u<l&&y<=t-l;return{dx:p,flipBelow:m}}var M;function S(){if(M)return M;class r extends google.maps.OverlayView{constructor(e,i,s){super();this.container=e;this.position=i;this.mapContainerEl=s}container;position;mapContainerEl;attached=!1;clampOffset=null;onAdd(){this.attached=!0,this.getPanes()?.floatPane.appendChild(this.container),typeof google.maps.OverlayView.preventMapHitsAndGesturesFrom=="function"&&google.maps.OverlayView.preventMapHitsAndGesturesFrom(this.container),typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>this.draw())}draw(){let e=this.getProjection();if(!e)return;let i=new google.maps.LatLng(this.position.lat,this.position.lng),s=e.fromLatLngToDivPixel(i);if(!s)return;if(this.clampOffset===null){let l=this.container.offsetWidth,d=this.container.offsetHeight,c=l&&d?e.fromLatLngToContainerPixel(i):null;if(!c){this.container.style.transform="translate(-50%, -100%)",this.container.style.left=`${s.x}px`,this.container.style.top=`${s.y-v}px`;return}this.clampOffset=G({anchorX:c.x,anchorY:c.y,popupW:l,popupH:d,mapW:this.mapContainerEl.clientWidth,mapH:this.mapContainerEl.clientHeight,offsetY:v,pad:T})}let{dx:t,flipBelow:n}=this.clampOffset;this.container.style.left=`${s.x+t}px`,n?(this.container.style.top=`${s.y+v}px`,this.container.style.transform="translate(-50%, 0)"):(this.container.style.top=`${s.y-v}px`,this.container.style.transform="translate(-50%, -100%)")}onRemove(){this.attached=!1,this.container.remove()}updatePosition(e){(e.lat!==this.position.lat||e.lng!==this.position.lng)&&(this.clampOffset=null),this.position=e,this.attached&&this.draw()}}return M=r,M}function k(r){for(let o of r)typeof o.setMap=="function"?o.setMap(null):o.map=null}var _="#b3261e",F=40,B=64,U=14;function z(r,o){let a=o.count,e=Math.min(B,F+Math.round(Math.log10(a+1)*U)),i=document.createElement("div");return i.textContent=String(a),i.style.display="flex",i.style.alignItems="center",i.style.justifyContent="center",i.style.width=`${e}px`,i.style.height=`${e}px`,i.style.borderRadius="50%",i.style.backgroundColor=_,i.style.border="2px solid #ffffff",i.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",i.style.color="#ffffff",i.style.fontFamily="inherit",i.style.fontWeight="700",i.style.fontSize=e>=52?"15px":"13px",new r.AdvancedMarkerElement({position:o.position,content:i})}var b=!1;async function V(r,o,a,e){let i;try{i=await import("@googlemaps/markerclusterer")}catch(t){b||(b=!0,console.warn('[react-listing-engine] "@googlemaps/markerclusterer" is not installed -- rendering plain (unclustered) markers instead. Install "@googlemaps/markerclusterer" to enable clustering.',t));return}if(r.layers.get(o)!==a)return;let s=new i.MarkerClusterer({map:r.map,markers:a,algorithmOptions:{maxZoom:e.maxZoom},renderer:{render:t=>z(r.markerLib,t)}});r.clusterers.set(o,s)}function L(r,o){let a=r.clusterers.get(o);a&&(a.setMap(null),r.clusterers.delete(o))}var C=!1;function W(){C||(C=!0,console.warn('[react-listing-engine] Marker clustering is not supported in `styles` (OverlayView) mode -- "@googlemaps/markerclusterer" only manages Marker/AdvancedMarkerElement instances. Rendering plain, unclustered overlay markers instead. Use a `mapId` (advanced-marker mode) to enable clustering.'))}function $(r,o){return o.markers.map(a=>{let e=new r.markerLib.AdvancedMarkerElement({map:r.map,position:a.position,content:x(a,r.markerLib),gmpClickable:!!o.onMarkerClick});if(o.onMarkerClick){let i=o.onMarkerClick;e.addListener("click",()=>i(a.id))}return e})}function w(r,o,a,e){r.classList.toggle("rle-marker--selected",o===a),r.classList.toggle("rle-marker--hovered",o===e&&o!==a)}function D(r,o){let a=A();return o.markers.map(e=>{let i=o.onMarkerClick,s=i?()=>i(e.id):void 0,t=new a(e.position,R(e),s,{onContainerAdd:n=>{r.markerElements.set(e.id,n),w(n,e.id,r.selectedMarkerId,r.hoveredMarkerId)},onContainerRemove:n=>{r.markerElements.get(e.id)===n&&r.markerElements.delete(e.id)}});return t.setMap(r.map),t})}function O(r,o){let a=r.layerMarkerIds.get(o);if(a){for(let e of a)r.markerElements.delete(e);r.layerMarkerIds.delete(o)}}function X(r){let o=r.getSouthWest(),a=r.getNorthEast();return{west:o.lng(),south:o.lat(),east:a.lng(),north:a.lat()}}function Z(r,o,a){if(typeof ResizeObserver>"u")return;let e=!1,i=()=>{let{width:t,height:n}=r.getBoundingClientRect();t===0||n===0||(google.maps.event.trigger(o,"resize"),e||(e=!0,o.setCenter(a)))},s=new ResizeObserver(i);return s.observe(r),typeof requestAnimationFrame<"u"?requestAnimationFrame(i):queueMicrotask(i),s}function q(r){if(!r.apiKey)throw new Error("googleProvider: config.apiKey is required (no hardcoded fallback key is ever used).");let o=!1,a=()=>{o||(P({...r.loaderOptions,key:r.apiKey}),o=!0)},e,i=0;return{async mount(s,t){let n=++i;a();let l=await h("maps"),d=await h("marker"),c=t.center??{lat:0,lng:0},p=r.styles!=null,u=new l.Map(s,{...r.mapOptions,center:c,zoom:t.zoom??10,...p?{styles:r.styles}:{mapId:r.mapId??H}}),y=Z(s,u,c),m={map:u,containerEl:s,fullscreenEl:t.fullscreenTarget??s,markerLib:d,markerMode:p?"overlay":"advanced",layers:new Map,clusterers:new Map,boundsListeners:new Set,clickListeners:new Set,resizeObserver:y,markerElements:new Map,layerMarkerIds:new Map,selectedMarkerId:null,hoveredMarkerId:null};return n===i&&(e=m),{raw:m}},renderLayer(s,t){let n=f(s),l=n.layers.get(t.id);l&&(k(l),n.layers.delete(t.id),O(n,t.id)),L(n,t.id);let d=n.markerMode==="overlay"?D(n,t):$(n,t);n.layers.set(t.id,d),n.markerMode==="overlay"&&n.layerMarkerIds.set(t.id,t.markers.map(p=>p.id)),t.clustering&&(n.markerMode==="overlay"?W():V(n,t.id,d,t.clustering));let c=!1;return()=>{c||(c=!0,n.layers.get(t.id)===d&&(k(d),n.layers.delete(t.id),L(n,t.id),O(n,t.id)))}},onBoundsChange(s,t){let n=f(s),l=n.map.addListener("idle",()=>{let c=n.map.getBounds();c&&t(X(c))});n.boundsListeners.add(l);let d=!1;return()=>{d||(d=!0,l.remove(),n.boundsListeners.delete(l))}},onMapClick(s){let t=e;if(!t)return()=>{};let n=t.map.addListener("click",()=>s());t.clickListeners.add(n);let l=!1;return()=>{l||(l=!0,n.remove(),t.clickListeners.delete(n))}},fitBounds(s,t){f(s).map.fitBounds(t)},destroy(s){let t=f(s);t.resizeObserver?.disconnect();for(let n of t.boundsListeners)n.remove();t.boundsListeners.clear();for(let n of t.clickListeners)n.remove();t.clickListeners.clear();for(let n of[...t.clusterers.keys()])L(t,n);for(let n of t.layers.values())k(n);t.layers.clear(),t.markerElements.clear(),t.layerMarkerIds.clear(),e===t&&(e=void 0)},updateMarkerStates(s,t){if(e){e.selectedMarkerId=s,e.hoveredMarkerId=t;for(let[n,l]of e.markerElements)w(l,n,s,t)}},mountOverlay(s){let t=document.createElement("div");if(t.style.position="absolute",t.style.transform="translate(-50%, -100%)",t.style.pointerEvents="auto",!e)return{container:t,setPosition:()=>{},unmount:()=>t.remove()};let n=S(),l=new n(t,s,e.containerEl);return l.setMap(e.map),{container:t,setPosition:d=>l.updatePosition(d),unmount:()=>{l.setMap(null),t.remove()}}},zoomIn(){e&&e.map.setZoom((e.map.getZoom()??0)+1)},zoomOut(){e&&e.map.setZoom((e.map.getZoom()??0)-1)},toggleFullscreen(){if(!e)return;let s=e.fullscreenEl,t=document.fullscreenElement;t!=null&&s.contains(t)?typeof document.exitFullscreen=="function"&&document.exitFullscreen()?.catch(()=>{}):typeof s.requestFullscreen=="function"&&s.requestFullscreen()?.catch(()=>{})}}}export{q as googleProvider};
2
+ import{importLibrary as h,setOptions as P}from"@googlemaps/js-api-loader";var H="DEMO_MAP_ID";function f(r){return r.raw}function x(r,o){if(r.element)return r.element;if(r.iconUrl)return new o.PinElement({glyphSrc:r.iconUrl}).element}var E=12,I="#b3261e";function R(r){if(r.element)return r.element;if(r.iconUrl){let a=document.createElement("img");return a.src=r.iconUrl,a}let o=document.createElement("div");return o.style.width=`${E}px`,o.style.height=`${E}px`,o.style.borderRadius="50%",o.style.backgroundColor=I,o.style.border="2px solid #ffffff",o.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",o}var g;function A(){if(g)return g;class r extends google.maps.OverlayView{constructor(e,s,i,t){super();this.position=e;this.content=s;this.onClick=i;this.lifecycle=t}position;content;onClick;lifecycle;div=null;onAdd(){let e=document.createElement("div");e.style.position="absolute",e.style.transform="translate(-50%, -50%)",this.onClick&&(e.style.cursor="pointer",e.addEventListener("click",this.onClick)),e.appendChild(this.content),this.div=e,this.getPanes()?.overlayMouseTarget.appendChild(e),typeof google.maps.OverlayView.preventMapHitsFrom=="function"&&google.maps.OverlayView.preventMapHitsFrom(e),this.lifecycle.onContainerAdd(e)}draw(){if(!this.div)return;let e=this.getProjection();if(!e)return;let s=e.fromLatLngToDivPixel(new google.maps.LatLng(this.position.lat,this.position.lng));s&&(this.div.style.left=`${s.x}px`,this.div.style.top=`${s.y}px`)}onRemove(){let e=this.div;this.div?.remove(),this.div=null,e&&this.lifecycle.onContainerRemove(e)}}return g=r,g}var v=14,T=8;function S(r){let{anchorX:o,anchorY:a,popupW:e,popupH:s,mapW:i,mapH:t,offsetY:n,pad:l}=r,d=o-e/2,c=o+e/2,p=0;e>i-l*2?p=l-d:c>i-l?p=i-l-c:d<l&&(p=l-d);let u=a-n-s,y=a+n+s,m=u<l&&y<=t-l;return{dx:p,flipBelow:m}}var M;function G(){if(M)return M;class r extends google.maps.OverlayView{constructor(e,s,i){super();this.container=e;this.position=s;this.mapContainerEl=i}container;position;mapContainerEl;attached=!1;clampOffset=null;onAdd(){this.attached=!0,this.getPanes()?.floatPane.appendChild(this.container),typeof google.maps.OverlayView.preventMapHitsAndGesturesFrom=="function"&&google.maps.OverlayView.preventMapHitsAndGesturesFrom(this.container),typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>this.draw())}draw(){let e=this.getProjection();if(!e)return;let s=new google.maps.LatLng(this.position.lat,this.position.lng),i=e.fromLatLngToDivPixel(s);if(!i)return;if(this.clampOffset===null){let l=this.container.offsetWidth,d=this.container.offsetHeight,c=l&&d?e.fromLatLngToContainerPixel(s):null;if(!c){this.container.style.transform="translate(-50%, -100%)",this.container.style.left=`${i.x}px`,this.container.style.top=`${i.y-v}px`;return}this.clampOffset=S({anchorX:c.x,anchorY:c.y,popupW:l,popupH:d,mapW:this.mapContainerEl.clientWidth,mapH:this.mapContainerEl.clientHeight,offsetY:v,pad:T})}let{dx:t,flipBelow:n}=this.clampOffset;this.container.style.left=`${i.x+t}px`,n?(this.container.style.top=`${i.y+v}px`,this.container.style.transform="translate(-50%, 0)"):(this.container.style.top=`${i.y-v}px`,this.container.style.transform="translate(-50%, -100%)")}onRemove(){this.attached=!1,this.container.remove()}updatePosition(e){(e.lat!==this.position.lat||e.lng!==this.position.lng)&&(this.clampOffset=null),this.position=e,this.attached&&this.draw()}}return M=r,M}function k(r){for(let o of r)typeof o.setMap=="function"?o.setMap(null):o.map=null}var _="#b3261e",F=40,B=64,U=14;function z(r,o){let a=o.count,e=Math.min(B,F+Math.round(Math.log10(a+1)*U)),s=document.createElement("div");return s.textContent=String(a),s.style.display="flex",s.style.alignItems="center",s.style.justifyContent="center",s.style.width=`${e}px`,s.style.height=`${e}px`,s.style.borderRadius="50%",s.style.backgroundColor=_,s.style.border="2px solid #ffffff",s.style.boxShadow="0 1px 4px rgba(0, 0, 0, 0.4)",s.style.color="#ffffff",s.style.fontFamily="inherit",s.style.fontWeight="700",s.style.fontSize=e>=52?"15px":"13px",new r.AdvancedMarkerElement({position:o.position,content:s})}var b=!1;async function V(r,o,a,e){let s;try{s=await import("@googlemaps/markerclusterer")}catch(t){b||(b=!0,console.warn('[react-listing-engine] "@googlemaps/markerclusterer" is not installed -- rendering plain (unclustered) markers instead. Install "@googlemaps/markerclusterer" to enable clustering.',t));return}if(r.layers.get(o)!==a)return;let i=new s.MarkerClusterer({map:r.map,markers:a,algorithmOptions:{maxZoom:e.maxZoom},renderer:{render:t=>z(r.markerLib,t)}});r.clusterers.set(o,i)}function L(r,o){let a=r.clusterers.get(o);a&&(a.setMap(null),r.clusterers.delete(o))}var C=!1;function W(){C||(C=!0,console.warn('[react-listing-engine] Marker clustering is not supported in `styles` (OverlayView) mode -- "@googlemaps/markerclusterer" only manages Marker/AdvancedMarkerElement instances. Rendering plain, unclustered overlay markers instead. Use a `mapId` (advanced-marker mode) to enable clustering.'))}function $(r,o){return o.markers.map(a=>{let e=new r.markerLib.AdvancedMarkerElement({map:r.map,position:a.position,content:x(a,r.markerLib),gmpClickable:!!o.onMarkerClick});if(o.onMarkerClick){let s=o.onMarkerClick;e.addListener("click",()=>s(a.id))}return e})}function w(r,o,a,e){r.classList.toggle("rle-marker--selected",o===a),r.classList.toggle("rle-marker--hovered",o===e&&o!==a)}function D(r,o){let a=A();return o.markers.map(e=>{let s=o.onMarkerClick,i=s?()=>s(e.id):void 0,t=new a(e.position,R(e),i,{onContainerAdd:n=>{r.markerElements.set(e.id,n),w(n,e.id,r.selectedMarkerId,r.hoveredMarkerId)},onContainerRemove:n=>{r.markerElements.get(e.id)===n&&r.markerElements.delete(e.id)}});return t.setMap(r.map),t})}function O(r,o){let a=r.layerMarkerIds.get(o);if(a){for(let e of a)r.markerElements.delete(e);r.layerMarkerIds.delete(o)}}function X(r){let o=r.getSouthWest(),a=r.getNorthEast();return{west:o.lng(),south:o.lat(),east:a.lng(),north:a.lat()}}function Z(r,o,a){if(typeof ResizeObserver>"u")return;let e=!1,s=()=>{let{width:t,height:n}=r.getBoundingClientRect();t===0||n===0||(google.maps.event.trigger(o,"resize"),e||(e=!0,o.setCenter(a)))},i=new ResizeObserver(s);return i.observe(r),typeof requestAnimationFrame<"u"?requestAnimationFrame(s):queueMicrotask(s),i}function q(r){if(!r.apiKey)throw new Error("googleProvider: config.apiKey is required (no hardcoded fallback key is ever used).");let o=!1,a=()=>{o||(P({...r.loaderOptions,key:r.apiKey}),o=!0)},e,s=0;return{async mount(i,t){let n=++s;a();let l=await h("maps"),d=await h("marker"),c=t.center??{lat:0,lng:0},p=r.styles!=null,u=new l.Map(i,{...r.mapOptions,center:c,zoom:t.zoom??10,...p?{styles:r.styles}:{mapId:r.mapId??H}}),y=Z(i,u,c),m={map:u,containerEl:i,fullscreenEl:t.fullscreenTarget??i,markerLib:d,markerMode:p?"overlay":"advanced",layers:new Map,clusterers:new Map,boundsListeners:new Set,clickListeners:new Set,resizeObserver:y,markerElements:new Map,layerMarkerIds:new Map,selectedMarkerId:null,hoveredMarkerId:null};return n===s&&(e=m),{raw:m}},renderLayer(i,t){let n=f(i),l=n.layers.get(t.id);l&&(k(l),n.layers.delete(t.id),O(n,t.id)),L(n,t.id);let d=n.markerMode==="overlay"?D(n,t):$(n,t);n.layers.set(t.id,d),n.markerMode==="overlay"&&n.layerMarkerIds.set(t.id,t.markers.map(p=>p.id)),t.clustering&&(n.markerMode==="overlay"?W():V(n,t.id,d,t.clustering));let c=!1;return()=>{c||(c=!0,n.layers.get(t.id)===d&&(k(d),n.layers.delete(t.id),L(n,t.id),O(n,t.id)))}},onBoundsChange(i,t){let n=f(i),l=n.map.addListener("idle",()=>{let c=n.map.getBounds();c&&t(X(c))});n.boundsListeners.add(l);let d=!1;return()=>{d||(d=!0,l.remove(),n.boundsListeners.delete(l))}},onMapClick(i){let t=e;if(!t)return()=>{};let n=t.map.addListener("click",()=>i());t.clickListeners.add(n);let l=!1;return()=>{l||(l=!0,n.remove(),t.clickListeners.delete(n))}},fitBounds(i,t){f(i).map.fitBounds(t)},destroy(i){let t=f(i);t.resizeObserver?.disconnect();for(let n of t.boundsListeners)n.remove();t.boundsListeners.clear();for(let n of t.clickListeners)n.remove();t.clickListeners.clear();for(let n of[...t.clusterers.keys()])L(t,n);for(let n of t.layers.values())k(n);t.layers.clear(),t.markerElements.clear(),t.layerMarkerIds.clear(),e===t&&(e=void 0)},updateMarkerStates(i,t){if(e){e.selectedMarkerId=i,e.hoveredMarkerId=t;for(let[n,l]of e.markerElements)w(l,n,i,t)}},mountOverlay(i){let t=document.createElement("div");if(t.style.position="absolute",t.style.transform="translate(-50%, -100%)",t.style.pointerEvents="auto",!e)return{container:t,setPosition:()=>{},unmount:()=>t.remove()};let n=G(),l=new n(t,i,e.containerEl);return l.setMap(e.map),{container:t,setPosition:d=>l.updatePosition(d),unmount:()=>{l.setMap(null),t.remove()}}},zoomIn(){e&&e.map.setZoom((e.map.getZoom()??0)+1)},zoomOut(){e&&e.map.setZoom((e.map.getZoom()??0)-1)},toggleFullscreen(){if(!e)return;let i=e.fullscreenEl,t=document.fullscreenElement;t!=null&&i.contains(t)?typeof document.exitFullscreen=="function"&&document.exitFullscreen()?.catch(()=>{}):typeof i.requestFullscreen=="function"&&i.requestFullscreen()?.catch(()=>{})}}}export{q as googleProvider};
@@ -1,2 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
- var _chunk76JZ5SOAcjs = require('../chunk-76JZ5SOA.cjs');var _jsxruntime = require('react/jsx-runtime');function L({children:o}){return _jsxruntime.jsx.call(void 0, _chunk76JZ5SOAcjs.q,{..._chunk76JZ5SOAcjs.O,children:o})}exports.BottomNav = _chunk76JZ5SOAcjs.P; exports.BottomSheet = _chunk76JZ5SOAcjs.Q; exports.ListingApp = _chunk76JZ5SOAcjs.S; exports.StyledCard = _chunk76JZ5SOAcjs.E; exports.StyledComponentsProviderWithDefaults = L; exports.StyledEmpty = _chunk76JZ5SOAcjs.F; exports.StyledFilterPanel = _chunk76JZ5SOAcjs.G; exports.StyledListingLayout = _chunk76JZ5SOAcjs.R; exports.StyledLoading = _chunk76JZ5SOAcjs.H; exports.StyledMarker = _chunk76JZ5SOAcjs.I; exports.StyledPopup = _chunk76JZ5SOAcjs.J; exports.StyledResultHeader = _chunk76JZ5SOAcjs.K; exports.StyledSearch = _chunk76JZ5SOAcjs.L; exports.StyledSidebar = _chunk76JZ5SOAcjs.M; exports.StyledToolbar = _chunk76JZ5SOAcjs.N; exports.styledDefaultComponents = _chunk76JZ5SOAcjs.O;
2
+ var _chunkN2VOJIO3cjs = require('../chunk-N2VOJIO3.cjs');var _jsxruntime = require('react/jsx-runtime');function L({children:o}){return _jsxruntime.jsx.call(void 0, _chunkN2VOJIO3cjs.q,{..._chunkN2VOJIO3cjs.O,children:o})}exports.BottomNav = _chunkN2VOJIO3cjs.P; exports.BottomSheet = _chunkN2VOJIO3cjs.Q; exports.ListingApp = _chunkN2VOJIO3cjs.S; exports.StyledCard = _chunkN2VOJIO3cjs.E; exports.StyledComponentsProviderWithDefaults = L; exports.StyledEmpty = _chunkN2VOJIO3cjs.F; exports.StyledFilterPanel = _chunkN2VOJIO3cjs.G; exports.StyledListingLayout = _chunkN2VOJIO3cjs.R; exports.StyledLoading = _chunkN2VOJIO3cjs.H; exports.StyledMarker = _chunkN2VOJIO3cjs.I; exports.StyledPopup = _chunkN2VOJIO3cjs.J; exports.StyledResultHeader = _chunkN2VOJIO3cjs.K; exports.StyledSearch = _chunkN2VOJIO3cjs.L; exports.StyledSidebar = _chunkN2VOJIO3cjs.M; exports.StyledToolbar = _chunkN2VOJIO3cjs.N; exports.styledDefaultComponents = _chunkN2VOJIO3cjs.O;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import{E as r,F as p,G as i,H as y,I as d,J as l,K as n,L as m,M as s,N as a,O as t,P as S,Q as f,R as P,S as u,q as e}from"../chunk-Q55G4XMJ.js";import{jsx as g}from"react/jsx-runtime";function L({children:o}){return g(e,{...t,children:o})}export{S as BottomNav,f as BottomSheet,u as ListingApp,r as StyledCard,L as StyledComponentsProviderWithDefaults,p as StyledEmpty,i as StyledFilterPanel,P as StyledListingLayout,y as StyledLoading,d as StyledMarker,l as StyledPopup,n as StyledResultHeader,m as StyledSearch,s as StyledSidebar,a as StyledToolbar,t as styledDefaultComponents};
2
+ import{E as r,F as p,G as i,H as y,I as d,J as l,K as n,L as m,M as s,N as a,O as t,P as S,Q as f,R as P,S as u,q as e}from"../chunk-WIBKE6RD.js";import{jsx as g}from"react/jsx-runtime";function L({children:o}){return g(e,{...t,children:o})}export{S as BottomNav,f as BottomSheet,u as ListingApp,r as StyledCard,L as StyledComponentsProviderWithDefaults,p as StyledEmpty,i as StyledFilterPanel,P as StyledListingLayout,y as StyledLoading,d as StyledMarker,l as StyledPopup,n as StyledResultHeader,m as StyledSearch,s as StyledSidebar,a as StyledToolbar,t as styledDefaultComponents};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-listing-engine",
3
- "version": "0.7.9",
3
+ "version": "0.7.10",
4
4
  "license": "MIT",
5
5
  "description": "Headless, composable listing engine for React: filterable list + Google-Maps multi-layer map, with pluggable data adapters, a filter/dataset registry, injectable components, and a Tailwind-free styled adapter.",
6
6
  "funding": [
File without changes
File without changes