UNPKG

my-uniapp-tools

Version:

一个简洁稳定的 uni-app 开发工具库,提供剪贴板、本地存储、导航、系统信息等常用功能

2 lines (1 loc) 986 B
import{useToast as s}from"./ui.js";import{safeAsync as e}from"./core.js";const o={showToast:!0,successMessage:"复制成功",failMessage:"复制失败",timeout:5e3};async function t(t,a={}){const i={...o,...a},r="number"==typeof i.timeout&&Number.isFinite(i.timeout)&&i.timeout>0?i.timeout:0,n="string"==typeof t?t:String(t??"");return n?n.length>1e4?(i.showToast&&s("复制内容过长",!1,"error"),!1):await e(()=>new Promise(e=>{const o="undefined"==typeof uni?null:uni;if(!o||"function"!=typeof o.setClipboardData)return i.showToast&&s(i.failMessage,!1,"error"),void e(!1);let t=!1,a=null;const u=s=>{t||(t=!0,a&&(clearTimeout(a),a=null),e(s))};r>0&&(a=setTimeout(()=>{i.showToast&&s(i.failMessage,!1,"error"),u(!1)},r)),o.setClipboardData({data:n,showToast:!1,success:()=>{i.showToast&&s(i.successMessage),u(!0)},fail:()=>{i.showToast&&s(i.failMessage),u(!1)}})}),"clipboard","COPY_TEXT_ERROR")??!1:(i.showToast&&s("复制内容不能为空",!1,"error"),!1)}export{t as copyText};