This commit is contained in:
11
node_modules/react-dnd/lib/hooks/useDrop/DropTargetImpl.d.ts
generated
vendored
Normal file
11
node_modules/react-dnd/lib/hooks/useDrop/DropTargetImpl.d.ts
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
import { DropTarget } from 'dnd-core';
|
||||
import { DropTargetMonitor } from '../../types';
|
||||
import { DropTargetHookSpec } from '../types';
|
||||
export declare class DropTargetImpl<O, R, P> implements DropTarget {
|
||||
spec: DropTargetHookSpec<O, R, P>;
|
||||
private monitor;
|
||||
constructor(spec: DropTargetHookSpec<O, R, P>, monitor: DropTargetMonitor<O, R>);
|
||||
canDrop(): boolean;
|
||||
hover(): void;
|
||||
drop(): R | undefined;
|
||||
}
|
||||
27
node_modules/react-dnd/lib/hooks/useDrop/DropTargetImpl.js
generated
vendored
Normal file
27
node_modules/react-dnd/lib/hooks/useDrop/DropTargetImpl.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
export class DropTargetImpl {
|
||||
spec;
|
||||
monitor;
|
||||
constructor(spec, monitor) {
|
||||
this.spec = spec;
|
||||
this.monitor = monitor;
|
||||
}
|
||||
canDrop() {
|
||||
const spec = this.spec;
|
||||
const monitor = this.monitor;
|
||||
return spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true;
|
||||
}
|
||||
hover() {
|
||||
const spec = this.spec;
|
||||
const monitor = this.monitor;
|
||||
if (spec.hover) {
|
||||
spec.hover(monitor.getItem(), monitor);
|
||||
}
|
||||
}
|
||||
drop() {
|
||||
const spec = this.spec;
|
||||
const monitor = this.monitor;
|
||||
if (spec.drop) {
|
||||
return spec.drop(monitor.getItem(), monitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
node_modules/react-dnd/lib/hooks/useDrop/connectors.d.ts
generated
vendored
Normal file
2
node_modules/react-dnd/lib/hooks/useDrop/connectors.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import { TargetConnector } from '../../internals';
|
||||
export declare function useConnectDropTarget(connector: TargetConnector): any;
|
||||
4
node_modules/react-dnd/lib/hooks/useDrop/connectors.js
generated
vendored
Normal file
4
node_modules/react-dnd/lib/hooks/useDrop/connectors.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import { useMemo } from 'react';
|
||||
export function useConnectDropTarget(connector) {
|
||||
return useMemo(() => connector.hooks.dropTarget(), [connector]);
|
||||
}
|
||||
1
node_modules/react-dnd/lib/hooks/useDrop/index.d.ts
generated
vendored
Normal file
1
node_modules/react-dnd/lib/hooks/useDrop/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export * from './useDrop';
|
||||
1
node_modules/react-dnd/lib/hooks/useDrop/index.js
generated
vendored
Normal file
1
node_modules/react-dnd/lib/hooks/useDrop/index.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export * from './useDrop';
|
||||
8
node_modules/react-dnd/lib/hooks/useDrop/useAccept.d.ts
generated
vendored
Normal file
8
node_modules/react-dnd/lib/hooks/useDrop/useAccept.d.ts
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Identifier } from 'dnd-core';
|
||||
import { DropTargetHookSpec } from '../types';
|
||||
/**
|
||||
* Internal utility hook to get an array-version of spec.accept.
|
||||
* The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.
|
||||
* @param spec
|
||||
*/
|
||||
export declare function useAccept<O, R, P>(spec: DropTargetHookSpec<O, R, P>): Identifier[];
|
||||
14
node_modules/react-dnd/lib/hooks/useDrop/useAccept.js
generated
vendored
Normal file
14
node_modules/react-dnd/lib/hooks/useDrop/useAccept.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
import { invariant } from '@react-dnd/invariant';
|
||||
import { useMemo } from 'react';
|
||||
/**
|
||||
* Internal utility hook to get an array-version of spec.accept.
|
||||
* The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.
|
||||
* @param spec
|
||||
*/
|
||||
export function useAccept(spec) {
|
||||
const { accept } = spec;
|
||||
return useMemo(() => {
|
||||
invariant(spec.accept != null, 'accept must be defined');
|
||||
return Array.isArray(accept) ? accept : [accept];
|
||||
}, [accept]);
|
||||
}
|
||||
8
node_modules/react-dnd/lib/hooks/useDrop/useDrop.d.ts
generated
vendored
Normal file
8
node_modules/react-dnd/lib/hooks/useDrop/useDrop.d.ts
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
import { ConnectDropTarget } from '../../types';
|
||||
import { DropTargetHookSpec, FactoryOrInstance } from '../types';
|
||||
/**
|
||||
* 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 declare function useDrop<DragObject, DropResult, CollectedProps>(specArg: FactoryOrInstance<DropTargetHookSpec<DragObject, DropResult, CollectedProps>>, deps?: unknown[]): [CollectedProps, ConnectDropTarget];
|
||||
21
node_modules/react-dnd/lib/hooks/useDrop/useDrop.js
generated
vendored
Normal file
21
node_modules/react-dnd/lib/hooks/useDrop/useDrop.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
import { useRegisteredDropTarget } from './useRegisteredDropTarget';
|
||||
import { useOptionalFactory } from '../useOptionalFactory';
|
||||
import { useDropTargetMonitor } from './useDropTargetMonitor';
|
||||
import { useDropTargetConnector } from './useDropTargetConnector';
|
||||
import { useCollectedProps } from '../useCollectedProps';
|
||||
import { useConnectDropTarget } from './connectors';
|
||||
/**
|
||||
* 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(specArg, deps) {
|
||||
const spec = useOptionalFactory(specArg, deps);
|
||||
const monitor = useDropTargetMonitor();
|
||||
const connector = useDropTargetConnector(spec.options);
|
||||
useRegisteredDropTarget(spec, monitor, connector);
|
||||
return [
|
||||
useCollectedProps(spec.collect, monitor, connector),
|
||||
useConnectDropTarget(connector),
|
||||
];
|
||||
}
|
||||
4
node_modules/react-dnd/lib/hooks/useDrop/useDropTarget.d.ts
generated
vendored
Normal file
4
node_modules/react-dnd/lib/hooks/useDrop/useDropTarget.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import { DropTargetMonitor } from '../../types';
|
||||
import { DropTargetHookSpec } from '../types';
|
||||
import { DropTargetImpl } from './DropTargetImpl';
|
||||
export declare function useDropTarget<O, R, P>(spec: DropTargetHookSpec<O, R, P>, monitor: DropTargetMonitor<O, R>): DropTargetImpl<O, R, P>;
|
||||
9
node_modules/react-dnd/lib/hooks/useDrop/useDropTarget.js
generated
vendored
Normal file
9
node_modules/react-dnd/lib/hooks/useDrop/useDropTarget.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import { useEffect, useMemo } from 'react';
|
||||
import { DropTargetImpl } from './DropTargetImpl';
|
||||
export function useDropTarget(spec, monitor) {
|
||||
const dropTarget = useMemo(() => new DropTargetImpl(spec, monitor), [monitor]);
|
||||
useEffect(() => {
|
||||
dropTarget.spec = spec;
|
||||
}, [spec]);
|
||||
return dropTarget;
|
||||
}
|
||||
3
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetConnector.d.ts
generated
vendored
Normal file
3
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetConnector.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { TargetConnector } from '../../internals';
|
||||
import { DropTargetOptions } from '../../types';
|
||||
export declare function useDropTargetConnector(options: DropTargetOptions): TargetConnector;
|
||||
14
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetConnector.js
generated
vendored
Normal file
14
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetConnector.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
import { useMemo } from 'react';
|
||||
import { TargetConnector } from '../../internals';
|
||||
import { useDragDropManager } from '../useDragDropManager';
|
||||
import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';
|
||||
export function useDropTargetConnector(options) {
|
||||
const manager = useDragDropManager();
|
||||
const connector = useMemo(() => new TargetConnector(manager.getBackend()), [manager]);
|
||||
useIsomorphicLayoutEffect(() => {
|
||||
connector.dropTargetOptions = options || null;
|
||||
connector.reconnect();
|
||||
return () => connector.disconnectDropTarget();
|
||||
}, [options]);
|
||||
return connector;
|
||||
}
|
||||
2
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetMonitor.d.ts
generated
vendored
Normal file
2
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetMonitor.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import { DropTargetMonitor } from '../../types';
|
||||
export declare function useDropTargetMonitor<O, R>(): DropTargetMonitor<O, R>;
|
||||
7
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetMonitor.js
generated
vendored
Normal file
7
node_modules/react-dnd/lib/hooks/useDrop/useDropTargetMonitor.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { useMemo } from 'react';
|
||||
import { DropTargetMonitorImpl } from '../../internals';
|
||||
import { useDragDropManager } from '../useDragDropManager';
|
||||
export function useDropTargetMonitor() {
|
||||
const manager = useDragDropManager();
|
||||
return useMemo(() => new DropTargetMonitorImpl(manager), [manager]);
|
||||
}
|
||||
4
node_modules/react-dnd/lib/hooks/useDrop/useRegisteredDropTarget.d.ts
generated
vendored
Normal file
4
node_modules/react-dnd/lib/hooks/useDrop/useRegisteredDropTarget.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import { TargetConnector } from '../../internals';
|
||||
import { DropTargetMonitor } from '../../types';
|
||||
import { DropTargetHookSpec } from '../types';
|
||||
export declare function useRegisteredDropTarget<O, R, P>(spec: DropTargetHookSpec<O, R, P>, monitor: DropTargetMonitor<O, R>, connector: TargetConnector): void;
|
||||
22
node_modules/react-dnd/lib/hooks/useDrop/useRegisteredDropTarget.js
generated
vendored
Normal file
22
node_modules/react-dnd/lib/hooks/useDrop/useRegisteredDropTarget.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
import { registerTarget } from '../../internals';
|
||||
import { useDragDropManager } from '../useDragDropManager';
|
||||
import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';
|
||||
import { useAccept } from './useAccept';
|
||||
import { useDropTarget } from './useDropTarget';
|
||||
export function useRegisteredDropTarget(spec, monitor, connector) {
|
||||
const manager = useDragDropManager();
|
||||
const dropTarget = useDropTarget(spec, monitor);
|
||||
const accept = useAccept(spec);
|
||||
useIsomorphicLayoutEffect(function registerDropTarget() {
|
||||
const [handlerId, unregister] = registerTarget(accept, dropTarget, manager);
|
||||
monitor.receiveHandlerId(handlerId);
|
||||
connector.receiveHandlerId(handlerId);
|
||||
return unregister;
|
||||
}, [
|
||||
manager,
|
||||
monitor,
|
||||
dropTarget,
|
||||
connector,
|
||||
accept.map((a) => a.toString()).join('|'),
|
||||
]);
|
||||
}
|
||||
Reference in New Issue
Block a user