Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 1x 1x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x | import { DEFAULT_ROTATE_HANDLE_HEIGHT, DEG_PER_RAD } from '../constants/constants'; import type { ImageRotateMetadataFormat } from 'roosterjs-content-model-types'; import type { DragAndDropHandler } from '../../pluginUtils/DragAndDrop/DragAndDropHandler'; import type { DragAndDropContext } from '../types/DragAndDropContext'; /** * @internal * The rotate drag and drop handler */ export const Rotator: DragAndDropHandler<DragAndDropContext, ImageRotateMetadataFormat> = { onDragStart: ({ editInfo }) => ({ ...editInfo }), onDragging: ({ editInfo, options }, e, base, deltaX, deltaY) => { Eif (editInfo.heightPx) { const distance = editInfo.heightPx / 2 + DEFAULT_ROTATE_HANDLE_HEIGHT; const newX = distance * Math.sin(base.angleRad ?? 0) + deltaX; const newY = distance * Math.cos(base.angleRad ?? 0) - deltaY; let angleInRad = Math.atan2(newX, newY); Eif (!e.altKey && options && options.minRotateDeg !== undefined) { const angleInDeg = angleInRad * DEG_PER_RAD; const adjustedAngleInDeg = Math.round(angleInDeg / options.minRotateDeg) * options.minRotateDeg; angleInRad = adjustedAngleInDeg / DEG_PER_RAD; } Eif (editInfo.angleRad != angleInRad) { editInfo.angleRad = angleInRad; return true; } } return false; }, }; |