You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

329 lines
6.6 KiB

2 years ago
// @flow
import type { Position } from 'css-box-model';
import type {
Critical,
DraggableId,
DroppableId,
CompletedDrag,
MovementMode,
Viewport,
DimensionMap,
DropReason,
Published,
} from '../types';
export type BeforeInitialCaptureArgs = {|
draggableId: DraggableId,
movementMode: MovementMode,
|};
export type BeforeInitialCaptureAction = {|
type: 'BEFORE_INITIAL_CAPTURE',
payload: BeforeInitialCaptureArgs,
|};
export const beforeInitialCapture = (
args: BeforeInitialCaptureArgs,
): BeforeInitialCaptureAction => ({
type: 'BEFORE_INITIAL_CAPTURE',
payload: args,
});
export type LiftArgs = {|
// lifting with DraggableId rather than descriptor
// as the descriptor might change after a drop is flushed
id: DraggableId,
clientSelection: Position,
movementMode: MovementMode,
|};
export type LiftAction = {|
type: 'LIFT',
payload: LiftArgs,
|};
export const lift = (args: LiftArgs): LiftAction => ({
type: 'LIFT',
payload: args,
});
export type InitialPublishArgs = {|
critical: Critical,
dimensions: DimensionMap,
clientSelection: Position,
viewport: Viewport,
movementMode: MovementMode,
|};
export type InitialPublishAction = {|
type: 'INITIAL_PUBLISH',
payload: InitialPublishArgs,
|};
export const initialPublish = (
args: InitialPublishArgs,
): InitialPublishAction => ({
type: 'INITIAL_PUBLISH',
payload: args,
});
export type WhileDraggingPublishAction = {|
type: 'PUBLISH_WHILE_DRAGGING',
payload: Published,
|};
export const publishWhileDragging = (
args: Published,
): WhileDraggingPublishAction => ({
type: 'PUBLISH_WHILE_DRAGGING',
payload: args,
});
export type CollectionStartingAction = {|
type: 'COLLECTION_STARTING',
payload: null,
|};
export const collectionStarting = (): CollectionStartingAction => ({
type: 'COLLECTION_STARTING',
payload: null,
});
export type UpdateDroppableScrollArgs = {
id: DroppableId,
newScroll: Position,
};
export type UpdateDroppableScrollAction = {|
type: 'UPDATE_DROPPABLE_SCROLL',
payload: UpdateDroppableScrollArgs,
|};
export const updateDroppableScroll = (
args: UpdateDroppableScrollArgs,
): UpdateDroppableScrollAction => ({
type: 'UPDATE_DROPPABLE_SCROLL',
payload: args,
});
export type UpdateDroppableIsEnabledArgs = {|
id: DroppableId,
isEnabled: boolean,
|};
export type UpdateDroppableIsEnabledAction = {|
type: 'UPDATE_DROPPABLE_IS_ENABLED',
payload: UpdateDroppableIsEnabledArgs,
|};
export const updateDroppableIsEnabled = (
args: UpdateDroppableIsEnabledArgs,
): UpdateDroppableIsEnabledAction => ({
type: 'UPDATE_DROPPABLE_IS_ENABLED',
payload: args,
});
export type UpdateDroppableIsCombineEnabledArgs = {|
id: DroppableId,
isCombineEnabled: boolean,
|};
export type UpdateDroppableIsCombineEnabledAction = {|
type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',
payload: UpdateDroppableIsCombineEnabledArgs,
|};
export const updateDroppableIsCombineEnabled = (
args: UpdateDroppableIsCombineEnabledArgs,
): UpdateDroppableIsCombineEnabledAction => ({
type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',
payload: args,
});
export type MoveArgs = {|
client: Position,
|};
export type MoveAction = {|
type: 'MOVE',
payload: MoveArgs,
|};
export const move = (args: MoveArgs): MoveAction => ({
type: 'MOVE',
payload: args,
});
type MoveByWindowScrollArgs = {|
newScroll: Position,
|};
export type MoveByWindowScrollAction = {|
type: 'MOVE_BY_WINDOW_SCROLL',
payload: MoveByWindowScrollArgs,
|};
export const moveByWindowScroll = (
args: MoveByWindowScrollArgs,
): MoveByWindowScrollAction => ({
type: 'MOVE_BY_WINDOW_SCROLL',
payload: args,
});
export type UpdateViewportMaxScrollArgs = {|
maxScroll: Position,
|};
type UpdateViewportMaxScrollAction = {|
type: 'UPDATE_VIEWPORT_MAX_SCROLL',
payload: UpdateViewportMaxScrollArgs,
|};
export const updateViewportMaxScroll = (
args: UpdateViewportMaxScrollArgs,
): UpdateViewportMaxScrollAction => ({
type: 'UPDATE_VIEWPORT_MAX_SCROLL',
payload: args,
});
export type MoveUpAction = {|
type: 'MOVE_UP',
payload: null,
|};
export const moveUp = (): MoveUpAction => ({
type: 'MOVE_UP',
payload: null,
});
export type MoveDownAction = {|
type: 'MOVE_DOWN',
payload: null,
|};
export const moveDown = (): MoveDownAction => ({
type: 'MOVE_DOWN',
payload: null,
});
export type MoveRightAction = {|
type: 'MOVE_RIGHT',
payload: null,
|};
export const moveRight = (): MoveRightAction => ({
type: 'MOVE_RIGHT',
payload: null,
});
export type MoveLeftAction = {|
type: 'MOVE_LEFT',
payload: null,
|};
export const moveLeft = (): MoveLeftAction => ({
type: 'MOVE_LEFT',
payload: null,
});
type FlushAction = {|
type: 'FLUSH',
payload: null,
|};
export const flush = (): FlushAction => ({
type: 'FLUSH',
payload: null,
});
export type AnimateDropArgs = {|
completed: CompletedDrag,
newHomeClientOffset: Position,
dropDuration: number,
|};
export type DropAnimateAction = {
type: 'DROP_ANIMATE',
payload: AnimateDropArgs,
};
export const animateDrop = (args: AnimateDropArgs): DropAnimateAction => ({
type: 'DROP_ANIMATE',
payload: args,
});
export type DropCompleteArgs = {|
completed: CompletedDrag,
|};
export type DropCompleteAction = {
type: 'DROP_COMPLETE',
payload: DropCompleteArgs,
};
export const completeDrop = (args: DropCompleteArgs): DropCompleteAction => ({
type: 'DROP_COMPLETE',
payload: args,
});
type DropArgs = {|
reason: DropReason,
|};
export type DropAction = {|
type: 'DROP',
payload: DropArgs,
|};
export const drop = (args: DropArgs) => ({
type: 'DROP',
payload: args,
});
export const cancel = () => drop({ reason: 'CANCEL' });
export type DropPendingAction = {|
type: 'DROP_PENDING',
payload: DropArgs,
|};
export const dropPending = (args: DropArgs): DropPendingAction => ({
type: 'DROP_PENDING',
payload: args,
});
export type DropAnimationFinishedAction = {|
type: 'DROP_ANIMATION_FINISHED',
payload: null,
|};
export const dropAnimationFinished = (): DropAnimationFinishedAction => ({
type: 'DROP_ANIMATION_FINISHED',
payload: null,
});
export type Action =
| BeforeInitialCaptureAction
| LiftAction
| InitialPublishAction
| WhileDraggingPublishAction
| CollectionStartingAction
| UpdateDroppableScrollAction
| UpdateDroppableIsEnabledAction
| UpdateDroppableIsCombineEnabledAction
| MoveByWindowScrollAction
| UpdateViewportMaxScrollAction
// | PostJumpScrollAction
// | PostSnapDestinationChangeAction
| MoveAction
| MoveUpAction
| MoveDownAction
| MoveRightAction
| MoveLeftAction
| DropPendingAction
| DropAction
| DropAnimateAction
| DropAnimationFinishedAction
| DropCompleteAction
| FlushAction;