@@ -5,40 +5,42 @@ function formatCrateName(crateTitleAndVersion) {
55
66( function ( ) {
77 const clipboard = document . getElementById ( "clipboard" ) ;
8- let resetClipboardTimeout = null ;
9- let resetClipboardIcon = clipboard . innerHTML ;
8+ if ( clipboard ) {
9+ let resetClipboardTimeout = null ;
10+ let resetClipboardIcon = clipboard . innerHTML ;
1011
11- function resetClipboard ( ) {
12- resetClipboardTimeout = null ;
13- clipboard . innerHTML = resetClipboardIcon ;
14- }
15-
16- function copyTextHandler ( ) {
17- const crateTitleAndVersion = document . getElementById ( "crate-title" ) ;
18- // On rustdoc pages, we use `textTransform: uppercase`, which copies as uppercase.
19- // To avoid that, reset the styles temporarily.
20- const oldTransform = crateTitleAndVersion . style . textTransform ;
21- crateTitleAndVersion . style . textTransform = "none" ;
22- const temporaryInput = document . createElement ( "input" ) ;
23-
24- temporaryInput . type = "text" ;
25- temporaryInput . value = formatCrateName ( crateTitleAndVersion . innerText ) ;
26-
27- document . body . append ( temporaryInput ) ;
28- temporaryInput . select ( ) ;
29- document . execCommand ( "copy" ) ;
30-
31- temporaryInput . remove ( ) ;
32- crateTitleAndVersion . style . textTransform = oldTransform ;
12+ function resetClipboard ( ) {
13+ resetClipboardTimeout = null ;
14+ clipboard . innerHTML = resetClipboardIcon ;
15+ }
3316
34- clipboard . textContent = "✓" ;
35- if ( resetClipboardTimeout !== null ) {
36- clearTimeout ( resetClipboardTimeout ) ;
17+ function copyTextHandler ( ) {
18+ const crateTitleAndVersion = document . getElementById ( "crate-title" ) ;
19+ // On rustdoc pages, we use `textTransform: uppercase`, which copies as uppercase.
20+ // To avoid that, reset the styles temporarily.
21+ const oldTransform = crateTitleAndVersion . style . textTransform ;
22+ crateTitleAndVersion . style . textTransform = "none" ;
23+ const temporaryInput = document . createElement ( "input" ) ;
24+
25+ temporaryInput . type = "text" ;
26+ temporaryInput . value = formatCrateName ( crateTitleAndVersion . innerText ) ;
27+
28+ document . body . append ( temporaryInput ) ;
29+ temporaryInput . select ( ) ;
30+ document . execCommand ( "copy" ) ;
31+
32+ temporaryInput . remove ( ) ;
33+ crateTitleAndVersion . style . textTransform = oldTransform ;
34+
35+ clipboard . textContent = "✓" ;
36+ if ( resetClipboardTimeout !== null ) {
37+ clearTimeout ( resetClipboardTimeout ) ;
38+ }
39+ resetClipboardTimeout = setTimeout ( resetClipboard , 1000 ) ;
3740 }
38- resetClipboardTimeout = setTimeout ( resetClipboard , 1000 ) ;
39- }
4041
41- if ( clipboard != null ) clipboard . addEventListener ( "click" , copyTextHandler ) ;
42+ clipboard . addEventListener ( "click" , copyTextHandler ) ;
43+ }
4244 for ( const e of document . querySelectorAll ( 'a[data-fragment="retain"]' ) ) {
4345 e . addEventListener ( 'mouseover' , ( ) => e . hash = document . location . hash ) ;
4446 }
0 commit comments