@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
45 lines (42 loc) • 1.32 kB
JavaScript
"use client";
//#region src/core/system/storage-manager.ts
const hasSupport = !!globalThis.document;
function parseCookie(cookie, key) {
return cookie.match(/* @__PURE__ */ new RegExp(`(^| )${key}=([^;]+)`))?.[2];
}
function createStorageManager(storage, storageKey, defaultValue, cookie) {
return {
default(value) {
const defaultStorageKey = `default-${storageKey}`;
if (cookie) return parseCookie(cookie, defaultStorageKey) || value;
if (storage === "localStorage") try {
return localStorage.getItem(defaultStorageKey) || value;
} catch {
return value;
}
else {
if (!hasSupport) return value;
return parseCookie(document.cookie, defaultStorageKey) || value;
}
},
get(value = defaultValue) {
if (cookie) return parseCookie(cookie, storageKey) || value;
if (storage === "localStorage") try {
return localStorage.getItem(storageKey) || value;
} catch {
return value;
}
else {
if (!hasSupport) return value;
return parseCookie(document.cookie, storageKey) || value;
}
},
set(value) {
if (storage === "localStorage") localStorage.setItem(storageKey, value);
else document.cookie = `${storageKey}=${value}; max-age=31536000; path=/`;
}
};
}
//#endregion
export { createStorageManager };
//# sourceMappingURL=storage-manager.js.map