@explita/daily-toolset-form
Version:
A lightweight form toolkit for React built with developer ergonomics in mind. Includes a flexible Form component, useForm, useField, and useFormContext hooks for managing form state and validation with ease. Designed to simplify complex forms while remain
41 lines (40 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.writeDraft = void 0;
exports.readDraft = readDraft;
exports.deleteDraft = deleteDraft;
const debounce_1 = require("./debounce");
function getDrafts() {
const stored = localStorage.getItem("drafts");
if (!stored)
return {};
try {
return JSON.parse(stored) || {};
}
catch {
localStorage.removeItem("drafts"); // corrupted data
return {};
}
}
function setDrafts(drafts) {
if (Object.keys(drafts).length === 0) {
localStorage.removeItem("drafts");
}
else {
localStorage.setItem("drafts", JSON.stringify(drafts));
}
}
exports.writeDraft = (0, debounce_1.debounce)((data, draftKey) => {
const drafts = getDrafts();
const newDrafts = { ...drafts, [draftKey]: data };
setDrafts(newDrafts);
}, 200);
function readDraft(draftKey) {
const drafts = getDrafts();
return drafts[draftKey];
}
function deleteDraft(draftKey) {
const drafts = getDrafts();
const newDrafts = Object.fromEntries(Object.entries(drafts).filter(([key]) => key !== draftKey));
setDrafts(newDrafts);
}