planning
All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s

This commit is contained in:
2024-10-14 09:15:30 +02:00
parent bcba00a730
commit 6e64e138e2
21059 changed files with 2317811 additions and 1 deletions

View 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;
}

View 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();
}
}

View File

@@ -0,0 +1,3 @@
import { SourceConnector } from '../../internals';
export declare function useConnectDragSource(connector: SourceConnector): any;
export declare function useConnectDragPreview(connector: SourceConnector): any;

View 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
View File

@@ -0,0 +1 @@
export * from './useDrag';

1
node_modules/react-dnd/lib/hooks/useDrag/index.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export * from './useDrag';

View 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
View 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),
];
}

View 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>;

View 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;
}

View 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;

View 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;
}

View File

@@ -0,0 +1,2 @@
import { DragSourceMonitor } from '../../types';
export declare function useDragSourceMonitor<O, R>(): DragSourceMonitor<O, R>;

View 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]);
}

View File

@@ -0,0 +1,3 @@
import { Identifier } from 'dnd-core';
import { DragSourceHookSpec } from '../types';
export declare function useDragType(spec: DragSourceHookSpec<any, any, any>): Identifier;

View 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]);
}

View 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;

View 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]);
}