datastake-daf 0.6.293 → 0.6.295

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.
@@ -20959,26 +20959,27 @@ const SimpleGlobe = _ref => {
20959
20959
  // Set Mapbox access token
20960
20960
  mapboxgl.accessToken = 'pk.eyJ1IjoicmVkaXM5OTkiLCJhIjoiY2x4YWV5MzA5MmtuZzJpcXM5Y201Z2E2YiJ9.m5bwPg-Tj4Akesl1yQUa3w';
20961
20961
 
20962
- // Create map with custom Straatos style - 3D globe configuration
20962
+ // Create map with custom Straatos style
20963
20963
  map.current = new mapboxgl.Map({
20964
20964
  container: mapContainer.current,
20965
20965
  style: 'mapbox://styles/pietragottardo/cm9tt9zfi00d101pg1vdx26si',
20966
20966
  center: [0, 0],
20967
20967
  zoom: mapConfig.maxZoom || 3,
20968
20968
  projection: 'globe',
20969
- // 3D globe settings for proper rendering
20970
- pitch: 0,
20971
- bearing: 0,
20972
- antialias: true,
20973
- fadeDuration: 0,
20974
20969
  attributionControl: false
20975
20970
  });
20976
20971
 
20977
- // Configure 3D globe when style loads
20978
- map.current.on('style.load', () => {
20979
- console.log('🎨 [SIMPLE GLOBE] Style loaded, configuring 3D globe...');
20972
+ // Add markers when map loads
20973
+ map.current.on('load', () => {
20974
+ console.log('🗺️ [SIMPLE GLOBE] Map loaded, adding markers...');
20975
+
20976
+ // Hide Mapbox logo and attribution completely
20977
+ map.current.getContainer();
20978
+ const style = document.createElement('style');
20979
+ style.textContent = "\n .mapboxgl-ctrl-logo,\n .mapboxgl-ctrl-attrib,\n .mapboxgl-ctrl-bottom-left,\n .mapboxgl-ctrl-bottom-right {\n display: none !important;\n }\n .mapboxgl-canvas-container {\n overflow: hidden !important;\n }\n .mapboxgl-canvas {\n overflow: hidden !important;\n }\n /* CRITICAL: Override Leaflet CSS interference with Mapbox */\n .daf-simple-globe-container .mapboxgl-canvas-container {\n position: relative !important;\n left: auto !important;\n top: auto !important;\n }\n .daf-simple-globe-container .mapboxgl-canvas-container canvas {\n position: relative !important;\n left: auto !important;\n top: auto !important;\n transform: none !important;\n }\n /* Prevent Leaflet styles from affecting Mapbox markers */\n .daf-simple-globe-container .daf-globe-marker {\n position: relative !important;\n left: auto !important;\n top: auto !important;\n }\n ";
20980
+ document.head.appendChild(style);
20980
20981
 
20981
- // Set fog for the space background effect with stars
20982
+ // Set the space background with stars
20982
20983
  try {
20983
20984
  map.current.setFog({
20984
20985
  'color': 'rgb(0, 0, 0)',
@@ -21003,29 +21004,6 @@ const SimpleGlobe = _ref => {
21003
21004
  }
21004
21005
  }
21005
21006
 
21006
- // Set lighting for better 3D globe visibility
21007
- try {
21008
- map.current.setLight({
21009
- 'anchor': 'viewport',
21010
- 'color': 'white',
21011
- 'intensity': 0.4
21012
- });
21013
- console.log('💡 [SIMPLE GLOBE] Lighting configured for 3D globe');
21014
- } catch (e) {
21015
- console.log('⚠️ [SIMPLE GLOBE] Could not set lighting');
21016
- }
21017
- });
21018
-
21019
- // Add markers when map loads
21020
- map.current.on('load', () => {
21021
- console.log('🗺️ [SIMPLE GLOBE] Map loaded, adding markers...');
21022
-
21023
- // Hide Mapbox logo and attribution completely
21024
- map.current.getContainer();
21025
- const style = document.createElement('style');
21026
- style.textContent = "\n .mapboxgl-ctrl-logo,\n .mapboxgl-ctrl-attrib,\n .mapboxgl-ctrl-bottom-left,\n .mapboxgl-ctrl-bottom-right {\n display: none !important;\n }\n .mapboxgl-canvas-container {\n overflow: hidden !important;\n }\n .mapboxgl-canvas {\n overflow: hidden !important;\n }\n \n /* Namespace Mapbox styles to avoid Leaflet interference */\n .daf-simple-globe-container .mapboxgl-marker {\n position: absolute !important; /* let Mapbox control positioning */\n transform: none !important; /* let Mapbox handle positioning for 3D globe */\n left: auto !important;\n top: auto !important;\n z-index: 1000 !important; /* ensure markers are visible */\n }\n \n .daf-simple-globe-container .mapboxgl-marker-pane {\n position: absolute !important;\n z-index: 1000 !important;\n }\n \n .daf-simple-globe-container .mapboxgl-canvas {\n position: absolute !important;\n top: 0;\n left: 0;\n }\n \n .daf-simple-globe-container .mapboxgl-canvas-container {\n position: relative !important;\n left: auto !important;\n top: auto !important;\n }\n \n .daf-simple-globe-container .mapboxgl-canvas-container canvas {\n position: absolute !important;\n top: 0;\n left: 0;\n transform: none !important;\n }\n ";
21027
- document.head.appendChild(style);
21028
-
21029
21007
  // Calculate bounds to fit all markers
21030
21008
  const bounds = new mapboxgl.LngLatBounds();
21031
21009
  let hasValidCoordinates = false;
@@ -21101,50 +21079,30 @@ const SimpleGlobe = _ref => {
21101
21079
  const lat = Number(project.latitude);
21102
21080
  console.log("\uD83D\uDCCD [SIMPLE GLOBE] Marker ".concat(index, " coordinates:"), {
21103
21081
  lng,
21104
- lat,
21105
- project: project.name
21082
+ lat
21106
21083
  });
21107
21084
 
21108
21085
  // Validate coordinates
21109
21086
  if (isNaN(lng) || isNaN(lat) || lng < -180 || lng > 180 || lat < -90 || lat > 90) {
21110
21087
  console.error("\u274C [SIMPLE GLOBE] Invalid coordinates for project ".concat(index, ":"), {
21111
21088
  lng,
21112
- lat,
21113
- project: project.name
21089
+ lat
21114
21090
  });
21115
21091
  return;
21116
21092
  }
21117
- console.log("\uD83D\uDCCD Marker ".concat(index, " coordinates:"), {
21118
- lng,
21119
- lat
21120
- });
21121
21093
 
21122
21094
  // Add coordinates to bounds
21123
21095
  bounds.extend([lng, lat]);
21124
21096
  hasValidCoordinates = true;
21125
21097
 
21126
- // Create marker with explicit positioning and anchor for 3D globe
21127
- const marker = new mapboxgl.Marker({
21128
- element: el,
21129
- anchor: 'center' // Use center anchor for 3D globe positioning
21130
- }).setLngLat([lng, lat]).setPopup(popup).addTo(map.current);
21098
+ // Add marker to map with proper coordinate order [lng, lat]
21099
+ new mapboxgl.Marker(el).setLngLat([lng, lat]).setPopup(popup).addTo(map.current);
21131
21100
 
21132
21101
  // Add click handler
21133
21102
  el.addEventListener('click', () => {
21134
21103
  console.log('📍 [SIMPLE GLOBE] Marker clicked:', project);
21135
21104
  onProjectClick(project);
21136
21105
  });
21137
-
21138
- // Verify marker position after a short delay (like other Globe components)
21139
- setTimeout(() => {
21140
- const markerLngLat = marker.getLngLat();
21141
- console.log("\uD83D\uDD0D [SIMPLE GLOBE] Marker ".concat(index, " position verification:"), {
21142
- expected: [lng, lat],
21143
- actual: [markerLngLat.lng, markerLngLat.lat],
21144
- project: project.name,
21145
- match: Math.abs(markerLngLat.lng - lng) < 0.0001 && Math.abs(markerLngLat.lat - lat) < 0.0001
21146
- });
21147
- }, 100);
21148
21106
  console.log("\u2705 [SIMPLE GLOBE] Marker ".concat(index, " added at:"), [lng, lat]);
21149
21107
  });
21150
21108
 
@@ -21165,14 +21123,6 @@ const SimpleGlobe = _ref => {
21165
21123
  } else {
21166
21124
  boundsRef.current = null;
21167
21125
  }
21168
-
21169
- // Force resize for 3D globe rendering
21170
- setTimeout(() => {
21171
- if (map.current && map.current.resize) {
21172
- map.current.resize();
21173
- console.log('🔄 [SIMPLE GLOBE] Map resized for 3D globe rendering');
21174
- }
21175
- }, 100);
21176
21126
  });
21177
21127
  return () => {
21178
21128
  if (map.current) {
@@ -21267,392 +21217,6 @@ const SimpleGlobe = _ref => {
21267
21217
  });
21268
21218
  };
21269
21219
 
21270
- const IsolatedGlobe = _ref => {
21271
- let {
21272
- projects = [],
21273
- mapConfig = {},
21274
- onProjectClick = () => {},
21275
- type = "default",
21276
- color = "#00809E"
21277
- } = _ref;
21278
- const mapContainer = React.useRef(null);
21279
- const map = React.useRef(null);
21280
- const shadowRoot = React.useRef(null);
21281
- const boundsRef = React.useRef(null);
21282
- React.useEffect(() => {
21283
- if (map.current) return;
21284
- console.log('🗺️ [ISOLATED GLOBE] Creating isolated map...');
21285
-
21286
- // Set Mapbox access token
21287
- mapboxgl.accessToken = 'pk.eyJ1IjoicmVkaXM5OTkiLCJhIjoiY2x4YWV5MzA5MmtuZzJpcXM5Y201Z2E2YiJ9.m5bwPg-Tj4Akesl1yQUa3w';
21288
-
21289
- // Create shadow DOM for complete isolation
21290
- const container = mapContainer.current;
21291
- shadowRoot.current = container.attachShadow({
21292
- mode: 'open'
21293
- });
21294
-
21295
- // Create isolated styles
21296
- const style = document.createElement('style');
21297
- style.textContent = "\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n \n .mapboxgl-map {\n font: 12px/20px Helvetica Neue, Arial, Helvetica, sans-serif;\n overflow: hidden;\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-tap-highlight-color: rgb(0 0 0/0);\n }\n \n .mapboxgl-canvas {\n left: 0;\n position: absolute;\n top: 0;\n }\n \n .mapboxgl-canvas-container {\n position: relative;\n width: 100%;\n height: 100%;\n }\n \n .mapboxgl-marker {\n position: absolute;\n z-index: 1;\n }\n \n .mapboxgl-marker svg {\n display: block;\n }\n \n .mapboxgl-popup {\n position: absolute;\n text-align: center;\n margin-bottom: 20px;\n }\n \n .mapboxgl-popup-content-wrapper {\n padding: 1px;\n text-align: left;\n border-radius: 12px;\n background: white;\n color: #333;\n box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4);\n }\n \n .mapboxgl-popup-content {\n margin: 13px 24px 13px 20px;\n line-height: 1.3;\n font-size: 13px;\n min-height: 1px;\n }\n \n .mapboxgl-popup-tip-container {\n width: 40px;\n height: 20px;\n position: absolute;\n left: 50%;\n margin-top: -1px;\n margin-left: -20px;\n overflow: hidden;\n pointer-events: none;\n }\n \n .mapboxgl-popup-tip {\n width: 17px;\n height: 17px;\n padding: 1px;\n margin: -10px auto 0;\n pointer-events: auto;\n transform: rotate(45deg);\n background: white;\n box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4);\n }\n \n .mapboxgl-popup-close-button {\n position: absolute;\n top: 0;\n right: 0;\n border: none;\n text-align: center;\n width: 24px;\n height: 24px;\n font: 16px/24px Tahoma, Verdana, sans-serif;\n color: #757575;\n text-decoration: none;\n background: transparent;\n cursor: pointer;\n }\n \n .mapboxgl-popup-close-button:hover {\n color: #585858;\n }\n \n .mapboxgl-ctrl-attribution,\n .mapboxgl-ctrl-logo {\n display: none !important;\n }\n ";
21298
- shadowRoot.current.appendChild(style);
21299
-
21300
- // Create map container inside shadow DOM
21301
- const mapDiv = document.createElement('div');
21302
- mapDiv.style.width = '100%';
21303
- mapDiv.style.height = '100%';
21304
- shadowRoot.current.appendChild(mapDiv);
21305
-
21306
- // Create map
21307
- map.current = new mapboxgl.Map({
21308
- container: mapDiv,
21309
- style: 'mapbox://styles/mapbox/satellite-v9',
21310
- center: [0, 0],
21311
- zoom: mapConfig.maxZoom || 3,
21312
- projection: 'globe',
21313
- attributionControl: false
21314
- });
21315
-
21316
- // Add markers when map loads
21317
- map.current.on('load', () => {
21318
- console.log('🗺️ [ISOLATED GLOBE] Map loaded, adding markers...');
21319
-
21320
- // Calculate bounds to fit all markers
21321
- const bounds = new mapboxgl.LngLatBounds();
21322
- let hasValidCoordinates = false;
21323
- projects.forEach((project, index) => {
21324
- console.log("\uD83D\uDCCD [ISOLATED GLOBE] Adding marker ".concat(index, ":"), project);
21325
-
21326
- // Create marker element
21327
- const el = document.createElement('div');
21328
- el.style.cursor = 'pointer';
21329
- el.style.boxShadow = '0px 3.45px 3.45px 0px #00000029';
21330
- el.style.display = 'flex';
21331
- el.style.alignItems = 'center';
21332
- el.style.justifyContent = 'center';
21333
- el.style.position = 'relative';
21334
- el.style.left = 'auto';
21335
- el.style.top = 'auto';
21336
- el.style.transform = 'none';
21337
- el.style.zIndex = '1000';
21338
- if (type === "location") {
21339
- // Location marker - SVG map pin style
21340
- el.style.width = '28px';
21341
- el.style.height = '33px';
21342
- el.innerHTML = "\n <svg\n width=\"28\"\n height=\"33\"\n viewBox=\"0 0 28 33\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.14346 4.87419C10.0688 -0.15896 18.0528 -0.162058 22.9757 4.86861C27.6563 9.65161 27.8841 17.2616 23.6622 22.3255H23.6608C23.427 22.6141 23.1808 22.894 22.9211 23.1623L14.0671 32.2101L5.44057 23.3948L5.13868 23.096C0.215857 18.0655 0.218422 9.90737 5.14346 4.87419Z\"\n fill=\"".concat(color, "\"\n stroke=\"white\"\n />\n </svg>\n ");
21343
- } else {
21344
- // Default circular marker style
21345
- el.style.width = '30px';
21346
- el.style.height = '30px';
21347
- el.style.backgroundColor = color;
21348
- el.style.borderRadius = '50%';
21349
- el.style.border = '2px solid white';
21350
- el.style.color = 'white';
21351
- el.style.fontWeight = 'bold';
21352
- el.style.fontSize = '14px';
21353
- el.style.textAlign = 'center';
21354
- el.style.lineHeight = '1';
21355
- el.innerHTML = "<span style=\"display: block; line-height: 1;\">".concat(project.percentageCompletion || 0, "</span>");
21356
- }
21357
-
21358
- // Create popup content
21359
- const popupContent = "\n <div style=\"padding: 12px; min-width: 200px;\">\n <h3 style=\"margin: 0 0 8px 0; font-size: 16px; color: #333;\">".concat(project.name, "</h3>\n <p style=\"margin: 0 0 4px 0; font-size: 12px; color: #666;\">\n <strong>Country:</strong> ").concat(project.country || 'N/A', "\n </p>\n <p style=\"margin: 0 0 4px 0; font-size: 12px; color: #666;\">\n <strong>Sector:</strong> ").concat(project.sectoralScope || 'Project', "\n </p>\n <p style=\"margin: 0 0 4px 0; font-size: 12px; color: #666;\">\n <strong>Completion:</strong> ").concat(project.percentageCompletion || 0, "%\n </p>\n <p style=\"margin: 4px 0 0 0; font-size: 12px; color: #666;\">\n <strong>Coordinates:</strong> ").concat(Number(project.latitude).toFixed(4), ", ").concat(Number(project.longitude).toFixed(4), "\n </p>\n </div>\n ");
21360
-
21361
- // Create popup
21362
- const popup = new mapboxgl.Popup({
21363
- offset: 25,
21364
- closeButton: true,
21365
- closeOnClick: false
21366
- }).setHTML(popupContent);
21367
-
21368
- // Ensure coordinates are valid numbers
21369
- const lng = Number(project.longitude);
21370
- const lat = Number(project.latitude);
21371
- console.log("\uD83D\uDCCD [ISOLATED GLOBE] Marker ".concat(index, " coordinates:"), {
21372
- original: {
21373
- longitude: project.longitude,
21374
- latitude: project.latitude
21375
- },
21376
- processed: {
21377
- lng,
21378
- lat
21379
- },
21380
- project: project.name
21381
- });
21382
-
21383
- // Validate coordinates
21384
- if (isNaN(lng) || isNaN(lat) || lng < -180 || lng > 180 || lat < -90 || lat > 90) {
21385
- console.error("\u274C [ISOLATED GLOBE] Invalid coordinates for project ".concat(index, ":"), {
21386
- lng,
21387
- lat,
21388
- original: {
21389
- longitude: project.longitude,
21390
- latitude: project.latitude
21391
- },
21392
- project: project.name
21393
- });
21394
- return;
21395
- }
21396
-
21397
- // Add coordinates to bounds
21398
- bounds.extend([lng, lat]);
21399
- hasValidCoordinates = true;
21400
-
21401
- // Create marker with explicit positioning
21402
- const marker = new mapboxgl.Marker({
21403
- element: el,
21404
- anchor: 'center'
21405
- }).setLngLat([lng, lat]).setPopup(popup).addTo(map.current);
21406
-
21407
- // Add click handler
21408
- el.addEventListener('click', () => {
21409
- console.log('📍 [ISOLATED GLOBE] Marker clicked:', project);
21410
- onProjectClick(project);
21411
- });
21412
-
21413
- // Verify marker position after a short delay
21414
- setTimeout(() => {
21415
- const markerLngLat = marker.getLngLat();
21416
- console.log("\uD83D\uDD0D [ISOLATED GLOBE] Marker ".concat(index, " position verification:"), {
21417
- expected: [lng, lat],
21418
- actual: [markerLngLat.lng, markerLngLat.lat],
21419
- project: project.name,
21420
- match: Math.abs(markerLngLat.lng - lng) < 0.0001 && Math.abs(markerLngLat.lat - lat) < 0.0001
21421
- });
21422
- }, 100);
21423
- console.log("\u2705 [ISOLATED GLOBE] Marker ".concat(index, " added at:"), [lng, lat]);
21424
- });
21425
-
21426
- // Fit map to show all markers if we have valid coordinates
21427
- if (hasValidCoordinates && !bounds.isEmpty()) {
21428
- console.log('🗺️ [ISOLATED GLOBE] Fitting map to bounds:', bounds);
21429
- map.current.fitBounds(bounds, {
21430
- padding: {
21431
- top: 20,
21432
- bottom: 20,
21433
- left: 20,
21434
- right: 20
21435
- },
21436
- maxZoom: 6,
21437
- duration: 1000
21438
- });
21439
- boundsRef.current = bounds;
21440
- } else {
21441
- boundsRef.current = null;
21442
- }
21443
- });
21444
- return () => {
21445
- if (map.current) {
21446
- map.current.remove();
21447
- map.current = null;
21448
- }
21449
- };
21450
- }, [projects, onProjectClick, mapConfig]);
21451
- return /*#__PURE__*/jsxRuntime.jsx("div", {
21452
- ref: mapContainer,
21453
- style: {
21454
- width: '100%',
21455
- height: '100%',
21456
- position: 'relative'
21457
- }
21458
- });
21459
- };
21460
-
21461
- const NoConflictGlobe = _ref => {
21462
- let {
21463
- projects = [],
21464
- mapConfig = {},
21465
- onProjectClick = () => {},
21466
- type = "default",
21467
- color = "#00809E"
21468
- } = _ref;
21469
- const mapContainer = React.useRef(null);
21470
- const map = React.useRef(null);
21471
- const boundsRef = React.useRef(null);
21472
- React.useEffect(() => {
21473
- if (map.current) return;
21474
- console.log('🗺️ [NO CONFLICT GLOBE] Creating map with aggressive isolation...');
21475
-
21476
- // Set Mapbox access token
21477
- mapboxgl.accessToken = 'pk.eyJ1IjoicmVkaXM5OTkiLCJhIjoiY2x4YWV5MzA5MmtuZzJpcXM5Y201Z2E2YiJ9.m5bwPg-Tj4Akesl1yQUa3w';
21478
-
21479
- // Create map
21480
- map.current = new mapboxgl.Map({
21481
- container: mapContainer.current,
21482
- style: 'mapbox://styles/mapbox/satellite-v9',
21483
- center: [0, 0],
21484
- zoom: mapConfig.maxZoom || 3,
21485
- projection: 'globe',
21486
- attributionControl: false
21487
- });
21488
-
21489
- // Add markers when map loads
21490
- map.current.on('load', () => {
21491
- console.log('🗺️ [NO CONFLICT GLOBE] Map loaded, adding markers...');
21492
-
21493
- // Inject aggressive CSS isolation
21494
- const styleId = 'no-conflict-globe-styles';
21495
- let existingStyle = document.getElementById(styleId);
21496
- if (!existingStyle) {
21497
- const style = document.createElement('style');
21498
- style.id = styleId;
21499
- style.textContent = "\n /* NO CONFLICT GLOBE - Aggressive CSS Isolation */\n .no-conflict-globe-container {\n position: relative !important;\n width: 100% !important;\n height: 100% !important;\n overflow: hidden !important;\n font: 12px/20px Helvetica Neue, Arial, Helvetica, sans-serif !important;\n -webkit-tap-highlight-color: rgb(0 0 0/0) !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-canvas-container {\n position: relative !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n width: 100% !important;\n height: 100% !important;\n overflow: hidden !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-canvas-container canvas {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n width: 100% !important;\n height: 100% !important;\n isolation: isolate !important;\n }\n \n /* Override ALL possible Leaflet CSS interference */\n .no-conflict-globe-container .mapboxgl-marker {\n position: absolute !important;\n left: auto !important;\n top: auto !important;\n transform: none !important;\n pointer-events: auto !important;\n z-index: 1000 !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-marker .no-conflict-marker {\n position: relative !important;\n left: auto !important;\n top: auto !important;\n transform: none !important;\n pointer-events: auto !important;\n cursor: pointer !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n isolation: isolate !important;\n }\n \n /* Override Leaflet pane positioning */\n .no-conflict-globe-container .mapboxgl-marker-pane {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n z-index: 600 !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-tile-container {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-zoom-animated {\n transform-origin: 0 0 !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-marker.leaflet-interactive {\n cursor: pointer !important;\n }\n \n /* Popup styles with isolation */\n .no-conflict-globe-container .mapboxgl-popup {\n position: absolute !important;\n left: auto !important;\n top: auto !important;\n transform: none !important;\n z-index: 700 !important;\n text-align: center !important;\n margin-bottom: 20px !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-content-wrapper {\n padding: 1px !important;\n text-align: left !important;\n border-radius: 12px !important;\n background: white !important;\n color: #333 !important;\n box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4) !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-content {\n margin: 13px 24px 13px 20px !important;\n line-height: 1.3 !important;\n font-size: 13px !important;\n min-height: 1px !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-content p {\n margin: 17px 0 !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-tip-container {\n width: 40px !important;\n height: 20px !important;\n position: absolute !important;\n left: 50% !important;\n margin-top: -1px !important;\n margin-left: -20px !important;\n overflow: hidden !important;\n pointer-events: none !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-tip {\n width: 17px !important;\n height: 17px !important;\n padding: 1px !important;\n margin: -10px auto 0 !important;\n pointer-events: auto !important;\n transform: rotate(45deg) !important;\n background: white !important;\n box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4) !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-close-button {\n position: absolute !important;\n top: 0 !important;\n right: 0 !important;\n border: none !important;\n text-align: center !important;\n width: 24px !important;\n height: 24px !important;\n font: 16px/24px Tahoma, Verdana, sans-serif !important;\n color: #757575 !important;\n text-decoration: none !important;\n background: transparent !important;\n cursor: pointer !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-close-button:hover {\n color: #585858 !important;\n }\n \n /* Hide Mapbox attribution completely */\n .no-conflict-globe-container .mapboxgl-ctrl-attribution {\n display: none !important;\n }\n \n .no-conflict-globe-container .mapboxgl-ctrl-logo {\n display: none !important;\n }\n \n /* Override any Leaflet pane positioning */\n .no-conflict-globe-container .mapboxgl-overlay-pane {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n z-index: 400 !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-shadow-pane {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n z-index: 500 !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-tooltip-pane {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n z-index: 650 !important;\n isolation: isolate !important;\n }\n \n .no-conflict-globe-container .mapboxgl-popup-pane {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n z-index: 700 !important;\n isolation: isolate !important;\n }\n \n /* Override any Leaflet div icon styles */\n .no-conflict-globe-container .mapboxgl-marker .leaflet-div-icon {\n background: none !important;\n border: none !important;\n position: relative !important;\n left: auto !important;\n top: auto !important;\n transform: none !important;\n }\n \n /* Override any Leaflet marker icon styles */\n .no-conflict-globe-container .mapboxgl-marker .leaflet-marker-icon {\n position: relative !important;\n left: auto !important;\n top: auto !important;\n transform: none !important;\n }\n \n /* Override any Leaflet marker shadow styles */\n .no-conflict-globe-container .mapboxgl-marker .leaflet-marker-shadow {\n display: none !important;\n }\n \n /* Override any Leaflet interactive styles */\n .no-conflict-globe-container .mapboxgl-marker.leaflet-interactive {\n cursor: pointer !important;\n pointer-events: auto !important;\n }\n \n /* Override any Leaflet zoom animations */\n .no-conflict-globe-container .mapboxgl-zoom-animated {\n transform-origin: 0 0 !important;\n }\n \n /* Override any Leaflet tile styles */\n .no-conflict-globe-container .mapboxgl-tile {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n }\n \n /* Override any Leaflet image layer styles */\n .no-conflict-globe-container .mapboxgl-image-layer {\n position: absolute !important;\n left: 0 !important;\n top: 0 !important;\n transform: none !important;\n }\n ";
21500
- document.head.appendChild(style);
21501
- }
21502
-
21503
- // Calculate bounds to fit all markers
21504
- const bounds = new mapboxgl.LngLatBounds();
21505
- let hasValidCoordinates = false;
21506
- projects.forEach((project, index) => {
21507
- console.log("\uD83D\uDCCD [NO CONFLICT GLOBE] Adding marker ".concat(index, ":"), project);
21508
-
21509
- // Create marker element with unique class
21510
- const el = document.createElement('div');
21511
- el.className = 'no-conflict-marker';
21512
- el.style.cursor = 'pointer';
21513
- el.style.boxShadow = '0px 3.45px 3.45px 0px #00000029';
21514
- el.style.display = 'flex';
21515
- el.style.alignItems = 'center';
21516
- el.style.justifyContent = 'center';
21517
- el.style.position = 'relative';
21518
- el.style.left = 'auto';
21519
- el.style.top = 'auto';
21520
- el.style.transform = 'none';
21521
- el.style.zIndex = '1000';
21522
- el.style.isolation = 'isolate';
21523
- if (type === "location") {
21524
- // Location marker - SVG map pin style
21525
- el.style.width = '28px';
21526
- el.style.height = '33px';
21527
- el.innerHTML = "\n <svg\n width=\"28\"\n height=\"33\"\n viewBox=\"0 0 28 33\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.14346 4.87419C10.0688 -0.15896 18.0528 -0.162058 22.9757 4.86861C27.6563 9.65161 27.8841 17.2616 23.6622 22.3255H23.6608C23.427 22.6141 23.1808 22.894 22.9211 23.1623L14.0671 32.2101L5.44057 23.3948L5.13868 23.096C0.215857 18.0655 0.218422 9.90737 5.14346 4.87419Z\"\n fill=\"".concat(color, "\"\n stroke=\"white\"\n />\n </svg>\n ");
21528
- } else {
21529
- // Default circular marker style
21530
- el.style.width = '30px';
21531
- el.style.height = '30px';
21532
- el.style.backgroundColor = color;
21533
- el.style.borderRadius = '50%';
21534
- el.style.border = '2px solid white';
21535
- el.style.color = 'white';
21536
- el.style.fontWeight = 'bold';
21537
- el.style.fontSize = '14px';
21538
- el.style.textAlign = 'center';
21539
- el.style.lineHeight = '1';
21540
- el.innerHTML = "<span style=\"display: block; line-height: 1;\">".concat(project.percentageCompletion || 0, "</span>");
21541
- }
21542
-
21543
- // Create popup content
21544
- const popupContent = "\n <div style=\"padding: 12px; min-width: 200px;\">\n <h3 style=\"margin: 0 0 8px 0; font-size: 16px; color: #333;\">".concat(project.name, "</h3>\n <p style=\"margin: 0 0 4px 0; font-size: 12px; color: #666;\">\n <strong>Country:</strong> ").concat(project.country || 'N/A', "\n </p>\n <p style=\"margin: 0 0 4px 0; font-size: 12px; color: #666;\">\n <strong>Sector:</strong> ").concat(project.sectoralScope || 'Project', "\n </p>\n <p style=\"margin: 0 0 4px 0; font-size: 12px; color: #666;\">\n <strong>Completion:</strong> ").concat(project.percentageCompletion || 0, "%\n </p>\n <p style=\"margin: 4px 0 0 0; font-size: 12px; color: #666;\">\n <strong>Coordinates:</strong> ").concat(Number(project.latitude).toFixed(4), ", ").concat(Number(project.longitude).toFixed(4), "\n </p>\n </div>\n ");
21545
-
21546
- // Create popup
21547
- const popup = new mapboxgl.Popup({
21548
- offset: 25,
21549
- closeButton: true,
21550
- closeOnClick: false
21551
- }).setHTML(popupContent);
21552
-
21553
- // Ensure coordinates are valid numbers
21554
- const lng = Number(project.longitude);
21555
- const lat = Number(project.latitude);
21556
- console.log("\uD83D\uDCCD [NO CONFLICT GLOBE] Marker ".concat(index, " coordinates:"), {
21557
- original: {
21558
- longitude: project.longitude,
21559
- latitude: project.latitude
21560
- },
21561
- processed: {
21562
- lng,
21563
- lat
21564
- },
21565
- project: project.name
21566
- });
21567
-
21568
- // Validate coordinates
21569
- if (isNaN(lng) || isNaN(lat) || lng < -180 || lng > 180 || lat < -90 || lat > 90) {
21570
- console.error("\u274C [NO CONFLICT GLOBE] Invalid coordinates for project ".concat(index, ":"), {
21571
- lng,
21572
- lat,
21573
- original: {
21574
- longitude: project.longitude,
21575
- latitude: project.latitude
21576
- },
21577
- project: project.name
21578
- });
21579
- return;
21580
- }
21581
-
21582
- // Add coordinates to bounds
21583
- bounds.extend([lng, lat]);
21584
- hasValidCoordinates = true;
21585
-
21586
- // Create marker with explicit positioning
21587
- const marker = new mapboxgl.Marker({
21588
- element: el,
21589
- anchor: 'center'
21590
- }).setLngLat([lng, lat]).setPopup(popup).addTo(map.current);
21591
-
21592
- // Add click handler
21593
- el.addEventListener('click', () => {
21594
- console.log('📍 [NO CONFLICT GLOBE] Marker clicked:', project);
21595
- onProjectClick(project);
21596
- });
21597
-
21598
- // Verify marker position after a short delay
21599
- setTimeout(() => {
21600
- const markerLngLat = marker.getLngLat();
21601
- console.log("\uD83D\uDD0D [NO CONFLICT GLOBE] Marker ".concat(index, " position verification:"), {
21602
- expected: [lng, lat],
21603
- actual: [markerLngLat.lng, markerLngLat.lat],
21604
- project: project.name,
21605
- match: Math.abs(markerLngLat.lng - lng) < 0.0001 && Math.abs(markerLngLat.lat - lat) < 0.0001
21606
- });
21607
- }, 100);
21608
- console.log("\u2705 [NO CONFLICT GLOBE] Marker ".concat(index, " added at:"), [lng, lat]);
21609
- });
21610
-
21611
- // Fit map to show all markers if we have valid coordinates
21612
- if (hasValidCoordinates && !bounds.isEmpty()) {
21613
- console.log('🗺️ [NO CONFLICT GLOBE] Fitting map to bounds:', bounds);
21614
- map.current.fitBounds(bounds, {
21615
- padding: {
21616
- top: 20,
21617
- bottom: 20,
21618
- left: 20,
21619
- right: 20
21620
- },
21621
- maxZoom: 6,
21622
- duration: 1000
21623
- });
21624
- boundsRef.current = bounds;
21625
- } else {
21626
- boundsRef.current = null;
21627
- }
21628
- });
21629
- return () => {
21630
- if (map.current) {
21631
- map.current.remove();
21632
- map.current = null;
21633
- }
21634
- };
21635
- }, [projects, onProjectClick, mapConfig]);
21636
- return /*#__PURE__*/jsxRuntime.jsx("div", {
21637
- className: "no-conflict-globe-container",
21638
- style: {
21639
- width: '100%',
21640
- height: '100%',
21641
- position: 'relative',
21642
- isolation: 'isolate'
21643
- },
21644
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
21645
- ref: mapContainer,
21646
- style: {
21647
- width: '100%',
21648
- height: '100%',
21649
- position: 'relative',
21650
- isolation: 'isolate'
21651
- }
21652
- })
21653
- });
21654
- };
21655
-
21656
21220
  function WidgetPlaceholder(_ref) {
21657
21221
  let {
21658
21222
  icon = "",
@@ -62433,7 +61997,6 @@ exports.InformationChannelsDataPoint = DataPoint;
62433
61997
  exports.InformationChannelsSubject = Subject;
62434
61998
  exports.InformationChannelsView = InformationChannel;
62435
61999
  exports.InformationUnavailable = InformationUnavailable;
62436
- exports.IsolatedGlobe = IsolatedGlobe;
62437
62000
  exports.KeyIndicators = KeyIndicatorsWidget$1;
62438
62001
  exports.KeyIndicatorsDetails = KeyIndicatorsDetails;
62439
62002
  exports.LineChart = LineChart;
@@ -62448,7 +62011,6 @@ exports.MoreTags = MoreTags;
62448
62011
  exports.MultiBarProgress = MultiBarProgress;
62449
62012
  exports.MultiColorProgressBar = MultiColorProgressBar;
62450
62013
  exports.Multiselect = Multiselect;
62451
- exports.NoConflictGlobe = NoConflictGlobe;
62452
62014
  exports.NotFound = NotFound;
62453
62015
  exports.Pagination = Pagination;
62454
62016
  exports.PdfForm = PdfForm;
@@ -1,5 +1,5 @@
1
1
  @import "./fonts/outfit.css";
2
2
  @import "./fonts/sfDisplay.css";
3
3
  @import "./datastake.css";
4
- /* @import "./leaflet.css"; */
5
- /* @import "./leaflet.markercluster.css"; */
4
+ @import "./leaflet.css";
5
+ @import "./leaflet.markercluster.css";
@@ -6273,6 +6273,9 @@ const userHasInterface = (user, app, intf) => {
6273
6273
  };
6274
6274
 
6275
6275
  const en = {
6276
+ "No planning required": "No planning required",
6277
+ "No evaluation required": "No evaluation required",
6278
+ "No improvement required": "No improvement required",
6276
6279
  "Currently unavailable": "Currently unavailable",
6277
6280
  Description: "Description",
6278
6281
  "missing-inputs": "Missing Inputs",
@@ -7466,6 +7469,9 @@ const en = {
7466
7469
  };
7467
7470
 
7468
7471
  const fr = {
7472
+ "No planning required": "Pas de planification requise",
7473
+ "No evaluation required": "Pas d'évaluation requise",
7474
+ "No improvement required": "Pas d'amélioration requise",
7469
7475
  "Currently unavailable": "Actuellement indisponible",
7470
7476
  "Description": "Description",
7471
7477
  "missing-inputs": "Données Manquantes",
@@ -9299,6 +9305,9 @@ const fr = {
9299
9305
  };
9300
9306
 
9301
9307
  const sp = {
9308
+ "No planning required": "No se requiere planeación",
9309
+ "No evaluation required": "No se requiere evaluación",
9310
+ "No improvement required": "No se requiere mejora",
9302
9311
  "Currently unavailable": "Actualmente no disponible",
9303
9312
  "Description": "Descripción",
9304
9313
  "missing-inputs": "Datos que Faltan",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datastake-daf",
3
- "version": "0.6.293",
3
+ "version": "0.6.295",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^5.2.5",
6
6
  "@antv/g2": "^5.1.1",