import React from 'react' import latest from '@maplibre/maplibre-gl-style-spec/dist/latest.json' import type {LightSpecification, StyleSpecification, TerrainSpecification, TransitionSpecification} from 'maplibre-gl' import FieldArray from './FieldArray' import FieldNumber from './FieldNumber' import FieldString from './FieldString' import FieldUrl from './FieldUrl' import FieldSelect from './FieldSelect' import FieldEnum from './FieldEnum' import FieldColor from './FieldColor' import Modal from './Modal' import fieldSpecAdditional from '../libs/field-spec-additional' type ModalSettingsProps = { mapStyle: StyleSpecification onStyleChanged(...args: unknown[]): unknown onChangeMetadataProperty(...args: unknown[]): unknown isOpen: boolean onOpenToggle(...args: unknown[]): unknown }; export default class ModalSettings extends React.Component { changeTransitionProperty(property: keyof TransitionSpecification, value: number | undefined) { const transition = { ...this.props.mapStyle.transition, } if (value === undefined) { delete transition[property]; } else { transition[property] = value; } this.props.onStyleChanged({ ...this.props.mapStyle, transition, }); } changeLightProperty(property: keyof LightSpecification, value: any) { const light = { ...this.props.mapStyle.light, } if (value === undefined) { delete light[property]; } else { // @ts-ignore light[property] = value; } this.props.onStyleChanged({ ...this.props.mapStyle, light, }); } changeTerrainProperty(property: keyof TerrainSpecification, value: any) { const terrain = { ...this.props.mapStyle.terrain, } if (value === undefined) { delete terrain[property]; } else { // @ts-ignore terrain[property] = value; } this.props.onStyleChanged({ ...this.props.mapStyle, terrain, }); } changeStyleProperty(property: keyof StyleSpecification | "owner", value: any) { const changedStyle = { ...this.props.mapStyle, }; if (value === undefined) { // @ts-ignore delete changedStyle[property]; } else { // @ts-ignore changedStyle[property] = value; } this.props.onStyleChanged(changedStyle); } render() { const metadata = this.props.mapStyle.metadata || {} as any; const {onChangeMetadataProperty, mapStyle} = this.props; const light = this.props.mapStyle.light || {}; const transition = this.props.mapStyle.transition || {}; const terrain = this.props.mapStyle.terrain || {} as TerrainSpecification; console.log(latest); return
} }