mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-13 14:44:43 -04:00
34 lines
1 KiB
TypeScript
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
|
|
}
|