@sanity/ui-workshop
Version:
An environment for designing, reviewing, and quality-testing React components.
30 lines (23 loc) • 774 B
text/typescript
/* eslint-disable @typescript-eslint/no-explicit-any */
import {useCallback} from 'react'
import {useWorkshop} from './useWorkshop'
/** @public */
export function useAction(
name: string,
options?: {preventDefault?: boolean},
): (...args: unknown[]) => void {
const {preventDefault = false} = options || {}
const {scope, story} = useWorkshop()
return useCallback(
(...args: unknown[]) => {
if (!scope || !story) return
const ev: any = args[0]
if (preventDefault && 'preventDefault' in ev && typeof ev.preventDefault === 'function') {
ev.preventDefault()
}
// eslint-disable-next-line no-console
console.log(`[${scope.name}/${story.name}]`, name, ...args)
},
[preventDefault, scope, story, name],
)
}