42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import Combine from "../Base/Combine"
|
|
import Toggle from "../Input/Toggle"
|
|
import MapControlButton from "../MapControlButton"
|
|
import GeoLocationHandler from "../../Logic/Actors/GeoLocationHandler"
|
|
import Svg from "../../Svg"
|
|
import MapState from "../../Logic/State/MapState"
|
|
import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"
|
|
import { Utils } from "../../Utils"
|
|
import { TagUtils } from "../../Logic/Tags/TagUtils"
|
|
import { BBox } from "../../Logic/BBox"
|
|
import { OsmFeature } from "../../Models/OsmFeature"
|
|
import LevelSelector from "./LevelSelector"
|
|
|
|
export default class RightControls extends Combine {
|
|
constructor(state: MapState & { featurePipeline: FeaturePipeline }) {
|
|
const geolocatioHandler = new GeoLocationHandler(state)
|
|
|
|
const geolocationButton = new Toggle(
|
|
new MapControlButton(geolocatioHandler, {
|
|
dontStyle: true,
|
|
}),
|
|
undefined,
|
|
state.featureSwitchGeolocation
|
|
)
|
|
|
|
const plus = new MapControlButton(Svg.plus_svg()).onClick(() => {
|
|
state.locationControl.data.zoom++
|
|
state.locationControl.ping()
|
|
})
|
|
|
|
const min = new MapControlButton(Svg.min_svg()).onClick(() => {
|
|
state.locationControl.data.zoom--
|
|
state.locationControl.ping()
|
|
})
|
|
|
|
const levelSelector = new LevelSelector(state)
|
|
super(
|
|
[levelSelector, plus, min, geolocationButton].map((el) => el.SetClass("m-0.5 md:m-1"))
|
|
)
|
|
this.SetClass("flex flex-col items-center")
|
|
}
|
|
}
|