qw-utils-vanguard
Version:
qw Utils package
86 lines (85 loc) • 3.17 kB
JavaScript
;
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;