diff --git a/src/client/lazy-app/Compress/Options/index.tsx b/src/client/lazy-app/Compress/Options/index.tsx index 5208775d..5cd27d3b 100644 --- a/src/client/lazy-app/Compress/Options/index.tsx +++ b/src/client/lazy-app/Compress/Options/index.tsx @@ -5,6 +5,7 @@ import 'add-css:./style.css'; import { cleanSet, cleanMerge } from '../../util/clean-modify'; import type { SourceImage, OutputType } from '..'; +import type SnackBarElement from 'shared/initial-app/custom-els/snack-bar'; import { EncoderOptions, EncoderState, @@ -19,8 +20,11 @@ import Select from './Select'; import { Options as QuantOptionsComponent } from 'features/processors/quantize/client'; import { Options as ResizeOptionsComponent } from 'features/processors/resize/client'; +import { generateCliInvocation } from '../../util/cli-invocation-generator'; + interface Props { index: 0 | 1; + showSnack: SnackBarElement['showSnackbar']; mobileView: boolean; source?: SourceImage; encoderState?: EncoderState; @@ -106,6 +110,22 @@ export default class Options extends Component { this.props.onEncoderOptionsChange(this.props.index, newOptions); }; + private onCreateCLIInvocation = () => { + if (!this.props.encoderState) { + return; + } + + try { + const cliInvocation = generateCliInvocation( + this.props.encoderState, + this.props.processorState, + ); + navigator.clipboard.writeText(cliInvocation); + } catch (e) { + this.props.showSnack(e); + } + }; + render( { source, encoderState, processorState }: Props, { supportedEncoderMap }: State, @@ -125,7 +145,9 @@ export default class Options extends Component { {!encoderState ? null : (
-

Edit

+

+ Edit +