Files
supabase/packages/ui-patterns/CommandMenu/api/hooks/viewHooks.ts
Jordi Enric 6f1cfef213 clean circular deps (#34262)
* clean circular deps in telemetry

* clean circular deps in command

* fix commandmenu circular deps

* rm deps.json

* fix consent circular dep

* fix TOC circular deps

* fix wrong import path

* fix test types

* fix missing fn

* undo let change

* fix consent component

* empty
2025-03-20 11:11:11 +01:00

74 lines
1.8 KiB
TypeScript

'use client'
import { useLayoutEffect, useRef } from 'react'
import { useSnapshot } from 'valtio'
import { useCommandContext } from '../../internal/Context'
import { type DialogSize, type ITouchHandlers } from '../../internal/state/viewState.types'
const useCommandMenuInitiated = () => {
const { viewState } = useCommandContext()
const { initiated } = useSnapshot(viewState)
return initiated
}
const useCommandMenuOpen = () => {
const { viewState } = useCommandContext()
const { open } = useSnapshot(viewState)
return open
}
const useSetCommandMenuOpen = () => {
const { viewState } = useCommandContext()
const { setOpen } = useSnapshot(viewState)
return setOpen
}
const useToggleCommandMenu = () => {
const { viewState } = useCommandContext()
const { toggleOpen } = useSnapshot(viewState)
return toggleOpen
}
const useCommandMenuSize = () => {
const { viewState } = useCommandContext()
const { size } = useSnapshot(viewState)
return size
}
const useSetCommandMenuSize = (newSize: DialogSize) => {
const { viewState } = useCommandContext()
const { setSize, size } = useSnapshot(viewState)
const originalSize = useRef(size)
useLayoutEffect(() => {
setSize(newSize)
return () => setSize(originalSize.current)
}, [setSize])
}
const useSetupCommandMenuTouchEvents = () => {
const { viewState } = useCommandContext()
const { setTouchHandlers } = useSnapshot(viewState)
return setTouchHandlers
}
const useCommandMenuTouchGestures = () => {
const { viewState } = useCommandContext()
const { touchHandlers } = useSnapshot(viewState)
return touchHandlers
}
export {
useCommandMenuInitiated,
useCommandMenuOpen,
useSetCommandMenuOpen,
useToggleCommandMenu,
useCommandMenuSize,
useSetCommandMenuSize,
useSetupCommandMenuTouchEvents,
useCommandMenuTouchGestures,
}