UNPKG

@theoplayer/react-native-engage

Version:
41 lines (40 loc) 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCluster = useCluster; var _reactNativeEngage = require("@theoplayer/react-native-engage"); var _react = require("react"); /** * useCluster is a convenience hook that listens for changes in the cluster instance, triggering a state update. * * @param engage * @param type * @param config */ function useCluster(engage, type, config) { const [, setEntities] = (0, _react.useState)([]); const [cluster, setCluster] = (0, _react.useState)(undefined); (0, _react.useEffect)(() => { if (engage) { const cluster = engage.getCluster(type, config); setCluster(cluster); // Set initial entities list setEntities(cluster?.entities); } }, [engage]); (0, _react.useEffect)(() => { const onEntitiesChanged = () => { if (cluster) { // Update new entities list setEntities(cluster?.entities); } }; cluster?.addEventListener(_reactNativeEngage.EngageClusterEventType.EntitiesChanged, onEntitiesChanged); return () => { cluster?.removeEventListener(_reactNativeEngage.EngageClusterEventType.EntitiesChanged, onEntitiesChanged); }; }, [cluster]); return cluster; } //# sourceMappingURL=useCluster.js.map