@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 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 listener = (ev)=>{
763
- if (ev.detail.key === key || '*' === key) {
762
+ const customListener = (ev)=>{
763
+ const customEv = ev;
764
+ if (customEv.detail.key === key || '*' === key) {
764
765
  if (cb instanceof dom_el) {
765
- if (ev.detail.key === key) cb.content(ev.detail.value);
766
+ if (customEv.detail.key === key) cb.content(customEv.detail.value);
766
767
  return;
767
768
  }
768
769
  cb({
769
- key: ev.detail.key,
770
- value: ev.detail.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, listener);
776
- document.addEventListener('@corvid/ls-update', listener);
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 listener = (ev)=>{
302
- if (ev.detail.key === key || '*' === key) {
301
+ const customListener = (ev)=>{
302
+ const customEv = ev;
303
+ if (customEv.detail.key === key || '*' === key) {
303
304
  if (cb instanceof dom_el) {
304
- if (ev.detail.key === key) cb.content(ev.detail.value);
305
+ if (customEv.detail.key === key) cb.content(customEv.detail.value);
305
306
  return;
306
307
  }
307
308
  cb({
308
- key: ev.detail.key,
309
- value: ev.detail.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, listener);
315
- document.addEventListener('@corvid/ls-update', listener);
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taybart/corvid",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {