/
githubmirror
/
react-beautiful-dnd
Обзор
Документация
Войти
/
githubmirror
/
react-beautiful-dnd
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/util/dragging-state.js
65 строк
1 KB
Alex Reardon
fixing linting
03 дек 2019, 12:00
03 дек 2019, 12:00
ba85f47
Код
Авторство
О чём код?
// @flow import { type Position } from 'css-box-model'; import { add } from '../../src/state/position'; import getStatePreset from './get-simple-state-preset'; import type { ClientPositions, PagePositions, DraggingState, CollectingState, DropPendingState, DragImpact, } from '../../src/types'; const state = getStatePreset(); export type IsDraggingState = | DraggingState | CollectingState | DropPendingState; export const draggingStates: IsDraggingState[] = [ state.dragging(), state.collecting(), state.dropPending(), ]; export const withImpact = ( current: IsDraggingState, impact: DragImpact, ): IsDraggingState => ({ ...current, impact, }: any); export const move = ( previous: IsDraggingState, offset: Position, ): IsDraggingState => { const client: ClientPositions = { offset, selection: add(previous.initial.client.selection, offset), borderBoxCenter: add(previous.initial.client.borderBoxCenter, offset), }; const page: PagePositions = { selection: add(client.selection, previous.viewport.scroll.current), borderBoxCenter: add( client.borderBoxCenter, previous.viewport.scroll.current, ), offset: add(client.offset, previous.viewport.scroll.diff.value), }; return { // appeasing flow phase: 'DRAGGING', ...previous, // eslint-disable-next-line phase: previous.phase, current: { client, page, }, }; };