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

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

View File

@@ -0,0 +1,2 @@
import { TargetConnector } from '../../internals';
export declare function useConnectDropTarget(connector: TargetConnector): any;

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

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

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

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

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

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

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

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

View File

@@ -0,0 +1,3 @@
import { TargetConnector } from '../../internals';
import { DropTargetOptions } from '../../types';
export declare function useDropTargetConnector(options: DropTargetOptions): TargetConnector;

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

View File

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

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

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

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