use-scope-event-emitter.js 513 B

12345678910111213141516171819202122
  1. import { useCallback } from 'react'
  2. import { useIdeContext } from '../context/ide-context'
  3. /**
  4. * @param {string} eventName
  5. * @param {boolean} [broadcast]
  6. * @returns function
  7. */
  8. export default function useScopeEventEmitter(eventName, broadcast = true) {
  9. const { $scope } = useIdeContext()
  10. return useCallback(
  11. detail => {
  12. if (broadcast) {
  13. $scope.$broadcast(eventName, detail)
  14. } else {
  15. $scope.$emit(eventName, detail)
  16. }
  17. },
  18. [$scope, eventName, broadcast]
  19. )
  20. }