@fabriquerdemain/map-react 1.0.2 → 1.0.4

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.
@@ -10,6 +10,10 @@ export interface DetailPanelProps {
10
10
  marker?: MapMarker | null;
11
11
  /** Configuration du panneau */
12
12
  config?: Partial<DetailPanelConfig>;
13
+ /** Mode d'affichage : 'full' (toutes les infos) ou 'minimal' (placeholder) */
14
+ mode?: 'full' | 'minimal';
15
+ /** Message à afficher en mode minimal */
16
+ placeholderMessage?: string;
13
17
  /** Toujours afficher le panneau même sans marqueur */
14
18
  alwaysVisible?: boolean;
15
19
  /** Callback appelé quand on ferme le panneau */
@@ -1 +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"}
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,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,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"}
@@ -1 +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,yEAiTf,CAAA;AAID,eAAe,GAAG,CAAA"}
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,yEAmUf,CAAA;AAID,eAAe,GAAG,CAAA"}
@@ -11486,6 +11486,8 @@ const DEFAULT_MAP_CONFIG = {
11486
11486
  fitBoundsOnLoad: true,
11487
11487
  fitBoundsPadding: 50,
11488
11488
  showPopup: true,
11489
+ popupMode: "full",
11490
+ popupPlaceholder: "Détails bientôt disponibles",
11489
11491
  showPopupTitle: true,
11490
11492
  showPopupSubtitle: true,
11491
11493
  showPopupAddress: true,
@@ -11583,9 +11585,14 @@ const Map$1 = forwardRef(
11583
11585
  const markerMapRef = useRef(new globalThis.Map());
11584
11586
  const tileLayerRef = useRef(null);
11585
11587
  const hasFitBoundsRef = useRef(false);
11586
- const [currentTileSource, setCurrentTileSource] = useState(
11588
+ const currentTileSourceRef = useRef("ign");
11589
+ const [currentTileSource, setCurrentTileSourceState] = useState(
11587
11590
  "ign"
11588
11591
  );
11592
+ const setCurrentTileSource = useCallback((source) => {
11593
+ currentTileSourceRef.current = source;
11594
+ setCurrentTileSourceState(source);
11595
+ }, []);
11589
11596
  const config = { ...DEFAULT_MAP_CONFIG, ...configProp };
11590
11597
  const createColoredIcon = useCallback(
11591
11598
  (color = "#F95E3C") => {
@@ -11612,6 +11619,17 @@ const Map$1 = forwardRef(
11612
11619
  const buildPopupContent = useCallback(
11613
11620
  (marker) => {
11614
11621
  let html = '<div class="repcartes-popup">';
11622
+ if (config.popupMode === "minimal") {
11623
+ if (marker.subtitle) {
11624
+ html += `<p style="margin: 0 0 4px 0; font-size: 12px; color: #666; display: flex; align-items: center; gap: 4px;">
11625
+ <span style="font-size: 14px;">📍</span>
11626
+ ${marker.subtitle}
11627
+ </p>`;
11628
+ }
11629
+ html += `<p style="margin: 0; font-size: 11px; color: #999; font-style: italic;">${config.popupPlaceholder}</p>`;
11630
+ html += "</div>";
11631
+ return html;
11632
+ }
11615
11633
  if (config.showPopupTitle && marker.title) {
11616
11634
  html += `<h3 style="margin: 0 0 8px 0; font-size: 14px; font-weight: 600;">${marker.title}</h3>`;
11617
11635
  }
@@ -11678,9 +11696,9 @@ const Map$1 = forwardRef(
11678
11696
  });
11679
11697
  const center = map.getCenter();
11680
11698
  const shouldUseIgn = isInFrance(center.lat, center.lng);
11681
- if (shouldUseIgn && currentTileSource !== "ign") {
11699
+ if (shouldUseIgn && currentTileSourceRef.current !== "ign") {
11682
11700
  setCurrentTileSource("ign");
11683
- } else if (!shouldUseIgn && currentTileSource !== "osm") {
11701
+ } else if (!shouldUseIgn && currentTileSourceRef.current !== "osm") {
11684
11702
  setCurrentTileSource("osm");
11685
11703
  }
11686
11704
  });
@@ -11732,21 +11750,16 @@ const Map$1 = forwardRef(
11732
11750
  markersLayerRef.current.addLayer(marker);
11733
11751
  markerMapRef.current.set(markerData.id, marker);
11734
11752
  });
11753
+ const hasInternationalMarkers = markers.some((m) => !isInFrance(m.lat, m.lng));
11754
+ if (hasInternationalMarkers && currentTileSource === "ign") {
11755
+ setCurrentTileSource("osm");
11756
+ }
11735
11757
  if (config.fitBoundsOnLoad && markers.length > 0 && !hasFitBoundsRef.current) {
11736
11758
  const group = L$1.featureGroup(
11737
11759
  markers.map((m) => L$1.marker([m.lat, m.lng]))
11738
11760
  );
11739
11761
  (_a = mapRef.current) == null ? void 0 : _a.fitBounds(group.getBounds(), { padding: [50, 50] });
11740
11762
  hasFitBoundsRef.current = true;
11741
- setTimeout(() => {
11742
- if (mapRef.current) {
11743
- const center = mapRef.current.getCenter();
11744
- const shouldUseIgn = isInFrance(center.lat, center.lng);
11745
- if (!shouldUseIgn) {
11746
- setCurrentTileSource("osm");
11747
- }
11748
- }
11749
- }, 100);
11750
11763
  }
11751
11764
  }, [
11752
11765
  markers,