UNPKG

@tencentcloud/roomkit-electron-vue3

Version:

<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,

78 lines (75 loc) 1.92 kB
import { isWeChat } from './environment'; declare let uni: any; export const clipBoard = ( data: any ): Promise<{ code: number; data?: any; err?: any; }> => new Promise(async (resolve, reject) => { if (!isWeChat) { const textString = data.toString(); try { await navigator.clipboard.writeText(`${data}`); resolve({ code: 0, data }); } catch (err) { try { copyTextByDocumentExecCommand(textString); resolve({ code: 0, data }); } catch (err) { reject({ code: -1, err }); } } return; } uni.setClipboardData({ data, success() { uni.getClipboardData({ success(data: any) { resolve({ code: 0, data }); }, fail(err: any) { reject({ code: -1, err }); }, }); }, fail(err: any) { reject({ code: -1, err }); }, }); }); function copyTextByDocumentExecCommand(textString: string) { try { const input = document.createElement('input'); input.id = 'copy-input'; input.readOnly = true; input.style.position = 'absolute'; input.style.left = '-1000px'; input.style.zIndex = '-1000'; document.body.appendChild(input); input.value = textString; selectText(input, 0, textString.length); if (document.execCommand('copy')) { document.execCommand('copy'); } input.blur(); } catch (err) {} } function selectText( textbox: HTMLInputElement, startIndex: number, stopIndex: number ) { if ((textbox as any).createTextRange) { const range = (textbox as any).createTextRange(); range.collapse(true); range.moveStart('character', startIndex); range.moveEnd('character', stopIndex - startIndex); range.select(); } else { (textbox as any).setSelectionRange(startIndex, stopIndex); (textbox as any).focus(); } }