Repository URL to install this package:
|
Version:
1.1.21 ▾
|
"use strict";
let listeners = {};
let listening = false;
function listen() {
if (global.addEventListener) {
global.addEventListener('storage', change, false);
} else if (global.attachEvent) {
global.attachEvent('onstorage', change);
} else {
global.onstorage = change;
}
}
function change(changeEvent) {
if (!changeEvent) {
changeEvent = global.event;
}
let all = listeners[changeEvent.key];
if (all) {
all.forEach(fire);
}
function fire(listener) {
const _changeEvent = changeEvent,
newValue = _changeEvent.newValue,
oldValue = _changeEvent.oldValue,
url = _changeEvent.url,
uri = _changeEvent.uri;
listener(JSON.parse(newValue), JSON.parse(oldValue), url || uri);
}
}
function on(key, fn) {
if (listeners[key]) {
listeners[key].push(fn);
} else {
listeners[key] = [fn];
}
if (listening === false) {
listen();
}
}
function off(key, fn) {
let ns = listeners[key];
if (ns.length > 1) {
ns.splice(ns.indexOf(fn), 1);
} else {
listeners[key] = [];
}
}
module.exports = {
on,
off // export {
// on,
// off,
// }
// export default {
// on,
// off,
// }
};