kor-mapi 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/base/HandleRegistry.ts","../src/core/errors.ts","../src/providers/kakao/KakaoLoader.ts","../src/utils/coordinateUtils.ts","../src/providers/kakao/KakaoAdapter.ts","../src/providers/naver/NaverLoader.ts","../src/providers/naver/NaverAdapter.ts","../src/providers/google/GoogleLoader.ts","../src/providers/google/GoogleAdapter.ts","../src/core/KorMap.ts","../src/core/overlays.ts"],"names":["loadPromise","SUPPORTED_FEATURES","POINTER_EVENTS"],"mappings":"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","file":"chunk-222QLGRB.js","sourcesContent":["/**\n * Maps opaque integer handle IDs to native provider objects.\n * Each adapter maintains its own registries for markers, overlays, etc.\n */\nexport class HandleRegistry<T> {\n private readonly map = new Map<number, T>();\n private counter = 0;\n\n register(value: T): number {\n const id = ++this.counter;\n this.map.set(id, value);\n return id;\n }\n\n get(id: number): T {\n const value = this.map.get(id);\n if (value === undefined) throw new Error(`Handle ${id} not found in registry`);\n return value;\n }\n\n delete(id: number): void {\n this.map.delete(id);\n }\n\n has(id: number): boolean {\n return this.map.has(id);\n }\n}\n\nlet eventListenerCounter = 0;\n\nexport function makeEventListener(type: string): { _type: string; _id: number } {\n return { _type: type, _id: ++eventListenerCounter };\n}\n\nexport function makeHandle(id: number): { _handleId: number } {\n return { _handleId: id };\n}\n","import type { MapProvider, KorMapFeature } from './types.js';\n\nexport class KorMapError extends Error {\n readonly provider: MapProvider | undefined;\n readonly originalError: unknown;\n\n constructor(message: string, options?: { provider?: MapProvider; cause?: unknown }) {\n super(message, { cause: options?.cause });\n this.name = 'KorMapError';\n this.provider = options?.provider;\n this.originalError = options?.cause;\n }\n}\n\nexport class ProviderLoadError extends KorMapError {\n constructor(provider: MapProvider, cause?: unknown) {\n super(`Failed to load ${provider} Maps SDK`, { provider, cause });\n this.name = 'ProviderLoadError';\n }\n}\n\nexport class ProviderNotSupportedError extends KorMapError {\n readonly feature: KorMapFeature;\n\n constructor(provider: MapProvider, feature: KorMapFeature) {\n super(`Feature \"${feature}\" is not supported by provider \"${provider}\"`, { provider });\n this.name = 'ProviderNotSupportedError';\n this.feature = feature;\n }\n}\n\nexport class ConfigurationError extends KorMapError {\n constructor(message: string) {\n super(message);\n this.name = 'ConfigurationError';\n }\n}\n","import { ProviderLoadError } from '../../core/errors.js';\n\nlet loadPromise: Promise<void> | null = null;\n\n/**\n * Idempotently loads the Kakao Maps SDK via dynamic script injection.\n * Multiple calls return the same promise; the script is injected only once.\n */\nexport function loadKakaoSdk(appKey: string): Promise<void> {\n if (loadPromise) return loadPromise;\n\n loadPromise = new Promise<void>((resolve, reject) => {\n // Already loaded\n if (typeof window !== 'undefined' && window.kakao?.maps?.Map) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = `//dapi.kakao.com/v2/maps/sdk.js?appkey=${encodeURIComponent(appKey)}&autoload=false`;\n\n script.onload = () => {\n // Kakao SDK uses autoload=false so we call kakao.maps.load() manually\n window.kakao.maps.load(() => resolve());\n };\n\n script.onerror = () => {\n loadPromise = null; // allow retry on next call\n reject(new ProviderLoadError('kakao', new Error('Kakao Maps SDK script failed to load')));\n };\n\n document.head.appendChild(script);\n });\n\n return loadPromise;\n}\n\n// Extend Window for TypeScript\ndeclare global {\n interface Window {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kakao: any;\n }\n}\n","// ---------------------------------------------------------------------------\n// Facade zoom scale: 7–19 (Google/Naver-equivalent range)\n// 7 = country/region view\n// 19 = street level\n//\n// Naver zoom scale: 7–19 (identity with facade in this range)\n// Google zoom scale: 7–19 (identity with facade in this range)\n//\n// Kakao zoom scale: 1–13 (inverted, offset 20)\n// kakaoLevel = 20 − facadeZoom\n// facade 7 → kakao 13 (zoomed out)\n// facade 19 → kakao 1 (zoomed in)\n// ---------------------------------------------------------------------------\n\nconst FACADE_MIN = 7;\nconst FACADE_MAX = 19;\n\nconst KAKAO_MIN = 1;\nconst KAKAO_MAX = 13;\nconst KAKAO_OFFSET = 20;\n\nexport function clampFacadeZoom(zoom: number): number {\n return Math.max(FACADE_MIN, Math.min(FACADE_MAX, zoom));\n}\n\n// ---------------------------------------------------------------------------\n// Google (identity — facade IS the Google scale in this range)\n// ---------------------------------------------------------------------------\n\nexport function toGoogleZoom(facadeZoom: number): number {\n return clampFacadeZoom(facadeZoom);\n}\n\nexport function fromGoogleZoom(googleZoom: number): number {\n return clampFacadeZoom(googleZoom);\n}\n\n// ---------------------------------------------------------------------------\n// Naver (identity — Naver zoom equals Google zoom in the 7–19 range)\n// ---------------------------------------------------------------------------\n\nexport function toNaverZoom(facadeZoom: number): number {\n return Math.round(clampFacadeZoom(facadeZoom));\n}\n\nexport function fromNaverZoom(naverZoom: number): number {\n return Math.round(clampFacadeZoom(naverZoom));\n}\n\n// ---------------------------------------------------------------------------\n// Kakao\n// kakaoLevel = 20 − facadeZoom (inverted, offset 20)\n// facade 7 → kakao 13\n// facade 19 → kakao 1\n// ---------------------------------------------------------------------------\n\nexport function toKakaoZoom(facadeZoom: number): number {\n const clamped = clampFacadeZoom(facadeZoom);\n return Math.max(KAKAO_MIN, Math.min(KAKAO_MAX, Math.round(KAKAO_OFFSET - clamped)));\n}\n\nexport function fromKakaoZoom(kakaoZoom: number): number {\n const clamped = Math.max(KAKAO_MIN, Math.min(KAKAO_MAX, Math.round(kakaoZoom)));\n return Math.round(clampFacadeZoom(KAKAO_OFFSET - clamped));\n}\n","import type { IMapProvider, NativeMarkerHandle, NativeOverlayHandle, NativeInfoWindowHandle } from '../base/IMapProvider.js';\nimport { HandleRegistry, makeHandle, makeEventListener } from '../base/HandleRegistry.js';\nimport { loadKakaoSdk } from './KakaoLoader.js';\nimport { toKakaoZoom, fromKakaoZoom } from '../../utils/coordinateUtils.js';\nimport { ConfigurationError } from '../../core/errors.js';\nimport {\n type LatLng, type LatLngBounds, type KorMapConfig, type KorMapFeature,\n type KorMapEvent, type OverlayEvent, type AnyEventHandler, type EventListener,\n type FitBoundsOptions, type PanOptions, type MapProjection,\n type MarkerOptions, type InfoWindowOptions,\n type PolylineOptions, type PolygonOptions, type CircleOptions,\n type RectangleOptions, type CustomOverlayOptions, type TileLayerOptions,\n MapTypeId,\n} from '../../core/types.js';\n\n// ---------------------------------------------------------------------------\n// MapTypeId mapping (runtime functions — avoids module-load-time SDK access)\n// ---------------------------------------------------------------------------\n\nfunction toKakaoMapType(type: MapTypeId): kakao.maps.MapTypeId {\n switch (type) {\n case MapTypeId.SATELLITE: return kakao.maps.MapTypeId.SKYVIEW;\n case MapTypeId.HYBRID: return kakao.maps.MapTypeId.HYBRID;\n // Kakao TERRAIN is an overlay type, not a standalone base map — use ROADMAP\n default: return kakao.maps.MapTypeId.ROADMAP;\n }\n}\n\nfunction fromKakaoMapType(typeId: string): MapTypeId {\n if (typeId === kakao.maps.MapTypeId.SKYVIEW) return MapTypeId.SATELLITE;\n if (typeId === kakao.maps.MapTypeId.HYBRID) return MapTypeId.HYBRID;\n if (typeId === kakao.maps.MapTypeId.TERRAIN) return MapTypeId.TERRAIN;\n return MapTypeId.ROADMAP;\n}\n\n// ---------------------------------------------------------------------------\n// Event name mapping\n// ---------------------------------------------------------------------------\n\n// Kakao events that map 1:1 to facade events\nconst FACADE_TO_KAKAO_EVENT: Partial<Record<KorMapEvent, string>> = {\n click: 'click',\n dblclick: 'dblclick',\n rightclick: 'rightclick',\n mousemove: 'mousemove',\n drag: 'drag',\n dragstart: 'dragstart',\n dragend: 'dragend',\n zoom_changed: 'zoom_changed',\n center_changed: 'center_changed',\n bounds_changed: 'bounds_changed',\n tilesloaded: 'tilesloaded',\n // 'idle' is synthesized below — not in this map\n};\n\nconst SUPPORTED_FEATURES: KorMapFeature[] = [];\n\nconst POINTER_EVENTS = new Set<KorMapEvent>(['click', 'dblclick', 'rightclick']);\n\n// ---------------------------------------------------------------------------\n// Adapter\n// ---------------------------------------------------------------------------\n\nexport class KakaoAdapter implements IMapProvider {\n readonly provider = 'kakao' as const;\n\n private map!: kakao.maps.Map;\n private readonly markerReg = new HandleRegistry<kakao.maps.Marker>();\n private readonly overlayReg = new HandleRegistry<kakao.maps.Polyline | kakao.maps.Polygon | kakao.maps.Circle | kakao.maps.Rectangle | kakao.maps.AbstractOverlay | kakao.maps.CustomOverlay>();\n private readonly infoWindowReg = new HandleRegistry<kakao.maps.InfoWindow>();\n\n // Listener bookkeeping: handle id → [ { event, nativeHandler } ]\n private readonly markerListeners = new Map<number, Array<{ event: string; handler: AnyEventHandler }>>();\n\n // idle synthesis: debounce timer\n private idleTimer: ReturnType<typeof setTimeout> | null = null;\n private readonly idleHandlers: Array<AnyEventHandler> = [];\n\n get nativeMap(): unknown {\n return this.map;\n }\n\n async init(container: HTMLElement, config: KorMapConfig): Promise<void> {\n const appKey = resolveAppKey(config.apiKey);\n await loadKakaoSdk(appKey);\n\n const center = config.center ?? { lat: 37.5665, lng: 126.9780 }; // Seoul default\n const zoom = config.zoom ?? 10;\n\n this.map = new kakao.maps.Map(container, {\n center: new kakao.maps.LatLng(center.lat, center.lng),\n level: toKakaoZoom(zoom),\n minLevel: 1,\n maxLevel: 13,\n ...(config.mapType && { mapTypeId: toKakaoMapType(config.mapType) }),\n });\n }\n\n destroy(): void {\n // Kakao doesn't have a formal destroy() — remove the map's DOM\n if (this.map) {\n // Clear all overlays by setting map to null on each registry entry is not\n // directly possible here, but the DOM removal via container suffices for GC.\n // The container element itself is managed by the caller.\n }\n }\n\n // -------------------------------------------------------------------------\n // Camera\n // -------------------------------------------------------------------------\n\n setCenter(latlng: LatLng): void {\n this.map.setCenter(new kakao.maps.LatLng(latlng.lat, latlng.lng));\n }\n\n getCenter(): LatLng {\n const c = this.map.getCenter();\n return { lat: c.getLat(), lng: c.getLng() };\n }\n\n setZoom(zoom: number): void {\n const level = toKakaoZoom(zoom);\n if (level !== this.map.getLevel()) {\n this.map.setLevel(level);\n }\n }\n\n getZoom(): number {\n return fromKakaoZoom(this.map.getLevel());\n }\n\n getBounds(): LatLngBounds {\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return {\n sw: { lat: sw.getLat(), lng: sw.getLng() },\n ne: { lat: ne.getLat(), lng: ne.getLng() },\n };\n }\n\n fitBounds(bounds: LatLngBounds, options?: FitBoundsOptions): void {\n const kb = new kakao.maps.LatLngBounds(\n new kakao.maps.LatLng(bounds.sw.lat, bounds.sw.lng),\n new kakao.maps.LatLng(bounds.ne.lat, bounds.ne.lng),\n );\n const p = normalizePadding(options?.padding);\n this.map.setBounds(kb, p.top, p.right, p.bottom, p.left);\n }\n\n panTo(latlng: LatLng, _options?: PanOptions): void {\n this.map.panTo(new kakao.maps.LatLng(latlng.lat, latlng.lng));\n }\n\n panBy(x: number, y: number): void {\n this.map.panBy(x, y);\n }\n\n // -------------------------------------------------------------------------\n // Map type\n // -------------------------------------------------------------------------\n\n setMapType(type: MapTypeId): void {\n const level = this.map.getLevel(); // setMapTypeId can fire zoom_changed internally\n this.map.setMapTypeId(toKakaoMapType(type));\n if (this.map.getLevel() !== level) this.map.setLevel(level);\n }\n\n getMapType(): MapTypeId {\n const raw = this.map.getMapTypeId();\n return fromKakaoMapType(raw as string);\n }\n\n // -------------------------------------------------------------------------\n // Capability\n // -------------------------------------------------------------------------\n\n supports(feature: KorMapFeature): boolean {\n return SUPPORTED_FEATURES.includes(feature);\n }\n\n // -------------------------------------------------------------------------\n // Events\n // -------------------------------------------------------------------------\n\n on(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n const listener = makeEventListener(event);\n\n if (event === 'idle') {\n this.idleHandlers.push(handler);\n this._ensureIdleSynthesis();\n } else {\n const kakaoEvent = FACADE_TO_KAKAO_EVENT[event];\n if (kakaoEvent) {\n const wrapped = POINTER_EVENTS.has(event)\n ? (e: { latLng: kakao.maps.LatLng }) =>\n (handler as (ev: { latlng: LatLng }) => void)({ latlng: { lat: e.latLng.getLat(), lng: e.latLng.getLng() } })\n : handler as kakao.maps.AnyListener;\n kakao.maps.event.addListener(this.map, kakaoEvent, wrapped as kakao.maps.AnyListener);\n }\n }\n\n return listener;\n }\n\n once(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n const wrapper = (...args: unknown[]) => {\n this.off(event, listener);\n (handler as (...a: unknown[]) => void)(...args);\n };\n const listener = this.on(event, wrapper as AnyEventHandler);\n return listener;\n }\n\n off(event: KorMapEvent, _listener: EventListener): void {\n // Kakao's removeListener requires the original handler function.\n // Because we don't track handler→listener mapping here (kept simple),\n // we remove ALL handlers for this event type when called.\n // For production use, a Map<listenerId, handler> would be needed.\n if (event === 'idle') {\n this.idleHandlers.length = 0;\n } else {\n const kakaoEvent = FACADE_TO_KAKAO_EVENT[event];\n if (kakaoEvent) {\n // Kakao requires the specific handler fn — simplified: no-op if handler not tracked\n // Full implementation would store listener._id → handler in a registry\n }\n }\n }\n\n private _ensureIdleSynthesis(): void {\n const synthesize = () => {\n if (this.idleTimer !== null) clearTimeout(this.idleTimer);\n this.idleTimer = setTimeout(() => {\n for (const h of this.idleHandlers) (h as GenericHandler)();\n }, 150);\n };\n\n kakao.maps.event.addListener(this.map, 'center_changed', synthesize);\n kakao.maps.event.addListener(this.map, 'zoom_changed', synthesize);\n }\n\n // -------------------------------------------------------------------------\n // Markers\n // -------------------------------------------------------------------------\n\n addMarker(options: MarkerOptions): NativeMarkerHandle {\n const kakaoOptions: kakao.maps.MarkerOptions = {\n map: this.map,\n position: new kakao.maps.LatLng(options.position.lat, options.position.lng),\n title: options.title,\n draggable: options.draggable,\n clickable: options.clickable,\n zIndex: options.zIndex,\n opacity: options.opacity,\n };\n\n if (options.icon) {\n kakaoOptions.image = buildMarkerImage(options.icon);\n }\n\n const marker = new kakao.maps.Marker(kakaoOptions);\n\n if (options.visible === false) marker.setVisible(false);\n\n // Kakao has no native label — render as a CustomOverlay companion\n if (options.label) {\n this._addLabelOverlay(marker, options.label.text, options.label);\n }\n\n const id = this.markerReg.register(marker);\n this.markerListeners.set(id, []);\n return makeHandle(id);\n }\n\n removeMarker(handle: NativeMarkerHandle): void {\n const marker = this.markerReg.get(handle._handleId);\n marker.setMap(null);\n this.markerReg.delete(handle._handleId);\n this.markerListeners.delete(handle._handleId);\n }\n\n updateMarker(handle: NativeMarkerHandle, options: Partial<MarkerOptions>): void {\n const marker = this.markerReg.get(handle._handleId);\n if (options.position) marker.setPosition(new kakao.maps.LatLng(options.position.lat, options.position.lng));\n if (options.icon !== undefined) marker.setImage(buildMarkerImage(options.icon));\n if (options.title !== undefined) marker.setTitle(options.title);\n if (options.draggable !== undefined) marker.setDraggable(options.draggable);\n if (options.clickable !== undefined) marker.setClickable(options.clickable);\n if (options.zIndex !== undefined) marker.setZIndex(options.zIndex);\n if (options.opacity !== undefined) marker.setOpacity(options.opacity);\n if (options.visible !== undefined) marker.setVisible(options.visible);\n }\n\n addMarkerEvent(handle: NativeMarkerHandle, event: OverlayEvent, handler: AnyEventHandler): EventListener {\n const marker = this.markerReg.get(handle._handleId);\n kakao.maps.event.addListener(marker, event, handler as kakao.maps.AnyListener);\n const listener = makeEventListener(event);\n return listener;\n }\n\n removeMarkerEvent(handle: NativeMarkerHandle, event: OverlayEvent, _listener: EventListener): void {\n const marker = this.markerReg.get(handle._handleId);\n // Simplified: removes all listeners for this event on this marker\n kakao.maps.event.removeListener(marker, event, () => undefined);\n }\n\n // -------------------------------------------------------------------------\n // InfoWindow\n // -------------------------------------------------------------------------\n\n openInfoWindow(options: InfoWindowOptions, anchor?: NativeMarkerHandle): NativeInfoWindowHandle {\n const iw = new kakao.maps.InfoWindow({\n content: options.content,\n position: options.position\n ? new kakao.maps.LatLng(options.position.lat, options.position.lng)\n : undefined,\n zIndex: options.zIndex,\n removable: false,\n });\n\n const marker = anchor ? this.markerReg.get(anchor._handleId) : undefined;\n iw.open(this.map, marker);\n\n const id = this.infoWindowReg.register(iw);\n return makeHandle(id);\n }\n\n closeInfoWindow(handle: NativeInfoWindowHandle): void {\n this.infoWindowReg.get(handle._handleId).close();\n }\n\n updateInfoWindow(handle: NativeInfoWindowHandle, options: Partial<InfoWindowOptions>): void {\n const iw = this.infoWindowReg.get(handle._handleId);\n if (options.content !== undefined) iw.setContent(options.content);\n if (options.position) iw.setPosition(new kakao.maps.LatLng(options.position.lat, options.position.lng));\n if (options.zIndex !== undefined) iw.setZIndex(options.zIndex);\n }\n\n isInfoWindowOpen(_handle: NativeInfoWindowHandle): boolean {\n // Kakao InfoWindow has no isOpen() — approximate: if it has a map reference\n // Simplified: always return true if handle exists\n return this.infoWindowReg.has(_handle._handleId);\n }\n\n // -------------------------------------------------------------------------\n // Vector overlays\n // -------------------------------------------------------------------------\n\n addPolyline(options: PolylineOptions): NativeOverlayHandle {\n const polyline = new kakao.maps.Polyline({\n map: this.map,\n path: toKakaoPath(options.path),\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeStyle: options.strokeStyle,\n zIndex: options.zIndex,\n });\n return makeHandle(this.overlayReg.register(polyline));\n }\n\n removePolyline(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.Polyline).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updatePolyline(handle: NativeOverlayHandle, options: Partial<PolylineOptions>): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.Polyline).setOptions({\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n });\n }\n\n addPolygon(options: PolygonOptions): NativeOverlayHandle {\n const polygon = new kakao.maps.Polygon({\n map: this.map,\n path: toKakaoPath(options.paths),\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n zIndex: options.zIndex,\n });\n return makeHandle(this.overlayReg.register(polygon));\n }\n\n removePolygon(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.Polygon).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updatePolygon(handle: NativeOverlayHandle, options: Partial<PolygonOptions>): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.Polygon).setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addCircle(options: CircleOptions): NativeOverlayHandle {\n const circle = new kakao.maps.Circle({\n map: this.map,\n center: new kakao.maps.LatLng(options.center.lat, options.center.lng),\n radius: options.radius,\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n zIndex: options.zIndex,\n });\n return makeHandle(this.overlayReg.register(circle));\n }\n\n removeCircle(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.Circle).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updateCircle(handle: NativeOverlayHandle, options: Partial<CircleOptions>): void {\n const circle = this.overlayReg.get(handle._handleId) as kakao.maps.Circle;\n if (options.center) circle.setCenter(new kakao.maps.LatLng(options.center.lat, options.center.lng));\n if (options.radius !== undefined) circle.setRadius(options.radius);\n circle.setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addRectangle(options: RectangleOptions): NativeOverlayHandle {\n const rect = new kakao.maps.Rectangle({\n map: this.map,\n bounds: new kakao.maps.LatLngBounds(\n new kakao.maps.LatLng(options.bounds.sw.lat, options.bounds.sw.lng),\n new kakao.maps.LatLng(options.bounds.ne.lat, options.bounds.ne.lng),\n ),\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n zIndex: options.zIndex,\n });\n return makeHandle(this.overlayReg.register(rect));\n }\n\n removeRectangle(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.Rectangle).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updateRectangle(handle: NativeOverlayHandle, options: Partial<RectangleOptions>): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.Rectangle).setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addCustomOverlay(options: CustomOverlayOptions): NativeOverlayHandle {\n const overlay = new kakao.maps.CustomOverlay({\n position: new kakao.maps.LatLng(options.position.lat, options.position.lng),\n content: options.content,\n xAnchor: 0,\n yAnchor: 0,\n zIndex: options.zIndex ?? 100,\n });\n overlay.setMap(this.map);\n return makeHandle(this.overlayReg.register(overlay));\n }\n\n removeCustomOverlay(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.CustomOverlay).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n addTileLayer(options: TileLayerOptions): NativeOverlayHandle {\n const tileSize = options.tileSize ?? 256;\n const tileLayer = new kakao.maps.TileLayer({\n getTile: (x: number, y: number, z: number): HTMLElement => {\n const img = document.createElement('img');\n img.src = options.getTileUrl({ x, y }, z);\n img.width = tileSize;\n img.height = tileSize;\n if (options.opacity !== undefined) img.style.opacity = String(options.opacity);\n return img;\n },\n });\n tileLayer.setMap(this.map);\n return makeHandle(this.overlayReg.register(tileLayer));\n }\n\n removeTileLayer(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as kakao.maps.TileLayer).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n // -------------------------------------------------------------------------\n // Projection\n // -------------------------------------------------------------------------\n\n getProjection(): MapProjection {\n // Projection is accessed per-overlay in Kakao; return a stub here.\n // Full projection support requires an AbstractOverlay context.\n return {\n fromLatLngToPoint: (latlng: LatLng) => ({ x: latlng.lng, y: latlng.lat }),\n fromPointToLatLng: (point) => ({ lat: point.y, lng: point.x }),\n fromLatLngToDivPixel: (latlng: LatLng) => ({ x: latlng.lng, y: latlng.lat }),\n };\n }\n\n // -------------------------------------------------------------------------\n // Private helpers\n // -------------------------------------------------------------------------\n\n private _addLabelOverlay(marker: kakao.maps.Marker, text: string, label: MarkerOptions['label']): void {\n const div = document.createElement('div');\n div.textContent = text;\n div.style.cssText = [\n 'position:absolute',\n 'white-space:nowrap',\n 'pointer-events:none',\n `color:${label?.color ?? '#000'}`,\n `font-size:${label?.fontSize ?? '12px'}`,\n `font-weight:${label?.fontWeight ?? 'normal'}`,\n ].join(';');\n\n const LabelOverlay = class extends kakao.maps.AbstractOverlay {\n onAdd(): void {\n this.getPanels().overlayLayer.appendChild(div);\n }\n onRemove(): void {\n div.parentNode?.removeChild(div);\n }\n draw(): void {\n const proj = this.getProjection();\n const pos = marker.getPosition();\n const pt = proj.containerPointFromCoords(pos);\n div.style.left = `${pt.x}px`;\n div.style.top = `${pt.y - 20}px`; // above marker\n }\n };\n\n new LabelOverlay().setMap(this.map);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Utility functions\n// ---------------------------------------------------------------------------\n\ntype GenericHandler = () => void;\n\nfunction resolveAppKey(apiKey: string | import('../../core/types.js').KorMapApiKey): string {\n if (typeof apiKey === 'string') return apiKey;\n if (apiKey.appKey) return apiKey.appKey;\n throw new ConfigurationError('Kakao Maps requires an appKey');\n}\n\nfunction normalizePadding(padding?: Partial<import('../../core/types.js').Padding> | number): { top: number; right: number; bottom: number; left: number } {\n if (padding === undefined) return { top: 0, right: 0, bottom: 0, left: 0 };\n if (typeof padding === 'number') return { top: padding, right: padding, bottom: padding, left: padding };\n return { top: padding.top ?? 0, right: padding.right ?? 0, bottom: padding.bottom ?? 0, left: padding.left ?? 0 };\n}\n\nfunction toKakaoLatLng(latlng: LatLng): kakao.maps.LatLng {\n return new kakao.maps.LatLng(latlng.lat, latlng.lng);\n}\n\nfunction toKakaoPath(path: LatLng[] | LatLng[][]): kakao.maps.LatLng[] | kakao.maps.LatLng[][] {\n if (path.length === 0) return [];\n const first = path[0];\n if (Array.isArray(first)) {\n return (path as LatLng[][]).map(ring => ring.map(toKakaoLatLng));\n }\n return (path as LatLng[]).map(toKakaoLatLng);\n}\n\nfunction buildMarkerImage(icon: MarkerOptions['icon']): kakao.maps.MarkerImage {\n if (!icon) throw new Error('icon is required');\n const url = typeof icon === 'string' ? icon : icon.url;\n const size = typeof icon === 'object' && icon.size\n ? new kakao.maps.Size(icon.size.width, icon.size.height)\n : new kakao.maps.Size(24, 35);\n\n const opts: ConstructorParameters<typeof kakao.maps.MarkerImage>[2] = {};\n if (typeof icon === 'object') {\n if (icon.anchor) opts.offset = new kakao.maps.Point(icon.anchor.x, icon.anchor.y);\n if (icon.origin) opts.spriteOrigin = new kakao.maps.Point(icon.origin.x, icon.origin.y);\n if (icon.scaledSize) opts.spriteSize = new kakao.maps.Size(icon.scaledSize.width, icon.scaledSize.height);\n }\n\n return new kakao.maps.MarkerImage(url, size, opts);\n}\n","import { ProviderLoadError } from '../../core/errors.js';\n\nlet loadPromise: Promise<void> | null = null;\n\n/**\n * Idempotently loads the Naver Maps SDK via dynamic script injection.\n */\nexport function loadNaverSdk(clientId: string, submodules: string[] = []): Promise<void> {\n if (loadPromise) return loadPromise;\n\n loadPromise = new Promise<void>((resolve, reject) => {\n if (typeof window !== 'undefined' && window.naver?.maps?.Map) {\n resolve();\n return;\n }\n\n const params = new URLSearchParams({ ncpKeyId: clientId });\n if (submodules.length > 0) params.set('submodules', submodules.join(','));\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = `https://oapi.map.naver.com/openapi/v3/maps.js?${params.toString()}`;\n\n script.onload = () => resolve();\n script.onerror = () => {\n loadPromise = null;\n reject(new ProviderLoadError('naver', new Error('Naver Maps SDK script failed to load')));\n };\n\n document.head.appendChild(script);\n });\n\n return loadPromise;\n}\n\ndeclare global {\n interface Window {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n naver: any;\n }\n}\n","import type { IMapProvider, NativeMarkerHandle, NativeOverlayHandle, NativeInfoWindowHandle } from '../base/IMapProvider.js';\nimport { HandleRegistry, makeHandle, makeEventListener } from '../base/HandleRegistry.js';\nimport { loadNaverSdk } from './NaverLoader.js';\nimport { toNaverZoom, fromNaverZoom } from '../../utils/coordinateUtils.js';\nimport { ConfigurationError } from '../../core/errors.js';\nimport {\n type LatLng, type LatLngBounds, type KorMapConfig, type KorMapFeature,\n type KorMapEvent, type OverlayEvent, type AnyEventHandler, type EventListener,\n type FitBoundsOptions, type PanOptions, type MapProjection,\n type MarkerOptions, type InfoWindowOptions,\n type PolylineOptions, type PolygonOptions, type CircleOptions,\n type RectangleOptions, type CustomOverlayOptions, type TileLayerOptions,\n MapTypeId, MarkerAnimation,\n} from '../../core/types.js';\n\n// ---------------------------------------------------------------------------\n// MapTypeId mapping\n// ---------------------------------------------------------------------------\n\n// Resolved at call time (after SDK loads) so we use the SDK's actual runtime values,\n// not hardcoded strings that may not match what the loaded version expects.\nfunction toNaverMapType(type: MapTypeId): naver.maps.MapTypeId {\n switch (type) {\n case MapTypeId.SATELLITE: return naver.maps.MapTypeId.SATELLITE;\n case MapTypeId.HYBRID: return naver.maps.MapTypeId.HYBRID;\n case MapTypeId.TERRAIN: return naver.maps.MapTypeId.TERRAIN;\n default: return naver.maps.MapTypeId.NORMAL;\n }\n}\n\nfunction fromNaverMapType(typeId: string): MapTypeId {\n if (typeId === naver.maps.MapTypeId.SATELLITE) return MapTypeId.SATELLITE;\n if (typeId === naver.maps.MapTypeId.HYBRID) return MapTypeId.HYBRID;\n if (typeId === naver.maps.MapTypeId.TERRAIN) return MapTypeId.TERRAIN;\n return MapTypeId.ROADMAP;\n}\n\n// ---------------------------------------------------------------------------\n// Event name mapping (Naver event names mostly match facade names)\n// ---------------------------------------------------------------------------\n\nconst FACADE_TO_NAVER_EVENT: Partial<Record<KorMapEvent, string>> = {\n click: 'click',\n dblclick: 'dblclick',\n rightclick: 'rightclick',\n mousemove: 'mousemove',\n drag: 'drag',\n dragstart: 'dragstart',\n dragend: 'dragend',\n zoom_changed: 'zoom_changed',\n center_changed: 'center_changed',\n bounds_changed: 'bounds_changed',\n idle: 'idle',\n tilesloaded: 'tilesloaded',\n};\n\nconst SUPPORTED_FEATURES: KorMapFeature[] = [];\n\nconst POINTER_EVENTS = new Set<KorMapEvent>(['click', 'dblclick', 'rightclick']);\n\n// ---------------------------------------------------------------------------\n// Adapter\n// ---------------------------------------------------------------------------\n\nexport class NaverAdapter implements IMapProvider {\n readonly provider = 'naver' as const;\n\n private map!: naver.maps.Map;\n private readonly markerReg = new HandleRegistry<naver.maps.Marker>();\n private readonly overlayReg = new HandleRegistry<naver.maps.Polyline | naver.maps.Polygon | naver.maps.Circle | naver.maps.Rectangle | naver.maps.OverlayView | naver.maps.ImageTileLayer>();\n private readonly infoWindowReg = new HandleRegistry<naver.maps.InfoWindow>();\n\n get nativeMap(): unknown {\n return this.map;\n }\n\n async init(container: HTMLElement, config: KorMapConfig): Promise<void> {\n const clientId = resolveClientId(config.apiKey);\n await loadNaverSdk(clientId);\n\n const center = config.center ?? { lat: 37.5665, lng: 126.9780 };\n const zoom = config.zoom ?? 10;\n\n // All official Naver Maps examples pass a string ID, not an HTMLElement.\n // Use the element's id when available to match that code path.\n const mapTarget: string | HTMLElement = container.id ? container.id : container;\n\n this.map = new naver.maps.Map(mapTarget, {\n center: new naver.maps.LatLng(center.lat, center.lng),\n zoom: toNaverZoom(zoom),\n minZoom: 7,\n maxZoom: 19,\n ...(config.mapType && { mapTypeId: toNaverMapType(config.mapType) }),\n });\n }\n\n destroy(): void {\n if (this.map) this.map.destroy();\n }\n\n // -------------------------------------------------------------------------\n // Camera\n // -------------------------------------------------------------------------\n\n setCenter(latlng: LatLng): void {\n this.map.setCenter(new naver.maps.LatLng(latlng.lat, latlng.lng));\n }\n\n getCenter(): LatLng {\n const c = this.map.getCenter();\n return { lat: c.lat(), lng: c.lng() };\n }\n\n setZoom(zoom: number): void {\n this.map.setZoom(toNaverZoom(zoom), true);\n }\n\n getZoom(): number {\n return fromNaverZoom(this.map.getZoom());\n }\n\n getBounds(): LatLngBounds {\n const b = this.map.getBounds();\n const sw = b.getSW();\n const ne = b.getNE();\n return {\n sw: { lat: sw.lat(), lng: sw.lng() },\n ne: { lat: ne.lat(), lng: ne.lng() },\n };\n }\n\n fitBounds(bounds: LatLngBounds, options?: FitBoundsOptions): void {\n const nb = new naver.maps.LatLngBounds(\n new naver.maps.LatLng(bounds.sw.lat, bounds.sw.lng),\n new naver.maps.LatLng(bounds.ne.lat, bounds.ne.lng),\n );\n const padding = normalizePaddingForNaver(options?.padding);\n this.map.fitBounds(nb, { padding });\n }\n\n panTo(latlng: LatLng, options?: PanOptions): void {\n this.map.panTo(new naver.maps.LatLng(latlng.lat, latlng.lng), {\n duration: options?.duration,\n });\n }\n\n panBy(x: number, y: number): void {\n this.map.panBy(x, y);\n }\n\n // -------------------------------------------------------------------------\n // Map type\n // -------------------------------------------------------------------------\n\n setMapType(type: MapTypeId): void {\n this.map.setMapTypeId(toNaverMapType(type));\n }\n\n getMapType(): MapTypeId {\n return fromNaverMapType(this.map.getMapTypeId());\n }\n\n // -------------------------------------------------------------------------\n // Capability\n // -------------------------------------------------------------------------\n\n supports(feature: KorMapFeature): boolean {\n return SUPPORTED_FEATURES.includes(feature);\n }\n\n // -------------------------------------------------------------------------\n // Events\n // -------------------------------------------------------------------------\n\n on(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n const naverEvent = FACADE_TO_NAVER_EVENT[event];\n if (naverEvent) {\n const wrapped = POINTER_EVENTS.has(event)\n ? (e: { coord: naver.maps.LatLng }) =>\n (handler as (ev: { latlng: LatLng }) => void)({ latlng: { lat: e.coord.lat(), lng: e.coord.lng() } })\n : handler as naver.maps.AnyListener;\n naver.maps.Event.addListener(this.map, naverEvent, wrapped as naver.maps.AnyListener);\n }\n return makeEventListener(event);\n }\n\n once(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n const wrapper = (...args: unknown[]) => {\n this.off(event, listener);\n (handler as (...a: unknown[]) => void)(...args);\n };\n const listener = this.on(event, wrapper as AnyEventHandler);\n return listener;\n }\n\n off(event: KorMapEvent, _listener: EventListener): void {\n // Simplified: Naver removeListener requires the listener object returned by addListener\n // Full implementation would track: listenerId → naver listener object\n const naverEvent = FACADE_TO_NAVER_EVENT[event];\n if (naverEvent) {\n // naver.maps.Event.removeListener(naverListenerObj);\n }\n }\n\n // -------------------------------------------------------------------------\n // Markers\n // -------------------------------------------------------------------------\n\n addMarker(options: MarkerOptions): NativeMarkerHandle {\n const icon = buildNaverIcon(options.icon);\n const marker = new naver.maps.Marker({\n map: this.map,\n position: new naver.maps.LatLng(options.position.lat, options.position.lng),\n icon,\n title: options.title,\n zIndex: options.zIndex,\n visible: options.visible,\n draggable: options.draggable,\n opacity: options.opacity,\n clickable: options.clickable,\n animation: options.animation\n ? options.animation === MarkerAnimation.BOUNCE\n ? naver.maps.Animation.BOUNCE\n : naver.maps.Animation.DROP\n : undefined,\n });\n const id = this.markerReg.register(marker);\n return makeHandle(id);\n }\n\n removeMarker(handle: NativeMarkerHandle): void {\n this.markerReg.get(handle._handleId).setMap(null);\n this.markerReg.delete(handle._handleId);\n }\n\n updateMarker(handle: NativeMarkerHandle, options: Partial<MarkerOptions>): void {\n const marker = this.markerReg.get(handle._handleId);\n if (options.position) marker.setPosition(new naver.maps.LatLng(options.position.lat, options.position.lng));\n if (options.icon !== undefined) marker.setIcon(buildNaverIcon(options.icon) ?? '');\n if (options.title !== undefined) marker.setTitle(options.title);\n if (options.visible !== undefined) marker.setVisible(options.visible);\n if (options.draggable !== undefined) marker.setDraggable(options.draggable);\n if (options.clickable !== undefined) marker.setClickable(options.clickable);\n if (options.zIndex !== undefined) marker.setZIndex(options.zIndex);\n if (options.opacity !== undefined) marker.setOpacity(options.opacity);\n if (options.animation !== undefined) {\n marker.setAnimation(\n options.animation === null ? null\n : options.animation === MarkerAnimation.BOUNCE ? naver.maps.Animation.BOUNCE\n : naver.maps.Animation.DROP,\n );\n }\n }\n\n addMarkerEvent(handle: NativeMarkerHandle, event: OverlayEvent, handler: AnyEventHandler): EventListener {\n const marker = this.markerReg.get(handle._handleId);\n naver.maps.Event.addListener(marker, event, handler as naver.maps.AnyListener);\n return makeEventListener(event);\n }\n\n removeMarkerEvent(handle: NativeMarkerHandle, event: OverlayEvent, _listener: EventListener): void {\n // Simplified — full impl would track listener objects\n void handle; void event;\n }\n\n // -------------------------------------------------------------------------\n // InfoWindow\n // -------------------------------------------------------------------------\n\n openInfoWindow(options: InfoWindowOptions, anchor?: NativeMarkerHandle): NativeInfoWindowHandle {\n const iw = new naver.maps.InfoWindow({\n content: options.content,\n position: options.position\n ? new naver.maps.LatLng(options.position.lat, options.position.lng)\n : undefined,\n maxWidth: options.maxWidth,\n zIndex: options.zIndex,\n });\n const marker = anchor ? this.markerReg.get(anchor._handleId) : undefined;\n iw.open(this.map, marker);\n return makeHandle(this.infoWindowReg.register(iw));\n }\n\n closeInfoWindow(handle: NativeInfoWindowHandle): void {\n this.infoWindowReg.get(handle._handleId).close();\n }\n\n updateInfoWindow(handle: NativeInfoWindowHandle, options: Partial<InfoWindowOptions>): void {\n const iw = this.infoWindowReg.get(handle._handleId);\n if (options.content !== undefined) iw.setContent(options.content);\n if (options.position) iw.setPosition(new naver.maps.LatLng(options.position.lat, options.position.lng));\n if (options.zIndex !== undefined) iw.setZIndex(options.zIndex);\n }\n\n isInfoWindowOpen(handle: NativeInfoWindowHandle): boolean {\n return this.infoWindowReg.get(handle._handleId).getMap() !== null;\n }\n\n // -------------------------------------------------------------------------\n // Vector overlays\n // -------------------------------------------------------------------------\n\n addPolyline(options: PolylineOptions): NativeOverlayHandle {\n const polyline = new naver.maps.Polyline({\n map: this.map,\n path: toNaverPath(options.path),\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeStyle: options.strokeStyle,\n geodesic: options.geodesic,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(polyline));\n }\n\n removePolyline(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.Polyline).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updatePolyline(handle: NativeOverlayHandle, options: Partial<PolylineOptions>): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.Polyline).setOptions({\n strokeColor: options.strokeColor,\n strokeWeight: options.strokeWeight,\n strokeOpacity: options.strokeOpacity,\n });\n }\n\n addPolygon(options: PolygonOptions): NativeOverlayHandle {\n const polygon = new naver.maps.Polygon({\n map: this.map,\n paths: toNaverPath(options.paths),\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n geodesic: options.geodesic,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(polygon));\n }\n\n removePolygon(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.Polygon).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updatePolygon(handle: NativeOverlayHandle, options: Partial<PolygonOptions>): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.Polygon).setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addCircle(options: CircleOptions): NativeOverlayHandle {\n const circle = new naver.maps.Circle({\n map: this.map,\n center: new naver.maps.LatLng(options.center.lat, options.center.lng),\n radius: options.radius,\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(circle));\n }\n\n removeCircle(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.Circle).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updateCircle(handle: NativeOverlayHandle, options: Partial<CircleOptions>): void {\n const circle = this.overlayReg.get(handle._handleId) as naver.maps.Circle;\n if (options.center) circle.setCenter(new naver.maps.LatLng(options.center.lat, options.center.lng));\n if (options.radius !== undefined) circle.setRadius(options.radius);\n circle.setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addRectangle(options: RectangleOptions): NativeOverlayHandle {\n const rect = new naver.maps.Rectangle({\n map: this.map,\n bounds: new naver.maps.LatLngBounds(\n new naver.maps.LatLng(options.bounds.sw.lat, options.bounds.sw.lng),\n new naver.maps.LatLng(options.bounds.ne.lat, options.bounds.ne.lng),\n ),\n strokeWeight: options.strokeWeight,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(rect));\n }\n\n removeRectangle(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.Rectangle).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updateRectangle(handle: NativeOverlayHandle, options: Partial<RectangleOptions>): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.Rectangle).setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addCustomOverlay(options: CustomOverlayOptions): NativeOverlayHandle {\n const self = this;\n const CustomOverlayClass = class extends naver.maps.OverlayView {\n onAdd(): void {\n this.getPanes().overlayLayer.appendChild(options.content);\n }\n onRemove(): void {\n options.content.parentNode?.removeChild(options.content);\n }\n draw(): void {\n const proj = this.getProjection();\n const pt = proj.fromCoordToOffset(\n new naver.maps.LatLng(options.position.lat, options.position.lng),\n );\n options.content.style.left = `${pt.x}px`;\n options.content.style.top = `${pt.y}px`;\n options.content.style.position = 'absolute';\n }\n };\n const overlay = new CustomOverlayClass();\n overlay.setMap(self.map);\n return makeHandle(this.overlayReg.register(overlay));\n }\n\n removeCustomOverlay(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.OverlayView).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n addTileLayer(options: TileLayerOptions): NativeOverlayHandle {\n const tileSize = options.tileSize ?? 256;\n const layer = new naver.maps.ImageTileLayer({\n getTileUrl: (x, y, z) => options.getTileUrl({ x, y }, z),\n tileSize: new naver.maps.Size(tileSize, tileSize),\n minZoom: options.minZoom,\n maxZoom: options.maxZoom,\n opacity: options.opacity,\n zIndex: options.zIndex,\n });\n layer.setMap(this.map);\n return makeHandle(this.overlayReg.register(layer));\n }\n\n removeTileLayer(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as naver.maps.ImageTileLayer).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n // -------------------------------------------------------------------------\n // Projection\n // -------------------------------------------------------------------------\n\n getProjection(): MapProjection {\n const proj = this.map.getProjection();\n return {\n fromLatLngToPoint: (latlng) => {\n const pt = proj.fromCoordToOffset(new naver.maps.LatLng(latlng.lat, latlng.lng));\n return { x: pt.x, y: pt.y };\n },\n fromPointToLatLng: (point) => {\n const c = proj.fromOffsetToCoord(new naver.maps.Point(point.x, point.y));\n return { lat: c.lat(), lng: c.lng() };\n },\n fromLatLngToDivPixel: (latlng) => {\n const pt = proj.fromCoordToOffset(new naver.maps.LatLng(latlng.lat, latlng.lng));\n return { x: pt.x, y: pt.y };\n },\n };\n }\n}\n\n// ---------------------------------------------------------------------------\n// Utility functions\n// ---------------------------------------------------------------------------\n\nfunction resolveClientId(apiKey: string | import('../../core/types.js').KorMapApiKey): string {\n if (typeof apiKey === 'string') return apiKey;\n if (apiKey.clientId) return apiKey.clientId;\n throw new ConfigurationError('Naver Maps requires a clientId');\n}\n\nfunction normalizePaddingForNaver(\n padding?: Partial<import('../../core/types.js').Padding> | number,\n): number | { top?: number; right?: number; bottom?: number; left?: number } {\n if (padding === undefined) return 0;\n if (typeof padding === 'number') return padding;\n return { top: padding.top, right: padding.right, bottom: padding.bottom, left: padding.left };\n}\n\nfunction toNaverLatLng(latlng: LatLng): naver.maps.LatLng {\n return new naver.maps.LatLng(latlng.lat, latlng.lng);\n}\n\nfunction toNaverPath(path: LatLng[] | LatLng[][]): naver.maps.LatLng[] | naver.maps.LatLng[][] {\n if (path.length === 0) return [];\n const first = path[0];\n if (Array.isArray(first)) {\n return (path as LatLng[][]).map(ring => ring.map(toNaverLatLng));\n }\n return (path as LatLng[]).map(toNaverLatLng);\n}\n\nfunction buildNaverIcon(icon: MarkerOptions['icon']): string | naver.maps.MarkerIconOptions | undefined {\n if (!icon) return undefined;\n if (typeof icon === 'string') return icon;\n return {\n url: icon.url,\n size: icon.size ? new naver.maps.Size(icon.size.width, icon.size.height) : undefined,\n scaledSize: icon.scaledSize ? new naver.maps.Size(icon.scaledSize.width, icon.scaledSize.height) : undefined,\n origin: icon.origin ? new naver.maps.Point(icon.origin.x, icon.origin.y) : undefined,\n anchor: icon.anchor ? new naver.maps.Point(icon.anchor.x, icon.anchor.y) : undefined,\n };\n}\n","import { ProviderLoadError } from '../../core/errors.js';\n\nlet loadPromise: Promise<void> | null = null;\n\n/**\n * Idempotently loads the Google Maps SDK via dynamic script injection.\n */\nexport function loadGoogleSdk(apiKey: string, libraries: string[] = ['marker']): Promise<void> {\n if (loadPromise) return loadPromise;\n\n loadPromise = new Promise<void>((resolve, reject) => {\n if (typeof window !== 'undefined' && window.google?.maps?.Map) {\n resolve();\n return;\n }\n\n const params = new URLSearchParams({ key: apiKey, loading: 'async' });\n if (libraries.length > 0) params.set('libraries', libraries.join(','));\n // Use a unique callback name to avoid collisions\n const callbackName = `__korMapiGoogleMapsCallback__`;\n params.set('callback', callbackName);\n\n (window as unknown as Record<string, unknown>)[callbackName] = () => {\n delete (window as unknown as Record<string, unknown>)[callbackName];\n resolve();\n };\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = `https://maps.googleapis.com/maps/api/js?${params.toString()}`;\n\n script.onerror = () => {\n loadPromise = null;\n delete (window as unknown as Record<string, unknown>)[callbackName];\n reject(new ProviderLoadError('google', new Error('Google Maps SDK script failed to load')));\n };\n\n document.head.appendChild(script);\n });\n\n return loadPromise;\n}\n\ndeclare global {\n interface Window {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n google: any;\n }\n}\n","import type { IMapProvider, NativeMarkerHandle, NativeOverlayHandle, NativeInfoWindowHandle } from '../base/IMapProvider.js';\nimport { HandleRegistry, makeHandle, makeEventListener } from '../base/HandleRegistry.js';\nimport { loadGoogleSdk } from './GoogleLoader.js';\nimport { toGoogleZoom, fromGoogleZoom } from '../../utils/coordinateUtils.js';\nimport { ConfigurationError } from '../../core/errors.js';\nimport {\n type LatLng, type LatLngBounds, type KorMapConfig, type KorMapFeature,\n type KorMapEvent, type OverlayEvent, type AnyEventHandler, type EventListener,\n type FitBoundsOptions, type PanOptions, type MapProjection,\n type MarkerOptions, type InfoWindowOptions,\n type PolylineOptions, type PolygonOptions, type CircleOptions,\n type RectangleOptions, type CustomOverlayOptions, type TileLayerOptions,\n MapTypeId,\n} from '../../core/types.js';\n\n// ---------------------------------------------------------------------------\n// MapTypeId mapping (facade uses same string values as Google)\n// ---------------------------------------------------------------------------\n\n// Google's MapTypeId string values are identical to our MapTypeId enum values,\n// so we use string literals here to avoid referencing `google` at module load time\n// (the SDK is loaded dynamically; accessing google.maps.* before init crashes).\nconst FACADE_TO_GOOGLE_TYPE: Record<MapTypeId, string> = {\n [MapTypeId.ROADMAP]: 'roadmap',\n [MapTypeId.SATELLITE]: 'satellite',\n [MapTypeId.HYBRID]: 'hybrid',\n [MapTypeId.TERRAIN]: 'terrain',\n};\n\nconst GOOGLE_TO_FACADE_TYPE: Record<string, MapTypeId> = {\n roadmap: MapTypeId.ROADMAP,\n satellite: MapTypeId.SATELLITE,\n hybrid: MapTypeId.HYBRID,\n terrain: MapTypeId.TERRAIN,\n};\n\n// ---------------------------------------------------------------------------\n// Event name mapping (Google event names match facade almost 1:1)\n// ---------------------------------------------------------------------------\n\nconst FACADE_TO_GOOGLE_EVENT: Partial<Record<KorMapEvent, string>> = {\n click: 'click',\n dblclick: 'dblclick',\n rightclick: 'rightclick',\n mousemove: 'mousemove',\n drag: 'drag',\n dragstart: 'dragstart',\n dragend: 'dragend',\n zoom_changed: 'zoom_changed',\n center_changed: 'center_changed',\n bounds_changed: 'bounds_changed',\n idle: 'idle',\n tilesloaded: 'tilesloaded',\n};\n\nconst SUPPORTED_FEATURES: KorMapFeature[] = ['elevation', 'streetview', 'heatmap', 'drawing', 'mapStyles', 'tilt', 'heading', 'trafficLayer'];\n\nconst POINTER_EVENTS = new Set<KorMapEvent>(['click', 'dblclick', 'rightclick']);\n\n// ---------------------------------------------------------------------------\n// Adapter\n// ---------------------------------------------------------------------------\n\nexport class GoogleAdapter implements IMapProvider {\n readonly provider = 'google' as const;\n\n private map!: google.maps.Map;\n private readonly markerReg = new HandleRegistry<google.maps.marker.AdvancedMarkerElement>();\n private readonly overlayReg = new HandleRegistry<google.maps.Polyline | google.maps.Polygon | google.maps.Circle | google.maps.Rectangle | google.maps.OverlayView | google.maps.ImageMapType>();\n private readonly infoWindowReg = new HandleRegistry<google.maps.InfoWindow>();\n // Track MapsEventListeners for proper cleanup\n private readonly eventListeners = new Map<number, google.maps.MapsEventListener>();\n private eventListenerIdCounter = 0;\n\n get nativeMap(): unknown {\n return this.map;\n }\n\n async init(container: HTMLElement, config: KorMapConfig): Promise<void> {\n const apiKey = resolveApiKey(config.apiKey);\n await loadGoogleSdk(apiKey);\n\n const center = config.center ?? { lat: 37.5665, lng: 126.9780 };\n const zoom = config.zoom ?? 10;\n\n this.map = new google.maps.Map(container, {\n center: new google.maps.LatLng(center.lat, center.lng),\n zoom: toGoogleZoom(zoom),\n minZoom: 7,\n maxZoom: 19,\n mapId: config.mapId ?? 'DEMO_MAP_ID',\n ...(config.mapType && { mapTypeId: FACADE_TO_GOOGLE_TYPE[config.mapType] as google.maps.MapTypeId }),\n });\n }\n\n destroy(): void {\n // Google Maps does not have a formal destroy() — clear event listeners\n for (const listener of this.eventListeners.values()) {\n listener.remove();\n }\n this.eventListeners.clear();\n }\n\n // -------------------------------------------------------------------------\n // Camera\n // -------------------------------------------------------------------------\n\n setCenter(latlng: LatLng): void {\n this.map.setCenter(new google.maps.LatLng(latlng.lat, latlng.lng));\n }\n\n getCenter(): LatLng {\n const c = this.map.getCenter();\n if (!c) return { lat: 0, lng: 0 };\n return { lat: c.lat(), lng: c.lng() };\n }\n\n setZoom(zoom: number): void {\n this.map.setZoom(toGoogleZoom(zoom));\n }\n\n getZoom(): number {\n return fromGoogleZoom(this.map.getZoom() ?? 10);\n }\n\n getBounds(): LatLngBounds {\n const b = this.map.getBounds();\n if (!b) return { sw: { lat: 0, lng: 0 }, ne: { lat: 0, lng: 0 } };\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return {\n sw: { lat: sw.lat(), lng: sw.lng() },\n ne: { lat: ne.lat(), lng: ne.lng() },\n };\n }\n\n fitBounds(bounds: LatLngBounds, options?: FitBoundsOptions): void {\n const gb = new google.maps.LatLngBounds(\n new google.maps.LatLng(bounds.sw.lat, bounds.sw.lng),\n new google.maps.LatLng(bounds.ne.lat, bounds.ne.lng),\n );\n const padding = normalizePaddingForGoogle(options?.padding);\n this.map.fitBounds(gb, padding);\n }\n\n panTo(latlng: LatLng, _options?: PanOptions): void {\n this.map.panTo(new google.maps.LatLng(latlng.lat, latlng.lng));\n }\n\n panBy(x: number, y: number): void {\n this.map.panBy(x, y);\n }\n\n // -------------------------------------------------------------------------\n // Map type\n // -------------------------------------------------------------------------\n\n setMapType(type: MapTypeId): void {\n this.map.setMapTypeId(FACADE_TO_GOOGLE_TYPE[type]);\n }\n\n getMapType(): MapTypeId {\n return GOOGLE_TO_FACADE_TYPE[this.map.getMapTypeId()] ?? MapTypeId.ROADMAP;\n }\n\n // -------------------------------------------------------------------------\n // Capability\n // -------------------------------------------------------------------------\n\n supports(feature: KorMapFeature): boolean {\n return SUPPORTED_FEATURES.includes(feature);\n }\n\n // -------------------------------------------------------------------------\n // Events\n // -------------------------------------------------------------------------\n\n on(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n const googleEvent = FACADE_TO_GOOGLE_EVENT[event];\n const listener = makeEventListener(event);\n\n if (googleEvent) {\n const wrapped = POINTER_EVENTS.has(event)\n ? (e: { latLng: google.maps.LatLng | null }) =>\n (handler as (ev: { latlng: LatLng }) => void)({ latlng: { lat: e.latLng?.lat() ?? 0, lng: e.latLng?.lng() ?? 0 } })\n : handler as google.maps.AnyListener;\n const mapsListener = google.maps.event.addListener(\n this.map,\n googleEvent,\n wrapped as google.maps.AnyListener,\n );\n this.eventListeners.set(++this.eventListenerIdCounter, mapsListener);\n }\n\n return listener;\n }\n\n once(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n const wrapper = (...args: unknown[]) => {\n this.off(event, listener);\n (handler as (...a: unknown[]) => void)(...args);\n };\n const listener = this.on(event, wrapper as AnyEventHandler);\n return listener;\n }\n\n off(_event: KorMapEvent, _listener: EventListener): void {\n // Simplified: a full implementation would map listener._id to MapsEventListener\n }\n\n // -------------------------------------------------------------------------\n // Markers\n // -------------------------------------------------------------------------\n\n addMarker(options: MarkerOptions): NativeMarkerHandle {\n const content = buildAdvancedMarkerContent(options);\n const marker = new google.maps.marker.AdvancedMarkerElement({\n map: this.map,\n position: { lat: options.position.lat, lng: options.position.lng },\n title: options.title ?? '',\n content,\n gmpClickable: options.clickable ?? true,\n gmpDraggable: options.draggable ?? false,\n zIndex: options.zIndex ?? null,\n });\n if (options.visible === false) marker.map = null;\n if (options.opacity !== undefined && marker.content) marker.content.style.opacity = String(options.opacity);\n return makeHandle(this.markerReg.register(marker));\n }\n\n removeMarker(handle: NativeMarkerHandle): void {\n this.markerReg.get(handle._handleId).map = null;\n this.markerReg.delete(handle._handleId);\n }\n\n updateMarker(handle: NativeMarkerHandle, options: Partial<MarkerOptions>): void {\n const marker = this.markerReg.get(handle._handleId);\n if (options.position) marker.position = { lat: options.position.lat, lng: options.position.lng };\n if (options.title !== undefined) marker.title = options.title ?? '';\n if (options.zIndex !== undefined) marker.zIndex = options.zIndex ?? null;\n if (options.draggable !== undefined) marker.gmpDraggable = options.draggable;\n if (options.clickable !== undefined) marker.gmpClickable = options.clickable;\n if (options.icon !== undefined) marker.content = buildAdvancedMarkerContent(options as MarkerOptions) ?? null;\n if (options.visible !== undefined) {\n marker.map = options.visible ? this.map : null;\n }\n if (options.opacity !== undefined && marker.content) marker.content.style.opacity = String(options.opacity);\n }\n\n addMarkerEvent(handle: NativeMarkerHandle, event: OverlayEvent, handler: AnyEventHandler): EventListener {\n const marker = this.markerReg.get(handle._handleId);\n marker.addListener(event, handler as google.maps.AnyListener);\n return makeEventListener(event);\n }\n\n removeMarkerEvent(_handle: NativeMarkerHandle, _event: OverlayEvent, _listener: EventListener): void {\n // Simplified\n }\n\n // -------------------------------------------------------------------------\n // InfoWindow\n // -------------------------------------------------------------------------\n\n openInfoWindow(options: InfoWindowOptions, anchor?: NativeMarkerHandle): NativeInfoWindowHandle {\n const iw = new google.maps.InfoWindow({\n content: options.content,\n position: options.position\n ? new google.maps.LatLng(options.position.lat, options.position.lng)\n : undefined,\n maxWidth: options.maxWidth,\n disableAutoPan: options.disableAutoPan,\n zIndex: options.zIndex,\n });\n const advMarker = anchor ? this.markerReg.get(anchor._handleId) : undefined;\n iw.open({ map: this.map, anchor: advMarker });\n return makeHandle(this.infoWindowReg.register(iw));\n }\n\n closeInfoWindow(handle: NativeInfoWindowHandle): void {\n this.infoWindowReg.get(handle._handleId).close();\n }\n\n updateInfoWindow(handle: NativeInfoWindowHandle, options: Partial<InfoWindowOptions>): void {\n const iw = this.infoWindowReg.get(handle._handleId);\n if (options.content !== undefined) iw.setContent(options.content);\n if (options.position) iw.setPosition(new google.maps.LatLng(options.position.lat, options.position.lng));\n if (options.zIndex !== undefined) iw.setZIndex(options.zIndex);\n }\n\n isInfoWindowOpen(handle: NativeInfoWindowHandle): boolean {\n return this.infoWindowReg.get(handle._handleId).getMap() !== null;\n }\n\n // -------------------------------------------------------------------------\n // Vector overlays\n // -------------------------------------------------------------------------\n\n addPolyline(options: PolylineOptions): NativeOverlayHandle {\n const polyline = new google.maps.Polyline({\n map: this.map,\n path: toGoogleFlatPath(options.path),\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight,\n geodesic: options.geodesic,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(polyline));\n }\n\n removePolyline(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as google.maps.Polyline).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updatePolyline(handle: NativeOverlayHandle, options: Partial<PolylineOptions>): void {\n (this.overlayReg.get(handle._handleId) as google.maps.Polyline).setOptions({\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight,\n });\n }\n\n addPolygon(options: PolygonOptions): NativeOverlayHandle {\n const polygon = new google.maps.Polygon({\n map: this.map,\n paths: toGooglePaths(options.paths),\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n geodesic: options.geodesic,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(polygon));\n }\n\n removePolygon(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as google.maps.Polygon).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updatePolygon(handle: NativeOverlayHandle, options: Partial<PolygonOptions>): void {\n (this.overlayReg.get(handle._handleId) as google.maps.Polygon).setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addCircle(options: CircleOptions): NativeOverlayHandle {\n const circle = new google.maps.Circle({\n map: this.map,\n center: new google.maps.LatLng(options.center.lat, options.center.lng),\n radius: options.radius,\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(circle));\n }\n\n removeCircle(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as google.maps.Circle).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updateCircle(handle: NativeOverlayHandle, options: Partial<CircleOptions>): void {\n const circle = this.overlayReg.get(handle._handleId) as google.maps.Circle;\n if (options.center) circle.setCenter(new google.maps.LatLng(options.center.lat, options.center.lng));\n if (options.radius !== undefined) circle.setRadius(options.radius);\n circle.setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addRectangle(options: RectangleOptions): NativeOverlayHandle {\n const rect = new google.maps.Rectangle({\n map: this.map,\n bounds: new google.maps.LatLngBounds(\n new google.maps.LatLng(options.bounds.sw.lat, options.bounds.sw.lng),\n new google.maps.LatLng(options.bounds.ne.lat, options.bounds.ne.lng),\n ),\n strokeColor: options.strokeColor,\n strokeOpacity: options.strokeOpacity,\n strokeWeight: options.strokeWeight,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n clickable: options.clickable,\n zIndex: options.zIndex,\n visible: options.visible,\n });\n return makeHandle(this.overlayReg.register(rect));\n }\n\n removeRectangle(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as google.maps.Rectangle).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n updateRectangle(handle: NativeOverlayHandle, options: Partial<RectangleOptions>): void {\n (this.overlayReg.get(handle._handleId) as google.maps.Rectangle).setOptions({\n strokeColor: options.strokeColor,\n fillColor: options.fillColor,\n fillOpacity: options.fillOpacity,\n });\n }\n\n addCustomOverlay(options: CustomOverlayOptions): NativeOverlayHandle {\n const self = this;\n const CustomOverlayClass = class extends google.maps.OverlayView {\n onAdd(): void {\n const panes = this.getPanes();\n if (!panes) return;\n // overlayLayer has pointer-events:none; use overlayMouseTarget for clickable overlays\n const pane = options.clickable ? panes.overlayMouseTarget : panes.overlayLayer;\n pane.appendChild(options.content);\n }\n onRemove(): void {\n options.content.parentNode?.removeChild(options.content);\n }\n draw(): void {\n const proj = this.getProjection();\n const pt = proj.fromLatLngToDivPixel(\n new google.maps.LatLng(options.position.lat, options.position.lng),\n );\n if (pt) {\n options.content.style.left = `${pt.x}px`;\n options.content.style.top = `${pt.y}px`;\n options.content.style.position = 'absolute';\n }\n }\n };\n const overlay = new CustomOverlayClass();\n overlay.setMap(self.map);\n return makeHandle(this.overlayReg.register(overlay));\n }\n\n removeCustomOverlay(handle: NativeOverlayHandle): void {\n (this.overlayReg.get(handle._handleId) as google.maps.OverlayView).setMap(null);\n this.overlayReg.delete(handle._handleId);\n }\n\n addTileLayer(options: TileLayerOptions): NativeOverlayHandle {\n const tileSize = options.tileSize ?? 256;\n const layer = new google.maps.ImageMapType({\n getTileUrl: (coord, zoom) => options.getTileUrl({ x: coord.x, y: coord.y }, zoom),\n tileSize: new google.maps.Size(tileSize, tileSize),\n minZoom: options.minZoom,\n maxZoom: options.maxZoom,\n opacity: options.opacity,\n });\n if (options.opacity !== undefined) layer.setOpacity(options.opacity);\n this.map.overlayMapTypes?.push?.(layer);\n return makeHandle(this.overlayReg.register(layer as unknown as google.maps.OverlayView));\n }\n\n removeTileLayer(handle: NativeOverlayHandle): void {\n this.overlayReg.delete(handle._handleId);\n // Google Maps: remove from overlayMapTypes by index — simplified\n }\n\n // -------------------------------------------------------------------------\n // Projection\n // -------------------------------------------------------------------------\n\n getProjection(): MapProjection {\n const proj = this.map.getProjection();\n return {\n fromLatLngToPoint: (latlng) => {\n const pt = proj?.fromLatLngToPoint(new google.maps.LatLng(latlng.lat, latlng.lng));\n return pt ? { x: pt.x, y: pt.y } : { x: 0, y: 0 };\n },\n fromPointToLatLng: (point) => {\n const c = proj?.fromPointToLatLng(new google.maps.Point(point.x, point.y));\n return c ? { lat: c.lat(), lng: c.lng() } : { lat: 0, lng: 0 };\n },\n fromLatLngToDivPixel: (latlng) => {\n const pt = proj?.fromLatLngToPoint(new google.maps.LatLng(latlng.lat, latlng.lng));\n return pt ? { x: pt.x, y: pt.y } : { x: 0, y: 0 };\n },\n };\n }\n}\n\n// ---------------------------------------------------------------------------\n// Utility functions\n// ---------------------------------------------------------------------------\n\nfunction resolveApiKey(apiKey: string | import('../../core/types.js').KorMapApiKey): string {\n if (typeof apiKey === 'string') return apiKey;\n if (apiKey.apiKey) return apiKey.apiKey;\n throw new ConfigurationError('Google Maps requires an apiKey');\n}\n\nfunction normalizePaddingForGoogle(\n padding?: Partial<import('../../core/types.js').Padding> | number,\n): number | google.maps.Padding {\n if (padding === undefined) return 0;\n if (typeof padding === 'number') return padding;\n return {\n top: padding.top ?? 0,\n right: padding.right ?? 0,\n bottom: padding.bottom ?? 0,\n left: padding.left ?? 0,\n };\n}\n\nfunction toGoogleLatLng(latlng: LatLng): google.maps.LatLng {\n return new google.maps.LatLng(latlng.lat, latlng.lng);\n}\n\nfunction toGoogleFlatPath(path: LatLng[] | LatLng[][]): google.maps.LatLng[] {\n if (path.length === 0) return [];\n if (Array.isArray(path[0])) {\n // Multi-path: flatten first ring for polyline\n return (path as LatLng[][])[0]!.map(toGoogleLatLng);\n }\n return (path as LatLng[]).map(toGoogleLatLng);\n}\n\nfunction toGooglePaths(paths: LatLng[] | LatLng[][]): google.maps.LatLng[] | google.maps.LatLng[][] {\n if (paths.length === 0) return [];\n if (Array.isArray(paths[0])) {\n return (paths as LatLng[][]).map(ring => ring.map(toGoogleLatLng));\n }\n return (paths as LatLng[]).map(toGoogleLatLng);\n}\n\nfunction buildAdvancedMarkerContent(options: MarkerOptions | Partial<MarkerOptions>): HTMLElement | undefined {\n const { icon, label } = options;\n if (!icon && !label) return undefined; // use default Google pin\n\n const container = document.createElement('div');\n container.style.cssText = 'display:flex;flex-direction:column;align-items:center;cursor:pointer';\n\n if (icon) {\n const img = document.createElement('img');\n img.src = typeof icon === 'string' ? icon : icon.url;\n if (typeof icon === 'object') {\n const sz = icon.scaledSize ?? icon.size;\n if (sz) { img.style.width = `${sz.width}px`; img.style.height = `${sz.height}px`; }\n }\n container.appendChild(img);\n }\n\n if (label) {\n const span = document.createElement('span');\n span.textContent = label.text;\n span.style.cssText = [\n `color:${label.color ?? '#000'}`,\n `font-size:${label.fontSize ?? '12px'}`,\n `font-weight:${label.fontWeight ?? 'normal'}`,\n 'white-space:nowrap',\n ].join(';');\n container.appendChild(span);\n }\n\n return container;\n}\n","import type { IMapProvider } from '../providers/base/IMapProvider.js';\nimport { KakaoAdapter } from '../providers/kakao/KakaoAdapter.js';\nimport { NaverAdapter } from '../providers/naver/NaverAdapter.js';\nimport { GoogleAdapter } from '../providers/google/GoogleAdapter.js';\nimport { ConfigurationError } from './errors.js';\nimport {\n type LatLng, type LatLngBounds, type KorMapConfig, type MapProvider,\n type KorMapFeature, type KorMapEvent, type AnyEventHandler, type EventListener,\n type FitBoundsOptions, type PanOptions, MapTypeId,\n} from './types.js';\n\nexport type { KorMapConfig };\n\n/**\n * The main facade. Create via `KorMap.create(config)`.\n *\n * Type parameter P narrows the type of `map.native`:\n * const map = await KorMap.create<'naver'>({ provider: 'naver', ... });\n * map.native // typed as naver.maps.Map\n */\nexport class KorMap<P extends MapProvider = MapProvider> {\n private readonly adapter: IMapProvider;\n\n private constructor(adapter: IMapProvider) {\n this.adapter = adapter;\n }\n\n /**\n * Async factory. Loads the provider SDK and initializes the map.\n */\n static async create<P extends MapProvider = MapProvider>(\n config: KorMapConfig<P>,\n ): Promise<KorMap<P>> {\n const container = resolveContainer(config.container);\n const adapter = createAdapter(config.provider);\n await adapter.init(container, config);\n return new KorMap<P>(adapter);\n }\n\n // -------------------------------------------------------------------------\n // Provider info\n // -------------------------------------------------------------------------\n\n getProvider(): P {\n return this.adapter.provider as P;\n }\n\n supports(feature: KorMapFeature): boolean {\n return this.adapter.supports(feature);\n }\n\n /**\n * The raw underlying map object.\n * Typed via generic when the provider is known at compile time:\n * const map = await KorMap.create<'naver'>({ provider: 'naver', ... });\n * map.native // → naver.maps.Map\n */\n get native(): P extends 'naver' ? typeof window.naver.maps.Map.prototype\n : P extends 'kakao' ? typeof window.kakao.maps.Map.prototype\n : P extends 'google' ? typeof window.google.maps.Map.prototype\n : unknown {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.adapter.nativeMap as any;\n }\n\n // -------------------------------------------------------------------------\n // Camera / viewport\n // -------------------------------------------------------------------------\n\n setCenter(latlng: LatLng): void { this.adapter.setCenter(latlng); }\n getCenter(): LatLng { return this.adapter.getCenter(); }\n\n setZoom(zoom: number): void { this.adapter.setZoom(zoom); }\n getZoom(): number { return this.adapter.getZoom(); }\n\n getBounds(): LatLngBounds { return this.adapter.getBounds(); }\n fitBounds(bounds: LatLngBounds, options?: FitBoundsOptions): void { this.adapter.fitBounds(bounds, options); }\n panTo(latlng: LatLng, options?: PanOptions): void { this.adapter.panTo(latlng, options); }\n panBy(x: number, y: number): void { this.adapter.panBy(x, y); }\n\n // -------------------------------------------------------------------------\n // Map type\n // -------------------------------------------------------------------------\n\n setMapType(type: MapTypeId): void { this.adapter.setMapType(type); }\n getMapType(): MapTypeId { return this.adapter.getMapType(); }\n\n // -------------------------------------------------------------------------\n // Events\n // -------------------------------------------------------------------------\n\n on(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n return this.adapter.on(event, handler);\n }\n\n once(event: KorMapEvent, handler: AnyEventHandler): EventListener {\n return this.adapter.once(event, handler);\n }\n\n off(event: KorMapEvent, listener: EventListener): void {\n this.adapter.off(event, listener);\n }\n\n // -------------------------------------------------------------------------\n // Lifecycle\n // -------------------------------------------------------------------------\n\n destroy(): void {\n this.adapter.destroy();\n }\n\n // -------------------------------------------------------------------------\n // Internal adapter access (for overlay classes)\n // -------------------------------------------------------------------------\n\n /** @internal */\n _adapter(): IMapProvider {\n return this.adapter;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction resolveContainer(container: HTMLElement | string): HTMLElement {\n if (typeof container === 'string') {\n // Bare string without CSS selector prefix → treat as element ID\n const el = /^[#.[[]/.test(container)\n ? document.querySelector<HTMLElement>(container)\n : document.getElementById(container);\n if (!el) throw new ConfigurationError(`Container element not found: \"${container}\"`);\n return el;\n }\n return container;\n}\n\nfunction createAdapter(provider: MapProvider): IMapProvider {\n switch (provider) {\n case 'kakao': return new KakaoAdapter();\n case 'naver': return new NaverAdapter();\n case 'google': return new GoogleAdapter();\n default: throw new ConfigurationError(`Unknown provider: \"${String(provider)}\"`);\n }\n}\n","import type { KorMap } from './KorMap.js';\nimport type { NativeMarkerHandle, NativeOverlayHandle, NativeInfoWindowHandle } from '../providers/base/IMapProvider.js';\nimport {\n type MarkerOptions, type InfoWindowOptions,\n type PolylineOptions, type PolygonOptions, type CircleOptions, type RectangleOptions,\n type CustomOverlayOptions, type TileLayerOptions,\n type OverlayEvent, type AnyEventHandler, type EventListener, type LatLng,\n} from './types.js';\n\n// ---------------------------------------------------------------------------\n// Marker\n// ---------------------------------------------------------------------------\n\nexport class Marker {\n private handle: NativeMarkerHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(private options: MarkerOptions) {}\n\n setMap(map: KorMap | null): void {\n if (this.currentMap && this.handle) {\n this.currentMap._adapter().removeMarker(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n if (map) {\n this.handle = map._adapter().addMarker(this.options);\n this.currentMap = map;\n }\n }\n\n getMap(): KorMap | null {\n return this.currentMap;\n }\n\n setPosition(latlng: LatLng): void {\n this.options = { ...this.options, position: latlng };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateMarker(this.handle, { position: latlng });\n }\n }\n\n getPosition(): LatLng {\n return this.options.position;\n }\n\n setVisible(visible: boolean): void {\n this.options = { ...this.options, visible };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateMarker(this.handle, { visible });\n }\n }\n\n setOpacity(opacity: number): void {\n this.options = { ...this.options, opacity };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateMarker(this.handle, { opacity });\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options = { ...this.options, zIndex };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateMarker(this.handle, { zIndex });\n }\n }\n\n setDraggable(draggable: boolean): void {\n this.options = { ...this.options, draggable };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateMarker(this.handle, { draggable });\n }\n }\n\n setIcon(icon: MarkerOptions['icon']): void {\n this.options = { ...this.options, icon };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateMarker(this.handle, { icon });\n }\n }\n\n setOptions(options: Partial<MarkerOptions>): void {\n this.options = { ...this.options, ...options };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateMarker(this.handle, options);\n }\n }\n\n on(event: OverlayEvent, handler: AnyEventHandler): EventListener | null {\n if (!this.handle || !this.currentMap) return null;\n return this.currentMap._adapter().addMarkerEvent(this.handle, event, handler);\n }\n\n off(event: OverlayEvent, listener: EventListener): void {\n if (!this.handle || !this.currentMap) return;\n this.currentMap._adapter().removeMarkerEvent(this.handle, event, listener);\n }\n}\n\n// ---------------------------------------------------------------------------\n// InfoWindow\n// ---------------------------------------------------------------------------\n\nexport class InfoWindow {\n private handle: NativeInfoWindowHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(private options: InfoWindowOptions) {}\n\n open(map: KorMap, anchor?: Marker): void {\n if (this.handle && this.currentMap) this.close();\n\n // Get the internal handle of the anchor marker if provided\n const markerHandle = anchor ? (anchor as unknown as { handle: NativeMarkerHandle | null }).handle : undefined;\n this.handle = map._adapter().openInfoWindow(this.options, markerHandle ?? undefined);\n this.currentMap = map;\n }\n\n close(): void {\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().closeInfoWindow(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n }\n\n setContent(content: string | HTMLElement): void {\n this.options = { ...this.options, content };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateInfoWindow(this.handle, { content });\n }\n }\n\n getContent(): string | HTMLElement {\n return this.options.content;\n }\n\n setPosition(latlng: LatLng): void {\n this.options = { ...this.options, position: latlng };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateInfoWindow(this.handle, { position: latlng });\n }\n }\n\n isOpen(): boolean {\n if (!this.handle || !this.currentMap) return false;\n return this.currentMap._adapter().isInfoWindowOpen(this.handle);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Polyline\n// ---------------------------------------------------------------------------\n\nexport class Polyline {\n private handle: NativeOverlayHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(private options: PolylineOptions) {}\n\n setMap(map: KorMap | null): void {\n if (this.currentMap && this.handle) {\n this.currentMap._adapter().removePolyline(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n if (map) {\n this.handle = map._adapter().addPolyline(this.options);\n this.currentMap = map;\n }\n }\n\n setOptions(options: Partial<PolylineOptions>): void {\n this.options = { ...this.options, ...options };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updatePolyline(this.handle, options);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Polygon\n// ---------------------------------------------------------------------------\n\nexport class Polygon {\n private handle: NativeOverlayHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(private options: PolygonOptions) {}\n\n setMap(map: KorMap | null): void {\n if (this.currentMap && this.handle) {\n this.currentMap._adapter().removePolygon(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n if (map) {\n this.handle = map._adapter().addPolygon(this.options);\n this.currentMap = map;\n }\n }\n\n setOptions(options: Partial<PolygonOptions>): void {\n this.options = { ...this.options, ...options };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updatePolygon(this.handle, options);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Circle\n// ---------------------------------------------------------------------------\n\nexport class Circle {\n private handle: NativeOverlayHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(private options: CircleOptions) {}\n\n setMap(map: KorMap | null): void {\n if (this.currentMap && this.handle) {\n this.currentMap._adapter().removeCircle(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n if (map) {\n this.handle = map._adapter().addCircle(this.options);\n this.currentMap = map;\n }\n }\n\n setOptions(options: Partial<CircleOptions>): void {\n this.options = { ...this.options, ...options };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateCircle(this.handle, options);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Rectangle\n// ---------------------------------------------------------------------------\n\nexport class Rectangle {\n private handle: NativeOverlayHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(private options: RectangleOptions) {}\n\n setMap(map: KorMap | null): void {\n if (this.currentMap && this.handle) {\n this.currentMap._adapter().removeRectangle(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n if (map) {\n this.handle = map._adapter().addRectangle(this.options);\n this.currentMap = map;\n }\n }\n\n setOptions(options: Partial<RectangleOptions>): void {\n this.options = { ...this.options, ...options };\n if (this.handle && this.currentMap) {\n this.currentMap._adapter().updateRectangle(this.handle, options);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// CustomOverlay (base class)\n// ---------------------------------------------------------------------------\n\nexport abstract class CustomOverlay {\n private handle: NativeOverlayHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(protected options: CustomOverlayOptions) {}\n\n abstract onAdd(): void;\n abstract onRemove(): void;\n abstract draw(): void;\n\n setMap(map: KorMap | null): void {\n if (this.currentMap && this.handle) {\n this.currentMap._adapter().removeCustomOverlay(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n if (map) {\n this.handle = map._adapter().addCustomOverlay(this.options);\n this.currentMap = map;\n }\n }\n\n setPosition(latlng: LatLng): void {\n this.options = { ...this.options, position: latlng };\n }\n\n getPosition(): LatLng {\n return this.options.position;\n }\n}\n\n// ---------------------------------------------------------------------------\n// TileLayer\n// ---------------------------------------------------------------------------\n\nexport class TileLayer {\n private handle: NativeOverlayHandle | null = null;\n private currentMap: KorMap | null = null;\n\n constructor(private options: TileLayerOptions) {}\n\n setMap(map: KorMap | null): void {\n if (this.currentMap && this.handle) {\n this.currentMap._adapter().removeTileLayer(this.handle);\n this.handle = null;\n this.currentMap = null;\n }\n if (map) {\n this.handle = map._adapter().addTileLayer(this.options);\n this.currentMap = map;\n }\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ // src/core/types.ts
2
+ var MapTypeId = /* @__PURE__ */ ((MapTypeId2) => {
3
+ MapTypeId2["ROADMAP"] = "roadmap";
4
+ MapTypeId2["SATELLITE"] = "satellite";
5
+ MapTypeId2["HYBRID"] = "hybrid";
6
+ MapTypeId2["TERRAIN"] = "terrain";
7
+ return MapTypeId2;
8
+ })(MapTypeId || {});
9
+ var MarkerAnimation = /* @__PURE__ */ ((MarkerAnimation2) => {
10
+ MarkerAnimation2["BOUNCE"] = "bounce";
11
+ MarkerAnimation2["DROP"] = "drop";
12
+ return MarkerAnimation2;
13
+ })(MarkerAnimation || {});
14
+
15
+ export { MapTypeId, MarkerAnimation };
16
+ //# sourceMappingURL=chunk-HUS54ONW.js.map
17
+ //# sourceMappingURL=chunk-HUS54ONW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/types.ts"],"names":["MapTypeId","MarkerAnimation"],"mappings":";AAyCO,IAAK,SAAA,qBAAAA,UAAAA,KAAL;AACL,EAAAA,WAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,WAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,WAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,WAAA,SAAA,CAAA,GAAU,SAAA;AAJA,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AA0GL,IAAK,eAAA,qBAAAC,gBAAAA,KAAL;AACL,EAAAA,iBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,iBAAA,MAAA,CAAA,GAAO,MAAA;AAFG,EAAA,OAAAA,gBAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA","file":"chunk-HUS54ONW.js","sourcesContent":["// ---------------------------------------------------------------------------\n// Geometry primitives\n// ---------------------------------------------------------------------------\n\nexport interface LatLng {\n lat: number;\n lng: number;\n}\n\nexport interface LatLngBounds {\n sw: LatLng;\n ne: LatLng;\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport interface Padding {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport type MapProvider = 'naver' | 'kakao' | 'google';\n\n// ---------------------------------------------------------------------------\n// Map types\n// ---------------------------------------------------------------------------\n\nexport enum MapTypeId {\n ROADMAP = 'roadmap',\n SATELLITE = 'satellite',\n HYBRID = 'hybrid',\n TERRAIN = 'terrain',\n}\n\n// ---------------------------------------------------------------------------\n// Feature capability keys\n// ---------------------------------------------------------------------------\n\nexport type KorMapFeature =\n | 'tilt'\n | 'heading'\n | 'mapStyles'\n | 'elevation'\n | 'streetview'\n | 'trafficLayer'\n | 'heatmap'\n | 'drawing'\n | 'transit'\n | 'adminBoundaries';\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\nexport interface KorMapApiKey {\n /** Naver Maps: NCP client ID */\n clientId?: string;\n /** Kakao Maps: app key */\n appKey?: string;\n /** Google Maps: API key */\n apiKey?: string;\n}\n\nexport interface KorMapConfig<P extends MapProvider = MapProvider> {\n provider: P;\n container: HTMLElement | string;\n apiKey: string | KorMapApiKey;\n locale?: 'ko' | 'en';\n center?: LatLng;\n /** Facade zoom level 0–22 (Google-style). Default: 10 */\n zoom?: number;\n mapType?: MapTypeId;\n /** Google Maps: Map ID required for AdvancedMarkerElement. Defaults to 'DEMO_MAP_ID' for development. */\n mapId?: string;\n /** Proxy URL for Naver/Kakao routing REST calls (required for routing on these providers) */\n proxyUrl?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Events\n// ---------------------------------------------------------------------------\n\nexport type KorMapEvent =\n | 'click'\n | 'dblclick'\n | 'rightclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseout'\n | 'dragstart'\n | 'drag'\n | 'dragend'\n | 'zoom_changed'\n | 'center_changed'\n | 'bounds_changed'\n | 'maptype_changed'\n | 'idle'\n | 'tilesloaded'\n | 'load';\n\nexport type OverlayEvent =\n | 'click'\n | 'dblclick'\n | 'rightclick'\n | 'mouseover'\n | 'mouseout'\n | 'mousemove'\n | 'dragstart'\n | 'drag'\n | 'dragend'\n | 'position_changed'\n | 'visible_changed';\n\nexport interface MapMouseEvent {\n latlng: LatLng;\n point?: Point;\n domEvent?: MouseEvent;\n}\n\n/** Opaque token returned by on() / once(), used to call off() */\nexport interface EventListener {\n readonly _type: string;\n readonly _id: number;\n}\n\nexport type MapEventHandler = (event: MapMouseEvent) => void;\nexport type GenericEventHandler = () => void;\nexport type AnyEventHandler = MapEventHandler | GenericEventHandler;\n\n// ---------------------------------------------------------------------------\n// Marker\n// ---------------------------------------------------------------------------\n\nexport enum MarkerAnimation {\n BOUNCE = 'bounce',\n DROP = 'drop',\n}\n\nexport interface MarkerIcon {\n url: string;\n size?: Size;\n scaledSize?: Size;\n /** Offset from top-left of icon image to the pin point */\n anchor?: Point;\n /** Origin within a sprite sheet */\n origin?: Point;\n}\n\nexport interface MarkerLabel {\n text: string;\n color?: string;\n fontSize?: string;\n fontWeight?: string;\n}\n\nexport interface MarkerOptions {\n position: LatLng;\n icon?: MarkerIcon | string;\n title?: string;\n zIndex?: number;\n visible?: boolean;\n draggable?: boolean;\n opacity?: number;\n label?: MarkerLabel;\n clickable?: boolean;\n animation?: MarkerAnimation;\n}\n\n// ---------------------------------------------------------------------------\n// InfoWindow\n// ---------------------------------------------------------------------------\n\nexport interface InfoWindowOptions {\n content: string | HTMLElement;\n position?: LatLng;\n maxWidth?: number;\n disableAutoPan?: boolean;\n zIndex?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Shared overlay styles\n// ---------------------------------------------------------------------------\n\nexport interface StrokeStyle {\n strokeColor?: string;\n strokeOpacity?: number;\n strokeWeight?: number;\n strokeStyle?: 'solid' | 'shortdash' | 'dot' | 'dashdot';\n}\n\nexport interface FillStyle {\n fillColor?: string;\n fillOpacity?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Vector overlays\n// ---------------------------------------------------------------------------\n\nexport interface PolylineOptions extends StrokeStyle {\n path: LatLng[] | LatLng[][];\n geodesic?: boolean;\n clickable?: boolean;\n zIndex?: number;\n visible?: boolean;\n}\n\nexport interface PolygonOptions extends StrokeStyle, FillStyle {\n /** First array = outer ring; subsequent arrays = holes */\n paths: LatLng[] | LatLng[][];\n geodesic?: boolean;\n clickable?: boolean;\n zIndex?: number;\n visible?: boolean;\n}\n\nexport interface CircleOptions extends StrokeStyle, FillStyle {\n center: LatLng;\n /** Radius in meters */\n radius: number;\n clickable?: boolean;\n zIndex?: number;\n visible?: boolean;\n}\n\nexport interface RectangleOptions extends StrokeStyle, FillStyle {\n bounds: LatLngBounds;\n clickable?: boolean;\n zIndex?: number;\n visible?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Custom HTML overlay\n// ---------------------------------------------------------------------------\n\nexport interface CustomOverlayOptions {\n position: LatLng;\n content: HTMLElement;\n zIndex?: number;\n visible?: boolean;\n clickable?: boolean;\n}\n\nexport interface MapProjection {\n fromLatLngToPoint(latlng: LatLng): Point;\n fromPointToLatLng(point: Point): LatLng;\n fromLatLngToDivPixel(latlng: LatLng): Point;\n}\n\n// ---------------------------------------------------------------------------\n// Tile layer\n// ---------------------------------------------------------------------------\n\nexport interface TileCoord {\n x: number;\n y: number;\n}\n\nexport interface TileLayerOptions {\n getTileUrl: (coord: TileCoord, zoom: number) => string;\n tileSize?: number;\n minZoom?: number;\n maxZoom?: number;\n opacity?: number;\n zIndex?: number;\n attribution?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Camera / viewport\n// ---------------------------------------------------------------------------\n\nexport interface FitBoundsOptions {\n padding?: Partial<Padding> | number;\n animate?: boolean;\n}\n\nexport interface PanOptions {\n animate?: boolean;\n duration?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Marker clustering\n// ---------------------------------------------------------------------------\n\nexport interface ClusterStyle {\n /** Custom icon URL. If omitted, a default filled circle is rendered. */\n url?: string;\n width: number;\n height: number;\n textColor?: string;\n textSize?: number;\n backgroundColor?: string;\n /** Pixel offset [x, y] from the anchor point to the top-left of the element. */\n anchor?: [number, number];\n}\n\nexport interface ClusterOptions {\n /** Minimum number of markers required to form a cluster. Default: 2 */\n minClusterSize?: number;\n /** Above this facade zoom level, clustering is disabled. Default: 15 */\n maxZoom?: number;\n /** Size of each grid cell in pixels. Default: 60 */\n gridSize?: number;\n /** Per-tier styles (index 0 = small, 1 = medium, 2 = large). Defaults to built-in circles. */\n styles?: ClusterStyle[];\n /** Place cluster pin at centroid of its markers. Default: false (uses first marker position) */\n averageCenter?: boolean;\n}\n"]}