hedgedoc/frontend/src/redux/note-details/reducers/build-state-from-update-cursor-position.ts
Erik Michelson d840a6f0b1 refactor(redux): migrate to RTK2 store definition
Signed-off-by: Erik Michelson <github@erik.michelson.eu>
2024-04-09 10:55:38 +02:00

34 lines
1 KiB
TypeScript

/*
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import type { CursorSelection } from '../../../components/editor-page/editor-pane/tool-bar/formatters/types/cursor-selection'
import type { NoteDetails } from '../types'
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
}