diff --git a/libs/shared/lib/vis/components/VisualizationTabBar.tsx b/libs/shared/lib/vis/components/VisualizationTabBar.tsx index c6f217e07faebd8d4c39b21074579572ec3e7da4..02879db1b5767837467f971fb8d695aea4beec4a 100644 --- a/libs/shared/lib/vis/components/VisualizationTabBar.tsx +++ b/libs/shared/lib/vis/components/VisualizationTabBar.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { Button, DropdownContainer, DropdownItem, DropdownItemContainer, DropdownTrigger } from '../../components'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../components/tooltip'; import { ControlContainer } from '../../components/controls'; @@ -35,6 +35,21 @@ export default function VisualizationTabBar(props: { fullSize: () => void; expor dispatch(removeVisualization(id)); }; + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if ((e.ctrlKey || e.metaKey) && e.key === 's') { + e.preventDefault(); + props.exportImage(); + } + }; + + window.addEventListener('keydown', handleKeyDown); + + return () => { + window.removeEventListener('keydown', handleKeyDown); + }; + }, [props]); + return ( <div className="absolute shrink-0 top-0 left-0 right-0 flex items-stretch justify-between h-7 bg-secondary-100 border-b border-secondary-200 max-w-full"> <div className="flex items-center">