{
  "version": 3,
  "sources": ["../../../../../src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx"],
  "sourcesContent": ["import {\n\tapproximately,\n\tdefineMessages,\n\tisEqual,\n\tkickoutOccludedShapes,\n\tmodulate,\n\tTLI18nMessage,\n\tTLImageShape,\n\tTLShapePartial,\n\ttrack,\n\tuseEditor,\n\tuseValue,\n} from '@tldraw/editor'\nimport { useCallback, useEffect, useRef } from 'react'\nimport {\n\tASPECT_RATIO_OPTION,\n\tASPECT_RATIO_OPTIONS,\n\tASPECT_RATIO_TO_VALUE,\n\tgetCroppedImageDataForAspectRatio,\n\tgetCroppedImageDataWhenZooming,\n\tgetDefaultCrop,\n\tMAX_ZOOM,\n} from '../../../shapes/shared/crop'\nimport { useActions } from '../../context/actions'\nimport { useUiEvents } from '../../context/events'\nimport { useTranslation } from '../../hooks/useTranslation/useTranslation'\nimport { TldrawUiButtonIcon } from '../primitives/Button/TldrawUiButtonIcon'\nimport { TldrawUiButtonLabel } from '../primitives/Button/TldrawUiButtonLabel'\nimport {\n\tTldrawUiDropdownMenuCheckboxItem,\n\tTldrawUiDropdownMenuContent,\n\tTldrawUiDropdownMenuRoot,\n\tTldrawUiDropdownMenuTrigger,\n} from '../primitives/TldrawUiDropdownMenu'\nimport { TldrawUiSlider } from '../primitives/TldrawUiSlider'\nimport { TldrawUiToolbarButton } from '../primitives/TldrawUiToolbar'\n\nconst messages = defineMessages({\n\tactionDownloadOriginal: { id: 'action.download-original', defaultMessage: 'Download original' },\n\ttoolReplaceMedia: { id: 'tool.replace-media', defaultMessage: 'Replace media\u2026' },\n\ttoolAspectRatio: { id: 'tool.aspect-ratio', defaultMessage: 'Aspect ratio' },\n\ttoolImageCrop: { id: 'tool.image-crop', defaultMessage: 'Crop image' },\n\ttoolImageCropConfirm: { id: 'tool.image-crop-confirm', defaultMessage: 'Confirm' },\n\ttoolImageZoom: { id: 'tool.image-zoom', defaultMessage: 'Zoom' },\n\ttoolMediaAltText: { id: 'tool.media-alt-text', defaultMessage: 'Alternative text' },\n})\n\n/** @public */\nexport interface DefaultImageToolbarContentProps {\n\timageShapeId: TLImageShape['id']\n\tisManipulating: boolean\n\tonEditAltTextStart(): void\n\tonManipulatingStart(): void\n\tonManipulatingEnd(): void\n}\n\n// Keyed on the option rather than written at the call site, which used to compose the id from\n// `aspectRatio` and so hid every one of these from the extractor. The `Record` keeps it complete:\n// a new option won't compile until it has a label.\nconst aspectRatioMessages: Record<ASPECT_RATIO_OPTION, TLI18nMessage> = defineMessages({\n\toriginal: { id: 'tool.aspect-ratio.original', defaultMessage: 'Original' },\n\tsquare: { id: 'tool.aspect-ratio.square', defaultMessage: 'Square (1:1)' },\n\tcircle: { id: 'tool.aspect-ratio.circle', defaultMessage: 'Circle (1:1)' },\n\tlandscape: { id: 'tool.aspect-ratio.landscape', defaultMessage: 'Landscape (4:3)' },\n\tportrait: { id: 'tool.aspect-ratio.portrait', defaultMessage: 'Portrait (3:4)' },\n\twide: { id: 'tool.aspect-ratio.wide', defaultMessage: 'Wide (16:9)' },\n})\n\nconst MAX_RATIO_CONVERSION = MAX_ZOOM / (MAX_ZOOM - 1)\n\n// Apply an easing function to smooth out the zoom curve,\n// otherwise the zoom slider has a cubic drag feel to it which feels off.\nfunction easeZoom(value: number, maxValue: number): number {\n\t// Use an easing function for a more natural zoom feel\n\treturn Math.pow(value / maxValue, MAX_RATIO_CONVERSION) * maxValue\n}\n\n/** @public @react */\nexport const DefaultImageToolbarContent = track(function DefaultImageToolbarContent({\n\timageShapeId,\n\tisManipulating,\n\tonEditAltTextStart,\n\tonManipulatingStart,\n\tonManipulatingEnd,\n}: DefaultImageToolbarContentProps) {\n\tconst editor = useEditor()\n\tconst trackEvent = useUiEvents()\n\tconst msg = useTranslation()\n\tconst source = 'image-toolbar'\n\tconst sliderRef = useRef<HTMLDivElement>(null)\n\tconst isReadonly = editor.getIsReadonly()\n\n\tconst crop = useValue('crop', () => editor.getShape<TLImageShape>(imageShapeId)!.props.crop, [\n\t\teditor,\n\t\timageShapeId,\n\t])\n\tconst zoom = crop\n\t\t? Math.min(1 - (crop.bottomRight.x - crop.topLeft.x), 1 - (crop.bottomRight.y - crop.topLeft.y))\n\t\t: 0\n\t// So, we set a maxZoom here in case there's been a manual crop applied.\n\t// Typically, you can zoom 3x into the image size (MAX_ZOOM's value).\n\t// If you go deeper than that zoom level, we need to set that as the new 100%\n\t// value on the zoom slider (otherwise you could zoom into infinity).\n\t// This balances usage of the zoom slider with manual cropping.\n\tconst maxZoom = crop ? Math.max(zoom, 1 - 1 / MAX_ZOOM) : MAX_ZOOM\n\tconst actions = useActions()\n\n\tconst onHistoryMark = useCallback((id: string) => editor.markHistoryStoppingPoint(id), [editor])\n\n\tconst displayValue = crop\n\t\t? modulate(easeZoom(zoom, maxZoom), [0, maxZoom], [0, 100], true /* clamp */)\n\t\t: 0\n\n\tconst handleZoomChange = useCallback(\n\t\t(value: number) => {\n\t\t\teditor.setCurrentTool('select.crop.idle')\n\t\t\t// Convert the eased slider value back to the actual zoom value\n\t\t\tconst sliderPercent = value / 100\n\n\t\t\t// Convert the slider position back into the \"zoom\" value expected by\n\t\t\t// getCroppedImageDataWhenZooming.\n\t\t\t// 1. Undo the easing: z_out = sliderPercent^(1/maxRatioConversion) * maxZoom\n\t\t\t// 2. Translate z_out into the function's input domain. The helper computes\n\t\t\t//    the *resulting* zoom (z_out) using:\n\t\t\t//        z_out = 2 * z_in / (1 + 2 * z_in)\n\t\t\t//    Solving for z_in gives:\n\t\t\t//        z_in = z_out / (2 * (1 - z_out))\n\t\t\tconst maxDimension = 1 - 1 / MAX_ZOOM\n\t\t\tconst clampedMaxZoom = Math.min(maxDimension, maxZoom)\n\t\t\tconst zOut = Math.pow(sliderPercent, 1 / MAX_RATIO_CONVERSION) * clampedMaxZoom\n\t\t\tconst zoom = zOut >= 1 ? 1 : zOut / (2 * (1 - zOut))\n\t\t\tconst imageShape = editor.getShape<TLImageShape>(imageShapeId)\n\t\t\tif (!imageShape) return\n\n\t\t\tconst change = getCroppedImageDataWhenZooming(zoom, imageShape, maxZoom)\n\n\t\t\teditor.updateShape({\n\t\t\t\tid: imageShape.id,\n\t\t\t\ttype: imageShape.type,\n\t\t\t\tx: change.x,\n\t\t\t\ty: change.y,\n\t\t\t\tprops: {\n\t\t\t\t\tw: change.w,\n\t\t\t\t\th: change.h,\n\t\t\t\t\tcrop: change.crop,\n\t\t\t\t},\n\t\t\t} as TLShapePartial)\n\n\t\t\ttrackEvent('set-style', { source: 'image-toolbar', id: 'zoom', value })\n\t\t},\n\t\t[editor, trackEvent, imageShapeId, maxZoom]\n\t)\n\n\tconst handleImageReplace = useCallback(\n\t\t() => actions['image-replace'].onSelect('image-toolbar'),\n\t\t[actions]\n\t)\n\n\tconst handleImageDownload = useCallback(\n\t\t() => actions['download-original'].onSelect('image-toolbar'),\n\t\t[actions]\n\t)\n\n\tconst handleAspectRatioChange = (aspectRatio: ASPECT_RATIO_OPTION) => {\n\t\tconst imageShape = editor.getShape<TLImageShape>(imageShapeId)\n\t\tif (!imageShape) return\n\t\teditor.run(() => {\n\t\t\teditor.setCurrentTool('select.crop.idle')\n\t\t\tconst change = getCroppedImageDataForAspectRatio(aspectRatio, imageShape)\n\t\t\teditor.markHistoryStoppingPoint('aspect ratio')\n\t\t\teditor.updateShape({\n\t\t\t\tid: imageShapeId,\n\t\t\t\ttype: 'image',\n\t\t\t\tx: change.x,\n\t\t\t\ty: change.y,\n\t\t\t\tprops: {\n\t\t\t\t\tcrop: change.crop,\n\t\t\t\t\tw: change.w,\n\t\t\t\t\th: change.h,\n\t\t\t\t},\n\t\t\t} as TLShapePartial)\n\t\t\tkickoutOccludedShapes(editor, [imageShapeId])\n\t\t})\n\t}\n\n\tconst altText = useValue(\n\t\t'altText',\n\t\t() => editor.getShape<TLImageShape>(imageShapeId)!.props.altText,\n\t\t[editor, imageShapeId]\n\t)\n\tconst shapeAspectRatio = useValue(\n\t\t'shapeAspectRatio',\n\t\t() => {\n\t\t\tconst imageShape = editor.getShape<TLImageShape>(imageShapeId)!\n\t\t\treturn imageShape.props.w / imageShape.props.h\n\t\t},\n\t\t[editor, imageShapeId]\n\t)\n\tconst isOriginalCrop = !crop || isEqual(crop, getDefaultCrop())\n\n\tuseEffect(() => {\n\t\tif (isManipulating) {\n\t\t\teditor.timers.setTimeout(() => sliderRef.current?.focus(), 0)\n\t\t}\n\t}, [editor, isManipulating])\n\n\tuseEffect(() => {\n\t\tfunction handleKeyDown(e: KeyboardEvent) {\n\t\t\tif (!isManipulating) return\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\teditor.cancel()\n\t\t\t} else if (e.key === 'Enter') {\n\t\t\t\teditor.complete()\n\t\t\t} else {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tonManipulatingEnd()\n\t\t\t// Otherwise the keydown bubbles to the container's handler, which cancels again\n\t\t\t// against select.idle and clears the selection (#10405). Leaving crop mode also\n\t\t\t// unmounts the slider, so refocus the container to keep shortcuts working.\n\t\t\te.stopPropagation()\n\t\t\teditor.getContainer().focus()\n\t\t}\n\t\tconst elm = sliderRef.current\n\t\tif (!elm) return\n\t\telm.addEventListener('keydown', handleKeyDown)\n\t\treturn () => elm.removeEventListener('keydown', handleKeyDown)\n\t}, [editor, isManipulating, onManipulatingEnd])\n\n\tif (isManipulating) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<TldrawUiSlider\n\t\t\t\t\tref={sliderRef}\n\t\t\t\t\tvalue={displayValue}\n\t\t\t\t\tlabel={messages.toolImageZoom.id}\n\t\t\t\t\tonValueChange={handleZoomChange}\n\t\t\t\t\tonHistoryMark={onHistoryMark}\n\t\t\t\t\tmin={0}\n\t\t\t\t\tsteps={100}\n\t\t\t\t\tdata-testid=\"tool.image-zoom\"\n\t\t\t\t\ttitle={msg(messages.toolImageZoom)}\n\t\t\t\t/>\n\t\t\t\t<TldrawUiDropdownMenuRoot id=\"image-toolbar-aspect-ratio\">\n\t\t\t\t\t<TldrawUiDropdownMenuTrigger>\n\t\t\t\t\t\t<TldrawUiToolbarButton\n\t\t\t\t\t\t\ttitle={msg(messages.toolAspectRatio)}\n\t\t\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\t\t\tdata-testid=\"tool.image-aspect-ratio\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<TldrawUiButtonIcon icon=\"corners\" />\n\t\t\t\t\t\t</TldrawUiToolbarButton>\n\t\t\t\t\t</TldrawUiDropdownMenuTrigger>\n\t\t\t\t\t<TldrawUiDropdownMenuContent side=\"top\" align=\"center\">\n\t\t\t\t\t\t{ASPECT_RATIO_OPTIONS.map((aspectRatio) => {\n\t\t\t\t\t\t\tlet checked = false\n\t\t\t\t\t\t\tif (isOriginalCrop) {\n\t\t\t\t\t\t\t\tchecked = aspectRatio === 'original'\n\t\t\t\t\t\t\t} else if (aspectRatio === 'circle') {\n\t\t\t\t\t\t\t\tchecked = !!crop.isCircle\n\t\t\t\t\t\t\t} else if (aspectRatio === 'square') {\n\t\t\t\t\t\t\t\tchecked =\n\t\t\t\t\t\t\t\t\t!crop.isCircle &&\n\t\t\t\t\t\t\t\t\tapproximately(shapeAspectRatio, ASPECT_RATIO_TO_VALUE[aspectRatio], 0.1)\n\t\t\t\t\t\t\t} else if (aspectRatio !== 'original') {\n\t\t\t\t\t\t\t\tchecked = approximately(shapeAspectRatio, ASPECT_RATIO_TO_VALUE[aspectRatio], 0.01)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<TldrawUiDropdownMenuCheckboxItem\n\t\t\t\t\t\t\t\t\tkey={aspectRatio}\n\t\t\t\t\t\t\t\t\tonSelect={() => handleAspectRatioChange(aspectRatio as ASPECT_RATIO_OPTION)}\n\t\t\t\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\t\t\t\ttitle={msg(aspectRatioMessages[aspectRatio as ASPECT_RATIO_OPTION])}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<TldrawUiButtonLabel>\n\t\t\t\t\t\t\t\t\t\t{msg(aspectRatioMessages[aspectRatio as ASPECT_RATIO_OPTION])}\n\t\t\t\t\t\t\t\t\t</TldrawUiButtonLabel>\n\t\t\t\t\t\t\t\t</TldrawUiDropdownMenuCheckboxItem>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t</TldrawUiDropdownMenuContent>\n\t\t\t\t</TldrawUiDropdownMenuRoot>\n\t\t\t\t<TldrawUiToolbarButton\n\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\tonClick={onManipulatingEnd}\n\t\t\t\t\tdata-testid=\"tool.image-crop-confirm\"\n\t\t\t\t\tstyle={{ borderLeft: '1px solid var(--tl-color-divider)', marginLeft: '2px' }}\n\t\t\t\t\ttitle={msg(messages.toolImageCropConfirm)}\n\t\t\t\t>\n\t\t\t\t\t<TldrawUiButtonIcon small icon=\"check\" />\n\t\t\t\t</TldrawUiToolbarButton>\n\t\t\t</>\n\t\t)\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{!isReadonly && (\n\t\t\t\t<>\n\t\t\t\t\t<TldrawUiToolbarButton\n\t\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\t\tdata-testid=\"tool.image-replace\"\n\t\t\t\t\t\tonClick={handleImageReplace}\n\t\t\t\t\t\ttitle={msg(messages.toolReplaceMedia)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TldrawUiButtonIcon small icon=\"tool-media\" />\n\t\t\t\t\t</TldrawUiToolbarButton>\n\t\t\t\t\t<TldrawUiToolbarButton\n\t\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\t\ttitle={msg(messages.toolImageCrop)}\n\t\t\t\t\t\tonClick={onManipulatingStart}\n\t\t\t\t\t\tdata-testid=\"tool.image-crop\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<TldrawUiButtonIcon small icon=\"crop\" />\n\t\t\t\t\t</TldrawUiToolbarButton>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t<TldrawUiToolbarButton\n\t\t\t\ttype=\"icon\"\n\t\t\t\ttitle={msg(messages.actionDownloadOriginal)}\n\t\t\t\tonClick={handleImageDownload}\n\t\t\t\tdata-testid=\"tool.image-download\"\n\t\t\t>\n\t\t\t\t<TldrawUiButtonIcon small icon=\"download\" />\n\t\t\t</TldrawUiToolbarButton>\n\t\t\t{(altText || !isReadonly) && (\n\t\t\t\t<TldrawUiToolbarButton\n\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\ttitle={msg(messages.toolMediaAltText)}\n\t\t\t\t\tdata-testid=\"tool.image-alt-text\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\ttrackEvent('alt-text-start', { source })\n\t\t\t\t\t\tonEditAltTextStart()\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<TldrawUiButtonIcon small icon=\"alt\" />\n\t\t\t\t</TldrawUiToolbarButton>\n\t\t\t)}\n\t\t</>\n\t)\n})\n"],
  "mappings": "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",
  "names": ["DefaultImageToolbarContent", "zoom"]
}
