@morjs/runtime-web
Version:
mor runtime for web
30 lines • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const lodash_get_1 = tslib_1.__importDefault(require("lodash.get"));
const helper_1 = require("./helper");
const isSupportNavigatorClipboard = () => typeof navigator.clipboard === 'object' && window.isSecureContext;
// 查询用户是否配置强制使用 command 实现
const requireUseCommand = (0, lodash_get_1.default)(window.$MOR_APP_CONFIG, 'apis.clipboard') === 'command';
const NOT_SUPPORT_CLIPBOARD = "Your browser doesn't support clipboard api.";
const reject = (reason = NOT_SUPPORT_CLIPBOARD) => Promise.reject(reason);
exports.default = {
setClipboard({ text = '' }) {
if (requireUseCommand || !isSupportNavigatorClipboard()) {
/*
两个使用场景:
1. 不支持 navigator.clipboard 的兜底
2. 某些容器虽然存在 navigator.clipboard,但是无法正常使用复制功能
*/
return (0, helper_1.copy)(text, { container: document.body });
}
return navigator.clipboard.writeText(text);
},
// 粘贴板仅通过 navigator.clipboard 实现,因为 queryCommand('paste') 方案已经废弃
getClipboard() {
if (!isSupportNavigatorClipboard())
return reject();
return navigator.clipboard.readText().then((text) => ({ text }));
}
};
//# sourceMappingURL=index.js.map