UNPKG

jotai

Version:

👻 Next gen state management that will spook you

2 lines (1 loc) • 1.86 kB
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("xstate"),require("jotai")):"function"==typeof define&&define.amd?define(["exports","xstate","jotai"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).jotaiXstate={},n.xstate,n.jotai)}(this,(function(n,t,e){"use strict";function i(){return i=Object.assign?Object.assign.bind():function(n){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i])}return n},i.apply(this,arguments)}var r=["guards","actions","services","delays","context"],o=Symbol();var a=function(n){return"function"==typeof n};n.RESTART=o,n.atomWithMachine=function(n,u){var c=e.atom(null),s=e.atom((function(e){var o=e(c);if(o)return o;var s=!0,f=function(n){if(s)return e(n);throw new Error("get not allowed after initialization")},l=a(n)?n(f):n,v=a(u)?u(f):u;s=!1;var d=v||{},p=d.guards,h=d.actions,y=d.services,g=d.delays,m=d.context,x=function(n,t){if(null==n)return{};var e,i,r={},o=Object.keys(n);for(i=0;i<o.length;i++)e=o[i],t.indexOf(e)>=0||(r[e]=n[e]);return r}(d,r),b=i({},p&&{guards:p},h&&{actions:h},y&&{services:y},g&&{delays:g}),j=l.withConfig(b,(function(){return i({},l.context,m)}));return{machine:j,service:t.interpret(j,x)}}),(function(n,t,e){t(c,n(s))}));s.onMount=function(n){n()};var f=e.atom(null),l=e.atom((function(n){var t;return null!=(t=n(f))?t:n(s).machine.initialState}),(function(n,t,e){var i=n(s).service;i.onTransition((function(n){t(f,n)})),i.start(),e((function(){n(s).service.stop()}))}));return l.onMount=function(n){var t;return n((function(n){!1===t?n():t=n})),function(){t&&t(),t=!1}},e.atom((function(n){return n(l)}),(function(n,t,e){var i=n(s).service;if(e===o){i.stop(),t(c,null),t(s,null);var r=n(s).service;r.onTransition((function(n){t(f,n)})),r.start()}else i.send(e)}))}}));