11import { ClipboardEvent } from '../Model/domEventsTypes' ;
22import { State } from '../Model/State' ;
3- import { getDataToCopy } from './getDataToCopy' ;
43import { getActiveSelectedRange } from './getActiveSelectedRange' ;
4+ import { getDataToCopy } from './getDataToCopy' ;
55import { isBrowserSafari } from './safari' ;
66
77export function handleCopy ( event : ClipboardEvent , state : State , removeValues = false ) : State {
88 const activeSelectedRange = getActiveSelectedRange ( state ) ;
99 if ( ! activeSelectedRange ) {
10- return state ;
10+ return state ;
1111 }
1212 const { div } = getDataToCopy ( state , activeSelectedRange , removeValues ) ;
1313 copyDataCommands ( event , state , div ) ;
@@ -23,10 +23,14 @@ export function copyDataCommands(event: ClipboardEvent, state: State, div: HTMLD
2323 event . clipboardData . setData ( 'text/html' , div . innerHTML ) ;
2424 } else if ( supportNavigatorClipboard ) {
2525 const clipboardItemData = {
26- 'text/html' : div . innerHTML ,
26+ 'text/html' : new Blob ( [ div . innerHTML ] , { type : 'text/html' } ) ,
27+ 'text/plain' : new Blob ( [ div . textContent || '' ] , { type : 'text/plain' } ) ,
2728 } ;
2829 const clipboardItem = new ClipboardItem ( clipboardItemData ) ;
29- navigator . clipboard . write ( [ clipboardItem ] ) . then ( ( ) => ( { } ) ) ;
30+
31+ navigator . clipboard . write ( [ clipboardItem ] ) . catch ( ( error ) => {
32+ console . error ( "Error copying to clipboard: " , error ) ;
33+ } ) ;
3034 } else {
3135 document . body . appendChild ( div ) ;
3236 div . focus ( ) ;
0 commit comments