Blame view

天文台pc/tianwentai-ui/node_modules/react-dnd/src/hooks/useDrop/useDrop.ts 1.26 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  import type { ConnectDropTarget } from '../../types/index.js'
  import type { DropTargetHookSpec, FactoryOrInstance } from '../types.js'
  import { useCollectedProps } from '../useCollectedProps.js'
  import { useOptionalFactory } from '../useOptionalFactory.js'
  import { useConnectDropTarget } from './connectors.js'
  import { useDropTargetConnector } from './useDropTargetConnector.js'
  import { useDropTargetMonitor } from './useDropTargetMonitor.js'
  import { useRegisteredDropTarget } from './useRegisteredDropTarget.js'
  
  /**
   * useDropTarget Hook
   * @param spec The drop target specification (object or function, function preferred)
   * @param deps The memoization deps array to use when evaluating spec changes
   */
  export function useDrop<
  	DragObject = unknown,
  	DropResult = unknown,
  	CollectedProps = unknown,
  >(
  	specArg: FactoryOrInstance<
  		DropTargetHookSpec<DragObject, DropResult, CollectedProps>
  	>,
  	deps?: unknown[],
  ): [CollectedProps, ConnectDropTarget] {
  	const spec = useOptionalFactory(specArg, deps)
  	const monitor = useDropTargetMonitor<DragObject, DropResult>()
  	const connector = useDropTargetConnector(spec.options)
  	useRegisteredDropTarget(spec, monitor, connector)
  
  	return [
  		useCollectedProps(spec.collect, monitor, connector),
  		useConnectDropTarget(connector),
  	]
  }