UNPKG

devexpress-richedit

Version:

DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.

43 lines (42 loc) 1.96 kB
import { DocumentLayoutDetailsLevel } from '../../layout/document-layout-details-level'; import { Field } from '../../model/fields/field'; import { FixedInterval } from '@devexpress/utils/lib/intervals/fixed'; import { RichEditClientCommand } from '../../commands/client-command'; import { TouchHandlerStateBase } from './touch-handler-state-base'; export class TouchHandlerDragContentState extends TouchHandlerStateBase { constructor(handler) { super(handler); } finish() { this.handler.boxVisualizerManager.dragCaretVisualizer.hide(); } onTouchMove(evt) { this.continueDrag(evt); return false; } onTouchEnd(evt) { this.commitDrag(evt); this.handler.switchToDefaultState(); } continueDrag(evt) { var htr = this.calculateHitTest(evt); if (htr.exactlyDetailLevel >= DocumentLayoutDetailsLevel.Character) this.handler.boxVisualizerManager.dragCaretVisualizer.show(htr); } commitDrag(evt) { var htr = this.calculateHitTest(evt); if (htr.exactlyDetailLevel >= DocumentLayoutDetailsLevel.Character) { var subDocument = this.handler.control.selection.activeSubDocument; var interval = new FixedInterval(htr.getPosition(), 0); Field.correctIntervalDueToFields(subDocument, interval); var commandId = RichEditClientCommand.DragMoveContent; this.handler.control.commandManager.getCommand(commandId).execute(this.handler.control.commandManager.isPublicApiCall, interval.start); } } calculateHitTest(evt) { const htr = this.handler.control.hitTestManager.calculate(evt.layoutPoint, DocumentLayoutDetailsLevel.Character, this.handler.control.selection.activeSubDocument); if (htr.exactlyDetailLevel > DocumentLayoutDetailsLevel.None) htr.correctAsVisibleBox(); return htr; } }