UNPKG

@plq/use-persisted-state

Version:
92 lines 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const listeners = new Set(); function fireStorageEvent(changes) { listeners.forEach(listener => { listener(changes); }); } window.addEventListener('storage', event => { if (event.key) { const changes = { [event.key]: { newValue: event.newValue, oldValue: event.oldValue, }, }; fireStorageEvent(changes); } }); const onChanged = { addListener(listener) { listeners.add(listener); }, removeListener(listener) { listeners.delete(listener); }, hasListener(listener) { return listeners.has(listener); }, }; exports.default = (storage) => ({ get: keys => { const result = {}; if (Array.isArray(keys)) { keys.forEach(key => { const item = typeof storage !== 'undefined' ? storage.getItem(key) : undefined; if (item) result[key] = item; }); } else { const item = typeof storage !== 'undefined' ? storage.getItem(keys) : undefined; if (item) result[keys] = item; } return result; }, set: items => { const changes = {}; Object.entries(items).forEach(([key, value]) => { const oldValue = typeof storage !== 'undefined' ? storage.getItem(key) : undefined; if (typeof storage !== 'undefined') { storage.setItem(key, value); changes[key] = { oldValue, newValue: value, }; } }); if (Object.keys(changes).length > 0) fireStorageEvent(changes); }, remove: keys => { const changes = {}; if (Array.isArray(keys)) { keys.forEach(key => { const oldValue = typeof storage !== 'undefined' ? storage.getItem(key) : undefined; if (typeof storage !== 'undefined') { storage.removeItem(key); changes[key] = { oldValue, newValue: null, }; } }); } else { const oldValue = typeof storage !== 'undefined' ? storage.getItem(keys) : undefined; if (typeof storage !== 'undefined') { storage.removeItem(keys); changes[keys] = { oldValue, newValue: null, }; } } if (Object.keys(changes).length > 0) fireStorageEvent(changes); }, onChanged, }); //# sourceMappingURL=create-web-storage.js.map