google-maps-js-api-react
Version:
Fast, tree-shakable, and light-weight React components and hooks for integrating Google Maps API functionality
103 lines (96 loc) • 3.26 kB
JavaScript
;
var chunkLHLLIGUT_cjs = require('./chunk-LHLLIGUT.cjs');
var react = require('react');
var useConst = require('react-helpful-utils/useConst');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var useConst__default = /*#__PURE__*/_interopDefault(useConst);
var useHandlersAndProps = (props, connectedPairs, isKeyOmitted) => useConst__default.default(() => {
const isTriggeredBySetStateSet = /* @__PURE__ */ new Set();
const handlersList = [];
const propsList = [];
let isUpdated;
let instance;
for (const key in props) {
if (!isKeyOmitted(key)) {
(key.startsWith("on") ? handlersList : propsList).push(key);
}
}
return (props2) => {
for (let i = propsList.length; i--; ) {
const key = propsList[i];
const value = props2[key];
react.useLayoutEffect(() => {
if (isUpdated) {
isTriggeredBySetStateSet.add(key);
instance.setOptions({ [key]: value });
}
}, [value]);
}
if (propsList.length) {
react.useLayoutEffect(() => {
isUpdated = true;
return () => {
isUpdated = false;
};
}, []);
}
for (let i = handlersList.length; i--; ) {
const key = handlersList[i];
const value = props2[key];
react.useEffect(() => {
if (value) {
const eventName = (key.endsWith("Changed") ? key.slice(2, -7) + chunkLHLLIGUT_cjs.CHANGED : key.slice(2)).toLowerCase();
let fn = value;
if (connectedPairs.has(eventName)) {
const dependBy = connectedPairs.get(eventName);
const boundFn = fn.bind(instance);
if (dependBy in props2) {
isTriggeredBySetStateSet.delete(dependBy);
fn = () => {
if (!isTriggeredBySetStateSet.delete(dependBy)) {
boundFn(instance.get(dependBy));
}
};
} else if (fn.length) {
fn = () => {
boundFn(instance.get(dependBy));
};
}
}
const listener = instance.addListener(eventName, fn);
return () => listener.remove();
}
}, [value]);
}
return (_instance) => {
instance = _instance;
};
};
})(props);
var useHandlersAndProps_default = useHandlersAndProps;
// src/utils/getConnectedEventsAndProps.ts
var getConnectedEventsAndProps = (arr) => {
const connectedEventsAndProps = /* @__PURE__ */ new Map();
if (arr) {
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
connectedEventsAndProps.set(
item.toLowerCase() + chunkLHLLIGUT_cjs.CHANGED,
item
);
}
}
return connectedEventsAndProps;
};
var getConnectedEventsAndProps_default = getConnectedEventsAndProps;
// src/utils/handleHas.ts
var handleHas = (keys) => {
const set = new Set(keys);
return set.has.bind(set);
};
var handleHas_default = handleHas;
exports.getConnectedEventsAndProps_default = getConnectedEventsAndProps_default;
exports.handleHas_default = handleHas_default;
exports.useHandlersAndProps_default = useHandlersAndProps_default;
//# sourceMappingURL=chunk-QWMSBSOL.cjs.map
//# sourceMappingURL=chunk-QWMSBSOL.cjs.map