// 3rd party. import React, {useEffect, useState} from 'react'; export function usePropertyChange(object, property, defaultValue, reducer) { const [value, setValue] = useState(defaultValue); useEffect(() => { if (!object) { return; } const onValueChanged = () => { const newValue = object[property]; setValue(reducer ? reducer(newValue) : newValue); }; onValueChanged(); object.on(`${property}Changed`, onValueChanged); return () => { object.off(`${property}Changed`, onValueChanged); }; }, [object, value]); return value; }