@davedev42/react-naver-maps
Version:
React Navermaps API integration for modern development.
54 lines (52 loc) • 1.64 kB
JavaScript
import {
useNavermaps
} from "./chunk-JX27UDSU.mjs";
import {
HandleEvents
} from "./chunk-TMGZDWPN.mjs";
import {
Overlay
} from "./chunk-P2HFB547.mjs";
// src/overlays/ground-overlay.tsx
import { forwardRef, useEffect, useImperativeHandle, useState } from "react";
import { jsx } from "react/jsx-runtime";
var kvoKeys = [
"clickable",
"opacity"
];
var kvoEvents = kvoKeys.map((key) => `${key}_changed`);
var uiEvents = [
"mousedown",
"mouseup",
"click",
"dblclick",
"rightclick",
"mouseover",
"mouseout",
"mousemove"
];
var events = [...uiEvents, ...kvoEvents];
var GroundOverlay = forwardRef(function GroundOverlay2(props, ref) {
const options = Object.fromEntries(kvoKeys.map((key) => [key, props[key]]));
const { url, bounds } = props;
const navermaps = useNavermaps();
const [groundOverlay, setGroundOverlay] = useState(() => new navermaps.GroundOverlay(url, bounds, options));
useImperativeHandle(ref, () => groundOverlay, [groundOverlay]);
useEffect(() => {
if (groundOverlay.getUrl() !== url || groundOverlay.getBounds().equals(bounds)) {
setGroundOverlay(new navermaps.GroundOverlay(url, bounds, options));
}
}, [url, bounds]);
useEffect(() => {
kvoKeys.forEach((key) => {
if (options[key] && groundOverlay.get(key) !== options[key]) {
groundOverlay.set(key, options[key]);
}
});
}, kvoKeys.map((key) => options[key]));
return /* @__PURE__ */ jsx(Overlay, { element: groundOverlay, children: /* @__PURE__ */ jsx(HandleEvents, { events, listeners: props }) });
});
export {
GroundOverlay
};
//# sourceMappingURL=chunk-SA44SMUB.mjs.map