UNPKG

minigame-std

Version:

Cross-platform standard library for WeChat minigame and web browsers with unified APIs for crypto, fs, fetch, storage, and more.

94 lines (93 loc) 2.43 kB
import { validateString } from "./_internal.mjs"; import { RESULT_VOID, tryAsyncResult } from "happy-rusty"; import { asyncIOResultify } from "./utils.mjs"; //#region src/macros/env.ts /** * 如果在小游戏环境中返回 true,否则返回 false。 */ const IS_MINA = __MINIGAME_STD_MINA__; //#endregion //#region src/std/clipboard/mina_clipboard.ts /** * @internal * 小游戏平台的剪贴板操作实现。 */ /** * 异步写入文本数据到剪贴板。 * @param data - 需要写入的文本数据。 * @returns 写入操作的结果。 */ async function writeText$2(data) { return (await asyncIOResultify(wx.setClipboardData)({ data })).and(RESULT_VOID); } /** * 异步读取剪贴板文本数据。 * @returns 读取操作的结果。 */ async function readText$2() { return (await asyncIOResultify(wx.getClipboardData)()).map((x) => x.data); } //#endregion //#region src/std/clipboard/web_clipboard.ts /** * Web 平台的剪贴板操作实现。 * * @internal */ /** * 异步写入文本数据到剪贴板。 * @param data - 需要写入的文本数据。 * @returns 写入操作的结果。 */ function writeText$1(data) { return tryAsyncResult(navigator.clipboard.writeText(data)); } /** * 异步读取剪贴板文本数据。 * @returns 读取操作的结果。 */ function readText$1() { return tryAsyncResult(navigator.clipboard.readText()); } //#endregion //#region src/std/clipboard/mod.ts /** * 异步写入文本数据到剪贴板。 * @param data - 需要写入的文本数据。 * @returns 写入操作的结果。 * @since 1.0.0 * @example * ```ts * const result = await writeText('Hello, World!'); * if (result.isOk()) { * console.log('文本已复制到剪贴板'); * } else { * console.error('复制失败:', result.unwrapErr()); * } * ``` */ function writeText(data) { const dataRes = validateString(data, "data"); if (dataRes.isErr()) return Promise.resolve(dataRes); return (IS_MINA ? writeText$2 : writeText$1)(data); } /** * 异步读取剪贴板文本数据。 * @returns 读取操作的结果。 * @since 1.0.0 * @example * ```ts * const result = await readText(); * if (result.isOk()) { * console.log('剪贴板内容:', result.unwrap()); * } else { * console.error('读取失败:', result.unwrapErr()); * } * ``` */ function readText() { return (IS_MINA ? readText$2 : readText$1)(); } //#endregion export { readText, writeText }; //# sourceMappingURL=clipboard.mjs.map