@ark-ui/vue
Version:
A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.
28 lines (27 loc) • 968 B
JavaScript
const require_use_environment_context = require("../../providers/environment/use-environment-context.cjs");
let vue = require("vue");
let _zag_js_file_utils = require("@zag-js/file-utils");
//#region src/components/download-trigger/use-download.ts
var useDownload = (props) => {
const env = require_use_environment_context.useEnvironmentContext(require_use_environment_context.DEFAULT_ENVIRONMENT);
const download = () => {
const { fileName, mimeType, data } = (0, vue.toValue)(props);
const win = env?.value.getWindow() || window;
const saveToDisk = (value) => {
(0, _zag_js_file_utils.downloadFile)({
file: value,
name: fileName,
type: mimeType,
win
});
};
if (typeof data === "function") {
const maybePromise = data();
if (maybePromise instanceof Promise) maybePromise.then(saveToDisk);
else saveToDisk(maybePromise);
} else saveToDisk(data);
};
return { download };
};
//#endregion
exports.useDownload = useDownload;