@aguacerowx/javascript-sdk 0.0.27 → 0.0.28

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/src/events.js CHANGED
@@ -1,32 +1,32 @@
1
- // aguacero-api/src/events.js
2
-
3
- /**
4
- * A simple class for emitting and listening to events.
5
- */
6
- export class EventEmitter {
7
- constructor() {
8
- this.callbacks = {};
9
- }
10
-
11
- on(event, cb) {
12
- if (!this.callbacks[event]) this.callbacks[event] = [];
13
- this.callbacks[event].push(cb);
14
- }
15
-
16
- // --- THIS IS THE MISSING PIECE ---
17
- // Add this method to allow listeners to be removed.
18
- off(event, cb) {
19
- const cbs = this.callbacks[event];
20
- if (cbs) {
21
- // Create a new array that excludes the callback we want to remove
22
- this.callbacks[event] = cbs.filter(callback => callback !== cb);
23
- }
24
- }
25
-
26
- emit(event, data) {
27
- const cbs = this.callbacks[event];
28
- if (cbs) {
29
- cbs.forEach(cb => cb(data));
30
- }
31
- }
1
+ // aguacero-api/src/events.js
2
+
3
+ /**
4
+ * A simple class for emitting and listening to events.
5
+ */
6
+ export class EventEmitter {
7
+ constructor() {
8
+ this.callbacks = {};
9
+ }
10
+
11
+ on(event, cb) {
12
+ if (!this.callbacks[event]) this.callbacks[event] = [];
13
+ this.callbacks[event].push(cb);
14
+ }
15
+
16
+ // --- THIS IS THE MISSING PIECE ---
17
+ // Add this method to allow listeners to be removed.
18
+ off(event, cb) {
19
+ const cbs = this.callbacks[event];
20
+ if (cbs) {
21
+ // Create a new array that excludes the callback we want to remove
22
+ this.callbacks[event] = cbs.filter(callback => callback !== cb);
23
+ }
24
+ }
25
+
26
+ emit(event, data) {
27
+ const cbs = this.callbacks[event];
28
+ if (cbs) {
29
+ cbs.forEach(cb => cb(data));
30
+ }
31
+ }
32
32
  }
@@ -1,27 +1,27 @@
1
- // aguaceroAPI/src/fill-layer-worker.js
2
-
3
- import { decompress } from 'fzstd';
4
-
5
- // Listen for messages from the main thread
6
- self.onmessage = async (e) => {
7
- const { compressedData, encoding } = e.data;
8
-
9
- try {
10
- // Perform the heavy decompression work
11
- const decompressedData = decompress(compressedData);
12
-
13
- // Send the successful result back to the main thread
14
- self.postMessage({
15
- success: true,
16
- decompressedData,
17
- encoding
18
- }, [decompressedData.buffer]); // Transfer the buffer for performance
19
-
20
- } catch (error) {
21
- // If something goes wrong, send an error message back
22
- self.postMessage({
23
- success: false,
24
- error: error.message
25
- });
26
- }
1
+ // aguaceroAPI/src/fill-layer-worker.js
2
+
3
+ import { decompress } from 'fzstd';
4
+
5
+ // Listen for messages from the main thread
6
+ self.onmessage = async (e) => {
7
+ const { compressedData, encoding } = e.data;
8
+
9
+ try {
10
+ // Perform the heavy decompression work
11
+ const decompressedData = decompress(compressedData);
12
+
13
+ // Send the successful result back to the main thread
14
+ self.postMessage({
15
+ success: true,
16
+ decompressedData,
17
+ encoding
18
+ }, [decompressedData.buffer]); // Transfer the buffer for performance
19
+
20
+ } catch (error) {
21
+ // If something goes wrong, send an error message back
22
+ self.postMessage({
23
+ success: false,
24
+ error: error.message
25
+ });
26
+ }
27
27
  };
@@ -1,8 +1,8 @@
1
- /**
2
- * Default implementation for web and Node bundlers (Vite, webpack).
3
- * Do not import react-native-device-info here: static analysis would pull in
4
- * `react-native` (Flow sources) and break esbuild.
5
- *
6
- * Metro resolves `getBundleId.native.js` on iOS/Android instead of this file.
7
- */
8
- export const getBundleId = () => null;
1
+ /**
2
+ * Default implementation for web and Node bundlers (Vite, webpack).
3
+ * Do not import react-native-device-info here: static analysis would pull in
4
+ * `react-native` (Flow sources) and break esbuild.
5
+ *
6
+ * Metro resolves `getBundleId.native.js` on iOS/Android instead of this file.
7
+ */
8
+ export const getBundleId = () => null;
@@ -1,14 +1,14 @@
1
- /**
2
- * React Native (Metro picks this file over getBundleId.js on native platforms).
3
- */
4
-
5
- let getBundleIdImpl;
6
-
7
- try {
8
- const DeviceInfo = require('react-native-device-info');
9
- getBundleIdImpl = () => DeviceInfo.getBundleId();
10
- } catch {
11
- getBundleIdImpl = () => null;
12
- }
13
-
14
- export const getBundleId = getBundleIdImpl;
1
+ /**
2
+ * React Native (Metro picks this file over getBundleId.js on native platforms).
3
+ */
4
+
5
+ let getBundleIdImpl;
6
+
7
+ try {
8
+ const DeviceInfo = require('react-native-device-info');
9
+ getBundleIdImpl = () => DeviceInfo.getBundleId();
10
+ } catch {
11
+ getBundleIdImpl = () => null;
12
+ }
13
+
14
+ export const getBundleId = getBundleIdImpl;
@@ -1,32 +1,32 @@
1
- import { decompress } from 'fzstd';
2
-
3
- function reconstructData(decompressedDeltas, encoding) {
4
- const expectedLength = encoding.length;
5
- const reconstructedData = new Int8Array(expectedLength);
6
-
7
- if (decompressedDeltas.length > 0 && expectedLength > 0) {
8
- reconstructedData[0] = decompressedDeltas[0] > 127 ? decompressedDeltas[0] - 256 : decompressedDeltas[0];
9
- for (let i = 1; i < expectedLength; i++) {
10
- const delta = decompressedDeltas[i] > 127 ? decompressedDeltas[i] - 256 : decompressedDeltas[i];
11
- reconstructedData[i] = reconstructedData[i - 1] + delta;
12
- }
13
- }
14
- return new Uint8Array(reconstructedData.buffer);
15
- }
16
-
17
- /**
18
- * zstd decompress → delta reconstruction → unsigned byte offset for GPU lookup.
19
- * Used on the main thread as a fallback and inside {@link ./gridDecodeWorker.js}.
20
- */
21
- export function processCompressedGrid(compressedData, encoding) {
22
- const decompressedDeltas = decompress(compressedData);
23
- const finalData = reconstructData(decompressedDeltas, encoding);
24
-
25
- const transformedData = new Uint8Array(finalData.length);
26
- for (let i = 0; i < finalData.length; i++) {
27
- const signedValue = finalData[i] > 127 ? finalData[i] - 256 : finalData[i];
28
- transformedData[i] = signedValue + 128;
29
- }
30
-
31
- return { data: transformedData, encoding };
32
- }
1
+ import { decompress } from 'fzstd';
2
+
3
+ function reconstructData(decompressedDeltas, encoding) {
4
+ const expectedLength = encoding.length;
5
+ const reconstructedData = new Int8Array(expectedLength);
6
+
7
+ if (decompressedDeltas.length > 0 && expectedLength > 0) {
8
+ reconstructedData[0] = decompressedDeltas[0] > 127 ? decompressedDeltas[0] - 256 : decompressedDeltas[0];
9
+ for (let i = 1; i < expectedLength; i++) {
10
+ const delta = decompressedDeltas[i] > 127 ? decompressedDeltas[i] - 256 : decompressedDeltas[i];
11
+ reconstructedData[i] = reconstructedData[i - 1] + delta;
12
+ }
13
+ }
14
+ return new Uint8Array(reconstructedData.buffer);
15
+ }
16
+
17
+ /**
18
+ * zstd decompress → delta reconstruction → unsigned byte offset for GPU lookup.
19
+ * Used on the main thread as a fallback and inside {@link ./gridDecodeWorker.js}.
20
+ */
21
+ export function processCompressedGrid(compressedData, encoding) {
22
+ const decompressedDeltas = decompress(compressedData);
23
+ const finalData = reconstructData(decompressedDeltas, encoding);
24
+
25
+ const transformedData = new Uint8Array(finalData.length);
26
+ for (let i = 0; i < finalData.length; i++) {
27
+ const signedValue = finalData[i] > 127 ? finalData[i] - 256 : finalData[i];
28
+ transformedData[i] = signedValue + 128;
29
+ }
30
+
31
+ return { data: transformedData, encoding };
32
+ }
@@ -1,24 +1,24 @@
1
- import { processCompressedGrid } from './gridDecodePipeline.js';
2
-
3
- self.onmessage = (e) => {
4
- const { id, encoding, compressedBuffer, compressedByteOffset, compressedByteLength } = e.data;
5
- try {
6
- const compressedData = new Uint8Array(compressedBuffer, compressedByteOffset, compressedByteLength);
7
- const { data, encoding: enc } = processCompressedGrid(compressedData, encoding);
8
- self.postMessage(
9
- {
10
- id,
11
- encoding: enc,
12
- dataBuffer: data.buffer,
13
- dataByteOffset: data.byteOffset,
14
- dataByteLength: data.byteLength,
15
- },
16
- [data.buffer]
17
- );
18
- } catch (err) {
19
- self.postMessage({
20
- id,
21
- error: err?.message || String(err),
22
- });
23
- }
24
- };
1
+ import { processCompressedGrid } from './gridDecodePipeline.js';
2
+
3
+ self.onmessage = (e) => {
4
+ const { id, encoding, compressedBuffer, compressedByteOffset, compressedByteLength } = e.data;
5
+ try {
6
+ const compressedData = new Uint8Array(compressedBuffer, compressedByteOffset, compressedByteLength);
7
+ const { data, encoding: enc } = processCompressedGrid(compressedData, encoding);
8
+ self.postMessage(
9
+ {
10
+ id,
11
+ encoding: enc,
12
+ dataBuffer: data.buffer,
13
+ dataByteOffset: data.byteOffset,
14
+ dataByteLength: data.byteLength,
15
+ },
16
+ [data.buffer]
17
+ );
18
+ } catch (err) {
19
+ self.postMessage({
20
+ id,
21
+ error: err?.message || String(err),
22
+ });
23
+ }
24
+ };
package/src/index.js CHANGED
@@ -1,49 +1,49 @@
1
- // In packages/javascript-sdk/src/index.js (The final, correct version)
2
-
3
- // Import the specific things you want to make public from your package's internal files.
4
- import { AguaceroCore } from './AguaceroCore.js';
5
- import { EventEmitter } from './events.js';
6
- import { THEME_CONFIGS } from './map-styles.js';
7
- import { DICTIONARIES } from './dictionaries.js';
8
- import { DEFAULT_COLORMAPS } from './default-colormaps.js';
9
- import { getUnitConversionFunction } from './unitConversions.js';
10
- export {
11
- SATELLITE_FRAMES_URL,
12
- GOES_EAST_SATELLITE_SECTORS,
13
- GOES_SATELLITE_CHANNELS,
14
- GOES_SATELLITE_CHANNEL_LABELS,
15
- SATELLITE_DURATION_CONFIG,
16
- TIMELINE_DURATION_MAX_HOURS,
17
- TIMELINE_DURATION_HOUR_VALUES,
18
- formatTimelineDurationValue,
19
- normalizeTimelineDurationValue,
20
- parseTimelineDurationHours,
21
- resolveSatelliteDurationOption,
22
- getDefaultSatelliteDurationOption,
23
- buildSatelliteTimelineForSelection,
24
- getAllGoesEastSatelliteSelections,
25
- calculateUnixTimeFromSatelliteKey,
26
- resolveSatelliteS3FileName,
27
- resolveSatelliteSectorLabel,
28
- } from './satellite_support.js';
29
-
30
- // Now, export them all so other packages can import them.
31
- export {
32
- AguaceroCore,
33
- EventEmitter,
34
- THEME_CONFIGS,
35
- DICTIONARIES,
36
- DEFAULT_COLORMAPS,
37
- getUnitConversionFunction
38
- };
39
-
40
- /** NEXRAD tilt + listing helpers (also importable via subpaths; root re-export fixes Vite/esbuild subpath resolution). */
41
- export * from './nexradTilts.js';
42
- export * from './nexradTiltCoalesce.js';
43
- export * from './nexrad_support.js';
44
-
45
- /** NWS watches/warnings (NWWS HTTP + SSE, Mapbox-style paint helpers) — shared by mapsgl and React Native. */
46
- export { NwsWatchesWarningsOverlay, NWS_DEFAULT_LINE_BEFORE_LAYER_ID } from './nws/NwsWatchesWarningsOverlay.js';
47
- export * from './nws/nwsSdkConstants.js';
48
- export * from './nws/nwsAlertsSupport.js';
1
+ // In packages/javascript-sdk/src/index.js (The final, correct version)
2
+
3
+ // Import the specific things you want to make public from your package's internal files.
4
+ import { AguaceroCore } from './AguaceroCore.js';
5
+ import { EventEmitter } from './events.js';
6
+ import { THEME_CONFIGS } from './map-styles.js';
7
+ import { DICTIONARIES } from './dictionaries.js';
8
+ import { DEFAULT_COLORMAPS } from './default-colormaps.js';
9
+ import { getUnitConversionFunction } from './unitConversions.js';
10
+ export {
11
+ SATELLITE_FRAMES_URL,
12
+ GOES_EAST_SATELLITE_SECTORS,
13
+ GOES_SATELLITE_CHANNELS,
14
+ GOES_SATELLITE_CHANNEL_LABELS,
15
+ SATELLITE_DURATION_CONFIG,
16
+ TIMELINE_DURATION_MAX_HOURS,
17
+ TIMELINE_DURATION_HOUR_VALUES,
18
+ formatTimelineDurationValue,
19
+ normalizeTimelineDurationValue,
20
+ parseTimelineDurationHours,
21
+ resolveSatelliteDurationOption,
22
+ getDefaultSatelliteDurationOption,
23
+ buildSatelliteTimelineForSelection,
24
+ getAllGoesEastSatelliteSelections,
25
+ calculateUnixTimeFromSatelliteKey,
26
+ resolveSatelliteS3FileName,
27
+ resolveSatelliteSectorLabel,
28
+ } from './satellite_support.js';
29
+
30
+ // Now, export them all so other packages can import them.
31
+ export {
32
+ AguaceroCore,
33
+ EventEmitter,
34
+ THEME_CONFIGS,
35
+ DICTIONARIES,
36
+ DEFAULT_COLORMAPS,
37
+ getUnitConversionFunction
38
+ };
39
+
40
+ /** NEXRAD tilt + listing helpers (also importable via subpaths; root re-export fixes Vite/esbuild subpath resolution). */
41
+ export * from './nexradTilts.js';
42
+ export * from './nexradTiltCoalesce.js';
43
+ export * from './nexrad_support.js';
44
+
45
+ /** NWS watches/warnings (NWWS HTTP + SSE, Mapbox-style paint helpers) — shared by mapsgl and React Native. */
46
+ export { NwsWatchesWarningsOverlay, NWS_DEFAULT_LINE_BEFORE_LAYER_ID } from './nws/NwsWatchesWarningsOverlay.js';
47
+ export * from './nws/nwsSdkConstants.js';
48
+ export * from './nws/nwsAlertsSupport.js';
49
49
  export * from './nws/nwsAlertsFetchSpec.js';
package/src/map-styles.js CHANGED
@@ -1,102 +1,102 @@
1
- export const defaultLightMapStyles = {
2
- landOcean: {
3
- landColor: '#f0f0f0',
4
- oceanColor: '#a8d8ea',
5
- waterDepth: {
6
- visible: true,
7
- color: '#97c7d9'
8
- },
9
- nationalPark: {
10
- visible: true,
11
- color: '#d4e6d4',
12
- }
13
- },
14
- transportation: {
15
- roads: { visible: true, color: '#d3d3d3', width: 0.7 },
16
- airports: { visible: true, color: '#d3d3d3', width: 0.7 }
17
- },
18
- boundaries: {
19
- countries: { visible: true, color: '#000000', width: 1.5, lineType: 'solid' },
20
- states: { visible: true, color: '#000000', width: 1.5, lineType: 'solid' },
21
- counties: { visible: true, color: '#515151', width: 1.2, lineType: 'solid' }
22
- },
23
- waterFeatures: {
24
- waterways: { visible: true, color: '#a8d8ea', width: 0.7 }
25
- },
26
- labels: {
27
- countries: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 14, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
28
- states: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
29
- cities: {
30
- major: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
31
- minor: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 }
32
- },
33
- airports: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
34
- poi: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
35
- continents: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 16, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1.5 },
36
- waterLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#0077be', outlineColor: '#ffffff', outlineWidth: 1 },
37
- naturalLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#2E8B57', outlineColor: '#ffffff', outlineWidth: 1 },
38
- subdivisionLabels: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 }
39
- },
40
- terrain: {
41
- visible: true,
42
- intensity: 0.15,
43
- shadowColor: '#b0b0b0',
44
- highlightColor: '#ffffff',
45
- accentColor: '#b0b0b0'
46
- },
47
- oceanOnTop: false,
48
- };
49
-
50
- export const defaultDarkMapStyles = {
51
- landOcean: {
52
- landColor: '#242424',
53
- oceanColor: '#252525',
54
- waterDepth: {
55
- visible: true,
56
- color: '#000000'
57
- },
58
- nationalPark: {
59
- visible: true,
60
- color: '#202020',
61
- }
62
- },
63
- transportation: {
64
- roads: { visible: true, color: '#4f4f4f', width: 0.5 },
65
- airports: { visible: true, color: '#4f4f4f', width: 0.6 }
66
- },
67
- boundaries: {
68
- countries: { visible: true, color: '#ffffff', width: 1.5, lineType: 'solid' },
69
- states: { visible: true, color: '#ffffff', width: 1.5, lineType: 'solid' },
70
- counties: { visible: true, color: '#a2a2a2', width: 1.2, lineType: 'solid' }
71
- },
72
- waterFeatures: {
73
- waterways: { visible: true, color: '#333333', width: 0.5 }
74
- },
75
- labels: {
76
- countries: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 14, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
77
- states: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
78
- cities: {
79
- major: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
80
- minor: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 }
81
- },
82
- airports: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
83
- poi: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
84
- continents: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 16, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1.5 },
85
- waterLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#a8d8ea', outlineColor: '#000000', outlineWidth: 1 },
86
- naturalLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#90ee90', outlineColor: '#000000', outlineWidth: 1 },
87
- subdivisionLabels: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 }
88
- },
89
- terrain: {
90
- visible: true,
91
- intensity: 0.2,
92
- shadowColor: '#000000',
93
- highlightColor: '#FFFFFF',
94
- accentColor: '#000000'
95
- },
96
- oceanOnTop: false,
97
- };
98
-
99
- export const THEME_CONFIGS = {
100
- light: defaultLightMapStyles,
101
- dark: defaultDarkMapStyles,
1
+ export const defaultLightMapStyles = {
2
+ landOcean: {
3
+ landColor: '#f0f0f0',
4
+ oceanColor: '#a8d8ea',
5
+ waterDepth: {
6
+ visible: true,
7
+ color: '#97c7d9'
8
+ },
9
+ nationalPark: {
10
+ visible: true,
11
+ color: '#d4e6d4',
12
+ }
13
+ },
14
+ transportation: {
15
+ roads: { visible: true, color: '#d3d3d3', width: 0.7 },
16
+ airports: { visible: true, color: '#d3d3d3', width: 0.7 }
17
+ },
18
+ boundaries: {
19
+ countries: { visible: true, color: '#000000', width: 1.5, lineType: 'solid' },
20
+ states: { visible: true, color: '#000000', width: 1.5, lineType: 'solid' },
21
+ counties: { visible: true, color: '#515151', width: 1.2, lineType: 'solid' }
22
+ },
23
+ waterFeatures: {
24
+ waterways: { visible: true, color: '#a8d8ea', width: 0.7 }
25
+ },
26
+ labels: {
27
+ countries: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 14, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
28
+ states: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
29
+ cities: {
30
+ major: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
31
+ minor: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 }
32
+ },
33
+ airports: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
34
+ poi: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 },
35
+ continents: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 16, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1.5 },
36
+ waterLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#0077be', outlineColor: '#ffffff', outlineWidth: 1 },
37
+ naturalLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#2E8B57', outlineColor: '#ffffff', outlineWidth: 1 },
38
+ subdivisionLabels: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#000000', outlineColor: '#ffffff', outlineWidth: 1 }
39
+ },
40
+ terrain: {
41
+ visible: true,
42
+ intensity: 0.15,
43
+ shadowColor: '#b0b0b0',
44
+ highlightColor: '#ffffff',
45
+ accentColor: '#b0b0b0'
46
+ },
47
+ oceanOnTop: false,
48
+ };
49
+
50
+ export const defaultDarkMapStyles = {
51
+ landOcean: {
52
+ landColor: '#242424',
53
+ oceanColor: '#252525',
54
+ waterDepth: {
55
+ visible: true,
56
+ color: '#000000'
57
+ },
58
+ nationalPark: {
59
+ visible: true,
60
+ color: '#202020',
61
+ }
62
+ },
63
+ transportation: {
64
+ roads: { visible: true, color: '#4f4f4f', width: 0.5 },
65
+ airports: { visible: true, color: '#4f4f4f', width: 0.6 }
66
+ },
67
+ boundaries: {
68
+ countries: { visible: true, color: '#ffffff', width: 1.5, lineType: 'solid' },
69
+ states: { visible: true, color: '#ffffff', width: 1.5, lineType: 'solid' },
70
+ counties: { visible: true, color: '#a2a2a2', width: 1.2, lineType: 'solid' }
71
+ },
72
+ waterFeatures: {
73
+ waterways: { visible: true, color: '#333333', width: 0.5 }
74
+ },
75
+ labels: {
76
+ countries: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 14, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
77
+ states: { visible: false, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
78
+ cities: {
79
+ major: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 12, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
80
+ minor: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 }
81
+ },
82
+ airports: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
83
+ poi: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 10, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 },
84
+ continents: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 16, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1.5 },
85
+ waterLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#a8d8ea', outlineColor: '#000000', outlineWidth: 1 },
86
+ naturalLabels: { visible: true, fontFamily: 'Open Sans Italic', fontSize: 10, color: '#90ee90', outlineColor: '#000000', outlineWidth: 1 },
87
+ subdivisionLabels: { visible: true, fontFamily: 'Open Sans Regular', fontSize: 11, color: '#ffffff', outlineColor: '#000000', outlineWidth: 1 }
88
+ },
89
+ terrain: {
90
+ visible: true,
91
+ intensity: 0.2,
92
+ shadowColor: '#000000',
93
+ highlightColor: '#FFFFFF',
94
+ accentColor: '#000000'
95
+ },
96
+ oceanOnTop: false,
97
+ };
98
+
99
+ export const THEME_CONFIGS = {
100
+ light: defaultLightMapStyles,
101
+ dark: defaultDarkMapStyles,
102
102
  };