@stated-library/core
Version:
Core functionality for [`Stated Libraries`](https://github.com/bradfordlemley/stated-library)
3 lines (2 loc) • 4.38 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e,t=(e=require("lodash/throttle"))&&"object"==typeof e&&"default"in e?e.default:e;function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var r=[],o=e,c=Object.assign({},t),u=c.onSubscribe,i=c.onUnsubscribe,a=c.getValue;return n({get value(){return a?a():o},subscribe:function(e){return 0===r.length&&u&&u(),"function"==typeof e&&(e={next:e}),r.push(e),e.next(this.value),{unsubscribe:function(){0===(r=r.filter(function(t){return t!==e})).length&&i&&i()}}},next:function(e){o=e,r.map(function(e){return e.next(o)})}},Symbol&&Symbol.observable||"@@observable",function(){return this})}function o(e){return"[object Array]"===Object.prototype.toString.call(e)}function c(e){if(e.hasOwnProperty("value"))return e.value;var t=void 0;return e.subscribe(function(e){return t=e}).unsubscribe(),t}function u(e){if(o(e)){var t=[];return e.map(function(e,n){t[n]=c(e)}),t}return c(e)}var i=Object.prototype.hasOwnProperty;function a(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function s(e,t){if(a(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!i.call(t,n[o])||!a(e[n[o]],t[n[o]]))return!1;return!0}function b(e){var t=e.onState,n=e.onStateEvent,r=e.onConnectLib,o=e.onDisconnectLib,c={},u={};return{connectedLibs:{},connect:function(e,i){var a=this;if(this.connectedLibs[i])throw new Error("A library is already connected with key: ".concat(i));var s={disconnect:function(){o&&o(i,e),delete a.connectedLibs[i],c[i].unsubscribe(),delete c[i]}},b=r?r(i,e,s):s;return t&&(c[i]=e.state$.subscribe(function(n){return t(n,i,e)})),n&&(u[i]=e.stateEvent$.subscribe(function(t){return n(t,i,e)})),this.connectedLibs[i]=e,b},disconnect:function(){var e=this;Object.keys(this.connectedLibs).map(function(t){c[t]&&(c[t].unsubscribe(),delete c[t]),u[t]&&(u[t].unsubscribe(),delete u[t]),delete e.connectedLibs[t]})}}}var l="**__DEVTOOLS__**";function f(){var e,t,n={};return window.__REDUX_DEVTOOLS_EXTENSION__&&((e=window.__REDUX_DEVTOOLS_EXTENSION__.connect({name:"StatedLibraries"})).subscribe(function(e){if("DISPATCH"===e.type&&e.state){console.log("DevTools requested to change the state to",e.state);var n=JSON.parse(e.state);Object.keys(n).forEach(function(e){return t.connectedLibs[e].resetState(n[e],l)})}}),e.init(n)),t=b({onStateEvent:function(t,r){var o=t.event;n[r]=t.rawState,o!==l&&e&&e.send("".concat(r,"::").concat(o),n)}})}var v=f();function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),o.forEach(function(t){n(e,t,r[t])})}return e}function O(){var e={},n=b({onConnectLib:function(n,r,o){var c=function(e){try{var t=localStorage.getItem(e);return t?JSON.parse(t):void 0}catch(e){return}}(n);null!=c&&r.resetState(c,"RESET_FROM_LOCAL_STATE");return e[n]=t(function(e){localStorage.setItem(n,JSON.stringify(e))},300,{leading:!0,trailing:!0}),p({},o,{clear:function(){return localStorage.removeItem(n)}})},onStateEvent:function(t,n){e[n](t.rawState)}});return p({},n,{clear:function(){Object.keys(this.connectedLibs).map(function(e){localStorage.removeItem(e)})}})}var S=O();exports.createObservable=r,exports.isArray=o,exports.getValue=c,exports.getValueOrValues=u,exports.shallowEqual=s,exports.mapState=function(e,t,n){var c,i,a,b=!1,l=Object.assign({},n);function f(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(c=u(e));var n=function(e,t){return t(e)}(c,t);return s(n,i)||(i=n),i}var v=r(f(!0),{onUnsubscribe:function(){a.map(function(e){return e.unsubscribe()}),b=!1},onSubscribe:function(){f(!0),a=o(e)?e.map(function(e,t){return c[t]=e.value,e.subscribe(function(e){c[t]=e,p()})}):[e.subscribe(function(e){c=e,p()})],b=!0},getValue:function(){return b?i:f(!0)}});function p(){var e=i,t=f();t!==e&&function(e){l.async?setTimeout(function(){e===i&&v.next(i)},0):v.next(i)}(t)}return v},exports.createDevToolsConnector=f,exports.devTools=v,exports.createLocalStorageConnector=O,exports.locStorage=S;
//# sourceMappingURL=index.production.js.map