"use strict"; const common_vendor = require("../common/vendor.js"); const utils_draftCache = require("./draftCache.js"); function useDraftCache(options) { const { getKey, getPayload, hasContent = utils_draftCache.defaultHasContent, applyPayload, clearForm, canSave = () => true, requireInitialized = false, restoreToast = "已自动恢复您上次未提交的内容", clearToast = "草稿已清空", showRestoreToast = true, onAfterRestore, getFallbackKeys } = options; const hasDraft = common_vendor.ref(false); const showRestoreBanner = common_vendor.ref(false); const isRestoring = common_vendor.ref(false); const isInitialized = common_vendor.ref(false); const finishRestoreState = (callback) => { common_vendor.nextTick$1(() => { isRestoring.value = false; isInitialized.value = true; callback == null ? void 0 : callback(); }); }; const save = () => { if (isRestoring.value) return; if (requireInitialized && !isInitialized.value) return; if (!canSave()) return; const key = getKey(); const payload = getPayload(); if (!hasContent(payload)) { utils_draftCache.removeDraft(key); hasDraft.value = false; return; } utils_draftCache.saveDraftToStorage(key, payload); hasDraft.value = true; }; const clear = (showToast = true) => { utils_draftCache.removeDraft(getKey()); hasDraft.value = false; showRestoreBanner.value = false; isRestoring.value = true; clearForm(); finishRestoreState(); if (showToast) { common_vendor.index.showToast({ title: clearToast, icon: "none" }); } }; const restore = () => { const key = getKey(); const { data, fromFallback, fallbackKey } = utils_draftCache.loadDraftWithFallback( key, (getFallbackKeys == null ? void 0 : getFallbackKeys()) || [] ); if (!data || !hasContent(data)) { isInitialized.value = true; return false; } isRestoring.value = true; try { applyPayload(data); hasDraft.value = true; showRestoreBanner.value = true; onAfterRestore == null ? void 0 : onAfterRestore(data); if (fromFallback && fallbackKey) { utils_draftCache.saveDraftToStorage(key, data); utils_draftCache.removeDraft(fallbackKey); } finishRestoreState(() => { if (showRestoreToast) { common_vendor.index.showToast({ title: restoreToast, icon: "none", duration: 2500 }); } }); return true; } catch (error) { common_vendor.index.__f__("error", "at utils/useDraftCache.js:128", "[useDraftCache] 恢复草稿失败:", error); isRestoring.value = false; isInitialized.value = true; return false; } }; const bindAutoSave = (source, watchOptions = {}) => { common_vendor.watch( source, () => save(), { deep: true, ...watchOptions } ); }; return { hasDraft, showRestoreBanner, isRestoring, isInitialized, save, clear, restore, bindAutoSave }; } exports.useDraftCache = useDraftCache; //# sourceMappingURL=../../.sourcemap/mp-weixin/utils/useDraftCache.js.map