mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
main grew the Street Level provider registry while this branch removed it (#982–#985: injected providers, an empty composition, the `r` switch field). The registry, params, uiState and pick router come back as main has them and the slimmed layer sits behind the provider contract: - The core (index.js) drives providers as on main, without surface modes, ground casting, FOLLOW, prewarm and nearest-image lookups. A provider's key status is asked with a 10 s timeout and asked again on a switch-on while no key is known. - Mapillary is mapillaryProvider.js over the slim coverage, sequences and viewer modules, which read the filter and the active flag from the provider context. - The viewer host mounts one provider adapter at a time, no prewarm. - The panel has a chip per provider again (the pill switches the layer); no legend, EXPAND stays the Fullscreen API. - The contract drops what no provider implements: groundCaster, meshSampler, getSurface/setSurface, nearestImage, prewarm, reportError, the legend and surface fields of the UI snapshot. Co-Authored-By: Claude Fable 5.1 <[email protected]>
66 lines
3.0 KiB
JavaScript
66 lines
3.0 KiB
JavaScript
import { createDirectionsSource } from '../layers/directions/source.js';
|
|
import { createRecentImagerySource } from '../layers/recentImagery/source.js';
|
|
import { createOpenFreeMapSource } from '../sources/openFreeMap.js';
|
|
import {
|
|
createFlightSource,
|
|
createMilitarySource,
|
|
createVesselSource,
|
|
} from '../sources/live/standalone.js';
|
|
import { createCctvSource } from '../layers/cctv/source.js';
|
|
import { createRadioSource } from '../layers/radio/source.js';
|
|
import { createTransitSource } from '../layers/transit/source.js';
|
|
import { createTrafficSource } from '../layers/traffic/source.js';
|
|
import { createBikeshareSource } from '../layers/bikeshare/source.js';
|
|
import { createInstallationSource } from '../layers/installations/source.js';
|
|
import { createSatelliteSource } from '../layers/satellites/source.js';
|
|
import { createLaunchSource } from '../layers/launches/source.js';
|
|
import { createAlprTileSource } from '../layers/alpr/source.js';
|
|
import { createWeatherSource } from '../layers/weather/source.js';
|
|
import { createCycloneSource } from '../layers/cyclones/source.js';
|
|
import { createWindSource } from '../layers/wind/source.js';
|
|
import { createFirmsSource } from '../layers/firms/source.js';
|
|
import { createMapillarySource } from '../layers/streetLevel/source.js';
|
|
import { createReferenceSources } from '../sources/reference.js';
|
|
export { createReferenceSources as createStandaloneReferenceSources } from '../sources/reference.js';
|
|
|
|
/** Select standalone providers without starting their acquisition. */
|
|
export function createStandaloneLayerSources(overrides = {}) {
|
|
if (!overrides || typeof overrides !== 'object' || Array.isArray(overrides))
|
|
throw new TypeError('Source overrides must be an object');
|
|
const mapTiles = createOpenFreeMapSource();
|
|
const defaults = {
|
|
...createReferenceSources(),
|
|
directions: createDirectionsSource(),
|
|
'recent-imagery': createRecentImagerySource(),
|
|
flights: createFlightSource(),
|
|
military: createMilitarySource(),
|
|
vessels: createVesselSource({
|
|
apiUrl: import.meta.env?.VITE_AIS_LIVE_API_URL || '/api/vessels',
|
|
// Resolved against the document's address, which a panel host may
|
|
// serve from its own scheme.
|
|
origin: () => globalThis.document?.baseURI ?? 'http://localhost',
|
|
}),
|
|
cctv: createCctvSource(),
|
|
radio: createRadioSource(),
|
|
traffic: createTrafficSource({ mapTiles }),
|
|
transit: createTransitSource(),
|
|
bikeshare: createBikeshareSource(),
|
|
installations: createInstallationSource({ mapTiles }),
|
|
satellites: createSatelliteSource(),
|
|
launches: createLaunchSource(),
|
|
alpr: createAlprTileSource(),
|
|
firms: createFirmsSource(),
|
|
wind: createWindSource(),
|
|
weather: createWeatherSource(),
|
|
cyclones: createCycloneSource(),
|
|
mapillary: createMapillarySource({
|
|
token: import.meta.env?.MAPILLARY_CLIENT_TOKEN || '',
|
|
}),
|
|
};
|
|
for (const name of Object.keys(overrides)) {
|
|
if (!Object.hasOwn(defaults, name))
|
|
throw new TypeError(`Unknown source: ${name}`);
|
|
}
|
|
return { ...defaults, ...overrides };
|
|
}
|