use-persisted-state
Advanced tools
Comparing version 0.2.0 to 0.3.0-alpha.0
@@ -1,1 +0,1 @@ | ||
var e=require("react"),n={},t=function(e,t,r){return n[e]||(n[e]={callbacks:[],value:r}),n[e].callbacks.push(t),{deregister:function(){var r=n[e].callbacks,u=r.indexOf(t);u>-1&&r.splice(u,1)},emit:function(r){n[e].value!==r&&(n[e].value=r,n[e].callbacks.forEach(function(e){t!==e&&e(r)}))}}},r=function(n,r,u){var c,f,a,i=e.useRef(null),o=e.useCallback(function(){return function(e){return{get:function(n,t){var r=e.getItem(n);return null===r?"function"==typeof t?t():t:JSON.parse(r)},set:function(n,t){e.setItem(n,JSON.stringify(t))}}}(u)},[u])(),l=o.get,s=o.set,v=e.useState(function(){return l(r,n)}),g=v[0],b=v[1];return c="storage",f=function(e){var n=e.key,t=JSON.parse(e.newValue);n===r&&g!==t&&b(t)},a=e.useRef(),e.useEffect(function(){a.current=f}),e.useEffect(function(){var e=function(e){return a.current(e)};return global.addEventListener(c,e),function(){global.removeEventListener(c,e)}},[c]),e.useEffect(function(){return i.current=t(r,b,n),function(){i.current.deregister()}},[]),e.useEffect(function(){s(r,g),i.current.emit(g)},[g]),[g,b]};module.exports=function(n,t){return void 0===t&&(t=global.localStorage),t?function(e){return r(e,n,t)}:e.useState}; | ||
var e,t=require("react"),n=(e=require("@use-it/event-listener"))&&"object"==typeof e&&"default"in e?e.default:e,r={},u=function(e,t,n){return r[e]||(r[e]={callbacks:[],value:n}),r[e].callbacks.push(t),{deregister:function(){var n=r[e].callbacks,u=n.indexOf(t);u>-1&&n.splice(u,1)},emit:function(n){r[e].value!==n&&(r[e].value=n,r[e].callbacks.forEach(function(e){t!==e&&e(n)}))}}};module.exports=function(e,r){if(void 0===r&&(r=global.localStorage),r){var c=function(e){return{get:function(t,n){var r=e.getItem(t);return null===r?"function"==typeof n?n():n:JSON.parse(r)},set:function(t,n){e.setItem(t,JSON.stringify(n))}}}(r);return function(r){return function(e,r,c){var i=c.get,a=c.set,f=t.useRef(null),o=t.useState(function(){return i(r,e)}),l=o[0],s=o[1];return n("storage",function(e){var t=e.key,n=JSON.parse(e.newValue);t===r&&l!==n&&s(n)}),t.useEffect(function(){return f.current=u(r,s,e),function(){f.current.deregister()}},[]),t.useEffect(function(){a(r,l),f.current.emit(l)},[l]),[l,s]}(r,e,c)}}return t.useState}; |
@@ -1,1 +0,1 @@ | ||
import{useRef as n,useEffect as t,useState as e,useCallback as r}from"react";var u={},c=function(n,t,e){return u[n]||(u[n]={callbacks:[],value:e}),u[n].callbacks.push(t),{deregister:function(){var e=u[n].callbacks,r=e.indexOf(t);r>-1&&e.splice(r,1)},emit:function(e){u[n].value!==e&&(u[n].value=e,u[n].callbacks.forEach(function(n){t!==n&&n(e)}))}}},o=function(u,o,i){var a,f,l,s=n(null),v=r(function(){return function(n){return{get:function(t,e){var r=n.getItem(t);return null===r?"function"==typeof e?e():e:JSON.parse(r)},set:function(t,e){n.setItem(t,JSON.stringify(e))}}}(i)},[i])(),g=v.get,b=v.set,d=e(function(){return g(o,u)}),m=d[0],p=d[1];return a="storage",f=function(n){var t=n.key,e=JSON.parse(n.newValue);t===o&&m!==e&&p(e)},l=n(),t(function(){l.current=f}),t(function(){var n=function(n){return l.current(n)};return global.addEventListener(a,n),function(){global.removeEventListener(a,n)}},[a]),t(function(){return s.current=c(o,p,u),function(){s.current.deregister()}},[]),t(function(){b(o,m),s.current.emit(m)},[m]),[m,p]};export default function(n,t){return void 0===t&&(t=global.localStorage),t?function(e){return o(e,n,t)}:e} | ||
import{useState as t,useEffect as n,useRef as e}from"react";import r from"@use-it/event-listener";var u={},c=function(t,n,e){return u[t]||(u[t]={callbacks:[],value:e}),u[t].callbacks.push(n),{deregister:function(){var e=u[t].callbacks,r=e.indexOf(n);r>-1&&e.splice(r,1)},emit:function(e){u[t].value!==e&&(u[t].value=e,u[t].callbacks.forEach(function(t){n!==t&&t(e)}))}}};export default function(u,i){if(void 0===i&&(i=global.localStorage),i){var o=function(t){return{get:function(n,e){var r=t.getItem(n);return null===r?"function"==typeof e?e():e:JSON.parse(r)},set:function(n,e){t.setItem(n,JSON.stringify(e))}}}(i);return function(i){return function(u,i,o){var a=o.get,f=o.set,l=e(null),s=t(function(){return a(i,u)}),v=s[0],g=s[1];return r("storage",function(t){var n=t.key,e=JSON.parse(t.newValue);n===i&&v!==e&&g(e)}),n(function(){return l.current=c(i,g,u),function(){l.current.deregister()}},[]),n(function(){f(i,v),l.current.emit(v)},[v]),[v,g]}(i,u,o)}}return t} |
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):e.usePersistedState=t(e.react)}(this,function(e){var t={},n=function(e,n,u){return t[e]||(t[e]={callbacks:[],value:u}),t[e].callbacks.push(n),{deregister:function(){var u=t[e].callbacks,r=u.indexOf(n);r>-1&&u.splice(r,1)},emit:function(u){t[e].value!==u&&(t[e].value=u,t[e].callbacks.forEach(function(e){n!==e&&e(u)}))}}},u=function(t,u,r){var c,f,i,o=e.useRef(null),a=e.useCallback(function(){return function(e){return{get:function(t,n){var u=e.getItem(t);return null===u?"function"==typeof n?n():n:JSON.parse(u)},set:function(t,n){e.setItem(t,JSON.stringify(n))}}}(r)},[r])(),s=a.get,l=a.set,d=e.useState(function(){return s(u,t)}),v=d[0],g=d[1];return c="storage",f=function(e){var t=e.key,n=JSON.parse(e.newValue);t===u&&v!==n&&g(n)},i=e.useRef(),e.useEffect(function(){i.current=f}),e.useEffect(function(){var e=function(e){return i.current(e)};return global.addEventListener(c,e),function(){global.removeEventListener(c,e)}},[c]),e.useEffect(function(){return o.current=n(u,g,t),function(){o.current.deregister()}},[]),e.useEffect(function(){l(u,v),o.current.emit(v)},[v]),[v,g]};return function(t,n){return void 0===n&&(n=global.localStorage),n?function(e){return u(e,t,n)}:e.useState}}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("@use-it/event-listener")):"function"==typeof define&&define.amd?define(["react","@use-it/event-listener"],t):e.usePersistedState=t(e.react,e.useEventListener)}(this,function(e,t){t=t&&t.hasOwnProperty("default")?t.default:t;var n={},r=function(e,t,r){return n[e]||(n[e]={callbacks:[],value:r}),n[e].callbacks.push(t),{deregister:function(){var r=n[e].callbacks,u=r.indexOf(t);u>-1&&r.splice(u,1)},emit:function(r){n[e].value!==r&&(n[e].value=r,n[e].callbacks.forEach(function(e){t!==e&&e(r)}))}}};return function(n,u){if(void 0===u&&(u=global.localStorage),u){var i=function(e){return{get:function(t,n){var r=e.getItem(t);return null===r?"function"==typeof n?n():n:JSON.parse(r)},set:function(t,n){e.setItem(t,JSON.stringify(n))}}}(u);return function(u){return function(n,u,i){var c=i.get,f=i.set,a=e.useRef(null),o=e.useState(function(){return c(u,n)}),s=o[0],l=o[1];return t("storage",function(e){var t=e.key,n=JSON.parse(e.newValue);t===u&&s!==n&&l(n)}),e.useEffect(function(){return a.current=r(u,l,n),function(){a.current.deregister()}},[]),e.useEffect(function(){f(u,s),a.current.emit(s)},[s]),[s,l]}(u,n,i)}}return e.useState}}); |
{ | ||
"name": "use-persisted-state", | ||
"version": "0.2.0", | ||
"description": "A custom React Hook thst provides a multi-instance, multi-tab/browser shared and persistent state.", | ||
"publishConfig": { | ||
"tag": "next" | ||
}, | ||
"version": "0.3.0-alpha.0", | ||
"description": "A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.", | ||
"main": "dist/use-persisted-state.js", | ||
@@ -61,3 +64,6 @@ "umd:main": "dist/use-persisted-state.umd.js", | ||
} | ||
}, | ||
"dependencies": { | ||
"@use-it/event-listener": "^0.1.2" | ||
} | ||
} |
@@ -58,3 +58,3 @@ # use-persisted-state | ||
The complete code is a follows. | ||
The complete code is as follows. | ||
@@ -78,6 +78,6 @@ ```js | ||
The state is shared with any other hook using the same key, either: | ||
The state is shared with any other hook using the same key, either | ||
on the same page, across tabs, or even browser windows. | ||
For example, open two copies of your app in two tabs. | ||
For example, open two copies of your app in two tabs or even two windows. | ||
Any changes to state in one tab will be rendered on tne other tab. | ||
@@ -84,0 +84,0 @@ |
8639
2
13
+ Added@use-it/event-listener@0.1.7(transitive)