UNPKG

@davedev42/react-naver-maps

Version:

React Navermaps API integration for modern development.

72 lines (70 loc) 1.79 kB
import { omitUndefined } from "./chunk-SOBCLIXD.mjs"; import { useNavermaps } from "./chunk-JX27UDSU.mjs"; import { HandleEvents } from "./chunk-TMGZDWPN.mjs"; import { Overlay } from "./chunk-P2HFB547.mjs"; // src/overlays/circle.tsx import { forwardRef, useEffect, useImperativeHandle, useState } from "react"; import { jsx } from "react/jsx-runtime"; var primitiveKvoKeys = [ "radius", "strokeWeight", "strokeOpacity", "strokeColor", "strokeStyle", "strokeLineCap", "strokeLineJoin", "fillColor", "fillOpacity", "clickable", "visible", "zIndex" ]; var kvoKeys = [ ...primitiveKvoKeys, "center" ]; var kvoEvents = kvoKeys.map((key) => `${key}_changed`); var uiEvents = [ "mousedown", "mouseup", "click", "dblclick", "rightclick", "mouseover", "mouseout", "mousemove" ]; var events = [...uiEvents, ...kvoEvents]; var Circle = forwardRef(function Circle2(props, ref) { const { center } = props; const navermaps = useNavermaps(); const [circle] = useState(() => new navermaps.Circle(omitUndefined({ ...Object.fromEntries(kvoKeys.map((key) => [key, props[key]])), center: props.center }))); useImperativeHandle(ref, () => circle); useEffect(() => { if (center && !circle.getCenter().equals(center)) { circle.setCenter(center); } }, [center]); useEffect(() => { const options = omitUndefined(Object.fromEntries(primitiveKvoKeys.map((key) => [key, props[key]]))); if (Object.keys(options).length > 0) { circle.setOptions(options); } }, primitiveKvoKeys.map((key) => props[key])); return /* @__PURE__ */ jsx(Overlay, { element: circle, children: /* @__PURE__ */ jsx(HandleEvents, { events, listeners: props }) }); }); export { Circle }; //# sourceMappingURL=chunk-MYLG3ZHO.mjs.map