import { defineComponent, type PropType } from "vue"; import { LogoControl, type ControlPosition } from "maplibre-gl"; import { Position, PositionValues, } from "@/lib/components/controls/position.enum"; import { useControl } from "@/lib/composable/useControl"; /** * Render Logo Control * * See [LogoControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/LogoControl/) * @since 6.2.0 */ export default defineComponent({ name: "MglLogoControl", props: { /** * Position on the map to which the control will be added. Valid values are 'top-left', 'top-right', 'bottom-left', and 'bottom-right'. Defaults to 'bottom-left'. */ position: { type: String as PropType, validator: (v: Position) => { return PositionValues.indexOf(v) !== -1; }, }, /** * If true, force a compact logo. If false, force the full logo. The default is a responsive logo that collapses when the map is less than 640 pixels wide. */ compact: { type: Boolean as PropType, }, }, setup(props) { useControl(() => { return new LogoControl({ compact: props.compact, }); }, props); }, render() { return null; }, });