import { ReactNode } from "react"; import { NaverMapsSubmodule } from "../utils/scriptLoader"; declare const EVENT_TO_PROP: { readonly init: "onInit"; readonly bounds_changed: "onBoundsChanged"; readonly dragstart: "onDragStart"; readonly dragend: "onDragEnd"; readonly idle: "onIdle"; readonly resize: "onResize"; readonly scroll: "onScroll"; readonly addLayer: "onAddLayer"; readonly center_changed: "onCenterChanged"; readonly centerPoint_changed: "onCenterPointChanged"; readonly click: "onClick"; readonly dbclick: "onDbclick"; readonly doubletap: "onDoubletap"; readonly mapType_changed: "onMapTypeChanged"; readonly mapTypeId_changed: "onMapTypeIdChanged"; readonly mousedown: "onMousedown"; readonly mousemove: "onMousemove"; readonly mouseout: "onMouseout"; readonly mouseover: "onMouseover"; readonly mouseup: "onMouseup"; readonly panning: "onPanning"; readonly pinch: "onPinch"; readonly pinch_start: "onPinchStart"; readonly projection_changed: "onProjectionChanged"; readonly removeLayer: "onRemoveLayer"; readonly size_changed: "onSizeChanged"; readonly tap: "onTap"; readonly tilesloaded: "onTilesLoaded"; readonly touchend: "onTouchEnd"; readonly touchstart: "onTouchStart"; readonly touchmove: "onTouchMove"; readonly twofintertap: "onTwoFingerTap"; readonly zoom_changed: "onZoomChanged"; readonly zoomend: "onZoomEnd"; readonly zoomstart: "onZoomStart"; }; type EventKey = keyof typeof EVENT_TO_PROP; type PropKey = (typeof EVENT_TO_PROP)[EventKey]; interface MapCallbacks { addLayer?: (layer: naver.maps.Layer) => void; center_changed?: (center: naver.maps.Coord) => void; centerPoint_changed?: (centerPoint: naver.maps.LatLng) => void; click?: (event: naver.maps.PointerEvent) => void; dbclick?: (event: naver.maps.PointerEvent) => void; doubletap?: (event: naver.maps.PointerEvent) => void; bounds_changed?: (bounds: naver.maps.Bounds) => void; drag?: (event: naver.maps.PointerEvent) => void; dragstart?: (event: naver.maps.PointerEvent) => void; dragend?: (event: naver.maps.PointerEvent) => void; idle?: () => void; init?: () => void; scroll?: () => void; rightclick?: (event: naver.maps.PointerEvent) => void; keydown?: (event: naver.maps.DOMEvent) => void; keyup?: (event: naver.maps.DOMEvent) => void; longtap?: (event: naver.maps.PointerEvent) => void; mapType_changed?: (mapType: naver.maps.MapType) => void; mapTypeId_changed?: (mapTypeId: naver.maps.MapTypeId) => void; mousedown?: (event: naver.maps.PointerEvent) => void; mousemove?: (event: naver.maps.PointerEvent) => void; mouseout?: (event: naver.maps.PointerEvent) => void; mouseover?: (event: naver.maps.PointerEvent) => void; mouseup?: (event: naver.maps.PointerEvent) => void; panning?: () => void; pinch?: (event: naver.maps.PointerEvent) => void; pinch_start?: (event: naver.maps.PointerEvent) => void; projection_changed?: (projection: naver.maps.Projection) => void; removeLayer?: (layerName: naver.maps.Layer["name"]) => void; resize?: () => void; size_changed?: (size: naver.maps.Size) => void; tap?: (event: naver.maps.PointerEvent) => void; tilesloaded?: () => void; touchend?: () => void; touchmove?: (event: naver.maps.PointerEvent) => void; touchstart?: (event: naver.maps.PointerEvent) => void; twofintertap?: (event: naver.maps.PointerEvent) => void; zoom_changed?: (zoom: number) => void; zoomstart?: () => void; zoomend?: () => void; } type HandlerOfProp
= MapCallbacks[{ [E in EventKey]: (typeof EVENT_TO_PROP)[E] extends P ? E : never; }[EventKey]]; type MapEventProps = { [P in PropKey]?: HandlerOfProp
;
};
export interface MapProps extends MapEventProps {
ncpKeyId: string;
id?: string;
mapTypeId?: naver.maps.MapTypeId;
initialOptions?: Omit