use-scope-event-emitter.ts 459 B

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