UNPKG

qw-utils-vanguard

Version:

qw Utils package

86 lines (85 loc) 3.17 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.clipboardUtils = void 0; const clipboard_1 = __importDefault(require("clipboard")); const cryptoUtils_1 = require("./cryptoUtils"); /** * 剪贴板工具类 */ class clipboardUtils { constructor() { /** * 复制文本到剪贴板 * @param text 文本内容 */ this.copyText = (text) => { return new Promise((resolve, reject) => { const fakeElement = document.createElement('button'); const clipboard = new clipboard_1.default(fakeElement, { text: () => text, action: () => 'copy', container: document.body }); clipboard.on('success', (e) => { clipboard.destroy(); resolve(e); }); clipboard.on('error', (e) => { clipboard.destroy(); reject(e); }); document.body.appendChild(fakeElement); fakeElement.click(); document.body.removeChild(fakeElement); }); }; // 读取剪贴板 this.readClipboard = () => { return new Promise((resolve, reject) => { var _a; if ((_a = navigator.clipboard) === null || _a === void 0 ? void 0 : _a.readText) { navigator.clipboard.readText().then((text) => { if (!text) reject('剪贴板为空或者不包含文本'); return resolve(text); }); } else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V'); }); }; // 解析加密后的剪贴板内容 this.pasteCustomClipboardString = (text) => { let clipboardData; try { clipboardData = JSON.parse(new cryptoUtils_1.cryptoUtils().decrypt(text)); } catch (_a) { clipboardData = text; } return clipboardData; }; // 尝试解析剪贴板内容是否为Excel表格(或类似的)数据格式 this.pasteExcelClipboardString = (text) => { const lines = text.split('\r\n'); if (lines[lines.length - 1] === '') lines.pop(); let colCount = -1; const data = []; for (const index in lines) { data[index] = lines[index].split('\t'); if (data[index].length === 1) return null; if (colCount === -1) colCount = data[index].length; else if (colCount !== data[index].length) return null; } return data; }; } } exports.clipboardUtils = clipboardUtils;