@plq/use-persisted-state
Version:
useState hook with persistence in storage
42 lines • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.managed = exports.sync = exports.local = void 0;
const listeners = {
local: new Set(),
sync: new Set(),
managed: new Set(),
};
function fireStorageEvent(changes, area) {
listeners[area].forEach(listener => {
listener(changes);
});
}
browser.storage.onChanged.addListener((changes, area) => {
fireStorageEvent(changes, area);
});
function createOnChanged(area) {
return {
addListener(listener) {
listeners[area].add(listener);
},
removeListener(listener) {
listeners[area].delete(listener);
},
hasListener(listener) {
return listeners[area].has(listener);
},
};
}
const createStorage = (storage, area) => ({
get: storage.get,
set: storage.set,
remove: storage.remove,
onChanged: createOnChanged(area),
});
const local = createStorage(browser.storage.local, 'local');
exports.local = local;
const sync = createStorage(browser.storage.sync, 'sync');
exports.sync = sync;
const managed = createStorage(browser.storage.managed, 'managed');
exports.managed = managed;
//# sourceMappingURL=browser-storage.js.map