tele-state
Version:
shared state with react hooks
1 lines • 2.24 kB
JavaScript
var __awaiter=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(a,i){function u(t){try{l(r.next(t))}catch(t){i(t)}}function o(t){try{l(r.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(u,o)}l((r=r.apply(t,e||[])).next())}))},__generator=this&&this.__generator||function(t,e){var n,r,a,i,u={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return i={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function o(i){return function(o){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(a=2&i[0]?r.return:i[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,i[1])).done)return a;switch(r=0,a&&(i=[2&i[0],a.value]),i[0]){case 0:case 1:a=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(a=u.trys,(a=a.length>0&&a[a.length-1])||6!==i[0]&&2!==i[0])){u=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){u.label=i[1];break}if(6===i[0]&&u.label<a[1]){u.label=a[1],a=i;break}if(a&&u.label<a[2]){u.label=a[2],u.ops.push(i);break}a[2]&&u.ops.pop(),u.trys.pop();continue}i=e.call(t,u)}catch(t){i=[6,t],r=0}finally{n=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,o])}}},TeleState=function(){function t(t,e){var n=this;this.value=t,this.reducer=e,this.setStateMap={},this.updatePlugins=[],this.dispatch=function(t){var e=n.value;n.value=n.reducer(n.value,t),n.handleUpdate(e,n.value)},this.setState=function(t){var e=n.value;n.value=t,n.handleUpdate(e,n.value)},this.apply=function(t){n.updatePlugins.push(t)}}return t.prototype.handleUpdate=function(t,e){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){switch(n.label){case 0:return this.handlePlugin(t,e),[4,Promise.resolve()];case 1:return n.sent(),Object.values(this.setStateMap).forEach((function(t){return t(e)})),[2]}}))}))},t.prototype.handlePlugin=function(t,e){for(var n=0;n<this.updatePlugins.length;n++)try{this.updatePlugins[n](e,t)}catch(t){console.error(t)}},t}();export{TeleState};