hooks_use-register-media-manager.js
import { React } from '@gravityforms/libraries';
import { useMediaManagerContext } from '../contexts/media-manager-context';
const { useEffect } = React;
/**
* @module useRegisterMediaManager
* @description A hook that registers a media manager and handles cleanup.
*
* @since 4.1.0
*
* @param {string} [id] - The media manager id.
* @param {function} [onMediaSelect] - The callback to run when media is selected.
* @param {Record<string, any>} [options] - The options for the media manager.
*/
const useRegisterMediaManager = ( {
id,
onMediaSelect,
options,
} ) => {
const { registerMediaManager } = useMediaManagerContext();
useEffect( () => {
// Register the media manager and get the cleanup function.
const unregister = registerMediaManager( {
id,
onMediaSelect,
options,
} );
// Return the cleanup function to be called when the component unmounts or when any of the dependencies change.
return unregister;
}, [ id, onMediaSelect, options, registerMediaManager ] );
};
export default useRegisterMediaManager;