UNPKG

@theoplayer/react-native-engage

Version:
38 lines (36 loc) 1.12 kB
"use strict"; import { EngageClusterEventType } from '@theoplayer/react-native-engage'; import { useEffect, useState } from 'react'; /** * useCluster is a convenience hook that listens for changes in the cluster instance, triggering a state update. * * @param engage * @param type * @param config */ export function useCluster(engage, type, config) { const [, setEntities] = useState([]); const [cluster, setCluster] = useState(undefined); useEffect(() => { if (engage) { const cluster = engage.getCluster(type, config); setCluster(cluster); // Set initial entities list setEntities(cluster?.entities); } }, [engage]); useEffect(() => { const onEntitiesChanged = () => { if (cluster) { // Update new entities list setEntities(cluster?.entities); } }; cluster?.addEventListener(EngageClusterEventType.EntitiesChanged, onEntitiesChanged); return () => { cluster?.removeEventListener(EngageClusterEventType.EntitiesChanged, onEntitiesChanged); }; }, [cluster]); return cluster; } //# sourceMappingURL=useCluster.js.map