UNPKG

@mcdevsl/superset-ui

Version:
37 lines (28 loc) 974 B
import type { FeatureCollection } from 'geojson'; import { feature } from 'topojson-client'; import { get } from 'lodash/fp'; import { RawMapMetadata } from '../types'; import Projection from './Projection'; export default class MapMetadata { config: RawMapMetadata; keyAccessor: (...args: unknown[]) => string; constructor(metadata: RawMapMetadata) { const { keyField } = metadata; this.config = metadata; this.keyAccessor = get(keyField); } loadMap(): Promise<FeatureCollection> { const { key } = this.config; return this.config.type === 'topojson' ? this.config.load().then(map => feature(map, map.objects[key]) as FeatureCollection) : this.config.load(); } createProjection() { const { projection = 'Mercator', rotate } = this.config; const projectionFn = Projection[projection](); if (rotate) { projectionFn.rotate(rotate); } return projectionFn; } }