/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@aha-app/react-easy-state@0.0.15-development-nico/dist/cjs.es6.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var react=require("react"),reactPlatform_cjs=require("./react-platform.cjs"),observerUtil=require("@nx-js/observer-util");const isDOM="undefined"!=typeof window,isNative="undefined"!=typeof global,globalObj=isDOM?window:isNative?global:void 0,hasHooks="function"==typeof react.useState;let isInsideFunctionComponent=!1,isInsideClassComponentRender=!1,isInsideFunctionComponentWithoutHooks=!1;const COMPONENT=Symbol("owner component");function mapStateToStores(e){const t=e[COMPONENT];return Object.keys(t).map((e=>t[e])).filter(observerUtil.isObservable).map(observerUtil.raw)}let batchesPending={},taskPending=!1,viewIndexCounter=0,inEventLoop=!1;function batchSetState(e,t){inEventLoop?t():(batchesPending[e]=t,taskPending||(taskPending=!0,queueMicrotask((()=>{const e=batchesPending;taskPending=!1,batchesPending={},reactPlatform_cjs.unstable_batchedUpdates((()=>Object.values(e).forEach((e=>e()))))}))))}function clearBatch(e){delete batchesPending[e]}const cache=new WeakMap;function wrapFn(e,t){if("function"!=typeof e)return e;let n=cache.get(e);return n||(n=function(...n){return t(e,this,n)},cache.set(e,n)),n}function wrapMethodCallbacks(e,t,n){const o=Object.getOwnPropertyDescriptor(e,t);o&&o.writable&&"function"==typeof o.value&&(e[t]=new Proxy(o.value,{apply:(e,t,o)=>Reflect.apply(e,t,o.map((e=>wrapFn(e,n))))}))}function wrapMethodsCallbacks(e,t,n){t.forEach((t=>wrapMethodCallbacks(e,t,n)))}function view(e){const t=!(e.prototype&&e.prototype.isReactComponent);let n;if(t&&hasHooks)n=t=>{viewIndexCounter+=1;const n=viewIndexCounter,[,o]=react.useState(),r=react.useMemo((()=>observerUtil.observe(e,{scheduler:()=>batchSetState(n,(()=>{o({})})),lazy:!0})),[e]);react.useEffect((()=>()=>{clearBatch(n),observerUtil.unobserve(r)}),[]),isInsideFunctionComponent=!0;try{return r(t)}finally{isInsideFunctionComponent=!1}};else{const o=t?react.Component:e;class r extends o{constructor(e,t){super(e,t),viewIndexCounter+=1,this.viewIndex=viewIndexCounter,this.state=this.state||{},this.state[COMPONENT]=this,this.render=observerUtil.observe(this.render,{scheduler:()=>batchSetState(this.viewIndex,(()=>this.setState({}))),lazy:!0})}render(){isInsideClassComponentRender=!t,isInsideFunctionComponentWithoutHooks=t;try{return t?e(this.props,this.context):super.render()}finally{isInsideClassComponentRender=!1,isInsideFunctionComponentWithoutHooks=!1}}shouldComponentUpdate(e,t){const{props:n,state:o}=this;if(super.shouldComponentUpdate)return super.shouldComponentUpdate(e,t);if(o!==t)return!0;const r=Object.keys(n),s=Object.keys(e);return s.length!==r.length||s.some((t=>n[t]!==e[t]))}static getDerivedStateFromProps(e,t){if(super.deriveStoresFromProps){const n=mapStateToStores(t);super.deriveStoresFromProps(e,...n)}return super.getDerivedStateFromProps?super.getDerivedStateFromProps(e,t):null}componentWillUnmount(){super.componentWillUnmount&&super.componentWillUnmount(),clearBatch(this.viewIndex),observerUtil.unobserve(this.render)}}n=r}return n.displayName=e.displayName||e.name,t&&Object.keys(e).forEach((t=>{n[t]=e[t]})),t&&hasHooks?react.memo(n):n}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach((function(t){_defineProperty(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}globalObj.EventTarget&&wrapMethodsCallbacks(EventTarget.prototype,["addEventListener","removeEventListener"],((e,t,n)=>{inEventLoop=!0;try{e.apply(t,n)}finally{inEventLoop=!1}}));const taskQueue=new Set,scheduler={isOn:!1,add(e){scheduler.isOn?taskQueue.add(e):e()},flush(){taskQueue.forEach((e=>e())),taskQueue.clear()},on(){scheduler.isOn=!0},off(){scheduler.isOn=!1}};function batch(e,t,n){if(scheduler.isOn)return reactPlatform_cjs.unstable_batchedUpdates((()=>e.apply(t,n)));try{return scheduler.on(),reactPlatform_cjs.unstable_batchedUpdates((()=>e.apply(t,n)))}finally{scheduler.flush(),scheduler.off()}}const cache$1=new WeakMap;function batchFn(e){if("function"!=typeof e)return e;let t=cache$1.get(e);return t||(t=new Proxy(e,{apply:(e,t,n)=>batch(e,t,n)}),cache$1.set(e,t)),t}function batchMethod(e,t){const n=Object.getOwnPropertyDescriptor(e,t);if(!n)return;const{value:o,writable:r,set:s,configurable:a}=n;a&&"function"==typeof s?Object.defineProperty(e,t,_objectSpread2(_objectSpread2({},n),{},{set:batchFn(s)})):r&&"function"==typeof o&&(e[t]=batchFn(o))}function batchMethods(e,t){return(t=t||Object.getOwnPropertyNames(e)).forEach((t=>batchMethod(e,t))),e}function createStore(e){return batchMethods(observerUtil.observable("function"==typeof e?e():e))}function store(e){if(isInsideFunctionComponent)return react.useMemo((()=>createStore(e)),[]);if(isInsideFunctionComponentWithoutHooks)throw new Error("You cannot use state inside a function component with a pre-hooks version of React. Please update your React version to at least v16.8.0 to use this feature.");if(isInsideClassComponentRender)throw new Error("You cannot use state inside a render of a class component. Please create your store outside of the render function.");return createStore(e)}function autoEffect(e,t=[]){if(isInsideFunctionComponent)return react.useEffect((()=>{const t=observerUtil.observe(e,{scheduler:()=>scheduler.add(t)});return()=>observerUtil.unobserve(t)}),t);if(isInsideFunctionComponentWithoutHooks)throw new Error("You cannot use autoEffect inside a function component with a pre-hooks version of React. Please update your React version to at least v16.8.0 to use this feature.");if(isInsideClassComponentRender)throw new Error("You cannot use autoEffect inside a render of a class component. Please use it in the constructor or lifecycle methods instead.");const n=observerUtil.observe(e,{scheduler:()=>scheduler.add(n)});return n}Object.defineProperty(exports,"clearEffect",{enumerable:!0,get:function(){return observerUtil.unobserve}}),exports.autoEffect=autoEffect,exports.batch=batch,exports.store=store,exports.view=view;
//# sourceMappingURL=/sm/4876c29b9819fafc9dc612e344329224d9a38b41d4ed964c4c3a38d923cb5f61.map