@@ -17,9 +17,7 @@ function initialzeDebugConsole() {
1717 debugConsole . appendChild ( consoleInput ) ;
1818
1919 consoleInput . onkeydown = function ( e ) {
20- var key = e . keyCode || e . which ;
21- //On Enter
22- if ( key == 13 ) {
20+ if ( [ 'Enter' , 'NumpadEnter' ] . includes ( e . key ) ) {
2321 console . log ( `Evaluating ${ consoleInput . value } ` ) ;
2422 eval ( consoleInput . value ) ;
2523 }
@@ -29,13 +27,20 @@ function initialzeDebugConsole() {
2927}
3028
3129function setupConsoleLogPipe ( ) {
32- // Store actual console log functions, since they will be overwritten with new logic
30+ // Store actual console log functions
3331 let defaultConsoleLog = console . log ;
3432 let defaultConsoleInfo = console . info ;
3533 let defaultConsoleDebug = console . debug ;
3634 let defaultConsoleWarn = console . warn ;
3735 let defaultConsoleError = console . error ;
3836
37+ // Overwrite log functions to parse and pipe to debug html console
38+ console . log = ( message ) => { parseMessageAndLog ( message , 'log' , defaultConsoleLog ) ; } ;
39+ console . info = ( message ) => { parseMessageAndLog ( message , 'info' , defaultConsoleInfo ) ; } ;
40+ console . debug = ( message ) => { parseMessageAndLog ( message , 'debug' , defaultConsoleDebug ) ; } ;
41+ console . warn = ( message ) => { parseMessageAndLog ( message , 'warn' , defaultConsoleWarn ) ; } ;
42+ console . error = ( message ) => { parseMessageAndLog ( message , 'error' , defaultConsoleError ) ; } ;
43+
3944
4045 parseMessageAndLog = ( message , logLevel , consoleLogFunction ) => {
4146 let index = 0 ;
@@ -80,18 +85,12 @@ function setupConsoleLogPipe() {
8085 index = closingTag + "</color>" . length ;
8186 }
8287
83- divLog ( divMessage , logLevel ) ;
88+ htmlLog ( divMessage , logLevel ) ;
8489 consoleLogFunction ( consoleMessage , ...consoleArgs ) ;
8590 } ;
86-
87- console . log = ( message ) => { parseMessageAndLog ( message , 'log' , defaultConsoleLog ) ; } ;
88- console . info = ( message ) => { parseMessageAndLog ( message , 'info' , defaultConsoleInfo ) ; } ;
89- console . debug = ( message ) => { parseMessageAndLog ( message , 'debug' , defaultConsoleDebug ) ; } ;
90- console . warn = ( message ) => { parseMessageAndLog ( message , 'warn' , defaultConsoleWarn ) ; } ;
91- console . error = ( message ) => { parseMessageAndLog ( message , 'error' , defaultConsoleError ) ; } ;
9291}
9392
94- function divLog ( message , className ) {
93+ function htmlLog ( message , className ) {
9594 var entry = document . createElement ( 'div' ) ;
9695 entry . classList . add ( 'entry' , className ) ;
9796 consoleDiv . appendChild ( entry ) ;
@@ -110,9 +109,19 @@ function divLog(message, className) {
110109 var copyIcon = document . createElement ( 'div' ) ;
111110 copyIcon . classList . add ( 'icon' , 'gg-copy' ) ;
112111 copyButton . appendChild ( copyIcon ) ;
112+
113113 copyButton . addEventListener ( 'click' , function ( ) {
114- navigator . clipboard . writeText ( message ) ;
114+ function customCopyCommand ( e ) {
115+ // copy innerHTML as rich text
116+ e . clipboardData . setData ( "text/html" , message ) ;
117+ e . clipboardData . setData ( "text/plain" , message ) ;
118+ e . preventDefault ( ) ;
119+ }
120+ document . addEventListener ( "copy" , customCopyCommand ) ;
121+ document . execCommand ( "copy" ) ;
122+ document . removeEventListener ( "copy" , customCopyCommand ) ;
115123
124+ // Show copy feedback to the user
116125 copyButton . classList . add ( 'active' ) ;
117126 setTimeout ( function ( ) {
118127 copyButton . classList . remove ( 'active' ) ;
0 commit comments