{"version":3,"sources":["jsdelivr-header.js","/npm/react-naver-maps@0.1.5/src/index.ts","/npm/react-naver-maps@0.1.5/src/contexts/client-options.ts","/npm/react-naver-maps@0.1.5/src/provider.tsx","/npm/react-naver-maps@0.1.5/src/naver-map.tsx","/npm/react-naver-maps@0.1.5/src/contexts/container.ts","/npm/react-naver-maps@0.1.5/src/contexts/event-target.ts","/npm/react-naver-maps@0.1.5/src/contexts/naver-map.ts","/npm/react-naver-maps@0.1.5/src/helpers/event.tsx","/npm/react-naver-maps@0.1.5/src/listener.tsx","/npm/react-naver-maps@0.1.5/src/hooks/use-previous.ts","/npm/react-naver-maps@0.1.5/src/use-navermaps.ts","/npm/react-naver-maps@0.1.5/src/load-navermaps-script.tsx","/npm/react-naver-maps@0.1.5/src/utils/load-script.ts","/npm/react-naver-maps@0.1.5/src/container.tsx","/npm/react-naver-maps@0.1.5/src/overlays/circle.tsx","/npm/react-naver-maps@0.1.5/src/overlay.tsx","/npm/react-naver-maps@0.1.5/src/utils/omit-undefined.ts","/npm/react-naver-maps@0.1.5/src/overlays/ellipse.tsx","/npm/react-naver-maps@0.1.5/src/overlays/ground-overlay.tsx","/npm/react-naver-maps@0.1.5/src/overlays/info-window.tsx","/npm/react-naver-maps@0.1.5/src/overlays/marker.tsx","/npm/react-naver-maps@0.1.5/src/utils/get-keys.ts","/npm/react-naver-maps@0.1.5/src/utils/uncontrolled.ts","/npm/react-naver-maps@0.1.5/src/overlays/polygon.tsx","/npm/react-naver-maps@0.1.5/src/overlays/polyline.tsx","/npm/react-naver-maps@0.1.5/src/overlays/rectangle.tsx","/npm/react-naver-maps@0.1.5/src/deprecated.tsx"],"names":[],"mappings":"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","file":"/npm/react-naver-maps@0.1.5/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-naver-maps@0.1.5/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\n\nexport { NavermapsProvider } from './provider';\nexport { NaverMap } from './naver-map';\nexport { Container } from './container';\nexport { Circle } from './overlays/circle';\nexport { Ellipse } from './overlays/ellipse';\nexport { GroundOverlay } from './overlays/ground-overlay';\nexport { InfoWindow } from './overlays/info-window';\nexport { Marker } from './overlays/marker';\nexport { Polygon } from './overlays/polygon';\nexport { Polyline } from './overlays/polyline';\nexport { Rectangle } from './overlays/rectangle';\nexport type { Props as NaverMapsProviderProps } from './provider';\nexport type { Props as NaverMapProps } from './naver-map';\nexport type { Props as ContainerProps } from './container';\nexport type { Props as CircleProps } from './overlays/circle';\nexport type { Props as EllipseProps } from './overlays/ellipse';\nexport type { Props as GroundOverlayProps } from './overlays/ground-overlay';\nexport type { Props as InfoWindowProps } from './overlays/info-window';\nexport type { Props as MarkerProps } from './overlays/marker';\nexport type { Props as PolygonProps } from './overlays/polygon';\nexport type { Props as PolylineProps } from './overlays/polyline';\nexport type { Props as RectangleProps } from './overlays/rectangle';\n\nexport { LoadNavermapsScript, loadNavermapsScript } from './load-navermaps-script';\nexport { useNavermaps } from './use-navermaps';\n\nexport { NaverMapContext, useMap } from './contexts/naver-map';\nexport { ContainerContext, useContainerContext } from './contexts/container';\nexport type { ContainerContextType } from './contexts/container';\nexport { EventTargetContext, useEventTarget } from './contexts/event-target';\nexport { useListener, Listener } from './listener';\nexport type { Props as ListenerProps } from './listener';\nexport { Overlay } from './overlay';\nexport type { Props as OverlayProps } from './overlay';\n\nexport { NcpOptions, GovOptions, finOptions, ClientOptions } from './types/client';\nexport { UIEventHandlers } from './types/event';\n\n/**\n * v0.0 alert을 위한 deprecated component\n */\nexport { RenderAfterNavermapsLoaded } from './deprecated';\n","import { createContext, useContext } from 'react';\n\nimport type { ClientOptions } from '../types/client';\n\nexport const ClientOptionsContext = createContext<ClientOptions>({} as ClientOptions);\nexport const useClientOptions = () => useContext(ClientOptionsContext);\n","import type { ReactNode } from 'react';\n\nimport { ClientOptionsContext } from './contexts/client-options';\nimport type { ClientOptions } from './types/client';\n\nexport type Props = ClientOptions & { children?: ReactNode };\n\nexport function NavermapsProvider({\n  children,\n  ...clientOptions\n}: Props) {\n  return (\n    <ClientOptionsContext.Provider value={clientOptions}>\n      {children}\n    </ClientOptionsContext.Provider>\n  );\n}\n","import { pick, upperFirst } from 'lodash-es';\nimport { forwardRef, useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useContainerContext } from './contexts/container';\nimport { EventTargetContext } from './contexts/event-target';\nimport { NaverMapContext } from './contexts/naver-map';\nimport { HandleEvents } from './helpers/event';\nimport { usePrevious } from './hooks/use-previous';\nimport { useNavermaps } from './use-navermaps';\n\ntype MapPaddingOptions = {\n  top?: number;\n  right?: number;\n  bottom?: number;\n  left?: number;\n};\n\ntype MapOptions = {\n  background?: string;\n  baseTileOpacity?: number;\n  /**\n   * @type naver.maps.Bounds | naver.maps.BoundsLiteral | null\n   */\n  bounds?: naver.maps.Bounds | naver.maps.BoundsLiteral | null;\n  /**\n   * @type naver.maps.Coord | naver.maps.CoordLiteral\n   */\n  center?: naver.maps.Coord | naver.maps.CoordLiteral;\n  disableDoubleClickZoom?: boolean;\n  disableDoubleTapZoom?: boolean;\n  disableKineticPan?: boolean;\n  disableTwoFingerTapZoom?: boolean;\n  draggable?: boolean;\n  keyboardShortcuts?: boolean;\n  logoControl?: boolean;\n  logoControlOptions?: naver.maps.LogoControlOptions;\n  mapDataControl?: boolean;\n  mapDataControlOptions?: naver.maps.MapDataControlOptions;\n  mapTypeControl?: boolean;\n  mapTypeControlOptions?: naver.maps.MapTypeControlOptions;\n  mapTypeId?: string;\n  mapTypes?: naver.maps.MapTypeRegistry;\n  maxBounds?: naver.maps.Bounds | naver.maps.BoundsLiteral | null;\n  maxZoom?: number;\n  minZoom?: number;\n  padding?: MapPaddingOptions;\n  pinchZoom?: boolean;\n  resizeOrigin?: naver.maps.Position;\n  scaleControl?: boolean;\n  scaleControlOptions?: naver.maps.ScaleControlOptions;\n  scrollWheel?: boolean;\n  size?: naver.maps.Size | naver.maps.SizeLiteral;\n  overlayZoomEffect?: string | null;\n  tileSpare?: number;\n  tileTransition?: boolean;\n  zoom?: number;\n  zoomControl?: boolean;\n  zoomControlOptions?: naver.maps.ZoomControlOptions;\n  zoomOrigin?: naver.maps.Coord | naver.maps.CoordLiteral | null;\n  blankTileImage?: string | null;\n\n  // special.\n  centerPoint?: naver.maps.Point | naver.maps.PointLiteral;\n};\n\ntype Uncontrolled = {\n  /**\n   * Uncontrolled prop of mapTypeId\n   */\n  defaultMapTypeId?: MapOptions['mapTypeId'];\n  /**\n   * Uncontrolled prop of size\n   * @type naver.maps.Coord | naver.maps.CoordLiteral\n   */\n  defaultSize?: MapOptions['size'];\n  /**\n   * Uncontrolled prop of bounds\n   * @type naver.maps.Bounds | naver.maps.BoundsLiteral | null\n   */\n  defaultBounds?: MapOptions['bounds'];\n  /**\n   * Uncontrolled prop of center\n   * @type naver.maps.Coord | naver.maps.CoordLiteral\n   */\n  defaultCenter?: MapOptions['center'];\n  /**\n   * Uncontrolled prop of zoom\n   */\n  defaultZoom?: MapOptions['zoom'];\n  /**\n   * Uncontrolled prop of centerPoint\n   * @type naver.maps.Point | naver.maps.PointLiteral\n   */\n  defaultCenterPoint?: MapOptions['centerPoint'];\n};\n\ntype MapEventCallbacks = {\n  onMapTypeIdChanged?: (value: string) => void;\n  onMapTypeChanged?: (value: naver.maps.MapType) => void;\n  onSizeChanged?: (value: naver.maps.Size) => void;\n  onBoundsChanged?: (value: naver.maps.Bounds) => void;\n  onCenterChanged?: (value: naver.maps.Coord) => void;\n  onCenterPointChanged?: (value: naver.maps.Point) => void;\n  onZoomChanged?: (value: number) => void;\n};\n\nconst basicMapOptionKeys: Array<keyof MapOptions> = [\n  'background',\n  'baseTileOpacity',\n  // 'bounds',\n  // 'center',\n  'disableDoubleClickZoom',\n  'disableDoubleTapZoom',\n  'disableKineticPan',\n  'disableTwoFingerTapZoom',\n  'draggable',\n  'keyboardShortcuts',\n  'logoControl',\n  'logoControlOptions',\n  'mapDataControl',\n  'mapDataControlOptions',\n  'mapTypeControl',\n  'mapTypeControlOptions',\n  // 'mapTypeId',\n  'mapTypes',\n  'maxBounds',\n  'maxZoom',\n  'minZoom',\n  'padding',\n  'pinchZoom',\n  'resizeOrigin',\n  'scaleControl',\n  'scaleControlOptions',\n  'scrollWheel',\n  // 'size',\n  'overlayZoomEffect',\n  'tileSpare',\n  'tileTransition',\n  // 'zoom',\n  'zoomControl',\n  'zoomControlOptions',\n  'zoomOrigin',\n  'blankTileImage',\n];\n\nconst kvoKeys = [\n  'mapTypeId',\n  'size',\n  'bounds',\n  'center',\n  'zoom',\n  'centerPoint',\n] as const;\n\nconst kvoEvents = [\n  ...kvoKeys.map(key => `${key}_changed`),\n  'mapType_changed', // special. https://navermaps.github.io/maps.js.ncp/docs/naver.maps.Map.html#event:mapType_changed__anchor\n];\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'dragstart',\n  'drag',\n  'dragend',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'pinchstart',\n  'pinch',\n  'pinchend',\n  'tap',\n  'longtap',\n  'twofingertap',\n  'doubletap',\n] as const;\nconst mapOnlyEvents = [\n  'addLayer',\n  'idle',\n  'init',\n  'keydown',\n  'keyup',\n  'panning',\n  'projection_changed',\n  'removeLayer',\n  'resize',\n  'tilesloaded',\n  'zooming',\n] as const;\nconst events = [...uiEvents, ...kvoEvents, ...mapOnlyEvents];\n\n// type FunctionTypeChildren = (nmap: naver.maps.Map) => React.ReactNode;\n\nconst defaultOptionKeyMap = {\n  mapTypeId: 'defaultMapTypeId',\n  size: 'defaultSize',\n  bounds: 'defaultBounds',\n  center: 'defaultCenter',\n  zoom: 'defaultZoom',\n  centerPoint: 'defaultCenterPoint',\n} as const;\n\nexport type Props = Uncontrolled & {\n  /**\n   * Map 관련 components\n   */\n  children?: ReactNode;\n} & MapOptions & MapEventCallbacks;\n\nexport const NaverMap = forwardRef<naver.maps.Map | null, Props>(function NaverMap(props, ref) {\n  const navermaps = useNavermaps();\n  const { element: mapDiv } = useContainerContext();\n  const [nmap, setNmap] = useState<naver.maps.Map>();\n  const nmapRef = useRef<naver.maps.Map>();\n\n  // https://github.com/facebook/react/issues/20090\n  useLayoutEffect(() => {\n    if (!mapDiv) {\n      throw new Error('react-naver-maps: MapDiv is not found. Did you correctly wrap with `MapDiv`?');\n    }\n\n    const basicMapOptions = pick(props, basicMapOptionKeys);\n    const kvos = kvoKeys.reduce((acc, key) => {\n      // default kvo\n      if (props[defaultOptionKeyMap[key]]) {\n        return {\n          ...acc,\n          [key]: props[defaultOptionKeyMap[key]],\n        };\n      }\n\n      // kvo\n      if (props[key]) {\n        return {\n          ...acc,\n          [key]: props[key],\n        };\n      }\n\n      return acc;\n    }, {});\n\n    const _nmap = new navermaps.Map(mapDiv, { ...basicMapOptions, ...kvos } as naver.maps.MapOptions);\n    setNmap(_nmap);\n    // for ref hack\n    nmapRef.current = _nmap;\n\n    return () => {\n      _nmap.destroy();\n    };\n  }, []);\n\n  const uncontrolledOmittedProps = (Object.keys(props) as Array<keyof Props>).reduce((acc, key) => {\n    // kvo key가 defaultKvo key와 함께 있을 경우 무시한다.\n    if (key in defaultOptionKeyMap && props[defaultOptionKeyMap[key as keyof typeof defaultOptionKeyMap]]) {\n      return acc;\n    }\n\n    return {\n      ...acc,\n      [key]: props[key],\n    };\n  }, {}) as Props;\n\n  // nmap 이 layoutEffect에서 생성되므로 항상 Map이 존재한다.\n  useImperativeHandle<naver.maps.Map | undefined, naver.maps.Map | undefined>(ref, () => nmapRef.current);\n\n  return (\n    <>{nmap && <NaverMapCore {...uncontrolledOmittedProps} nmap={nmap} />}</>\n  );\n});\n\nfunction NaverMapCore({ nmap, children, ...mapProps }: Props & { nmap: naver.maps.Map }) {\n  const basicMapOptions = pick(mapProps, basicMapOptionKeys);\n  const {\n    mapTypeId,\n    size,\n    bounds,\n    center,\n    centerPoint,\n    zoom,\n  } = mapProps;\n\n  const prevKVOs = usePrevious({\n    mapTypeId,\n    size,\n    bounds,\n    center,\n    centerPoint,\n    zoom,\n  }, [\n    mapTypeId,\n    size,\n    bounds,\n    center,\n    centerPoint,\n    zoom,\n  ]);\n\n  function getDirtyKVOs(keys: Array<typeof kvoKeys[number]>): Pick<Props, typeof kvoKeys[number]> {\n    return keys.reduce((acc, key) => {\n      const currentValue = (nmap[`get${upperFirst(key)}` as keyof naver.maps.Map] as () => unknown)() as any;\n      const propValue = mapProps[key];\n\n      if (!propValue || prevKVOs && prevKVOs[key] === propValue) {\n        return acc;\n      }\n\n      const isEqual = typeof currentValue?.equals === 'function' ? currentValue.equals(propValue) : currentValue === propValue;\n\n      if (isEqual) {\n        return acc;\n      }\n\n      return {\n        ...acc,\n        [key]: propValue,\n      };\n    }, {} as Pick<Props, typeof kvoKeys[number]>);\n  }\n\n  useLayoutEffect(() => {\n    nmap.setOptions(basicMapOptions);\n  }, [Object.values(basicMapOptions)]);\n\n  useLayoutEffect(() => {\n    const updated = getDirtyKVOs(['size']).size;\n    if (updated) {\n      nmap.setSize(updated);\n    }\n  }, [size]);\n\n  useLayoutEffect(() => {\n    const updated = getDirtyKVOs(['mapTypeId']).mapTypeId;\n    if (updated) {\n      nmap.setMapTypeId(updated);\n    }\n  }, [mapTypeId]);\n\n  useLayoutEffect(() => {\n    const dirties = getDirtyKVOs(['bounds', 'center', 'centerPoint', 'zoom']);\n\n    if (dirties.bounds) {\n      // TODO\n      nmap.fitBounds(dirties.bounds);\n\n      // Ignore rest kvos\n      return;\n    }\n\n    if (dirties.center && dirties.zoom) {\n\n      nmap.morph(dirties.center, dirties.zoom);\n\n      // Ignore rest kvos\n      return;\n    }\n\n    if (dirties.centerPoint) {\n      nmap.setCenterPoint(dirties.centerPoint);\n    }\n\n    if (dirties.center) {\n      // TODO\n      nmap.panTo(dirties.center, {});\n    }\n\n    if (dirties.zoom) {\n      nmap.setZoom(dirties.zoom);\n    }\n  }, [bounds, center, centerPoint, zoom]);\n\n  return (\n    <NaverMapContext.Provider value={nmap}>\n      <EventTargetContext.Provider value={nmap}>\n        <>\n          <HandleEvents\n            events={events}\n            listeners={mapProps as any}\n          />\n          {children}\n        </>\n      </EventTargetContext.Provider>\n    </NaverMapContext.Provider>\n  );\n}\n","import { createContext, useContext } from 'react';\n\nexport type ContainerContextType = { element: HTMLElement | null };\n\nexport const ContainerContext = createContext<ContainerContextType>({ element: null });\nexport const useContainerContext = () => useContext(ContainerContext);\n","import { createContext, useContext } from 'react';\n\nexport const EventTargetContext = createContext<any | undefined>(undefined);\nexport const useEventTarget: () => any | undefined = () => useContext(EventTargetContext);\n","import { createContext, useContext } from 'react';\n\nexport const NaverMapContext = createContext<naver.maps.Map | undefined>(undefined);\nexport const useMap: () => naver.maps.Map | undefined = () => useContext(NaverMapContext);\n","\nimport camelcase from 'camelcase';\nimport { pick } from 'lodash-es';\nimport { useMemo } from 'react';\n\nimport { Listener } from '../listener';\n\ntype Props = {\n  events: string[];\n  listeners: Record<string, (...args: any[]) => any>;\n};\n\nexport function HandleEvents(props: Props) {\n  const { events, listeners: _listeners } = props;\n\n  const eventMap = useMemo(() => createEventMap(events), events);\n  const listeners = pick(_listeners, Object.keys(eventMap)) as unknown as Record<string, (e: any) => void>;\n\n  return (\n    <>\n      {Object.keys(listeners).map(key => {\n\n        const eventName = eventMap[key];\n        const listener = listeners[key];\n\n        return listener ? <Listener\n          key={key}\n          type={eventName}\n          listener={listener}\n        /> : null;\n      })}\n    </>\n  );\n}\n\n\nfunction createEventMap(events: string[]): Record<string, string> {\n  return events.reduce((acc, eventName) => {\n    const key = camelcase(`on_${eventName}`);\n\n    return {\n      [key]: eventName,\n      ...acc,\n    };\n  }, {});\n}\n","import { useEffect } from 'react';\nimport type { FunctionComponent } from 'react';\n\nimport { useEventTarget } from './contexts/event-target';\nimport type { AllowedKey } from './types/utils';\n\nexport function useListener(target: any, type: string, listener: (...args: any[]) => void) {\n  useEffect(() => {\n    const _listener = (...args: any[]) => listener(...args, target);\n    const mapEventListener = naver.maps.Event.addListener(target, type, _listener);\n\n    return () => {\n      naver.maps.Event.removeListener(mapEventListener);\n    };\n  }, [target, type, listener]);\n}\n\nexport interface Props {\n  target?: any;\n  type: string;\n  listener: (...args: any[]) => any;\n}\n\nexport const Listener: FunctionComponent<Props> = (props) => {\n  const {\n    target: propTarget,\n    type,\n    listener,\n  } = props;\n\n  const contextTarget = useEventTarget();\n  const target = propTarget || contextTarget;\n  if (!target) {\n    throw new Error('react-naver-maps: No Target to add listener');\n  }\n\n  // TODO: FIX DefinitelyTyped\n  useListener((target as unknown) as EventTarget, type, listener);\n\n  return null;\n};\n\nexport function getListenerKeys<P extends Record<string, any>>(props: P) {\n  return Object.keys(props).filter(key => /on[A-Z]\\w+/.test(key)) as unknown as Array<AllowedKey<P, `on${string}`>>;\n}\n","import { useRef, useEffect, DependencyList } from 'react';\n\nexport function usePrevious<T>(state: T, deps: DependencyList): T | undefined {\n  const ref = useRef<T>();\n\n  useEffect(() => {\n    ref.current = state;\n  }, deps);\n\n  return ref.current;\n}\n","import { suspend } from 'suspend-react';\n\nimport { useClientOptions } from './contexts/client-options';\nimport { loadNavermapsScript } from './load-navermaps-script';\nimport type { ClientOptions } from './types/client';\n\nasync function load(options?: ClientOptions): Promise<typeof naver.maps> {\n  if (typeof window !== 'undefined' && window.naver?.maps) {\n    return window.naver.maps;\n  }\n\n  if (!options) {\n    throw new Error('react-naver-maps: set options with `useNavermaps.config`');\n  }\n\n  return await loadNavermapsScript(options);\n}\n\nexport function useNavermaps() {\n  if (typeof window === 'undefined') {\n    throw new Error('react-naver-maps: browser');\n  }\n\n  /**\n   * TODO: Provider option 이 변경될 경우 클리어하는 로직 필요\n   * ex) submodule 에 파노라마 추가시 window.naver.maps가 존재하므로 새로 로드하지 않음\n   */\n  if (window.naver?.maps) {\n    return window.naver.maps;\n  }\n\n  const options = useClientOptions();\n\n  return suspend(load, [options, 'react-naver-maps/loadClient']);\n}\n\n// useNavermaps.preload = (options: any) => {\n//   if (!window) {\n//     return;\n//   }\n\n//   return preload(load, [options, 'react-naver-maps/loadClient']);\n// };\n\n// useNavermaps.clear = (options: any) => {\n//   return clear([options, 'react-naver-maps/loadClient']);\n// };\n","import { useEffect, useState } from 'react';\nimport type { ReactElement } from 'react';\n\nimport type { ClientOptions } from './types/client';\nimport { loadScript } from './utils/load-script';\n\nconst cachedPromises = new Map<string, Promise<typeof naver.maps>>();\n\nexport function loadNavermapsScript(options: ClientOptions) {\n  const url = makeUrl(options);\n\n  const cached = cachedPromises.get(url);\n  if (cached) {\n    return cached;\n  }\n\n  const promise = loadScript(url)\n    .then(() => {\n      const navermaps = window.naver?.maps;\n\n      if (!navermaps) {\n        throw new Error('react-naver-maps: Failed to load Naver Maps script. '\n          + 'window.naver.maps is not available. '\n          + 'Please check your client ID and network connection.');\n      }\n\n      if (navermaps.jsContentLoaded) {\n        return navermaps;\n      }\n\n      return new Promise<typeof naver.maps>(resolve => {\n        navermaps.onJSContentLoaded = () => {\n          resolve(navermaps);\n        };\n      });\n    })\n    .catch((err) => {\n      cachedPromises.delete(url);\n      throw err;\n    });\n\n  cachedPromises.set(url, promise);\n\n  return promise;\n}\n\nfunction makeUrl(options: ClientOptions) {\n  const submodules = options.submodules;\n\n  const clientIdQuery = 'ncpKeyId' in options ? `ncpKeyId=${options.ncpKeyId}` :\n    'ncpClientId' in options\n      ? `ncpClientId=${options.ncpClientId}`\n      : 'govClientId' in options\n        ? `govClientId=${options.govClientId}`\n        : 'finClientId' in options\n          ? `finClientId=${options.finClientId}`\n          : undefined;\n\n  if (!clientIdQuery) {\n    throw new Error('react-naver-maps: ncpKeyId, ncpClientId, govClientId or finClientId is required');\n  }\n\n  let url = `https://oapi.map.naver.com/openapi/v3/maps.js?${clientIdQuery}`;\n\n  if (submodules) {\n    url += `&submodules=${submodules.join(',')}`;\n  }\n\n  return url;\n}\n\n\ntype Props = ClientOptions & {\n  children: () => ReactElement;\n};\n\nexport function LoadNavermapsScript({\n  children: Children,\n  ...options\n}: Props) {\n  const [navermaps, setNavermaps] = useState<typeof naver.maps>();\n\n  useEffect(() => {\n    loadNavermapsScript(options)\n      .then((maps) => {\n        setNavermaps(maps);\n      })\n      .catch((err) => {\n        console.error(err);\n      });\n  }, []);\n\n  return (\n    (navermaps && Children) ? <Children /> : null\n  );\n}\n","import _loadScript from 'load-script';\n\nexport function loadScript(src: string): Promise<HTMLScriptElement> {\n  return new Promise((resolve, reject) => {\n    _loadScript(src, (err, script) => {\n      if (err) reject(err);\n      else resolve(script);\n    });\n  });\n}\n","import { Suspense, useEffect, useMemo, useRef, useState, createElement } from 'react';\nimport type { ReactNode, ComponentPropsWithoutRef, CSSProperties, ComponentType } from 'react';\n\nimport { ContainerContext, ContainerContextType } from './contexts/container';\n\nexport type Props = {\n  innerStyle?: CSSProperties;\n  fallback?: ReactNode;\n  /**\n   * 일반 children 혹은 render function\n   */\n  children?: ReactNode | ComponentType;\n} & Omit<ComponentPropsWithoutRef<'div'>, 'children'>;\n\nconst innerDefaultStyle: CSSProperties = { top: 0, left: 0, width: '100%', height: '100%', position: 'absolute', zIndex: 0 };\n\nexport function Container({ children, fallback, innerStyle = innerDefaultStyle, ...restProps }: Props) {\n  const ref = useRef(null);\n  const [isMounted, setIsMounted] = useState(false);\n\n  useEffect(() => {\n    setIsMounted(true);\n  }, []);\n\n  const containerContext = useMemo<ContainerContextType>(() => ({ element: ref.current }), [ref.current]);\n\n  return (\n    <div {...restProps} style={{ position: 'relative', ...restProps.style }}>\n      <div key='mapdiv' ref={ref} style={innerStyle} />\n      {isMounted && ref.current ? (\n        <ContainerContext.Provider value={containerContext}>\n          <Suspense fallback={null}>\n            {typeof children === 'function' ? createElement(children as ComponentType) : children}\n          </Suspense>\n        </ContainerContext.Provider>\n      ) : fallback}\n    </div>\n  );\n}\n","import { pick } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { omitUndefined } from '../utils/omit-undefined';\n\nconst primitiveKvoKeys = [\n  'radius',\n  'strokeWeight',\n  'strokeOpacity',\n  'strokeColor',\n  'strokeStyle',\n  'strokeLineCap',\n  'strokeLineJoin',\n  'fillColor',\n  'fillOpacity',\n  'clickable',\n  'visible',\n  'zIndex',\n] as const;\nconst kvoKeys = [\n  ...primitiveKvoKeys,\n  'center',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype CircleOptions = {\n  /**\n   * center\n   * @type naver.maps.Coord | naver.maps.CoordLiteral\n   */\n  center: naver.maps.Coord | naver.maps.CoordLiteral;\n  radius?: number;\n  strokeWeight?: number;\n  strokeOpacity?: number;\n  strokeColor?: string;\n  strokeStyle?: naver.maps.StrokeStyleType;\n  strokeLineCap?: naver.maps.StrokeLineCapType;\n  strokeLineJoin?: naver.maps.StrokeLineJoinType;\n  fillColor?: string;\n  fillOpacity?: number;\n  clickable?: boolean;\n  visible?: boolean;\n  zIndex?: number;\n};\n\nexport type Props = CircleOptions & {\n  onCenterChanged?: (value: naver.maps.Coord) => void;\n  onRadiusChanged?: (value: number) => void;\n  onStrokeWeightChanged?: (value: number) => void;\n  onStrokeOpacityChanged?: (value: number) => void;\n  onStrokeColorChanged?: (value: string) => void;\n  onStrokeStyleChanged?: (value: naver.maps.StrokeStyleType) => void;\n  onStrokeLineCapChanged?: (value: naver.maps.StrokeLineCapType) => void;\n  onStrokeLineJoinChanged?: (value: naver.maps.StrokeLineJoinType) => void;\n  onFillColorChanged?: (value: string) => void;\n  onFillOpacityChanged?: (value: number) => void;\n  onClickableChanged?: (event: boolean) => void;\n  onVisibleChanged?: (event: boolean) => void;\n  onZIndexChanged?: (event: number) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const Circle = forwardRef<naver.maps.Circle, Props>(function Circle(props, ref) {\n  const { center } = props;\n  const navermaps = useNavermaps();\n  const [circle] = useState(() => new navermaps.Circle(omitUndefined(pick(props, [...kvoKeys])) as CircleOptions));\n\n  useImperativeHandle<naver.maps.Circle | undefined, naver.maps.Circle | undefined>(ref, () => circle);\n\n  useEffect(() => {\n    if (center && !circle.getCenter().equals(center as naver.maps.Point)) {\n      circle.setCenter(center);\n    }\n  }, [center]);\n\n  useEffect(() => {\n    circle.setOptions(omitUndefined(pick(props, primitiveKvoKeys)) as CircleOptions);\n  }, primitiveKvoKeys.map(key => props[key]));\n\n  return (\n    <Overlay element={circle}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","import { useEffect } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { EventTargetContext } from './contexts/event-target';\nimport { useMap } from './contexts/naver-map';\n\ntype MapElementType = {\n  setMap(map: naver.maps.Map | null): void;\n  getMap(): naver.maps.Map | null;\n};\n\nexport type Props = {\n  element: MapElementType;\n  children?: ReactNode;\n  autoMount?: boolean;\n};\n\nexport function Overlay(props: Props) {\n  const { element, children, autoMount = true } = props;\n  const nmap = useMap();\n\n  useEffect(() => {\n    if (!autoMount) {\n      return;\n    }\n\n    if (element.getMap() === nmap) {\n      return;\n    }\n\n    element.setMap(nmap ? nmap : null);\n    return () => {\n      element.setMap(null);\n    };\n  }, [nmap]);\n\n  return (\n    <EventTargetContext.Provider value={element}>\n      {children}\n    </EventTargetContext.Provider>\n  );\n}\n","export function omitUndefined<T extends Record<string, any>>(obj: T): Partial<T> {\n  return Object.keys(obj).reduce((acc, key) => {\n    if (obj[key] === 'undefined') {\n      return acc;\n    }\n    return {\n      ...acc,\n      [key]: obj[key],\n    };\n  }, {});\n}\n","import { pick } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { omitUndefined } from '../utils/omit-undefined';\n\nconst primitiveKvoKeys = [\n  'strokeWeight',\n  'strokeOpacity',\n  'strokeColor',\n  'strokeStyle',\n  'strokeLineCap',\n  'strokeLineJoin',\n  'fillColor',\n  'fillOpacity',\n  'clickable',\n  'visible',\n  'zIndex',\n] as const;\nconst kvoKeys = [\n  ...primitiveKvoKeys,\n  'bounds',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype EllipseOptions = {\n  /**\n   * bounds\n   * @type naver.maps.Bounds | naver.maps.BoundsLiteral\n   */\n  bounds: naver.maps.Bounds | naver.maps.BoundsLiteral;\n  strokeWeight?: number;\n  strokeOpacity?: number;\n  strokeColor?: string;\n  strokeStyle?: naver.maps.StrokeStyleType;\n  strokeLineCap?: naver.maps.StrokeLineCapType;\n  strokeLineJoin?: naver.maps.StrokeLineJoinType;\n  fillColor?: string;\n  fillOpacity?: number;\n  clickable?: boolean;\n  visible?: boolean;\n  zIndex?: number;\n};\n\nexport type Props = EllipseOptions & {\n  onBoundsChanged?: (value: naver.maps.Bounds) => void;\n  onStrokeWeightChanged?: (value: number) => void;\n  onStrokeOpacityChanged?: (value: number) => void;\n  onStrokeColorChanged?: (value: string) => void;\n  onStrokeStyleChanged?: (value: naver.maps.StrokeStyleType) => void;\n  onStrokeLineCapChanged?: (value: naver.maps.StrokeLineCapType) => void;\n  onStrokeLineJoinChanged?: (value: naver.maps.StrokeLineJoinType) => void;\n  onFillColorChanged?: (value: string) => void;\n  onFillOpacityChanged?: (value: number) => void;\n  onClickableChanged?: (event: boolean) => void;\n  onVisibleChanged?: (event: boolean) => void;\n  onZIndexChanged?: (event: number) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const Ellipse = forwardRef<naver.maps.Ellipse, Props>(function Ellipse(props, ref) {\n  const { bounds } = props;\n  const navermaps = useNavermaps();\n  const [ellipse] = useState(() => new navermaps.Ellipse(omitUndefined(pick(props, [...kvoKeys])) as EllipseOptions));\n\n  useImperativeHandle<naver.maps.Ellipse | undefined, naver.maps.Ellipse | undefined>(ref, () => ellipse);\n\n  useEffect(() => {\n    ellipse.setOptions(omitUndefined(pick(props, primitiveKvoKeys)) as EllipseOptions); // TODO: FIX DefinilyTyped. setOptions의 assign type 은 Partial<Options> 이어야 함\n  }, primitiveKvoKeys.map(key => props[key]));\n\n  useEffect(() => {\n    if (bounds && ellipse.getBounds().equals(bounds as naver.maps.Bounds)) {\n      ellipse.setBounds(bounds);\n    }\n  }, [bounds]);\n\n  return (\n    <Overlay element={ellipse}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","import { pick } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\n\nconst kvoKeys = [\n  'clickable',\n  'opacity',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype GroundOverlayOptions = {\n  clickable?: boolean;\n  opacity?: number;\n};\n\nexport type Props = GroundOverlayOptions & {\n  url: string;\n  /**\n   * bounds\n   * @type naver.maps.Bounds | naver.maps.BoundsLiteral\n   */\n  bounds: naver.maps.Bounds | naver.maps.BoundsLiteral;\n  onOpacityChanged?: (value: number) => void;\n  onClickableChanged?: (event: boolean) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const GroundOverlay = forwardRef<naver.maps.GroundOverlay, Props>(function GroundOverlay(props, ref) {\n  const options = pick(props, kvoKeys);\n  const { url, bounds } = props;\n  const navermaps = useNavermaps();\n  const [groundOverlay, setGroundOverlay] = useState(() => new navermaps.GroundOverlay(url, bounds, options));\n\n  useImperativeHandle<naver.maps.GroundOverlay | undefined, naver.maps.GroundOverlay | undefined>(ref, () => groundOverlay, [groundOverlay]);\n\n  useEffect(() => {\n    if (groundOverlay.getUrl() !== url || groundOverlay.getBounds().equals(bounds as naver.maps.Bounds)) {\n      setGroundOverlay(new naver.maps.GroundOverlay(url, bounds, options));\n    }\n  }, [url, bounds]);\n\n  useEffect(() => {\n    kvoKeys.forEach(key => {\n      if (options[key] && groundOverlay.get(key) !== options[key]) {\n        groundOverlay.set(key, options[key]);\n      }\n    });\n  }, kvoKeys.map(key => options[key]));\n\n  return (\n    <Overlay element={groundOverlay}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","import { pick } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { omitUndefined } from '../utils/omit-undefined';\n\nconst primitiveKvoKeys = [\n  'content',\n  'zIndex',\n  'maxWidth',\n  'pixelOffset',\n  'backgroundColor',\n  'borderColor',\n  'borderWidth',\n  'disableAutoPan',\n  'disableAnchor',\n  'anchorSkew',\n  'anchorSize',\n  'anchorColor',\n] as const;\nconst kvoKeys = [\n  ...primitiveKvoKeys,\n  'position',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype InfoWindowOptions = {\n  /**\n   * position\n   * @type naver.maps.Coord | naver.maps.CoordLiteral\n   */\n  position?: naver.maps.Coord | naver.maps.CoordLiteral;\n  content: string;\n  zIndex?: number;\n  maxWidth?: number;\n  /**\n   * @type naver.maps.Point | naver.maps.PointLiteral\n   */\n  pixelOffset?: naver.maps.Point | naver.maps.PointLiteral;\n  backgroundColor?: string;\n  borderColor?: string;\n  borderWidth?: number;\n  disableAutoPan?: boolean;\n  disableAnchor?: boolean;\n  anchorSkew?: boolean;\n  /**\n   * @type naver.maps.Size | naver.maps.SizeLiteral\n   */\n  anchorSize?: naver.maps.Size | naver.maps.SizeLiteral;\n  anchorColor?: string;\n};\n\nexport type Props = InfoWindowOptions & {\n  onPositionChanged?: (value: naver.maps.Coord) => void;\n  onContentChanged?: (value: HTMLElement) => void;\n  onZIndexChanged?: (value: number) => void;\n  onMaxWidthChanged?: (value: number) => void;\n  onPixelOffsetChanged?: (value: naver.maps.Point) => void;\n  onBackgroundColorChanged?: (value: string) => void;\n  onBorderColorChanged?: (value: string) => void;\n  onBorderWidthChanged?: (value: number) => void;\n  onDisableAutoPanChanged?: (value: boolean) => void;\n  onDisableAnchorChanged?: (value: boolean) => void;\n  onAnchorSkewChanged?: (value: boolean) => void;\n  onAnchorSizeChanged?: (value: naver.maps.Size) => void;\n  onAnchorColorChanged?: (value: string) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const InfoWindow = forwardRef<naver.maps.InfoWindow, Props>(function InfoWindow(props, ref) {\n  const { position } = props;\n  const navermaps = useNavermaps();\n  const [infoWindow] = useState(() => new navermaps.InfoWindow(omitUndefined(pick(props, [...kvoKeys])) as InfoWindowOptions));\n\n  useImperativeHandle<naver.maps.InfoWindow | undefined, naver.maps.InfoWindow | undefined>(ref, () => infoWindow);\n\n  useEffect(() => {\n    infoWindow.setOptions(omitUndefined(pick(props, primitiveKvoKeys)) as InfoWindowOptions); // TODO: FIX DefinilyTyped\n  }, primitiveKvoKeys.map(key => props[key]));\n\n  useEffect(() => {\n    if (position && infoWindow.getPosition().equals(position as naver.maps.Point)) {\n      infoWindow.setPosition(position);\n    }\n  }, [position]);\n\n  return (\n    <Overlay element={infoWindow} autoMount={false}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","import { mapKeys, pick } from 'lodash-es';\nimport { forwardRef, useLayoutEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { useFirstMountState } from 'react-use';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { getKeys } from '../utils/get-keys';\nimport { omitUndefined } from '../utils/omit-undefined';\nimport { getUncontrolledKey, makeUncontrolledKeyMap, UncontrolledKey } from '../utils/uncontrolled';\n\nconst primitiveKeys = [\n  'animation',\n  'icon',\n  'shape',\n  'title',\n  'cursor',\n  'clickable',\n  'draggable',\n  'visible',\n  'zIndex',\n] as const;\nconst locationalKeys = ['position'] as const;\nconst uncontrolledKeyMap = makeUncontrolledKeyMap(locationalKeys);\nconst kvoKeys = [\n  ...primitiveKeys,\n  ...locationalKeys,\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'dragstart',\n  'drag',\n  'dragend',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype MarkerKVO = {\n  /** Animation??? */\n  animation: naver.maps.Animation;\n  position: naver.maps.Coord | naver.maps.CoordLiteral;\n  icon: string | naver.maps.ImageIcon | naver.maps.SymbolIcon | naver.maps.HtmlIcon;\n  shape: naver.maps.MarkerShape;\n  title: string;\n  cursor: string;\n  clickable: boolean;\n  draggable: boolean;\n  visible: boolean;\n  zIndex: number;\n};\n\ntype UncontrolledProps = {\n  [key in typeof locationalKeys[number] as UncontrolledKey<key>]: MarkerKVO[key];\n};\n\n// TODO: Fix DefinitelyTyped\ntype MarkerOptions = Partial<MarkerKVO>;\n\nexport type Props = MarkerOptions & Partial<UncontrolledProps> & UIEventHandlers<typeof uiEvents> & {\n  onAnimationChanged?: (value: naver.maps.Animation) => void;\n  onPositionChanged?: (value: naver.maps.Coord) => void;\n  onIconChanged?: (value: string | naver.maps.ImageIcon | naver.maps.HtmlIcon | naver.maps.SymbolIcon) => void;\n  onShapeChanged?: (event: naver.maps.MarkerShape) => void;\n  onTitleChanged?: (event: string) => void;\n  onCursorChanged?: (event: string) => void;\n  onClickableChanged?: (event: boolean) => void;\n  onDraggableChanged?: (event: boolean) => void;\n  onVisibleChanged?: (event: boolean) => void;\n  /**\n   * hello yeah\n   * @param event helo?\n   * @returns\n   */\n  onZIndexChanged?: (event: number) => void;\n};\n\nfunction makeInitialOption(props: Props) {\n  const uncontrolledProps = pick(props, getKeys(uncontrolledKeyMap));\n  const prefixCleared = mapKeys(uncontrolledProps, (_, key) => uncontrolledKeyMap[key as keyof typeof uncontrolledKeyMap]);\n  const kvoProps = pick(props, kvoKeys);\n\n  return omitUndefined({ ...kvoProps, ...prefixCleared });\n}\n\nfunction isLocationalKey(key: string): key is typeof locationalKeys[number] {\n  return locationalKeys.includes(key as typeof locationalKeys[number]);\n}\n\nfunction isEqualKvo(kvo: any, target: any) {\n  if (kvo === undefined) {\n    return false;\n  }\n\n  if (kvo === target) {\n    return true;\n  }\n\n  try {\n    return kvo.equals(target);\n  } catch {\n    return kvo === target;\n  }\n}\n\nexport const Marker = forwardRef<naver.maps.Marker, Props>(function Marker(props, ref) {\n  const navermaps = useNavermaps();\n  const [marker] = useState(() => new navermaps.Marker(makeInitialOption(props) as naver.maps.MarkerOptions));\n  useImperativeHandle<naver.maps.Marker | undefined, naver.maps.Marker | undefined>(ref, () => marker);\n\n  // make dirties\n  const isFirst = useFirstMountState();\n  const dirtiesRef = useRef<Pick<Props, typeof kvoKeys[number]>>({});\n  dirtiesRef.current = getDirties();\n\n  function getDirties() {\n    // initialize의 option과 중복되지 않도록 첫 렌더시 제외한다.\n    if (isFirst) {\n      return {};\n    }\n\n    return kvoKeys.reduce((acc, key) => {\n      if (props[key] === undefined) {\n        return acc;\n      }\n\n      if (isLocationalKey(key) && props[getUncontrolledKey(key)] !== undefined) {\n        return acc;\n      }\n\n      const kvos = marker.getOptions(key);\n      if (isEqualKvo(kvos[key], props[key])) {\n        return acc;\n      }\n\n      return {\n        ...acc,\n        [key]: props[key],\n      };\n    }, {});\n  }\n\n  function pickDirties(keys: readonly string[]) {\n    return pick(dirtiesRef.current, keys);\n  }\n\n  // side effects\n  useLayoutEffect(() => {\n    const { position } = pickDirties(['position']);\n    if (position) {\n      marker.setPosition(position);\n    }\n  }, [dirtiesRef.current['position']]);\n\n  useLayoutEffect(() => {\n    const dirties = pickDirties(primitiveKeys);\n    if (Object.values(dirties).length < 1) {\n      return;\n    }\n\n    marker.setOptions(dirties as naver.maps.MarkerOptions);\n  }, primitiveKeys.map(key => dirtiesRef.current[key]));\n\n  return (\n    <Overlay element={marker}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","export function getKeys<T extends Record<string, any>>(obj: T): Array<keyof T> {\n  return Object.keys(obj);\n}\n","import camelcase from 'camelcase';\n\nexport type UncontrolledKey<T extends string> = `default${Capitalize<T>}`;\n\nexport function getUncontrolledKey<T extends string>(key: T): UncontrolledKey<T> {\n  return camelcase(`default_${key}`) as UncontrolledKey<T>;\n}\n\nexport function makeUncontrolledKeyMap<T extends readonly string[]>(keys: T) {\n  return keys.reduce((acc, key) => ({ ...acc, [getUncontrolledKey(key)]: key }), {}) as {\n    [key in typeof keys[number] as UncontrolledKey<key>]: key;\n  };\n}\n","import { pick } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { omitUndefined } from '../utils/omit-undefined';\n\nconst kvoKeys = [\n  'paths',\n  'strokeWeight',\n  'strokeOpacity',\n  'strokeColor',\n  'strokeStyle',\n  'strokeLineCap',\n  'strokeLineJoin',\n  'fillColor',\n  'fillOpacity',\n  'clickable',\n  'visible',\n  'zIndex',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype PolygonOptions = {\n  /**\n   * @type naver.maps.ArrayOfCoords[] | naver.maps.KVOArrayOfCoords[] | naver.maps.ArrayOfCoordsLiteral[]\n   */\n  paths: naver.maps.ArrayOfCoords[] | naver.maps.KVOArray<naver.maps.KVOArrayOfCoords> | naver.maps.ArrayOfCoordsLiteral[];\n  strokeWeight?: number;\n  strokeOpacity?: number;\n  strokeColor?: string;\n  strokeStyle?: naver.maps.StrokeStyleType;\n  strokeLineCap?: naver.maps.StrokeLineCapType;\n  strokeLineJoin?: naver.maps.StrokeLineJoinType;\n  fillColor?: string;\n  fillOpacity?: number;\n  clickable?: boolean;\n  visible?: boolean;\n  zIndex?: number;\n};\n\nexport type Props = PolygonOptions & {\n  onPathsChanged?: (value: Array<naver.maps.ArrayOfCoords>) => void;\n  onStrokeWeightChanged?: (value: number) => void;\n  onStrokeOpacityChanged?: (value: number) => void;\n  onStrokeColorChanged?: (value: string) => void;\n  onStrokeStyleChanged?: (value: naver.maps.StrokeStyleType) => void;\n  onStrokeLineCapChanged?: (value: naver.maps.StrokeLineCapType) => void;\n  onStrokeLineJoinChanged?: (value: naver.maps.StrokeLineJoinType) => void;\n  onFillColorChanged?: (value: string) => void;\n  onFillOpacityChanged?: (value: number) => void;\n  onClickableChanged?: (event: boolean) => void;\n  onVisibleChanged?: (event: boolean) => void;\n  onZIndexChanged?: (event: number) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const Polygon = forwardRef<naver.maps.Polygon, Props>(function Polygon(props, ref) {\n  const options = pick(props, [...kvoKeys]);\n  const navermaps = useNavermaps();\n  const [polygon] = useState(() => new navermaps.Polygon(options));\n\n  useImperativeHandle<naver.maps.Polygon | undefined, naver.maps.Polygon | undefined>(ref, () => polygon);\n\n  useEffect(() => {\n    polygon.setOptions(omitUndefined(options) as PolygonOptions); // TODO: FIX DefinilyTyped. setOptions의 assign type 은 Partial<Options> 이어야 함\n  }, kvoKeys.map(key => options[key]));\n\n  return (\n    <Overlay element={polygon}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","import { pick } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { omitUndefined } from '../utils/omit-undefined';\n\nconst kvoKeys = [\n  'path',\n  'strokeWeight',\n  'strokeOpacity',\n  'strokeColor',\n  'strokeStyle',\n  'strokeLineCap',\n  'strokeLineJoin',\n  'clickable',\n  'visible',\n  'zIndex',\n  'startIcon',\n  'startIconSize',\n  'endIcon',\n  'endIconSize',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'mousedown',\n  'mouseup',\n  'click',\n  'dblclick',\n  'rightclick',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype PolylineOptions = {\n  /**\n   * @type naver.maps.ArrayOfCoords | naver.maps.KVOArrayOfCoords | naver.maps.ArrayOfCoordsLiteral\n   */\n  path: naver.maps.ArrayOfCoords | naver.maps.KVOArrayOfCoords | naver.maps.ArrayOfCoordsLiteral;\n  strokeWeight?: number;\n  strokeOpacity?: number;\n  strokeColor?: string;\n  strokeStyle?: naver.maps.StrokeStyleType;\n  strokeLineCap?: naver.maps.StrokeLineCapType;\n  strokeLineJoin?: naver.maps.StrokeLineJoinType;\n  clickable?: boolean;\n  visible?: boolean;\n  zIndex?: number;\n  startIcon?: naver.maps.PointingIcon;\n  startIconSize?: number;\n  endIcon?: naver.maps.PointingIcon;\n  endIconSize?: number;\n};\n\nexport type Props = PolylineOptions & {\n  onPathChanged?: (value: naver.maps.ArrayOfCoords) => void;\n  onStrokeWeightChanged?: (value: number) => void;\n  onStrokeOpacityChanged?: (value: number) => void;\n  onStrokeColorChanged?: (value: string) => void;\n  onStrokeStyleChanged?: (value: naver.maps.StrokeStyleType) => void;\n  onStrokeLineCapChanged?: (value: naver.maps.StrokeLineCapType) => void;\n  onStrokeLineJoinChanged?: (value: naver.maps.StrokeLineJoinType) => void;\n  onClickableChanged?: (value: boolean) => void;\n  onVisibleChanged?: (value: boolean) => void;\n  onZIndexChanged?: (value: number) => void;\n  onStartIconChanged?: (value: naver.maps.PointingIcon) => void;\n  onStartIconSizeChanged?: (number: string) => void;\n  onEndIconChanged?: (value: naver.maps.PointingIcon) => void;\n  onEndIconSizeChanged?: (number: string) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const Polyline = forwardRef<naver.maps.Polyline, Props>(function Polyline(props, ref) {\n  const options = pick(props, [...kvoKeys]);\n  const navermaps = useNavermaps();\n  const [polyline] = useState(() => new navermaps.Polyline(options));\n\n  useImperativeHandle<naver.maps.Polyline | undefined, naver.maps.Polyline | undefined>(ref, () => polyline);\n\n  useEffect(() => {\n    polyline.setOptions(omitUndefined(options) as PolylineOptions); // TODO: FIX DefinilyTyped. setOptions의 assign type 은 Partial<Options> 이어야 함\n  }, kvoKeys.map(key => options[key]));\n\n  return (\n    <Overlay element={polyline}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","import { pick } from 'lodash-es';\nimport { useEffect, useState, forwardRef, useImperativeHandle } from 'react';\n\nimport { HandleEvents } from '../helpers/event';\nimport { Overlay } from '../overlay';\nimport type { UIEventHandlers } from '../types/event';\nimport { useNavermaps } from '../use-navermaps';\nimport { omitUndefined } from '../utils/omit-undefined';\n\nconst optionKeys = [\n  'strokeWeight',\n  'strokeOpacity',\n  'strokeColor',\n  'strokeStyle',\n  'strokeLineCap',\n  'strokeLineJoin',\n  'fillColor',\n  'fillOpacity',\n] as const;\nconst kvoKeys = [\n  'bounds',\n  'clickable',\n  'visible',\n  'zIndex',\n] as const;\nconst kvoEvents = kvoKeys.map(key => `${key}_changed`);\nconst uiEvents = [\n  'click',\n  'dblclick',\n  'mousedown',\n  'mouseout',\n  'mouseover',\n  'mouseup',\n] as const;\nconst events = [...uiEvents, ...kvoEvents];\n\ntype RectangleOptions = {\n  /**\n   * @type naver.maps.Bounds | naver.maps.BoundsLiteral\n   */\n  bounds: naver.maps.Bounds | naver.maps.BoundsLiteral;\n  strokeWeight?: number;\n  strokeOpacity?: number;\n  strokeColor?: string;\n  strokeStyle?: naver.maps.StrokeStyleType;\n  strokeLineCap?: naver.maps.StrokeLineCapType;\n  strokeLineJoin?: naver.maps.StrokeLineJoinType;\n  fillColor?: string;\n  fillOpacity?: number;\n  clickable?: boolean;\n  visible?: boolean;\n  zIndex?: number;\n};\n\nexport type Props = RectangleOptions & {\n  onBoundsChanged?: (value: naver.maps.Bounds) => void;\n  onClickableChanged?: (value: boolean) => void;\n  onVisibleChanged?: (value: boolean) => void;\n  onZIndexChanged?: (value: number) => void;\n} & UIEventHandlers<typeof uiEvents>;\n\nexport const Rectangle = forwardRef<naver.maps.Rectangle, Props>(function Rectangle(props, ref) {\n  const options = pick(props, [...optionKeys, ...kvoKeys]);\n  const navermaps = useNavermaps();\n  const [rectangle] = useState(() => new navermaps.Rectangle(options));\n\n  useImperativeHandle<naver.maps.Rectangle | undefined, naver.maps.Rectangle | undefined>(ref, () => rectangle);\n\n  useEffect(() => {\n    rectangle.setOptions(omitUndefined(options) as RectangleOptions); // TODO: FIX DefinilyTyped. setOptions의 assign type 은 Partial<Options> 이어야 함\n  }, kvoKeys.map(key => options[key]));\n\n  return (\n    <Overlay element={rectangle}>\n      <HandleEvents events={events} listeners={props as any} />\n    </Overlay>\n  );\n});\n","/**\n * @deprecated\n */\nexport function RenderAfterNavermapsLoaded() {\n  throw new Error('react-naver-maps: v0.1 부터 <RenderAfterNavermapsLoaded /> 는 더이상 사용되지 않습니다. 마이그레이션 가이드를 확인해주세요. https://zeakd.github.io/react-naver-maps/guides/migration-guide-from-0.0');\n}\n"]}