66 ToolTip ,
77} from '@codecademy/gamut' ;
88import { CopyIcon } from '@codecademy/gamut-icons' ;
9+ import { UserClickData } from '@codecademy/tracking' ;
910import styled from '@emotion/styled' ;
1011import React , { useState } from 'react' ;
1112
@@ -43,6 +44,7 @@ type EditorProps = {
4344 onChange : ( text : string ) => void ;
4445 snippetsBaseUrl ?: string ;
4546 onCopy ?: CodebytesChangeHandler ;
47+ trackingData ?: Omit < UserClickData , 'target' > ;
4648} ;
4749
4850export const Editor : React . FC < EditorProps > = ( {
@@ -52,6 +54,7 @@ export const Editor: React.FC<EditorProps> = ({
5254 onChange,
5355 onCopy,
5456 snippetsBaseUrl,
57+ trackingData,
5558} ) => {
5659 const [ output , setOutput ] = useState ( '' ) ;
5760 const [ status , setStatus ] = useState < 'ready' | 'waiting' | 'error' > ( 'ready' ) ;
@@ -64,7 +67,7 @@ export const Editor: React.FC<EditorProps> = ({
6467 . catch ( ( ) => console . error ( 'Failed to copy' ) ) ;
6568 setIsCodeByteCopied ( true ) ;
6669 onCopy ?.( text , language ) ;
67- trackClick ( 'copy' ) ;
70+ trackClick ( 'copy' , trackingData ) ;
6871 }
6972 } ;
7073
@@ -83,7 +86,7 @@ export const Editor: React.FC<EditorProps> = ({
8386 } ;
8487 setStatus ( 'waiting' ) ;
8588 setOutput ( '' ) ;
86- trackClick ( 'run' ) ;
89+ trackClick ( 'run' , trackingData ) ;
8790
8891 try {
8992 const response = await postSnippet ( data , snippetsBaseUrl ) ;
0 commit comments