@taybart/corvid 0.1.27 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +31 -8
- package/dist/ls.js +31 -8
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -759,28 +759,51 @@ function set(key, value, broadcast = false) {
|
|
|
759
759
|
}
|
|
760
760
|
const listeners = new Map();
|
|
761
761
|
function listen(key, cb) {
|
|
762
|
-
const
|
|
763
|
-
|
|
762
|
+
const customListener = (ev)=>{
|
|
763
|
+
const customEv = ev;
|
|
764
|
+
if (customEv.detail.key === key || '*' === key) {
|
|
764
765
|
if (cb instanceof dom_el) {
|
|
765
|
-
if (
|
|
766
|
+
if (customEv.detail.key === key) cb.content(customEv.detail.value);
|
|
766
767
|
return;
|
|
767
768
|
}
|
|
768
769
|
cb({
|
|
769
|
-
key:
|
|
770
|
-
value:
|
|
770
|
+
key: customEv.detail.key,
|
|
771
|
+
value: customEv.detail.value
|
|
772
|
+
});
|
|
773
|
+
}
|
|
774
|
+
};
|
|
775
|
+
const storageListener = (ev)=>{
|
|
776
|
+
const storageEv = ev;
|
|
777
|
+
if (storageEv.key === key || '*' === key) {
|
|
778
|
+
let value = storageEv.newValue;
|
|
779
|
+
try {
|
|
780
|
+
value = JSON.parse(value);
|
|
781
|
+
} catch (e) {}
|
|
782
|
+
if (cb instanceof dom_el) {
|
|
783
|
+
if (storageEv.key === key) cb.content(value);
|
|
784
|
+
return;
|
|
785
|
+
}
|
|
786
|
+
cb({
|
|
787
|
+
key: storageEv.key,
|
|
788
|
+
value
|
|
771
789
|
});
|
|
772
790
|
}
|
|
773
791
|
};
|
|
774
792
|
if (!listeners.has(key)) listeners.set(key, new Map());
|
|
775
|
-
listeners.get(key).set(cb,
|
|
776
|
-
|
|
793
|
+
listeners.get(key).set(cb, {
|
|
794
|
+
custom: customListener,
|
|
795
|
+
storage: storageListener
|
|
796
|
+
});
|
|
797
|
+
document.addEventListener('@corvid/ls-update', customListener);
|
|
798
|
+
window.addEventListener('storage', storageListener);
|
|
777
799
|
}
|
|
778
800
|
function unlisten(key, cb) {
|
|
779
801
|
const keyListeners = listeners.get(key);
|
|
780
802
|
if (!keyListeners) return;
|
|
781
803
|
const listener = keyListeners.get(cb);
|
|
782
804
|
if (!listener) return;
|
|
783
|
-
document.removeEventListener('@corvid/ls-update', listener);
|
|
805
|
+
document.removeEventListener('@corvid/ls-update', listener.custom);
|
|
806
|
+
window.removeEventListener('storage', listener.storage);
|
|
784
807
|
keyListeners.delete(cb);
|
|
785
808
|
if (0 === keyListeners.size) listeners.delete(key);
|
|
786
809
|
}
|
package/dist/ls.js
CHANGED
|
@@ -298,28 +298,51 @@ function set(key, value, broadcast = false) {
|
|
|
298
298
|
}
|
|
299
299
|
const listeners = new Map();
|
|
300
300
|
function listen(key, cb) {
|
|
301
|
-
const
|
|
302
|
-
|
|
301
|
+
const customListener = (ev)=>{
|
|
302
|
+
const customEv = ev;
|
|
303
|
+
if (customEv.detail.key === key || '*' === key) {
|
|
303
304
|
if (cb instanceof dom_el) {
|
|
304
|
-
if (
|
|
305
|
+
if (customEv.detail.key === key) cb.content(customEv.detail.value);
|
|
305
306
|
return;
|
|
306
307
|
}
|
|
307
308
|
cb({
|
|
308
|
-
key:
|
|
309
|
-
value:
|
|
309
|
+
key: customEv.detail.key,
|
|
310
|
+
value: customEv.detail.value
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
const storageListener = (ev)=>{
|
|
315
|
+
const storageEv = ev;
|
|
316
|
+
if (storageEv.key === key || '*' === key) {
|
|
317
|
+
let value = storageEv.newValue;
|
|
318
|
+
try {
|
|
319
|
+
value = JSON.parse(value);
|
|
320
|
+
} catch (e) {}
|
|
321
|
+
if (cb instanceof dom_el) {
|
|
322
|
+
if (storageEv.key === key) cb.content(value);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
cb({
|
|
326
|
+
key: storageEv.key,
|
|
327
|
+
value
|
|
310
328
|
});
|
|
311
329
|
}
|
|
312
330
|
};
|
|
313
331
|
if (!listeners.has(key)) listeners.set(key, new Map());
|
|
314
|
-
listeners.get(key).set(cb,
|
|
315
|
-
|
|
332
|
+
listeners.get(key).set(cb, {
|
|
333
|
+
custom: customListener,
|
|
334
|
+
storage: storageListener
|
|
335
|
+
});
|
|
336
|
+
document.addEventListener('@corvid/ls-update', customListener);
|
|
337
|
+
window.addEventListener('storage', storageListener);
|
|
316
338
|
}
|
|
317
339
|
function unlisten(key, cb) {
|
|
318
340
|
const keyListeners = listeners.get(key);
|
|
319
341
|
if (!keyListeners) return;
|
|
320
342
|
const listener = keyListeners.get(cb);
|
|
321
343
|
if (!listener) return;
|
|
322
|
-
document.removeEventListener('@corvid/ls-update', listener);
|
|
344
|
+
document.removeEventListener('@corvid/ls-update', listener.custom);
|
|
345
|
+
window.removeEventListener('storage', listener.storage);
|
|
323
346
|
keyListeners.delete(cb);
|
|
324
347
|
if (0 === keyListeners.size) listeners.delete(key);
|
|
325
348
|
}
|