{ "version": 3, "sources": ["../../../src/lib/canvas/TldrawSelectionForeground.tsx"], "sourcesContent": ["import {\n\tBox2d,\n\tRotateCorner,\n\tTLEmbedShape,\n\tTLSelectionForegroundComponent,\n\tTLTextShape,\n\tgetCursor,\n\ttoDomPrecision,\n\ttrack,\n\tuseEditor,\n\tuseSelectionEvents,\n\tuseTransform,\n\tuseValue,\n} from '@tldraw/editor'\nimport classNames from 'classnames'\nimport { useRef } from 'react'\nimport { useReadonly } from '../ui/hooks/useReadonly'\nimport { CropHandles } from './CropHandles'\n\nconst IS_FIREFOX =\n\ttypeof navigator !== 'undefined' &&\n\tnavigator.userAgent &&\n\tnavigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\nexport const TldrawSelectionForeground: TLSelectionForegroundComponent = track(\n\tfunction TldrawSelectionForeground({ bounds, rotation }: { bounds: Box2d; rotation: number }) {\n\t\tconst editor = useEditor()\n\t\tconst rSvg = useRef(null)\n\n\t\tconst isReadonlyMode = useReadonly()\n\t\tconst topEvents = useSelectionEvents('top')\n\t\tconst rightEvents = useSelectionEvents('right')\n\t\tconst bottomEvents = useSelectionEvents('bottom')\n\t\tconst leftEvents = useSelectionEvents('left')\n\t\tconst topLeftEvents = useSelectionEvents('top_left')\n\t\tconst topRightEvents = useSelectionEvents('top_right')\n\t\tconst bottomRightEvents = useSelectionEvents('bottom_right')\n\t\tconst bottomLeftEvents = useSelectionEvents('bottom_left')\n\n\t\tconst isDefaultCursor = !editor.isMenuOpen && editor.instanceState.cursor.type === 'default'\n\t\tconst isCoarsePointer = editor.instanceState.isCoarsePointer\n\n\t\tconst shapes = editor.selectedShapes\n\t\tconst onlyShape = editor.onlySelectedShape\n\t\tconst isLockedShape = onlyShape && editor.isShapeOrAncestorLocked(onlyShape)\n\n\t\t// if all shapes have an expandBy for the selection outline, we can expand by the l\n\t\tconst expandOutlineBy = onlyShape\n\t\t\t? editor.getShapeUtil(onlyShape).expandSelectionOutlinePx(onlyShape)\n\t\t\t: 0\n\n\t\tuseTransform(rSvg, bounds?.x, bounds?.y, 1, editor.selectionRotation, {\n\t\t\tx: -expandOutlineBy,\n\t\t\ty: -expandOutlineBy,\n\t\t})\n\n\t\tif (!bounds) return null\n\t\tbounds = bounds.clone().expandBy(expandOutlineBy).zeroFix()\n\n\t\tconst zoom = editor.zoomLevel\n\t\tconst isChangingStyle = editor.instanceState.isChangingStyle\n\n\t\tconst width = bounds.width\n\t\tconst height = bounds.height\n\n\t\tconst size = 8 / zoom\n\t\tconst isTinyX = width < size * 2\n\t\tconst isTinyY = height < size * 2\n\n\t\tconst isSmallX = width < size * 4\n\t\tconst isSmallY = height < size * 4\n\t\tconst isSmallCropX = width < size * 5\n\t\tconst isSmallCropY = height < size * 5\n\n\t\tconst mobileHandleMultiplier = isCoarsePointer ? 1.75 : 1\n\t\tconst targetSize = (6 / zoom) * mobileHandleMultiplier\n\n\t\tconst targetSizeX = (isSmallX ? targetSize / 2 : targetSize) * (mobileHandleMultiplier * 0.75)\n\t\tconst targetSizeY = (isSmallY ? targetSize / 2 : targetSize) * (mobileHandleMultiplier * 0.75)\n\n\t\tconst showSelectionBounds =\n\t\t\t(onlyShape ? !editor.getShapeUtil(onlyShape).hideSelectionBoundsFg(onlyShape) : true) &&\n\t\t\t!isChangingStyle\n\n\t\tlet shouldDisplayBox =\n\t\t\t(showSelectionBounds &&\n\t\t\t\teditor.isInAny(\n\t\t\t\t\t'select.idle',\n\t\t\t\t\t'select.brushing',\n\t\t\t\t\t'select.scribble_brushing',\n\t\t\t\t\t'select.pointing_canvas',\n\t\t\t\t\t'select.pointing_selection',\n\t\t\t\t\t'select.pointing_shape',\n\t\t\t\t\t'select.crop.idle',\n\t\t\t\t\t'select.crop.pointing_crop',\n\t\t\t\t\t'select.pointing_resize_handle',\n\t\t\t\t\t'select.pointing_crop_handle'\n\t\t\t\t)) ||\n\t\t\t(showSelectionBounds &&\n\t\t\t\teditor.isIn('select.resizing') &&\n\t\t\t\tonlyShape &&\n\t\t\t\teditor.isShapeOfType(onlyShape, 'text'))\n\n\t\tif (onlyShape && shouldDisplayBox) {\n\t\t\tif (IS_FIREFOX && editor.isShapeOfType(onlyShape, 'embed')) {\n\t\t\t\tshouldDisplayBox = false\n\t\t\t}\n\t\t}\n\n\t\tconst showCropHandles =\n\t\t\teditor.isInAny(\n\t\t\t\t'select.pointing_crop_handle',\n\t\t\t\t'select.crop.idle',\n\t\t\t\t'select.crop.pointing_crop'\n\t\t\t) &&\n\t\t\t!isChangingStyle &&\n\t\t\t!isReadonlyMode\n\n\t\tconst shouldDisplayControls =\n\t\t\teditor.isInAny(\n\t\t\t\t'select.idle',\n\t\t\t\t'select.pointing_selection',\n\t\t\t\t'select.pointing_shape',\n\t\t\t\t'select.crop.idle'\n\t\t\t) &&\n\t\t\t!isChangingStyle &&\n\t\t\t!isReadonlyMode\n\n\t\tconst showCornerRotateHandles =\n\t\t\t!isCoarsePointer &&\n\t\t\t!(isTinyX || isTinyY) &&\n\t\t\t(shouldDisplayControls || showCropHandles) &&\n\t\t\t(onlyShape ? !editor.getShapeUtil(onlyShape).hideRotateHandle(onlyShape) : true) &&\n\t\t\t!isLockedShape\n\n\t\tconst showMobileRotateHandle =\n\t\t\tisCoarsePointer &&\n\t\t\t(!isSmallX || !isSmallY) &&\n\t\t\t(shouldDisplayControls || showCropHandles) &&\n\t\t\t(onlyShape ? !editor.getShapeUtil(onlyShape).hideRotateHandle(onlyShape) : true) &&\n\t\t\t!isLockedShape\n\n\t\tconst showResizeHandles =\n\t\t\tshouldDisplayControls &&\n\t\t\t(onlyShape\n\t\t\t\t? editor.getShapeUtil(onlyShape).canResize(onlyShape) &&\n\t\t\t\t !editor.getShapeUtil(onlyShape).hideResizeHandles(onlyShape)\n\t\t\t\t: true) &&\n\t\t\t!showCropHandles &&\n\t\t\t!isLockedShape\n\n\t\tconst hideAlternateCornerHandles = isTinyX || isTinyY\n\t\tconst showOnlyOneHandle = isTinyX && isTinyY\n\t\tconst hideAlternateCropHandles = isSmallCropX || isSmallCropY\n\n\t\tconst showHandles = showResizeHandles || showCropHandles\n\t\tconst hideRotateCornerHandles = !showCornerRotateHandles\n\t\tconst hideMobileRotateHandle = !shouldDisplayControls || !showMobileRotateHandle\n\t\tconst hideTopLeftCorner = !shouldDisplayControls || !showHandles\n\t\tconst hideTopRightCorner = !shouldDisplayControls || !showHandles || hideAlternateCornerHandles\n\t\tconst hideBottomLeftCorner =\n\t\t\t!shouldDisplayControls || !showHandles || hideAlternateCornerHandles\n\t\tconst hideBottomRightCorner =\n\t\t\t!shouldDisplayControls || !showHandles || (showOnlyOneHandle && !showCropHandles)\n\n\t\tlet hideEdgeTargetsDueToCoarsePointer = isCoarsePointer\n\n\t\tif (\n\t\t\thideEdgeTargetsDueToCoarsePointer &&\n\t\t\tshapes.every((shape) => editor.getShapeUtil(shape).isAspectRatioLocked(shape))\n\t\t) {\n\t\t\thideEdgeTargetsDueToCoarsePointer = false\n\t\t}\n\n\t\t// If we're showing crop handles, then show the edges too.\n\t\t// If we're showing resize handles, then show the edges only\n\t\t// if we're not hiding them for some other reason\n\t\tlet hideEdgeTargets = true\n\n\t\tif (showCropHandles) {\n\t\t\thideEdgeTargets = hideAlternateCropHandles\n\t\t} else if (showResizeHandles) {\n\t\t\thideEdgeTargets =\n\t\t\t\thideAlternateCornerHandles || showOnlyOneHandle || hideEdgeTargetsDueToCoarsePointer\n\t\t}\n\n\t\tconst textHandleHeight = Math.min(24 / zoom, height - targetSizeY * 3)\n\t\tconst showTextResizeHandles =\n\t\t\tshouldDisplayControls &&\n\t\t\tisCoarsePointer &&\n\t\t\tonlyShape &&\n\t\t\teditor.isShapeOfType(onlyShape, 'text') &&\n\t\t\ttextHandleHeight * zoom >= 4\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{shouldDisplayBox && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t{/* Targets */}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t{/* Corner Targets */}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t{/* Resize Handles */}\n\t\t\t\t{showResizeHandles && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{showTextResizeHandles && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{/* Crop Handles */}\n\t\t\t\t{showCropHandles && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t)\n\t}\n)\n\nexport const RotateCornerHandle = function RotateCornerHandle({\n\tcx,\n\tcy,\n\ttargetSize,\n\tcorner,\n\tcursor,\n\tisHidden,\n\t'data-testid': testId,\n}: {\n\tcx: number\n\tcy: number\n\ttargetSize: number\n\tcorner: RotateCorner\n\tcursor?: string\n\tisHidden: boolean\n\t'data-testid'?: string\n}) {\n\tconst events = useSelectionEvents(corner)\n\treturn (\n\t\t\n\t)\n}\n\nconst SQUARE_ROOT_PI = Math.sqrt(Math.PI)\n\nexport const MobileRotateHandle = function RotateHandle({\n\tcx,\n\tcy,\n\tsize,\n\tisHidden,\n\t'data-testid': testId,\n}: {\n\tcx: number\n\tcy: number\n\tsize: number\n\tisHidden: boolean\n\t'data-testid'?: string\n}) {\n\tconst events = useSelectionEvents('mobile_rotate')\n\n\tconst editor = useEditor()\n\tconst zoom = useValue('zoom level', () => editor.zoomLevel, [editor])\n\tconst bgRadius = Math.max(14 * (1 / zoom), 20 / Math.max(1, zoom))\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n"], "mappings": "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", "names": ["TldrawSelectionForeground", "RotateCornerHandle"] }