This commit is contained in:
14
node_modules/react-dnd/lib/hooks/useDrag/DragSourceImpl.d.ts
generated
vendored
Normal file
14
node_modules/react-dnd/lib/hooks/useDrag/DragSourceImpl.d.ts
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
import { DragDropMonitor, DragSource, Identifier } from 'dnd-core';
|
||||
import { Connector } from '../../internals';
|
||||
import { DragSourceMonitor } from '../../types';
|
||||
import { DragSourceHookSpec } from '../types';
|
||||
export declare class DragSourceImpl<O, R, P> implements DragSource {
|
||||
spec: DragSourceHookSpec<O, R, P>;
|
||||
private monitor;
|
||||
private connector;
|
||||
constructor(spec: DragSourceHookSpec<O, R, P>, monitor: DragSourceMonitor<O, R>, connector: Connector);
|
||||
beginDrag(): NonNullable<O> | null;
|
||||
canDrag(): boolean;
|
||||
isDragging(globalMonitor: DragDropMonitor, target: Identifier): boolean;
|
||||
endDrag(): void;
|
||||
}
|
||||
56
node_modules/react-dnd/lib/hooks/useDrag/DragSourceImpl.js
generated
vendored
Normal file
56
node_modules/react-dnd/lib/hooks/useDrag/DragSourceImpl.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
export class DragSourceImpl {
|
||||
spec;
|
||||
monitor;
|
||||
connector;
|
||||
constructor(spec, monitor, connector) {
|
||||
this.spec = spec;
|
||||
this.monitor = monitor;
|
||||
this.connector = connector;
|
||||
}
|
||||
beginDrag() {
|
||||
const spec = this.spec;
|
||||
const monitor = this.monitor;
|
||||
let result = null;
|
||||
if (typeof spec.item === 'object') {
|
||||
result = spec.item;
|
||||
}
|
||||
else if (typeof spec.item === 'function') {
|
||||
result = spec.item(monitor);
|
||||
}
|
||||
else {
|
||||
result = {};
|
||||
}
|
||||
return result ?? null;
|
||||
}
|
||||
canDrag() {
|
||||
const spec = this.spec;
|
||||
const monitor = this.monitor;
|
||||
if (typeof spec.canDrag === 'boolean') {
|
||||
return spec.canDrag;
|
||||
}
|
||||
else if (typeof spec.canDrag === 'function') {
|
||||
return spec.canDrag(monitor);
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
isDragging(globalMonitor, target) {
|
||||
const spec = this.spec;
|
||||
const monitor = this.monitor;
|
||||
const { isDragging } = spec;
|
||||
return isDragging
|
||||
? isDragging(monitor)
|
||||
: target === globalMonitor.getSourceId();
|
||||
}
|
||||
endDrag() {
|
||||
const spec = this.spec;
|
||||
const monitor = this.monitor;
|
||||
const connector = this.connector;
|
||||
const { end } = spec;
|
||||
if (end) {
|
||||
end(monitor.getItem(), monitor);
|
||||
}
|
||||
connector.reconnect();
|
||||
}
|
||||
}
|
||||
3
node_modules/react-dnd/lib/hooks/useDrag/connectors.d.ts
generated
vendored
Normal file
3
node_modules/react-dnd/lib/hooks/useDrag/connectors.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { SourceConnector } from '../../internals';
|
||||
export declare function useConnectDragSource(connector: SourceConnector): any;
|
||||
export declare function useConnectDragPreview(connector: SourceConnector): any;
|
||||
7
node_modules/react-dnd/lib/hooks/useDrag/connectors.js
generated
vendored
Normal file
7
node_modules/react-dnd/lib/hooks/useDrag/connectors.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { useMemo } from 'react';
|
||||
export function useConnectDragSource(connector) {
|
||||
return useMemo(() => connector.hooks.dragSource(), [connector]);
|
||||
}
|
||||
export function useConnectDragPreview(connector) {
|
||||
return useMemo(() => connector.hooks.dragPreview(), [connector]);
|
||||
}
|
||||
1
node_modules/react-dnd/lib/hooks/useDrag/index.d.ts
generated
vendored
Normal file
1
node_modules/react-dnd/lib/hooks/useDrag/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export * from './useDrag';
|
||||
1
node_modules/react-dnd/lib/hooks/useDrag/index.js
generated
vendored
Normal file
1
node_modules/react-dnd/lib/hooks/useDrag/index.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export * from './useDrag';
|
||||
8
node_modules/react-dnd/lib/hooks/useDrag/useDrag.d.ts
generated
vendored
Normal file
8
node_modules/react-dnd/lib/hooks/useDrag/useDrag.d.ts
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
import { ConnectDragSource, ConnectDragPreview } from '../../types';
|
||||
import { DragSourceHookSpec, FactoryOrInstance } from '../types';
|
||||
/**
|
||||
* useDragSource hook
|
||||
* @param sourceSpec The drag source specification (object or function, function preferred)
|
||||
* @param deps The memoization deps array to use when evaluating spec changes
|
||||
*/
|
||||
export declare function useDrag<DragObject, DropResult, CollectedProps>(specArg: FactoryOrInstance<DragSourceHookSpec<DragObject, DropResult, CollectedProps>>, deps?: unknown[]): [CollectedProps, ConnectDragSource, ConnectDragPreview];
|
||||
24
node_modules/react-dnd/lib/hooks/useDrag/useDrag.js
generated
vendored
Normal file
24
node_modules/react-dnd/lib/hooks/useDrag/useDrag.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
import { useRegisteredDragSource } from './useRegisteredDragSource';
|
||||
import { useOptionalFactory } from '../useOptionalFactory';
|
||||
import { useDragSourceMonitor } from './useDragSourceMonitor';
|
||||
import { useDragSourceConnector } from './useDragSourceConnector';
|
||||
import { useCollectedProps } from '../useCollectedProps';
|
||||
import { useConnectDragPreview, useConnectDragSource } from './connectors';
|
||||
import { invariant } from '@react-dnd/invariant';
|
||||
/**
|
||||
* useDragSource hook
|
||||
* @param sourceSpec The drag source specification (object or function, function preferred)
|
||||
* @param deps The memoization deps array to use when evaluating spec changes
|
||||
*/
|
||||
export function useDrag(specArg, deps) {
|
||||
const spec = useOptionalFactory(specArg, deps);
|
||||
invariant(!spec.begin, `useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`);
|
||||
const monitor = useDragSourceMonitor();
|
||||
const connector = useDragSourceConnector(spec.options, spec.previewOptions);
|
||||
useRegisteredDragSource(spec, monitor, connector);
|
||||
return [
|
||||
useCollectedProps(spec.collect, monitor, connector),
|
||||
useConnectDragSource(connector),
|
||||
useConnectDragPreview(connector),
|
||||
];
|
||||
}
|
||||
5
node_modules/react-dnd/lib/hooks/useDrag/useDragSource.d.ts
generated
vendored
Normal file
5
node_modules/react-dnd/lib/hooks/useDrag/useDragSource.d.ts
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Connector } from '../../internals';
|
||||
import { DragSourceMonitor } from '../../types';
|
||||
import { DragSourceHookSpec } from '../types';
|
||||
import { DragSourceImpl } from './DragSourceImpl';
|
||||
export declare function useDragSource<O, R, P>(spec: DragSourceHookSpec<O, R, P>, monitor: DragSourceMonitor<O, R>, connector: Connector): DragSourceImpl<O, R, P>;
|
||||
9
node_modules/react-dnd/lib/hooks/useDrag/useDragSource.js
generated
vendored
Normal file
9
node_modules/react-dnd/lib/hooks/useDrag/useDragSource.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import { useEffect, useMemo } from 'react';
|
||||
import { DragSourceImpl } from './DragSourceImpl';
|
||||
export function useDragSource(spec, monitor, connector) {
|
||||
const handler = useMemo(() => new DragSourceImpl(spec, monitor, connector), [monitor, connector]);
|
||||
useEffect(() => {
|
||||
handler.spec = spec;
|
||||
}, [spec]);
|
||||
return handler;
|
||||
}
|
||||
3
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceConnector.d.ts
generated
vendored
Normal file
3
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceConnector.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { SourceConnector } from '../../internals';
|
||||
import { DragPreviewOptions, DragSourceOptions } from '../../types';
|
||||
export declare function useDragSourceConnector(dragSourceOptions: DragSourceOptions | undefined, dragPreviewOptions: DragPreviewOptions | undefined): SourceConnector;
|
||||
19
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceConnector.js
generated
vendored
Normal file
19
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceConnector.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
import { useMemo } from 'react';
|
||||
import { SourceConnector } from '../../internals';
|
||||
import { useDragDropManager } from '../useDragDropManager';
|
||||
import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';
|
||||
export function useDragSourceConnector(dragSourceOptions, dragPreviewOptions) {
|
||||
const manager = useDragDropManager();
|
||||
const connector = useMemo(() => new SourceConnector(manager.getBackend()), [manager]);
|
||||
useIsomorphicLayoutEffect(() => {
|
||||
connector.dragSourceOptions = dragSourceOptions || null;
|
||||
connector.reconnect();
|
||||
return () => connector.disconnectDragSource();
|
||||
}, [connector, dragSourceOptions]);
|
||||
useIsomorphicLayoutEffect(() => {
|
||||
connector.dragPreviewOptions = dragPreviewOptions || null;
|
||||
connector.reconnect();
|
||||
return () => connector.disconnectDragPreview();
|
||||
}, [connector, dragPreviewOptions]);
|
||||
return connector;
|
||||
}
|
||||
2
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceMonitor.d.ts
generated
vendored
Normal file
2
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceMonitor.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import { DragSourceMonitor } from '../../types';
|
||||
export declare function useDragSourceMonitor<O, R>(): DragSourceMonitor<O, R>;
|
||||
7
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceMonitor.js
generated
vendored
Normal file
7
node_modules/react-dnd/lib/hooks/useDrag/useDragSourceMonitor.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { useMemo } from 'react';
|
||||
import { DragSourceMonitorImpl } from '../../internals';
|
||||
import { useDragDropManager } from '../useDragDropManager';
|
||||
export function useDragSourceMonitor() {
|
||||
const manager = useDragDropManager();
|
||||
return useMemo(() => new DragSourceMonitorImpl(manager), [manager]);
|
||||
}
|
||||
3
node_modules/react-dnd/lib/hooks/useDrag/useDragType.d.ts
generated
vendored
Normal file
3
node_modules/react-dnd/lib/hooks/useDrag/useDragType.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { Identifier } from 'dnd-core';
|
||||
import { DragSourceHookSpec } from '../types';
|
||||
export declare function useDragType(spec: DragSourceHookSpec<any, any, any>): Identifier;
|
||||
9
node_modules/react-dnd/lib/hooks/useDrag/useDragType.js
generated
vendored
Normal file
9
node_modules/react-dnd/lib/hooks/useDrag/useDragType.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import { invariant } from '@react-dnd/invariant';
|
||||
import { useMemo } from 'react';
|
||||
export function useDragType(spec) {
|
||||
return useMemo(() => {
|
||||
const result = spec.type;
|
||||
invariant(result != null, 'spec.type must be defined');
|
||||
return result;
|
||||
}, [spec]);
|
||||
}
|
||||
4
node_modules/react-dnd/lib/hooks/useDrag/useRegisteredDragSource.d.ts
generated
vendored
Normal file
4
node_modules/react-dnd/lib/hooks/useDrag/useRegisteredDragSource.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import { DragSourceMonitor } from '../../types';
|
||||
import { SourceConnector } from '../../internals';
|
||||
import { DragSourceHookSpec } from '../types';
|
||||
export declare function useRegisteredDragSource<O, R, P>(spec: DragSourceHookSpec<O, R, P>, monitor: DragSourceMonitor<O, R>, connector: SourceConnector): void;
|
||||
18
node_modules/react-dnd/lib/hooks/useDrag/useRegisteredDragSource.js
generated
vendored
Normal file
18
node_modules/react-dnd/lib/hooks/useDrag/useRegisteredDragSource.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import { registerSource } from '../../internals';
|
||||
import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';
|
||||
import { useDragSource } from './useDragSource';
|
||||
import { useDragDropManager } from '../useDragDropManager';
|
||||
import { useDragType } from './useDragType';
|
||||
export function useRegisteredDragSource(spec, monitor, connector) {
|
||||
const manager = useDragDropManager();
|
||||
const handler = useDragSource(spec, monitor, connector);
|
||||
const itemType = useDragType(spec);
|
||||
useIsomorphicLayoutEffect(function registerDragSource() {
|
||||
if (itemType != null) {
|
||||
const [handlerId, unregister] = registerSource(itemType, handler, manager);
|
||||
monitor.receiveHandlerId(handlerId);
|
||||
connector.receiveHandlerId(handlerId);
|
||||
return unregister;
|
||||
}
|
||||
}, [manager, monitor, connector, handler, itemType]);
|
||||
}
|
||||
Reference in New Issue
Block a user