datastake-daf 0.6.283 β 0.6.285
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/dist/components/index.js +333 -122
- package/dist/style/datastake/mapbox-gl.css +330 -0
- package/package.json +1 -1
- package/src/@daf/core/components/Dashboard/Globe/CSSInJSGlobe.jsx +415 -0
- package/src/@daf/core/components/Dashboard/Globe/IsolatedGlobe.jsx +345 -0
- package/src/@daf/core/components/Dashboard/Globe/NoConflictGlobe.jsx +488 -0
- package/src/@daf/core/components/Dashboard/Globe/SimpleGlobe.jsx +17 -111
- package/src/@daf/core/components/Dashboard/Globe/SimpleGlobe.stories.js +14 -13
- package/src/index.js +2 -1
- package/src/styles/datastake/mapbox-gl.css +330 -0
- package/src/@daf/core/components/Dashboard/Globe/SimpleGlobeStraatosDebug.jsx +0 -322
- package/src/@daf/core/components/Dashboard/Globe/SimpleGlobeStraatosDebug.standalone.jsx +0 -349
- package/src/@daf/core/components/Dashboard/Globe/SimpleGlobeTestDebug.jsx +0 -150
- package/src/@daf/core/components/Dashboard/Globe/SimpleGlobeTestDebug.standalone.jsx +0 -183
package/dist/components/index.js
CHANGED
|
@@ -20959,29 +20959,15 @@ 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
|
|
20963
|
-
|
|
20964
|
-
|
|
20965
|
-
|
|
20966
|
-
|
|
20967
|
-
|
|
20968
|
-
|
|
20969
|
-
|
|
20970
|
-
|
|
20971
|
-
});
|
|
20972
|
-
console.log('πΊοΈ [SIMPLE GLOBE] Custom style loaded successfully');
|
|
20973
|
-
} catch (error) {
|
|
20974
|
-
console.warn('β οΈ [SIMPLE GLOBE] Custom style failed, using fallback:', error);
|
|
20975
|
-
// Fallback to standard style
|
|
20976
|
-
map.current = new mapboxgl.Map({
|
|
20977
|
-
container: mapContainer.current,
|
|
20978
|
-
style: 'mapbox://styles/mapbox/satellite-v9',
|
|
20979
|
-
center: [0, 0],
|
|
20980
|
-
zoom: mapConfig.maxZoom || 3,
|
|
20981
|
-
projection: 'globe',
|
|
20982
|
-
attributionControl: false
|
|
20983
|
-
});
|
|
20984
|
-
}
|
|
20962
|
+
// Create map with custom Straatos style
|
|
20963
|
+
map.current = new mapboxgl.Map({
|
|
20964
|
+
container: mapContainer.current,
|
|
20965
|
+
style: 'mapbox://styles/pietragottardo/cm9tt9zfi00d101pg1vdx26si',
|
|
20966
|
+
center: [0, 0],
|
|
20967
|
+
zoom: mapConfig.maxZoom || 3,
|
|
20968
|
+
projection: 'globe',
|
|
20969
|
+
attributionControl: false
|
|
20970
|
+
});
|
|
20985
20971
|
|
|
20986
20972
|
// Add markers when map loads
|
|
20987
20973
|
map.current.on('load', () => {
|
|
@@ -20990,7 +20976,7 @@ const SimpleGlobe = _ref => {
|
|
|
20990
20976
|
// Hide Mapbox logo and attribution completely
|
|
20991
20977
|
map.current.getContainer();
|
|
20992
20978
|
const style = document.createElement('style');
|
|
20993
|
-
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
|
|
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 ";
|
|
20994
20980
|
document.head.appendChild(style);
|
|
20995
20981
|
|
|
20996
20982
|
// Set the space background with stars
|
|
@@ -21033,12 +21019,6 @@ const SimpleGlobe = _ref => {
|
|
|
21033
21019
|
el.style.display = 'flex';
|
|
21034
21020
|
el.style.alignItems = 'center';
|
|
21035
21021
|
el.style.justifyContent = 'center';
|
|
21036
|
-
// Ensure proper positioning and prevent CSS interference
|
|
21037
|
-
el.style.position = 'relative';
|
|
21038
|
-
el.style.left = 'auto';
|
|
21039
|
-
el.style.top = 'auto';
|
|
21040
|
-
el.style.transform = 'none';
|
|
21041
|
-
el.style.zIndex = '1000';
|
|
21042
21022
|
if (type === "location") {
|
|
21043
21023
|
// Location marker - SVG map pin style
|
|
21044
21024
|
el.style.width = '28px';
|
|
@@ -21094,31 +21074,19 @@ const SimpleGlobe = _ref => {
|
|
|
21094
21074
|
closeOnClick: false
|
|
21095
21075
|
}).setHTML(popupContent);
|
|
21096
21076
|
|
|
21097
|
-
// Ensure coordinates are valid numbers
|
|
21077
|
+
// Ensure coordinates are valid numbers
|
|
21098
21078
|
const lng = Number(project.longitude);
|
|
21099
21079
|
const lat = Number(project.latitude);
|
|
21100
21080
|
console.log("\uD83D\uDCCD [SIMPLE GLOBE] Marker ".concat(index, " coordinates:"), {
|
|
21101
|
-
|
|
21102
|
-
|
|
21103
|
-
latitude: project.latitude
|
|
21104
|
-
},
|
|
21105
|
-
processed: {
|
|
21106
|
-
lng,
|
|
21107
|
-
lat
|
|
21108
|
-
},
|
|
21109
|
-
project: project.name
|
|
21081
|
+
lng,
|
|
21082
|
+
lat
|
|
21110
21083
|
});
|
|
21111
21084
|
|
|
21112
21085
|
// Validate coordinates
|
|
21113
21086
|
if (isNaN(lng) || isNaN(lat) || lng < -180 || lng > 180 || lat < -90 || lat > 90) {
|
|
21114
21087
|
console.error("\u274C [SIMPLE GLOBE] Invalid coordinates for project ".concat(index, ":"), {
|
|
21115
21088
|
lng,
|
|
21116
|
-
lat
|
|
21117
|
-
original: {
|
|
21118
|
-
longitude: project.longitude,
|
|
21119
|
-
latitude: project.latitude
|
|
21120
|
-
},
|
|
21121
|
-
project: project.name
|
|
21089
|
+
lat
|
|
21122
21090
|
});
|
|
21123
21091
|
return;
|
|
21124
21092
|
}
|
|
@@ -21127,28 +21095,14 @@ const SimpleGlobe = _ref => {
|
|
|
21127
21095
|
bounds.extend([lng, lat]);
|
|
21128
21096
|
hasValidCoordinates = true;
|
|
21129
21097
|
|
|
21130
|
-
//
|
|
21131
|
-
|
|
21132
|
-
element: el,
|
|
21133
|
-
anchor: 'center'
|
|
21134
|
-
}).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);
|
|
21135
21100
|
|
|
21136
21101
|
// Add click handler
|
|
21137
21102
|
el.addEventListener('click', () => {
|
|
21138
21103
|
console.log('π [SIMPLE GLOBE] Marker clicked:', project);
|
|
21139
21104
|
onProjectClick(project);
|
|
21140
21105
|
});
|
|
21141
|
-
|
|
21142
|
-
// Verify marker position after a short delay
|
|
21143
|
-
setTimeout(() => {
|
|
21144
|
-
const markerLngLat = marker.getLngLat();
|
|
21145
|
-
console.log("\uD83D\uDD0D [SIMPLE GLOBE] Marker ".concat(index, " position verification:"), {
|
|
21146
|
-
expected: [lng, lat],
|
|
21147
|
-
actual: [markerLngLat.lng, markerLngLat.lat],
|
|
21148
|
-
project: project.name,
|
|
21149
|
-
match: Math.abs(markerLngLat.lng - lng) < 0.0001 && Math.abs(markerLngLat.lat - lat) < 0.0001
|
|
21150
|
-
});
|
|
21151
|
-
}, 100);
|
|
21152
21106
|
console.log("\u2705 [SIMPLE GLOBE] Marker ".concat(index, " added at:"), [lng, lat]);
|
|
21153
21107
|
});
|
|
21154
21108
|
|
|
@@ -21263,48 +21217,108 @@ const SimpleGlobe = _ref => {
|
|
|
21263
21217
|
});
|
|
21264
21218
|
};
|
|
21265
21219
|
|
|
21266
|
-
const
|
|
21220
|
+
const IsolatedGlobe = _ref => {
|
|
21267
21221
|
let {
|
|
21268
|
-
projects = []
|
|
21222
|
+
projects = [],
|
|
21223
|
+
mapConfig = {},
|
|
21224
|
+
onProjectClick = () => {},
|
|
21225
|
+
type = "default",
|
|
21226
|
+
color = "#00809E"
|
|
21269
21227
|
} = _ref;
|
|
21270
21228
|
const mapContainer = React.useRef(null);
|
|
21271
21229
|
const map = React.useRef(null);
|
|
21230
|
+
const shadowRoot = React.useRef(null);
|
|
21231
|
+
const boundsRef = React.useRef(null);
|
|
21272
21232
|
React.useEffect(() => {
|
|
21273
21233
|
if (map.current) return;
|
|
21274
|
-
console.log('
|
|
21234
|
+
console.log('πΊοΈ [ISOLATED GLOBE] Creating isolated map...');
|
|
21275
21235
|
|
|
21276
21236
|
// Set Mapbox access token
|
|
21277
21237
|
mapboxgl.accessToken = 'pk.eyJ1IjoicmVkaXM5OTkiLCJhIjoiY2x4YWV5MzA5MmtuZzJpcXM5Y201Z2E2YiJ9.m5bwPg-Tj4Akesl1yQUa3w';
|
|
21278
21238
|
|
|
21279
|
-
// Create
|
|
21239
|
+
// Create shadow DOM for complete isolation
|
|
21240
|
+
const container = mapContainer.current;
|
|
21241
|
+
shadowRoot.current = container.attachShadow({
|
|
21242
|
+
mode: 'open'
|
|
21243
|
+
});
|
|
21244
|
+
|
|
21245
|
+
// Create isolated styles
|
|
21246
|
+
const style = document.createElement('style');
|
|
21247
|
+
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 ";
|
|
21248
|
+
shadowRoot.current.appendChild(style);
|
|
21249
|
+
|
|
21250
|
+
// Create map container inside shadow DOM
|
|
21251
|
+
const mapDiv = document.createElement('div');
|
|
21252
|
+
mapDiv.style.width = '100%';
|
|
21253
|
+
mapDiv.style.height = '100%';
|
|
21254
|
+
shadowRoot.current.appendChild(mapDiv);
|
|
21255
|
+
|
|
21256
|
+
// Create map
|
|
21280
21257
|
map.current = new mapboxgl.Map({
|
|
21281
|
-
container:
|
|
21258
|
+
container: mapDiv,
|
|
21282
21259
|
style: 'mapbox://styles/mapbox/satellite-v9',
|
|
21283
21260
|
center: [0, 0],
|
|
21284
|
-
zoom:
|
|
21285
|
-
projection: 'globe'
|
|
21261
|
+
zoom: mapConfig.maxZoom || 3,
|
|
21262
|
+
projection: 'globe',
|
|
21263
|
+
attributionControl: false
|
|
21286
21264
|
});
|
|
21287
21265
|
|
|
21288
21266
|
// Add markers when map loads
|
|
21289
21267
|
map.current.on('load', () => {
|
|
21290
|
-
console.log('
|
|
21268
|
+
console.log('πΊοΈ [ISOLATED GLOBE] Map loaded, adding markers...');
|
|
21269
|
+
|
|
21270
|
+
// Calculate bounds to fit all markers
|
|
21271
|
+
const bounds = new mapboxgl.LngLatBounds();
|
|
21272
|
+
let hasValidCoordinates = false;
|
|
21291
21273
|
projects.forEach((project, index) => {
|
|
21292
|
-
console.log("\
|
|
21274
|
+
console.log("\uD83D\uDCCD [ISOLATED GLOBE] Adding marker ".concat(index, ":"), project);
|
|
21293
21275
|
|
|
21294
|
-
// Create
|
|
21276
|
+
// Create marker element
|
|
21295
21277
|
const el = document.createElement('div');
|
|
21296
|
-
el.style.width = '20px';
|
|
21297
|
-
el.style.height = '20px';
|
|
21298
|
-
el.style.backgroundColor = '#FF0000';
|
|
21299
|
-
el.style.borderRadius = '50%';
|
|
21300
|
-
el.style.border = '2px solid white';
|
|
21301
21278
|
el.style.cursor = 'pointer';
|
|
21302
|
-
el.style.boxShadow = '0px
|
|
21279
|
+
el.style.boxShadow = '0px 3.45px 3.45px 0px #00000029';
|
|
21280
|
+
el.style.display = 'flex';
|
|
21281
|
+
el.style.alignItems = 'center';
|
|
21282
|
+
el.style.justifyContent = 'center';
|
|
21283
|
+
el.style.position = 'relative';
|
|
21284
|
+
el.style.left = 'auto';
|
|
21285
|
+
el.style.top = 'auto';
|
|
21286
|
+
el.style.transform = 'none';
|
|
21287
|
+
el.style.zIndex = '1000';
|
|
21288
|
+
if (type === "location") {
|
|
21289
|
+
// Location marker - SVG map pin style
|
|
21290
|
+
el.style.width = '28px';
|
|
21291
|
+
el.style.height = '33px';
|
|
21292
|
+
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 ");
|
|
21293
|
+
} else {
|
|
21294
|
+
// Default circular marker style
|
|
21295
|
+
el.style.width = '30px';
|
|
21296
|
+
el.style.height = '30px';
|
|
21297
|
+
el.style.backgroundColor = color;
|
|
21298
|
+
el.style.borderRadius = '50%';
|
|
21299
|
+
el.style.border = '2px solid white';
|
|
21300
|
+
el.style.color = 'white';
|
|
21301
|
+
el.style.fontWeight = 'bold';
|
|
21302
|
+
el.style.fontSize = '14px';
|
|
21303
|
+
el.style.textAlign = 'center';
|
|
21304
|
+
el.style.lineHeight = '1';
|
|
21305
|
+
el.innerHTML = "<span style=\"display: block; line-height: 1;\">".concat(project.percentageCompletion || 0, "</span>");
|
|
21306
|
+
}
|
|
21307
|
+
|
|
21308
|
+
// Create popup content
|
|
21309
|
+
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 ");
|
|
21303
21310
|
|
|
21304
|
-
//
|
|
21311
|
+
// Create popup
|
|
21312
|
+
const popup = new mapboxgl.Popup({
|
|
21313
|
+
offset: 25,
|
|
21314
|
+
closeButton: true,
|
|
21315
|
+
closeOnClick: false
|
|
21316
|
+
}).setHTML(popupContent);
|
|
21317
|
+
|
|
21318
|
+
// Ensure coordinates are valid numbers
|
|
21305
21319
|
const lng = Number(project.longitude);
|
|
21306
21320
|
const lat = Number(project.latitude);
|
|
21307
|
-
console.log("\
|
|
21321
|
+
console.log("\uD83D\uDCCD [ISOLATED GLOBE] Marker ".concat(index, " coordinates:"), {
|
|
21308
21322
|
original: {
|
|
21309
21323
|
longitude: project.longitude,
|
|
21310
21324
|
latitude: project.latitude
|
|
@@ -21313,46 +21327,254 @@ const SimpleGlobeTestDebug = _ref => {
|
|
|
21313
21327
|
lng,
|
|
21314
21328
|
lat
|
|
21315
21329
|
},
|
|
21316
|
-
|
|
21330
|
+
project: project.name
|
|
21317
21331
|
});
|
|
21332
|
+
|
|
21333
|
+
// Validate coordinates
|
|
21318
21334
|
if (isNaN(lng) || isNaN(lat) || lng < -180 || lng > 180 || lat < -90 || lat > 90) {
|
|
21319
|
-
console.error("\u274C [
|
|
21335
|
+
console.error("\u274C [ISOLATED GLOBE] Invalid coordinates for project ".concat(index, ":"), {
|
|
21320
21336
|
lng,
|
|
21321
|
-
lat
|
|
21337
|
+
lat,
|
|
21338
|
+
original: {
|
|
21339
|
+
longitude: project.longitude,
|
|
21340
|
+
latitude: project.latitude
|
|
21341
|
+
},
|
|
21342
|
+
project: project.name
|
|
21322
21343
|
});
|
|
21323
21344
|
return;
|
|
21324
21345
|
}
|
|
21325
21346
|
|
|
21347
|
+
// Add coordinates to bounds
|
|
21348
|
+
bounds.extend([lng, lat]);
|
|
21349
|
+
hasValidCoordinates = true;
|
|
21350
|
+
|
|
21351
|
+
// Create marker with explicit positioning
|
|
21352
|
+
const marker = new mapboxgl.Marker({
|
|
21353
|
+
element: el,
|
|
21354
|
+
anchor: 'center'
|
|
21355
|
+
}).setLngLat([lng, lat]).setPopup(popup).addTo(map.current);
|
|
21356
|
+
|
|
21357
|
+
// Add click handler
|
|
21358
|
+
el.addEventListener('click', () => {
|
|
21359
|
+
console.log('π [ISOLATED GLOBE] Marker clicked:', project);
|
|
21360
|
+
onProjectClick(project);
|
|
21361
|
+
});
|
|
21362
|
+
|
|
21363
|
+
// Verify marker position after a short delay
|
|
21364
|
+
setTimeout(() => {
|
|
21365
|
+
const markerLngLat = marker.getLngLat();
|
|
21366
|
+
console.log("\uD83D\uDD0D [ISOLATED GLOBE] Marker ".concat(index, " position verification:"), {
|
|
21367
|
+
expected: [lng, lat],
|
|
21368
|
+
actual: [markerLngLat.lng, markerLngLat.lat],
|
|
21369
|
+
project: project.name,
|
|
21370
|
+
match: Math.abs(markerLngLat.lng - lng) < 0.0001 && Math.abs(markerLngLat.lat - lat) < 0.0001
|
|
21371
|
+
});
|
|
21372
|
+
}, 100);
|
|
21373
|
+
console.log("\u2705 [ISOLATED GLOBE] Marker ".concat(index, " added at:"), [lng, lat]);
|
|
21374
|
+
});
|
|
21375
|
+
|
|
21376
|
+
// Fit map to show all markers if we have valid coordinates
|
|
21377
|
+
if (hasValidCoordinates && !bounds.isEmpty()) {
|
|
21378
|
+
console.log('πΊοΈ [ISOLATED GLOBE] Fitting map to bounds:', bounds);
|
|
21379
|
+
map.current.fitBounds(bounds, {
|
|
21380
|
+
padding: {
|
|
21381
|
+
top: 20,
|
|
21382
|
+
bottom: 20,
|
|
21383
|
+
left: 20,
|
|
21384
|
+
right: 20
|
|
21385
|
+
},
|
|
21386
|
+
maxZoom: 6,
|
|
21387
|
+
duration: 1000
|
|
21388
|
+
});
|
|
21389
|
+
boundsRef.current = bounds;
|
|
21390
|
+
} else {
|
|
21391
|
+
boundsRef.current = null;
|
|
21392
|
+
}
|
|
21393
|
+
});
|
|
21394
|
+
return () => {
|
|
21395
|
+
if (map.current) {
|
|
21396
|
+
map.current.remove();
|
|
21397
|
+
map.current = null;
|
|
21398
|
+
}
|
|
21399
|
+
};
|
|
21400
|
+
}, [projects, onProjectClick, mapConfig]);
|
|
21401
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21402
|
+
ref: mapContainer,
|
|
21403
|
+
style: {
|
|
21404
|
+
width: '100%',
|
|
21405
|
+
height: '100%',
|
|
21406
|
+
position: 'relative'
|
|
21407
|
+
}
|
|
21408
|
+
});
|
|
21409
|
+
};
|
|
21410
|
+
|
|
21411
|
+
const NoConflictGlobe = _ref => {
|
|
21412
|
+
let {
|
|
21413
|
+
projects = [],
|
|
21414
|
+
mapConfig = {},
|
|
21415
|
+
onProjectClick = () => {},
|
|
21416
|
+
type = "default",
|
|
21417
|
+
color = "#00809E"
|
|
21418
|
+
} = _ref;
|
|
21419
|
+
const mapContainer = React.useRef(null);
|
|
21420
|
+
const map = React.useRef(null);
|
|
21421
|
+
const boundsRef = React.useRef(null);
|
|
21422
|
+
React.useEffect(() => {
|
|
21423
|
+
if (map.current) return;
|
|
21424
|
+
console.log('πΊοΈ [NO CONFLICT GLOBE] Creating map with aggressive isolation...');
|
|
21425
|
+
|
|
21426
|
+
// Set Mapbox access token
|
|
21427
|
+
mapboxgl.accessToken = 'pk.eyJ1IjoicmVkaXM5OTkiLCJhIjoiY2x4YWV5MzA5MmtuZzJpcXM5Y201Z2E2YiJ9.m5bwPg-Tj4Akesl1yQUa3w';
|
|
21428
|
+
|
|
21429
|
+
// Create map
|
|
21430
|
+
map.current = new mapboxgl.Map({
|
|
21431
|
+
container: mapContainer.current,
|
|
21432
|
+
style: 'mapbox://styles/mapbox/satellite-v9',
|
|
21433
|
+
center: [0, 0],
|
|
21434
|
+
zoom: mapConfig.maxZoom || 3,
|
|
21435
|
+
projection: 'globe',
|
|
21436
|
+
attributionControl: false
|
|
21437
|
+
});
|
|
21438
|
+
|
|
21439
|
+
// Add markers when map loads
|
|
21440
|
+
map.current.on('load', () => {
|
|
21441
|
+
console.log('πΊοΈ [NO CONFLICT GLOBE] Map loaded, adding markers...');
|
|
21442
|
+
|
|
21443
|
+
// Inject aggressive CSS isolation
|
|
21444
|
+
const styleId = 'no-conflict-globe-styles';
|
|
21445
|
+
let existingStyle = document.getElementById(styleId);
|
|
21446
|
+
if (!existingStyle) {
|
|
21447
|
+
const style = document.createElement('style');
|
|
21448
|
+
style.id = styleId;
|
|
21449
|
+
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 ";
|
|
21450
|
+
document.head.appendChild(style);
|
|
21451
|
+
}
|
|
21452
|
+
|
|
21453
|
+
// Calculate bounds to fit all markers
|
|
21454
|
+
const bounds = new mapboxgl.LngLatBounds();
|
|
21455
|
+
let hasValidCoordinates = false;
|
|
21456
|
+
projects.forEach((project, index) => {
|
|
21457
|
+
console.log("\uD83D\uDCCD [NO CONFLICT GLOBE] Adding marker ".concat(index, ":"), project);
|
|
21458
|
+
|
|
21459
|
+
// Create marker element with unique class
|
|
21460
|
+
const el = document.createElement('div');
|
|
21461
|
+
el.className = 'no-conflict-marker';
|
|
21462
|
+
el.style.cursor = 'pointer';
|
|
21463
|
+
el.style.boxShadow = '0px 3.45px 3.45px 0px #00000029';
|
|
21464
|
+
el.style.display = 'flex';
|
|
21465
|
+
el.style.alignItems = 'center';
|
|
21466
|
+
el.style.justifyContent = 'center';
|
|
21467
|
+
el.style.position = 'relative';
|
|
21468
|
+
el.style.left = 'auto';
|
|
21469
|
+
el.style.top = 'auto';
|
|
21470
|
+
el.style.transform = 'none';
|
|
21471
|
+
el.style.zIndex = '1000';
|
|
21472
|
+
el.style.isolation = 'isolate';
|
|
21473
|
+
if (type === "location") {
|
|
21474
|
+
// Location marker - SVG map pin style
|
|
21475
|
+
el.style.width = '28px';
|
|
21476
|
+
el.style.height = '33px';
|
|
21477
|
+
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 ");
|
|
21478
|
+
} else {
|
|
21479
|
+
// Default circular marker style
|
|
21480
|
+
el.style.width = '30px';
|
|
21481
|
+
el.style.height = '30px';
|
|
21482
|
+
el.style.backgroundColor = color;
|
|
21483
|
+
el.style.borderRadius = '50%';
|
|
21484
|
+
el.style.border = '2px solid white';
|
|
21485
|
+
el.style.color = 'white';
|
|
21486
|
+
el.style.fontWeight = 'bold';
|
|
21487
|
+
el.style.fontSize = '14px';
|
|
21488
|
+
el.style.textAlign = 'center';
|
|
21489
|
+
el.style.lineHeight = '1';
|
|
21490
|
+
el.innerHTML = "<span style=\"display: block; line-height: 1;\">".concat(project.percentageCompletion || 0, "</span>");
|
|
21491
|
+
}
|
|
21492
|
+
|
|
21493
|
+
// Create popup content
|
|
21494
|
+
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 ");
|
|
21495
|
+
|
|
21326
21496
|
// Create popup
|
|
21327
21497
|
const popup = new mapboxgl.Popup({
|
|
21328
|
-
offset: 25
|
|
21329
|
-
|
|
21498
|
+
offset: 25,
|
|
21499
|
+
closeButton: true,
|
|
21500
|
+
closeOnClick: false
|
|
21501
|
+
}).setHTML(popupContent);
|
|
21502
|
+
|
|
21503
|
+
// Ensure coordinates are valid numbers
|
|
21504
|
+
const lng = Number(project.longitude);
|
|
21505
|
+
const lat = Number(project.latitude);
|
|
21506
|
+
console.log("\uD83D\uDCCD [NO CONFLICT GLOBE] Marker ".concat(index, " coordinates:"), {
|
|
21507
|
+
original: {
|
|
21508
|
+
longitude: project.longitude,
|
|
21509
|
+
latitude: project.latitude
|
|
21510
|
+
},
|
|
21511
|
+
processed: {
|
|
21512
|
+
lng,
|
|
21513
|
+
lat
|
|
21514
|
+
},
|
|
21515
|
+
project: project.name
|
|
21516
|
+
});
|
|
21330
21517
|
|
|
21331
|
-
//
|
|
21518
|
+
// Validate coordinates
|
|
21519
|
+
if (isNaN(lng) || isNaN(lat) || lng < -180 || lng > 180 || lat < -90 || lat > 90) {
|
|
21520
|
+
console.error("\u274C [NO CONFLICT GLOBE] Invalid coordinates for project ".concat(index, ":"), {
|
|
21521
|
+
lng,
|
|
21522
|
+
lat,
|
|
21523
|
+
original: {
|
|
21524
|
+
longitude: project.longitude,
|
|
21525
|
+
latitude: project.latitude
|
|
21526
|
+
},
|
|
21527
|
+
project: project.name
|
|
21528
|
+
});
|
|
21529
|
+
return;
|
|
21530
|
+
}
|
|
21531
|
+
|
|
21532
|
+
// Add coordinates to bounds
|
|
21533
|
+
bounds.extend([lng, lat]);
|
|
21534
|
+
hasValidCoordinates = true;
|
|
21535
|
+
|
|
21536
|
+
// Create marker with explicit positioning
|
|
21332
21537
|
const marker = new mapboxgl.Marker({
|
|
21333
21538
|
element: el,
|
|
21334
21539
|
anchor: 'center'
|
|
21335
21540
|
}).setLngLat([lng, lat]).setPopup(popup).addTo(map.current);
|
|
21336
21541
|
|
|
21337
|
-
//
|
|
21542
|
+
// Add click handler
|
|
21543
|
+
el.addEventListener('click', () => {
|
|
21544
|
+
console.log('π [NO CONFLICT GLOBE] Marker clicked:', project);
|
|
21545
|
+
onProjectClick(project);
|
|
21546
|
+
});
|
|
21547
|
+
|
|
21548
|
+
// Verify marker position after a short delay
|
|
21338
21549
|
setTimeout(() => {
|
|
21339
21550
|
const markerLngLat = marker.getLngLat();
|
|
21340
|
-
|
|
21341
|
-
console.log("\uD83D\uDD0D [DEBUG TEST] Position verification for ".concat(project.name, ":"), {
|
|
21551
|
+
console.log("\uD83D\uDD0D [NO CONFLICT GLOBE] Marker ".concat(index, " position verification:"), {
|
|
21342
21552
|
expected: [lng, lat],
|
|
21343
21553
|
actual: [markerLngLat.lng, markerLngLat.lat],
|
|
21344
|
-
|
|
21345
|
-
|
|
21346
|
-
lng: Math.abs(markerLngLat.lng - lng),
|
|
21347
|
-
lat: Math.abs(markerLngLat.lat - lat)
|
|
21348
|
-
}
|
|
21554
|
+
project: project.name,
|
|
21555
|
+
match: Math.abs(markerLngLat.lng - lng) < 0.0001 && Math.abs(markerLngLat.lat - lat) < 0.0001
|
|
21349
21556
|
});
|
|
21350
|
-
|
|
21351
|
-
|
|
21352
|
-
}
|
|
21353
|
-
}, 200);
|
|
21354
|
-
console.log("\u2705 [DEBUG TEST] Marker added for ".concat(project.name, " at:"), [lng, lat]);
|
|
21557
|
+
}, 100);
|
|
21558
|
+
console.log("\u2705 [NO CONFLICT GLOBE] Marker ".concat(index, " added at:"), [lng, lat]);
|
|
21355
21559
|
});
|
|
21560
|
+
|
|
21561
|
+
// Fit map to show all markers if we have valid coordinates
|
|
21562
|
+
if (hasValidCoordinates && !bounds.isEmpty()) {
|
|
21563
|
+
console.log('πΊοΈ [NO CONFLICT GLOBE] Fitting map to bounds:', bounds);
|
|
21564
|
+
map.current.fitBounds(bounds, {
|
|
21565
|
+
padding: {
|
|
21566
|
+
top: 20,
|
|
21567
|
+
bottom: 20,
|
|
21568
|
+
left: 20,
|
|
21569
|
+
right: 20
|
|
21570
|
+
},
|
|
21571
|
+
maxZoom: 6,
|
|
21572
|
+
duration: 1000
|
|
21573
|
+
});
|
|
21574
|
+
boundsRef.current = bounds;
|
|
21575
|
+
} else {
|
|
21576
|
+
boundsRef.current = null;
|
|
21577
|
+
}
|
|
21356
21578
|
});
|
|
21357
21579
|
return () => {
|
|
21358
21580
|
if (map.current) {
|
|
@@ -21360,36 +21582,24 @@ const SimpleGlobeTestDebug = _ref => {
|
|
|
21360
21582
|
map.current = null;
|
|
21361
21583
|
}
|
|
21362
21584
|
};
|
|
21363
|
-
}, [projects]);
|
|
21364
|
-
return /*#__PURE__*/jsxRuntime.
|
|
21585
|
+
}, [projects, onProjectClick, mapConfig]);
|
|
21586
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21587
|
+
className: "no-conflict-globe-container",
|
|
21365
21588
|
style: {
|
|
21366
21589
|
width: '100%',
|
|
21367
|
-
height: '
|
|
21368
|
-
|
|
21369
|
-
|
|
21590
|
+
height: '100%',
|
|
21591
|
+
position: 'relative',
|
|
21592
|
+
isolation: 'isolate'
|
|
21370
21593
|
},
|
|
21371
|
-
children:
|
|
21594
|
+
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21372
21595
|
ref: mapContainer,
|
|
21373
21596
|
style: {
|
|
21374
21597
|
width: '100%',
|
|
21375
21598
|
height: '100%',
|
|
21376
|
-
position: 'relative'
|
|
21599
|
+
position: 'relative',
|
|
21600
|
+
isolation: 'isolate'
|
|
21377
21601
|
}
|
|
21378
|
-
})
|
|
21379
|
-
style: {
|
|
21380
|
-
position: 'absolute',
|
|
21381
|
-
top: '10px',
|
|
21382
|
-
left: '10px',
|
|
21383
|
-
background: 'rgba(255,255,255,0.9)',
|
|
21384
|
-
padding: '8px',
|
|
21385
|
-
borderRadius: '4px',
|
|
21386
|
-
fontSize: '12px',
|
|
21387
|
-
zIndex: 1000
|
|
21388
|
-
},
|
|
21389
|
-
children: [/*#__PURE__*/jsxRuntime.jsx("strong", {
|
|
21390
|
-
children: "Debug Test Map"
|
|
21391
|
-
}), /*#__PURE__*/jsxRuntime.jsx("br", {}), "Projects: ", projects.length, /*#__PURE__*/jsxRuntime.jsx("br", {}), "Check console for position verification"]
|
|
21392
|
-
})]
|
|
21602
|
+
})
|
|
21393
21603
|
});
|
|
21394
21604
|
};
|
|
21395
21605
|
|
|
@@ -62173,6 +62383,7 @@ exports.InformationChannelsDataPoint = DataPoint;
|
|
|
62173
62383
|
exports.InformationChannelsSubject = Subject;
|
|
62174
62384
|
exports.InformationChannelsView = InformationChannel;
|
|
62175
62385
|
exports.InformationUnavailable = InformationUnavailable;
|
|
62386
|
+
exports.IsolatedGlobe = IsolatedGlobe;
|
|
62176
62387
|
exports.KeyIndicators = KeyIndicatorsWidget$1;
|
|
62177
62388
|
exports.KeyIndicatorsDetails = KeyIndicatorsDetails;
|
|
62178
62389
|
exports.LineChart = LineChart;
|
|
@@ -62187,6 +62398,7 @@ exports.MoreTags = MoreTags;
|
|
|
62187
62398
|
exports.MultiBarProgress = MultiBarProgress;
|
|
62188
62399
|
exports.MultiColorProgressBar = MultiColorProgressBar;
|
|
62189
62400
|
exports.Multiselect = Multiselect;
|
|
62401
|
+
exports.NoConflictGlobe = NoConflictGlobe;
|
|
62190
62402
|
exports.NotFound = NotFound;
|
|
62191
62403
|
exports.Pagination = Pagination;
|
|
62192
62404
|
exports.PdfForm = PdfForm;
|
|
@@ -62216,7 +62428,6 @@ exports.SettingsPopover = SettingsPopover;
|
|
|
62216
62428
|
exports.Sidenav = Sidenav;
|
|
62217
62429
|
exports.SidenavMenu = SidenavMenu;
|
|
62218
62430
|
exports.SimpleGlobe = SimpleGlobe;
|
|
62219
|
-
exports.SimpleGlobeTestDebug = SimpleGlobeTestDebug;
|
|
62220
62431
|
exports.StackChart = StackChart;
|
|
62221
62432
|
exports.StakeholderMappings = index$1;
|
|
62222
62433
|
exports.Steps = DAFSteps;
|