hedgedoc/src/redux/note-details/reducers/build-state-from-update-cursor-position.ts
Philip Molares ecffebc43c
docs: consolidate docs (#2182)
Signed-off-by: Philip Molares <philip.molares@udo.edu>
2022-07-21 22:36:46 +02:00

35 lines
1 KiB
TypeScript

/*
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import type { NoteDetails } from '../types/note-details'
import type { CursorSelection } from '../../../components/editor-page/editor-pane/tool-bar/formatters/types/cursor-selection'
export const buildStateFromUpdateCursorPosition = (state: NoteDetails, selection: CursorSelection): NoteDetails => {
const correctedSelection = isFromAfterTo(selection)
? {
to: selection.from,
from: selection.to as number
}
: selection
return {
...state,
selection: correctedSelection
}
}
/**
* Checks if the from-cursor position in the given selection is after the to -cursor position.
*
* @param selection The cursor selection to check
* @return {@link true} if the from-cursor position is after the to position
*/
const isFromAfterTo = (selection: CursorSelection): boolean => {
if (selection.to === undefined) {
return false
}
return selection.from > selection.to
}