57 lines
No EOL
1.2 KiB
JavaScript
57 lines
No EOL
1.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
function noop() {}
|
|
const localStorageManager = ({
|
|
key,
|
|
storageWindow
|
|
}) => {
|
|
if (!storageWindow && typeof window !== 'undefined') {
|
|
storageWindow = window;
|
|
}
|
|
return {
|
|
get(defaultValue) {
|
|
if (typeof window === 'undefined') {
|
|
return undefined;
|
|
}
|
|
if (!storageWindow) {
|
|
return defaultValue;
|
|
}
|
|
let value;
|
|
try {
|
|
value = storageWindow.localStorage.getItem(key);
|
|
} catch {
|
|
// Unsupported
|
|
}
|
|
return value || defaultValue;
|
|
},
|
|
set: value => {
|
|
if (storageWindow) {
|
|
try {
|
|
storageWindow.localStorage.setItem(key, value);
|
|
} catch {
|
|
// Unsupported
|
|
}
|
|
}
|
|
},
|
|
subscribe: handler => {
|
|
if (!storageWindow) {
|
|
return noop;
|
|
}
|
|
const listener = event => {
|
|
const value = event.newValue;
|
|
if (event.key === key) {
|
|
handler(value);
|
|
}
|
|
};
|
|
storageWindow.addEventListener('storage', listener);
|
|
return () => {
|
|
storageWindow.removeEventListener('storage', listener);
|
|
};
|
|
}
|
|
};
|
|
};
|
|
var _default = exports.default = localStorageManager; |