react-naver-maps
Version:
React Navermaps API integration for modern development.
68 lines (65 loc) • 2.26 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/listener.tsx
var listener_exports = {};
__export(listener_exports, {
Listener: () => Listener,
getListenerKeys: () => getListenerKeys,
useListener: () => useListener
});
module.exports = __toCommonJS(listener_exports);
var import_react2 = require("react");
// src/contexts/event-target.ts
var import_react = require("react");
var EventTargetContext = (0, import_react.createContext)(void 0);
var useEventTarget = () => (0, import_react.useContext)(EventTargetContext);
// src/listener.tsx
function useListener(target, type, listener) {
(0, import_react2.useEffect)(() => {
const _listener = (...args) => listener(...args, target);
const mapEventListener = naver.maps.Event.addListener(target, type, _listener);
return () => {
naver.maps.Event.removeListener(mapEventListener);
};
}, [target, type, listener]);
}
var Listener = (props) => {
const {
target: propTarget,
type,
listener
} = props;
const contextTarget = useEventTarget();
const target = propTarget || contextTarget;
if (!target) {
throw new Error("react-naver-maps: No Target to add listener");
}
useListener(target, type, listener);
return null;
};
function getListenerKeys(props) {
return Object.keys(props).filter((key) => /on[A-Z]\w+/.test(key));
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Listener,
getListenerKeys,
useListener
});
//# sourceMappingURL=listener.js.map
;