@fabriquerdemain/map-react 1.0.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.
@@ -0,0 +1,30 @@
1
+ /**
2
+ * RepCartesDetailPanel - Panneau de détail latéral pour React
3
+ *
4
+ * Affiche les informations détaillées d'un marqueur sélectionné
5
+ */
6
+ import React from 'react';
7
+ import type { MapMarker, DetailPanelConfig } from '@repcartes/map-shared';
8
+ export interface DetailPanelProps {
9
+ /** Marqueur à afficher (null pour masquer le panneau) */
10
+ marker?: MapMarker | null;
11
+ /** Configuration du panneau */
12
+ config?: Partial<DetailPanelConfig>;
13
+ /** Toujours afficher le panneau même sans marqueur */
14
+ alwaysVisible?: boolean;
15
+ /** Callback appelé quand on ferme le panneau */
16
+ onClose?: () => void;
17
+ /** Callback appelé quand on clique sur "Voir détails" */
18
+ onDetailClick?: (marker: MapMarker) => void;
19
+ /** Callback appelé quand on clique sur un contact */
20
+ onContactClick?: (type: 'email' | 'phone' | 'website', value: string) => void;
21
+ /** Callback appelé quand on clique sur un lien externe */
22
+ onExternalClick?: (url: string) => void;
23
+ /** Classes CSS additionnelles */
24
+ className?: string;
25
+ /** Styles inline */
26
+ style?: React.CSSProperties;
27
+ }
28
+ export declare const DetailPanel: React.FC<DetailPanelProps>;
29
+ export default DetailPanel;
30
+ //# sourceMappingURL=DetailPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailPanel.d.ts","sourceRoot":"","sources":["../../src/components/DetailPanel.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGzE,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACzB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACnC,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,yDAAyD;IACzD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAA;IAC3C,qDAAqD;IACrD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7E,0DAA0D;IAC1D,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+SlD,CAAA;AA4BD,eAAe,WAAW,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * RepCartesFilters - Barre de filtres pour React
3
+ *
4
+ * Permet de filtrer les marqueurs par type, stage, ville et recherche
5
+ */
6
+ import React from 'react';
7
+ import type { FiltersConfig, FilterState, DealTypesConfig } from '@repcartes/map-shared';
8
+ export interface FiltersProps {
9
+ /** Configuration des filtres */
10
+ config?: Partial<FiltersConfig>;
11
+ /** Configuration des types de deals (pour le filtre par type) */
12
+ dealTypes?: DealTypesConfig;
13
+ /** Stages disponibles */
14
+ stages?: Array<{
15
+ value: string;
16
+ label: string;
17
+ color?: string;
18
+ }>;
19
+ /** Villes disponibles */
20
+ cities?: string[];
21
+ /** Types disponibles (si dealTypes n'est pas fourni) */
22
+ types?: string[];
23
+ /** État actuel des filtres */
24
+ value: FilterState;
25
+ /** Callback appelé quand les filtres changent */
26
+ onChange: (filters: FilterState) => void;
27
+ /** Classes CSS additionnelles */
28
+ className?: string;
29
+ /** Styles inline */
30
+ style?: React.CSSProperties;
31
+ }
32
+ export declare const Filters: React.FC<FiltersProps>;
33
+ export default Filters;
34
+ //# sourceMappingURL=Filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.d.ts","sourceRoot":"","sources":["../../src/components/Filters.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAsB,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAG9B,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAC/B,iEAAiE;IACjE,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,yBAAyB;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChE,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,8BAA8B;IAC9B,KAAK,EAAE,WAAW,CAAA;IAClB,iDAAiD;IACjD,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IACxC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAgL1C,CAAA;AAID,eAAe,OAAO,CAAA"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * RepCartesMap - Composant de carte principal pour React
3
+ *
4
+ * Affiche une carte Leaflet avec support IGN/OSM, clustering et marqueurs personnalisés
5
+ */
6
+ import React from 'react';
7
+ import L from 'leaflet';
8
+ import 'leaflet/dist/leaflet.css';
9
+ import 'leaflet.markercluster/dist/MarkerCluster.css';
10
+ import 'leaflet.markercluster/dist/MarkerCluster.Default.css';
11
+ import 'leaflet.markercluster';
12
+ import type { MapMarker, MapConfig, MapBounds } from '@repcartes/map-shared';
13
+ export interface MapProps {
14
+ /** Liste des marqueurs à afficher */
15
+ markers?: MapMarker[];
16
+ /** Configuration de la carte */
17
+ config?: Partial<MapConfig>;
18
+ /** ID du marqueur sélectionné */
19
+ selectedMarkerId?: string | null;
20
+ /** Callback appelé quand un marqueur est cliqué */
21
+ onMarkerClick?: (marker: MapMarker) => void;
22
+ /** Callback appelé quand un marqueur est survolé */
23
+ onMarkerHover?: (marker: MapMarker | null) => void;
24
+ /** Callback appelé quand on clique sur la carte */
25
+ onMapClick?: (latlng: {
26
+ lat: number;
27
+ lng: number;
28
+ }) => void;
29
+ /** Callback appelé quand les limites changent */
30
+ onBoundsChange?: (bounds: MapBounds) => void;
31
+ /** Callback appelé quand le zoom change */
32
+ onZoomChange?: (zoom: number) => void;
33
+ /** Callback appelé quand la carte est prête */
34
+ onReady?: (map: L.Map) => void;
35
+ /** Classes CSS additionnelles */
36
+ className?: string;
37
+ /** Styles inline */
38
+ style?: React.CSSProperties;
39
+ }
40
+ export interface MapRef {
41
+ /** Voler vers une position */
42
+ flyTo: (lat: number, lng: number, zoom?: number) => void;
43
+ /** Ajuster la vue aux limites */
44
+ fitBounds: (bounds: MapBounds) => void;
45
+ /** Ouvrir le popup d'un marqueur */
46
+ openMarkerPopup: (markerId: string) => void;
47
+ /** Obtenir l'instance Leaflet de la carte */
48
+ getMap: () => L.Map | null;
49
+ }
50
+ export declare const Map: React.ForwardRefExoticComponent<MapProps & React.RefAttributes<MapRef>>;
51
+ export default Map;
52
+ //# sourceMappingURL=Map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../src/components/Map.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAON,MAAM,OAAO,CAAA;AACd,OAAO,CAAC,MAAM,SAAS,CAAA;AACvB,OAAO,0BAA0B,CAAA;AACjC,OAAO,8CAA8C,CAAA;AACrD,OAAO,sDAAsD,CAAA;AAC7D,OAAO,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAQ5E,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;IACrB,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC3B,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,mDAAmD;IACnD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAA;IAC3C,oDAAoD;IACpD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAClD,mDAAmD;IACnD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC3D,iDAAiD;IACjD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAA;IAC5C,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,CAAA;IAC9B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,8BAA8B;IAC9B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,iCAAiC;IACjC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAA;IACtC,oCAAoC;IACpC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAA;CAC3B;AAgBD,eAAO,MAAM,GAAG,yEAoSf,CAAA;AAID,eAAe,GAAG,CAAA"}
@@ -0,0 +1,27 @@
1
+ import type { MapMarker, FilterState } from '@repcartes/map-shared';
2
+ export interface UseMapFiltersReturn {
3
+ /** État actuel des filtres */
4
+ filters: FilterState;
5
+ /** Marqueurs filtrés */
6
+ filteredMarkers: MapMarker[];
7
+ /** Stages disponibles (extraits des marqueurs) */
8
+ availableStages: Array<{
9
+ value: string;
10
+ label: string;
11
+ color?: string;
12
+ }>;
13
+ /** Villes disponibles (extraites des marqueurs) */
14
+ availableCities: string[];
15
+ /** Types disponibles (extraits des marqueurs) */
16
+ availableTypes: string[];
17
+ /** Définir un filtre */
18
+ setFilter: (key: keyof FilterState, value: string) => void;
19
+ /** Réinitialiser tous les filtres */
20
+ clearFilters: () => void;
21
+ /** Nombre de marqueurs avant filtrage */
22
+ totalCount: number;
23
+ /** Nombre de marqueurs après filtrage */
24
+ filteredCount: number;
25
+ }
26
+ export declare function useMapFilters(markers: MapMarker[]): UseMapFiltersReturn;
27
+ //# sourceMappingURL=useMapFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMapFilters.d.ts","sourceRoot":"","sources":["../../src/hooks/useMapFilters.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnE,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,OAAO,EAAE,WAAW,CAAA;IACpB,wBAAwB;IACxB,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,kDAAkD;IAClD,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxE,mDAAmD;IACnD,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,iDAAiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,wBAAwB;IACxB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,qCAAqC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAA;CACtB;AASD,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,mBAAmB,CA6GvE"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @repcartes/map-react
3
+ *
4
+ * Composants de carte React pour La République des Cartes
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * import { RepCartesMap, RepCartesDetailPanel, RepCartesFilters } from '@repcartes/map-react'
9
+ * import '@repcartes/map-react/style.css'
10
+ *
11
+ * const markers = [
12
+ * { id: '1', lat: 48.8566, lng: 2.3522, title: 'Paris' }
13
+ * ]
14
+ *
15
+ * function App() {
16
+ * return <RepCartesMap markers={markers} />
17
+ * }
18
+ * ```
19
+ */
20
+ import Map from './components/Map';
21
+ export declare const RepCartesMap: import("react").ForwardRefExoticComponent<import(".").MapProps & import("react").RefAttributes<import(".").MapRef>>;
22
+ export declare const RepCartesDetailPanel: import("react").FC<import(".").DetailPanelProps>;
23
+ export declare const RepCartesFilters: import("react").FC<import(".").FiltersProps>;
24
+ export default Map;
25
+ export type { MapProps, MapRef } from './components/Map';
26
+ export type { DetailPanelProps } from './components/DetailPanel';
27
+ export type { FiltersProps } from './components/Filters';
28
+ export type { MapMarker, MapConfig, MapBounds, MarkerAddress, MarkerContact, MarkerOrganisation, DetailPanelConfig, DetailPanelSections, FiltersConfig, FilterState, FilterType, DealTypesConfig, DealTypeConfig, DealStageConfig, MapEvents, } from '@repcartes/map-shared';
29
+ export { DEFAULT_MAP_CONFIG, DEFAULT_PANEL_CONFIG, DEFAULT_FILTERS_CONFIG, FRANCE_BOUNDS, TILE_URLS, TILE_ATTRIBUTIONS, isInFrance, formatAddress, formatName, } from '@repcartes/map-shared';
30
+ export { useMapFilters } from './hooks/useMapFilters';
31
+ export type { UseMapFiltersReturn } from './hooks/useMapFilters';
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,GAAG,MAAM,kBAAkB,CAAA;AAKlC,eAAO,MAAM,YAAY,qHAAM,CAAA;AAC/B,eAAO,MAAM,oBAAoB,kDAAc,CAAA;AAC/C,eAAO,MAAM,gBAAgB,8CAAU,CAAA;AAGvC,eAAe,GAAG,CAAA;AAGlB,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGxD,YAAY,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,SAAS,GACV,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA"}