atom-effect-jquery 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -32,7 +32,7 @@ pnpm add atom-effect-jquery jquery @but212/atom-effect
32
32
  <!-- Load jQuery -->
33
33
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
34
34
  <!-- Load atom-effect-jquery -->
35
- <script src="https://cdn.jsdelivr.net/npm/atom-effect-jquery@0.4.0"></script>
35
+ <script src="https://cdn.jsdelivr.net/npm/atom-effect-jquery@0.5.0"></script>
36
36
  ```
37
37
 
38
38
  ## Basic Usage
@@ -1,2 +1,2 @@
1
- (function(p,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],c):(p=typeof globalThis<"u"?globalThis:p||self,c(p.AtomEffectJQuery={},p.jQuery))})(this,(function(p,c){"use strict";const Le={ONE_SECOND_MS:1e3},Z={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},$={DISPOSED:1,EXECUTING:2},b={DIRTY:1,IDLE:2,PENDING:4,RESOLVED:8,REJECTED:16,RECOMPUTING:32,HAS_ERROR:64},V={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10},pe={MAX_DEPENDENCIES:1e3,WARN_INFINITE_LOOP:!0},Q=1073741823,v=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production";class F extends Error{constructor(e,n=null,s=!0){super(e),this.name="AtomError",this.cause=n,this.recoverable=s,this.timestamp=new Date}}class G extends F{constructor(e,n=null){super(e,n,!0),this.name="ComputedError"}}class M extends F{constructor(e,n=null){super(e,n,!1),this.name="EffectError"}}class ee extends F{constructor(e,n=null){super(e,n,!1),this.name="SchedulerError"}}const g={COMPUTED_MUST_BE_FUNCTION:"Computed function must be a function",COMPUTED_SUBSCRIBER_MUST_BE_FUNCTION:"Subscriber listener must be a function or Subscriber object",COMPUTED_ASYNC_PENDING_NO_DEFAULT:"Async computation is pending. No default value provided",COMPUTED_COMPUTATION_FAILED:"Computed computation failed",COMPUTED_ASYNC_COMPUTATION_FAILED:"Async computed computation failed",COMPUTED_DEPENDENCY_SUBSCRIPTION_FAILED:"Failed to subscribe to dependency",ATOM_SUBSCRIBER_MUST_BE_FUNCTION:"Subscription listener must be a function or Subscriber object",ATOM_SUBSCRIBER_EXECUTION_FAILED:"Error occurred while executing atom subscribers",ATOM_INDIVIDUAL_SUBSCRIBER_FAILED:"Error during individual atom subscriber execution",EFFECT_MUST_BE_FUNCTION:"Effect function must be a function",EFFECT_EXECUTION_FAILED:"Effect execution failed",EFFECT_CLEANUP_FAILED:"Effect cleanup function execution failed",LARGE_DEPENDENCY_GRAPH:t=>`Large dependency graph detected: ${t} dependencies`,UNSUBSCRIBE_NON_EXISTENT:"Attempted to unsubscribe a non-existent listener",CALLBACK_ERROR_IN_ERROR_HANDLER:"Error occurred during onError callback execution"},re=Symbol("debugName"),je=Symbol("id"),oe=Symbol("type"),be=Symbol("noDefaultValue");function Pe(t){return"dependencies"in t&&Array.isArray(t.dependencies)}let Ee=0;function ge(t,e,n){if(t._visitedEpoch!==n){if(t._visitedEpoch=n,t===e)throw new G("Indirect circular dependency detected");if(Pe(t)){const s=t.dependencies;for(let i=0;i<s.length;i++){const r=s[i];r&&ge(r,e,n)}}}}const T={enabled:typeof process<"u"&&process.env?.NODE_ENV==="development",maxDependencies:pe.MAX_DEPENDENCIES,warnInfiniteLoop:pe.WARN_INFINITE_LOOP,warn(t,e){this.enabled&&t&&console.warn(`[Atom Effect] ${e}`)},checkCircular(t,e){if(t===e)throw new G("Direct circular dependency detected");this.enabled&&(Ee++,ge(t,e,Ee))},attachDebugInfo(t,e,n){if(!this.enabled)return;const s=t;s[re]=`${e}_${n}`,s[je]=n,s[oe]=e},getDebugName(t){if(t!=null&&re in t)return t[re]},getDebugType(t){if(t!=null&&oe in t)return t[oe]}};let Ve=1;const Be=()=>Ve++;class me{constructor(){this.id=Be()&Q,this.flags=0}}class Se extends me{constructor(){super(),this.version=0,this._lastSeenEpoch=-1}subscribe(e){if(typeof e=="object"&&e!==null&&"execute"in e)return this._objectSubscribers.add(e);if(typeof e!="function")throw new F(g.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);return this._functionSubscribers.add(e)}subscriberCount(){return this._functionSubscribers.size+this._objectSubscribers.size}_notifySubscribers(e,n){this._functionSubscribers.forEachSafe(s=>s(e,n),s=>console.error(new F(g.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,s))),this._objectSubscribers.forEachSafe(s=>s.execute(),s=>console.error(new F(g.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,s)))}}let ce=0;function ye(){return ce=(ce+1|0)&Q,ce}let te=0,ue=0,se=!1;function De(){return se?(v&&console.warn("Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass"),!1):(se=!0,te=te+1&Q,ue=0,!0)}function Ie(){se=!1}function qe(){return se?++ue:0}class ze{constructor(){this.queueA=[],this.queueB=[],this.queue=this.queueA,this.queueSize=0,this._epoch=0,this.isProcessing=!1,this.isBatching=!1,this.batchDepth=0,this.batchQueue=[],this.batchQueueSize=0,this.isFlushingSync=!1,this.maxFlushIterations=V.MAX_FLUSH_ITERATIONS}get phase(){return this.isProcessing||this.isFlushingSync?2:this.isBatching?1:0}schedule(e){if(typeof e!="function")throw new ee("Scheduler callback must be a function");e._nextEpoch!==this._epoch&&(e._nextEpoch=this._epoch,this.isBatching||this.isFlushingSync?this.batchQueue[this.batchQueueSize++]=e:(this.queue[this.queueSize++]=e,this.isProcessing||this.flush()))}flush(){if(this.isProcessing||this.queueSize===0)return;this.isProcessing=!0;const e=this.queue,n=this.queueSize;this.queue=this.queue===this.queueA?this.queueB:this.queueA,this.queueSize=0,this._epoch++,queueMicrotask(()=>{const s=De();this._processJobs(e,n),this.isProcessing=!1,s&&Ie(),this.queueSize>0&&!this.isBatching&&this.flush()})}flushSync(){this.isFlushingSync=!0;const e=De();try{this._mergeBatchQueue(),this._drainQueue()}finally{this.isFlushingSync=!1,e&&Ie()}}_mergeBatchQueue(){if(this._epoch++,this.batchQueueSize>0){for(let e=0;e<this.batchQueueSize;e++){const n=this.batchQueue[e];n&&n._nextEpoch!==this._epoch&&(n._nextEpoch=this._epoch,this.queue[this.queueSize++]=n)}this.batchQueueSize=0}}_drainQueue(){let e=0;for(;this.queueSize>0;){if(++e>this.maxFlushIterations){this._handleFlushOverflow();break}this._processCurrentQueue(),this._mergeBatchQueue()}}_processCurrentQueue(){const e=this.queue,n=this.queueSize;this.queue=this.queue===this.queueA?this.queueB:this.queueA,this.queueSize=0,this._epoch++,this._processJobs(e,n)}_handleFlushOverflow(){console.error(new ee(`Maximum flush iterations (${this.maxFlushIterations}) exceeded. Possible infinite loop.`)),this.queueSize=0,this.queue.length=0,this.batchQueueSize=0}_processJobs(e,n){for(let s=0;s<n;s++)try{e[s]?.()}catch(i){console.error(new ee("Error occurred during scheduler execution",i))}e.length=0}startBatch(){this.batchDepth++,this.isBatching=!0}endBatch(){this.batchDepth=Math.max(0,this.batchDepth-1),this.batchDepth===0&&(this.flushSync(),this.isBatching=!1)}setMaxFlushIterations(e){if(e<V.MIN_FLUSH_ITERATIONS)throw new ee(`Max flush iterations must be at least ${V.MIN_FLUSH_ITERATIONS}`);this.maxFlushIterations=e}}const J=new ze;function U(t){if(typeof t!="function")throw new F("Batch callback must be a function");J.startBatch();try{return t()}finally{J.endBatch()}}const B={current:null,run(t,e){const n=this.current;this.current=t;try{return e()}finally{this.current=n}},getCurrent(){return this.current}};function he(t){if(typeof t!="function")throw new F("Untracked callback must be a function");const e=B.current;B.current=null;try{return t()}finally{B.current=e}}class ne{constructor(){this.subscribers=null}add(e){if(this.subscribers||(this.subscribers=[]),this.subscribers.indexOf(e)!==-1)return()=>{};this.subscribers.push(e);let n=!1;return()=>{n||(n=!0,this.remove(e))}}remove(e){if(!this.subscribers)return!1;const n=this.subscribers.indexOf(e);if(n===-1)return!1;const s=this.subscribers.length-1;return n!==s&&(this.subscribers[n]=this.subscribers[s]),this.subscribers.pop(),!0}has(e){return this.subscribers?this.subscribers.indexOf(e)!==-1:!1}forEach(e){if(this.subscribers)for(let n=0;n<this.subscribers.length;n++)e(this.subscribers[n],n)}forEachSafe(e,n){if(this.subscribers)for(let s=0;s<this.subscribers.length;s++)try{e(this.subscribers[s],s)}catch(i){n?n(i):console.error("[SubscriberManager] Error in subscriber callback:",i)}}get size(){return this.subscribers?.length??0}get hasSubscribers(){return this.subscribers!==null&&this.subscribers.length>0}clear(){this.subscribers=null}toArray(){return this.subscribers?[...this.subscribers]:[]}}function ae(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t&&typeof t.subscribe=="function"}function Ce(t){if(T.enabled&&(t==null||typeof t=="object")){const e=T.getDebugType(t);if(e)return e==="computed"}return ae(t)&&"invalidate"in t&&typeof t.invalidate=="function"}function ve(t){return t!=null&&typeof t.then=="function"}function Xe(t){return typeof t=="object"&&t!==null}function xe(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof t.addDependency=="function"}function Ne(t){return typeof t=="function"&&typeof t.addDependency!="function"}function Te(t){return Xe(t)&&typeof t.execute=="function"}class Qe extends Se{constructor(e,n){super(),this._isNotificationScheduled=!1,this._value=e,this._functionSubscribersStore=new ne,this._objectSubscribersStore=new ne,this._sync=n,this._notifyTask=this._flushNotifications.bind(this),T.attachDebugInfo(this,"atom",this.id)}get _functionSubscribers(){return this._functionSubscribersStore}get _objectSubscribers(){return this._objectSubscribersStore}get value(){const e=B.getCurrent();return e&&this._track(e),this._value}set value(e){if(Object.is(this._value,e))return;const n=this._value;this.version=this.version+1&Q,this._value=e,!(!this._functionSubscribersStore.hasSubscribers&&!this._objectSubscribersStore.hasSubscribers)&&this._scheduleNotification(n)}_track(e){if(xe(e)){e.addDependency(this);return}if(Ne(e)){this._functionSubscribersStore.add(e);return}Te(e)&&this._objectSubscribersStore.add(e)}_scheduleNotification(e){this._isNotificationScheduled||(this._pendingOldValue=e,this._isNotificationScheduled=!0),this._sync&&!J.isBatching?this._flushNotifications():J.schedule(this._notifyTask)}_flushNotifications(){if(!this._isNotificationScheduled)return;const e=this._pendingOldValue,n=this._value;this._pendingOldValue=void 0,this._isNotificationScheduled=!1,this._notifySubscribers(n,e)}peek(){return this._value}dispose(){this._functionSubscribersStore.clear(),this._objectSubscribersStore.clear(),this._value=void 0}}function Ue(t,e={}){return new Qe(t,e.sync??!1)}class le{constructor(){this.pool=[],this.maxPoolSize=50,this.maxReusableCapacity=256,this.stats=v?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return v&&this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,n){if(!(n&&e===n)){if(Object.isFrozen(e)){v&&this.stats&&this.stats.rejected.frozen++;return}if(e.length>this.maxReusableCapacity){v&&this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.maxPoolSize){v&&this.stats&&this.stats.rejected.poolFull++;return}e.length=0,this.pool.push(e),v&&this.stats&&this.stats.released++}}getStats(){if(!v||!this.stats)return null;const{acquired:e,released:n,rejected:s}=this.stats,i=s.frozen+s.tooLarge+s.poolFull;return{acquired:e,released:n,rejected:s,leaked:e-n-i,poolSize:this.pool.length}}reset(){this.pool.length=0,v&&this.stats&&(this.stats.acquired=0,this.stats.released=0,this.stats.rejected={frozen:0,tooLarge:0,poolFull:0})}}const D=Object.freeze([]),R=Object.freeze([]),I=Object.freeze([]),L=new le,q=new le,O=new le;function Ge(t,e,n,s){if(e!==D&&n!==R)for(let r=0;r<e.length;r++){const o=e[r];o&&(o._tempUnsub=n[r])}const i=q.acquire();i.length=t.length;for(let r=0;r<t.length;r++){const o=t[r];o&&(o._tempUnsub?(i[r]=o._tempUnsub,o._tempUnsub=void 0):(T.checkCircular(o,s),i[r]=o.subscribe(s)))}if(e!==D)for(let r=0;r<e.length;r++){const o=e[r];o?._tempUnsub&&(o._tempUnsub(),o._tempUnsub=void 0)}return n!==R&&q.release(n),i}function H(t,e,n){if(t instanceof TypeError)return new e(`Type error (${n}): ${t.message}`,t);if(t instanceof ReferenceError)return new e(`Reference error (${n}): ${t.message}`,t);if(t instanceof F)return t;const s=t instanceof Error?t.message:String(t),i=t instanceof Error?t:null;return new e(`Unexpected error (${n}): ${s}`,i)}class Re extends Se{constructor(e,n={}){if(typeof e!="function")throw new G(g.COMPUTED_MUST_BE_FUNCTION);if(super(),this._value=void 0,this.flags=b.DIRTY|b.IDLE,this._error=null,this._promiseId=0,this._equal=n.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in n?n.defaultValue:be,this._hasDefaultValue=this._defaultValue!==be,this._onError=n.onError??null,this.MAX_PROMISE_ID=Number.MAX_SAFE_INTEGER-1,this._functionSubscribersStore=new ne,this._objectSubscribersStore=new ne,this._dependencies=D,this._dependencyVersions=I,this._unsubscribes=R,this._notifyJob=()=>{this._functionSubscribersStore.forEachSafe(s=>s(),s=>console.error(s)),this._objectSubscribersStore.forEachSafe(s=>s.execute(),s=>console.error(s))},this._trackable=Object.assign(()=>this._markDirty(),{addDependency:s=>{}}),T.attachDebugInfo(this,"computed",this.id),T.enabled){const s=this;s.subscriberCount=()=>this._functionSubscribersStore.size+this._objectSubscribersStore.size,s.isDirty=()=>this._isDirty(),s.dependencies=this._dependencies,s.stateFlags=this._getFlagsAsString()}if(n.lazy===!1)try{this._recompute()}catch{}}get _functionSubscribers(){return this._functionSubscribersStore}get _objectSubscribers(){return this._objectSubscribersStore}get value(){const e=this._computeValue();return this._registerTracking(),e}peek(){return this._value}get state(){return this._registerTracking(),this._getAsyncState()}get hasError(){return this._registerTracking(),this._isRejected()}get lastError(){return this._registerTracking(),this._error}get isPending(){return this._registerTracking(),this._isPending()}get isResolved(){return this._registerTracking(),this._isResolved()}invalidate(){this._markDirty(),this._dependencyVersions!==I&&(O.release(this._dependencyVersions),this._dependencyVersions=I)}dispose(){if(this._unsubscribes!==R){for(let e=0;e<this._unsubscribes.length;e++){const n=this._unsubscribes[e];n&&n()}q.release(this._unsubscribes),this._unsubscribes=R}this._dependencies!==D&&(L.release(this._dependencies),this._dependencies=D),this._dependencyVersions!==I&&(O.release(this._dependencyVersions),this._dependencyVersions=I),this._functionSubscribersStore.clear(),this._objectSubscribersStore.clear(),this.flags=b.DIRTY|b.IDLE,this._error=null,this._value=void 0,this._promiseId=(this._promiseId+1)%this.MAX_PROMISE_ID}_isDirty(){return(this.flags&b.DIRTY)!==0}_setDirty(){this.flags|=b.DIRTY}_clearDirty(){this.flags&=-2}_isIdle(){return(this.flags&b.IDLE)!==0}_setIdle(){this.flags|=b.IDLE,this.flags&=-29}_isPending(){return(this.flags&b.PENDING)!==0}_setPending(){this.flags|=b.PENDING,this.flags&=-27}_isResolved(){return(this.flags&b.RESOLVED)!==0}_setResolved(){this.flags|=b.RESOLVED,this.flags&=-87}_isRejected(){return(this.flags&b.REJECTED)!==0}_setRejected(){this.flags|=b.REJECTED|b.HAS_ERROR,this.flags&=-15}_isRecomputing(){return(this.flags&b.RECOMPUTING)!==0}_setRecomputing(e){const n=b.RECOMPUTING;this.flags=this.flags&~n|-Number(e)&n}_getAsyncState(){return this._isResolved()?Z.RESOLVED:this._isPending()?Z.PENDING:this._isRejected()?Z.REJECTED:Z.IDLE}_getFlagsAsString(){const e=[];return this._isDirty()&&e.push("DIRTY"),this._isIdle()&&e.push("IDLE"),this._isPending()&&e.push("PENDING"),this._isResolved()&&e.push("RESOLVED"),this._isRejected()&&e.push("REJECTED"),this._isRecomputing()&&e.push("RECOMPUTING"),e.join(" | ")}_computeValue(){return this._isRecomputing()?this._value:((this._isDirty()||this._isIdle())&&this._recompute(),this._isPending()?this._handlePending():this._isRejected()?this._handleRejected():this._value)}_recompute(){if(this._isRecomputing())return;this._setRecomputing(!0);const e=this._prepareComputationContext();let n=!1;try{const s=B.run(this._trackable,this._fn);ve(s)?(this._commitDependencies(e),n=!0,this._handleAsyncComputation(s)):(this._commitDependencies(e),n=!0,this._handleSyncResult(s))}catch(s){this._commitDependencies(e),n=!0,this._handleComputationError(s)}finally{this._cleanupContext(e,n),this._setRecomputing(!1)}}_prepareComputationContext(){const e=this._dependencies,n=this._dependencyVersions,s=L.acquire(),i=O.acquire(),r=ye(),o={depCount:0},u=f=>{f._lastSeenEpoch!==r&&(f._lastSeenEpoch=r,o.depCount<s.length?(s[o.depCount]=f,i[o.depCount]=f.version):(s.push(f),i.push(f.version)),o.depCount++)},l=this._trackable.addDependency;return this._trackable.addDependency=u,{prevDeps:e,prevVersions:n,nextDeps:s,nextVersions:i,originalAdd:l,state:o}}_commitDependencies(e){const{nextDeps:n,nextVersions:s,state:i,prevDeps:r}=e;n.length=i.depCount,s.length=i.depCount,this._unsubscribes=Ge(n,r,this._unsubscribes,this),this._dependencies=n,this._dependencyVersions=s}_cleanupContext(e,n){this._trackable.addDependency=e.originalAdd,n?(e.prevDeps!==D&&L.release(e.prevDeps),e.prevVersions!==I&&O.release(e.prevVersions)):(L.release(e.nextDeps),O.release(e.nextVersions))}_handleSyncResult(e){(!this._isResolved()||!this._equal(this._value,e))&&(this.version=this.version+1&Q),this._value=e,this._clearDirty(),this._setResolved(),this._error=null,this._setRecomputing(!1)}_handleAsyncComputation(e){this._setPending(),this._clearDirty(),this._promiseId=this._promiseId>=this.MAX_PROMISE_ID?1:this._promiseId+1;const n=this._promiseId;e.then(s=>{n===this._promiseId&&this._handleAsyncResolution(s)}).catch(s=>{n===this._promiseId&&this._handleAsyncRejection(s)})}_handleAsyncResolution(e){(!this._isResolved()||!this._equal(this._value,e))&&(this.version=this.version+1&Q),this._value=e,this._clearDirty(),this._setResolved(),this._error=null,this._setRecomputing(!1),this._notifyJob()}_handleAsyncRejection(e){const n=H(e,G,g.COMPUTED_ASYNC_COMPUTATION_FAILED);if(this._error=n,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(n)}catch(s){console.error(g.CALLBACK_ERROR_IN_ERROR_HANDLER,s)}this._notifySubscribers(void 0,void 0)}_handleComputationError(e){const n=H(e,G,g.COMPUTED_COMPUTATION_FAILED);if(this._error=n,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(n)}catch(s){console.error(g.CALLBACK_ERROR_IN_ERROR_HANDLER,s)}throw n}_handlePending(){if(this._hasDefaultValue)return this._defaultValue;throw new G(g.COMPUTED_ASYNC_PENDING_NO_DEFAULT)}_handleRejected(){if(this._error?.recoverable&&this._hasDefaultValue)return this._defaultValue;throw this._error}execute(){this._markDirty()}_markDirty(){this._isRecomputing()||this._isDirty()||(this._setDirty(),this._notifyJob())}_registerTracking(){const e=B.getCurrent();if(e){if(xe(e)){e.addDependency(this);return}if(Ne(e)){this._functionSubscribersStore.add(e);return}Te(e)&&this._objectSubscribersStore.add(e)}}}Object.freeze(Re.prototype);function Oe(t,e={}){return new Re(t,e)}class He extends me{constructor(e,n={}){super(),this.run=()=>{if(this.isDisposed)throw new M(g.EFFECT_MUST_BE_FUNCTION);this._dependencyVersions!==I&&(O.release(this._dependencyVersions),this._dependencyVersions=I),this.execute()},this.dispose=()=>{if(!this.isDisposed){if(this._setDisposed(),this._safeCleanup(),this._unsubscribes!==R){for(let s=0;s<this._unsubscribes.length;s++){const i=this._unsubscribes[s];i&&i()}q.release(this._unsubscribes),this._unsubscribes=R}this._dependencies!==D&&(L.release(this._dependencies),this._dependencies=D),this._dependencyVersions!==I&&(O.release(this._dependencyVersions),this._dependencyVersions=I)}},this.addDependency=s=>{if(this.isExecuting&&this._nextDeps&&this._nextUnsubs&&this._nextVersions){const i=this._currentEpoch;if(s._lastSeenEpoch===i)return;s._lastSeenEpoch=i,this._nextDeps.push(s),this._nextVersions.push(s.version),s._tempUnsub?(this._nextUnsubs.push(s._tempUnsub),s._tempUnsub=void 0):this._subscribeTo(s)}},this.execute=()=>{if(this.isDisposed||this.isExecuting||!this._shouldExecute())return;this._checkInfiniteLoop(),this._setExecuting(!0),this._safeCleanup();const s=this._prepareEffectContext();let i=!1;try{const r=B.run(this,this._fn);this._commitEffect(s),i=!0,this._checkLoopWarnings(),ve(r)?r.then(o=>{!this.isDisposed&&typeof o=="function"&&(this._cleanup=o)}).catch(o=>{console.error(H(o,M,g.EFFECT_EXECUTION_FAILED))}):this._cleanup=typeof r=="function"?r:null}catch(r){i=!0,console.error(H(r,M,g.EFFECT_EXECUTION_FAILED)),this._cleanup=null}finally{this._cleanupEffect(s,i),this._setExecuting(!1)}},this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._fn=e,this._sync=n.sync??!1,this._maxExecutions=n.maxExecutionsPerSecond??V.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=n.maxExecutionsPerFlush??V.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=n.trackModifications??!1,this._cleanup=null,this._dependencies=D,this._dependencyVersions=I,this._unsubscribes=R,this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,this._history=v?[]:null,this._executionCount=0,T.attachDebugInfo(this,"effect",this.id)}_prepareEffectContext(){const e=this._dependencies,n=this._dependencyVersions,s=this._unsubscribes,i=L.acquire(),r=O.acquire(),o=q.acquire(),u=ye();if(e!==D&&s!==R)for(let l=0;l<e.length;l++){const f=e[l];f&&(f._tempUnsub=s[l])}return this._nextDeps=i,this._nextVersions=r,this._nextUnsubs=o,this._currentEpoch=u,{prevDeps:e,prevVersions:n,prevUnsubs:s,nextDeps:i,nextVersions:r,nextUnsubs:o}}_commitEffect(e){const n=e.nextDeps.length;e.nextDeps.length=n,e.nextVersions.length=n,this._dependencies=e.nextDeps,this._dependencyVersions=e.nextVersions,this._unsubscribes=e.nextUnsubs}_cleanupEffect(e,n){if(this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,n){if(e.prevDeps!==D){for(let s=0;s<e.prevDeps.length;s++){const i=e.prevDeps[s];i?._tempUnsub&&(i._tempUnsub(),i._tempUnsub=void 0)}L.release(e.prevDeps)}e.prevUnsubs!==R&&q.release(e.prevUnsubs),e.prevVersions!==I&&O.release(e.prevVersions)}else{L.release(e.nextDeps),O.release(e.nextVersions);for(let s=0;s<e.nextUnsubs.length;s++)e.nextUnsubs[s]?.();if(q.release(e.nextUnsubs),e.prevDeps!==D)for(let s=0;s<e.prevDeps.length;s++){const i=e.prevDeps[s];i&&(i._tempUnsub=void 0)}}}_subscribeTo(e){try{const n=e.subscribe(()=>{this._trackModifications&&this.isExecuting&&(e._modifiedAtEpoch=this._currentEpoch),this._sync?this.execute():J.schedule(this.execute)});this._nextUnsubs&&this._nextUnsubs.push(n)}catch(n){console.error(H(n,M,g.EFFECT_EXECUTION_FAILED)),this._nextUnsubs&&this._nextUnsubs.push(()=>{})}}get isDisposed(){return(this.flags&$.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&$.EXECUTING)!==0}_setDisposed(){this.flags|=$.DISPOSED}_setExecuting(e){const n=$.EXECUTING;this.flags=this.flags&~n|-Number(e)&n}_safeCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){console.error(H(e,M,g.EFFECT_CLEANUP_FAILED))}this._cleanup=null}}_checkInfiniteLoop(){if(this._lastFlushEpoch!==te&&(this._lastFlushEpoch=te,this._executionsInEpoch=0),this._executionsInEpoch++,this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),qe()>V.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history){const e=Date.now();this._history.push(e),this._history.length>V.MAX_EXECUTIONS_PER_SECOND+10&&this._history.shift(),this._checkTimestampLoop(e)}}_checkTimestampLoop(e){const n=this._history;if(!n||this._maxExecutions<=0)return;const s=e-Le.ONE_SECOND_MS;let i=0;for(let r=n.length-1;r>=0&&!(n[r]<s);r--)i++;if(i>this._maxExecutions){const r=new M(`Effect executed ${i} times within 1 second. Infinite loop suspected`);if(this.dispose(),console.error(r),v)throw r}}_throwInfiniteLoopError(e){const n=new M(`Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${ue}`);throw this.dispose(),console.error(n),n}_shouldExecute(){if(this._dependencies===D||this._dependencyVersions===I)return!0;for(let e=0;e<this._dependencies.length;e++){const n=this._dependencies[e];if(n){if("value"in n)try{he(()=>n.value)}catch{return!0}if(n.version!==this._dependencyVersions[e])return!0}}return!1}_checkLoopWarnings(){if(this._trackModifications&&T.enabled){const e=this._dependencies;for(let n=0;n<e.length;n++){const s=e[n];s&&s._modifiedAtEpoch===this._currentEpoch&&T.warn(!0,`Effect is reading a dependency (${T.getDebugName(s)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function m(t,e={}){if(typeof t!="function")throw new M(g.EFFECT_MUST_BE_FUNCTION);const n=new He(t,e);return n.execute(),n}function Ye(){if(typeof window<"u"){const t=window.__ATOM_DEBUG__;if(typeof t=="boolean")return t}try{if(typeof process<"u"&&process.env&&process.env.NODE_ENV==="development")return!0}catch{}return!1}let z=Ye();const h={get enabled(){return z},set enabled(t){z=t},log(t,...e){z&&console.log(`[atom-effect-jquery] ${t}:`,...e)},atomChanged(t,e,n){z&&console.log(`[atom-effect-jquery] Atom "${t||"anonymous"}" changed:`,e,"→",n)},domUpdated(t,e,n){if(!z)return;const s=Je(t);console.log(`[atom-effect-jquery] DOM updated: ${s}.${e} =`,n),Ke(t)},cleanup(t){z&&console.log(`[atom-effect-jquery] Cleanup: ${t}`)},warn(...t){z&&console.warn("[atom-effect-jquery]",...t)}};function Je(t){const e=t[0];if(!e)return"unknown";if(e.id)return`#${e.id}`;if(e.className){const n=String(e.className).split(" ").filter(Boolean).join(".");return`${e.tagName.toLowerCase()}.${n}`}return e.tagName.toLowerCase()}function Ke(t){const e=t[0];if(!e||!document.contains(e))return;const n="atom_debug_timer",s="atom_debug_cleanup_timer",i="atom_debug_org_style";clearTimeout(t.data(n)),clearTimeout(t.data(s)),t.data(i)||t.data(i,{outline:t.css("outline"),outlineOffset:t.css("outline-offset"),transition:t.css("transition")}),t.css({outline:"2px solid rgba(255, 68, 68, 0.8)","outline-offset":"1px",transition:"none"});const r=setTimeout(()=>{const o=t.data(i);t.css("transition","outline 0.5s ease-out"),requestAnimationFrame(()=>{t.css({outline:o?.outline||"","outline-offset":o?.outlineOffset||""});const u=setTimeout(()=>{t.css("transition",o?.transition||""),t.removeData(n),t.removeData(s),t.removeData(i)},500);t.data(s,u)})},100);t.data(n,r)}const We=new WeakMap;function Ae(t,e={}){const n=Ue(t,e);return e.name&&We.set(n,{name:e.name}),n}Object.defineProperty(Ae,"debug",{get(){return h.enabled},set(t){h.enabled=t}});function Ze(){return new Promise(t=>setTimeout(t,0))}c.extend({atom:Ae,computed:Oe,effect:m,batch:U,untracked:he,isAtom:ae,isComputed:Ce,isReactive:t=>ae(t)||Ce(t),nextTick:Ze});function _(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t}function E(t){return _(t)?t.value:t}function fe(t){if(t.id)return`#${t.id}`;if(t.className){const e=String(t.className).split(/\s+/).filter(Boolean).join(".");return e?`${t.tagName.toLowerCase()}.${e}`:t.tagName.toLowerCase()}return t.tagName.toLowerCase()}class $e{effects=new WeakMap;cleanups=new WeakMap;boundElements=new WeakSet;preservedNodes=new WeakSet;keep(e){this.preservedNodes.add(e)}isKept(e){return this.preservedNodes.has(e)}trackEffect(e,n){const s=this.effects.get(e)||[];s.push(n),this.effects.set(e,s),this.boundElements.add(e)}trackCleanup(e,n){const s=this.cleanups.get(e)||[];s.push(n),this.cleanups.set(e,s),this.boundElements.add(e)}hasBind(e){return this.boundElements.has(e)}cleanup(e){if(!this.boundElements.has(e))return;h.cleanup(fe(e));const n=this.effects.get(e);n&&(this.effects.delete(e),n.forEach(i=>{try{i.dispose()}catch(r){h.warn("Effect dispose error:",r)}}));const s=this.cleanups.get(e);s&&(this.cleanups.delete(e),s.forEach(i=>{try{i()}catch(r){h.warn("Cleanup error:",r)}})),this.boundElements.delete(e)}cleanupTree(e){e.querySelectorAll("*").forEach(s=>{this.boundElements.has(s)&&this.cleanup(s)}),this.cleanup(e)}}const a=new $e;let K=null;function we(t=document.body){K||(K=new MutationObserver(e=>{for(const n of e)n.removedNodes.forEach(s=>{a.isKept(s)||s.nodeType===1&&a.cleanupTree(s)})}),K.observe(t,{childList:!0,subtree:!0}))}function et(){K?.disconnect(),K=null}c.fn.atomText=function(t,e){return this.each(function(){const n=c(this);if(_(t)){const s=m(()=>{const i=E(t),r=e?e(i):String(i??"");n.text(r),h.domUpdated(n,"text",r)});a.trackEffect(this,s)}else{const s=e?e(t):String(t??"");n.text(s)}})},c.fn.atomHtml=function(t){return this.each(function(){const e=c(this);if(_(t)){const n=m(()=>{const s=String(E(t)??"");e.html(s),h.domUpdated(e,"html",s)});a.trackEffect(this,n)}else e.html(String(t??""))})},c.fn.atomClass=function(t,e){return this.each(function(){const n=c(this);if(_(e)){const s=m(()=>{const i=!!E(e);n.toggleClass(t,i),h.domUpdated(n,`class.${t}`,i)});a.trackEffect(this,s)}else n.toggleClass(t,!!e)})},c.fn.atomCss=function(t,e,n){return this.each(function(){const s=c(this);if(_(e)){const i=m(()=>{const r=E(e),o=n?`${r}${n}`:r;s.css(t,o),h.domUpdated(s,`css.${t}`,o)});a.trackEffect(this,i)}else s.css(t,n?`${e}${n}`:e)})},c.fn.atomAttr=function(t,e){return this.each(function(){const n=c(this),s=i=>{i==null||i===!1?n.removeAttr(t):i===!0?n.attr(t,t):n.attr(t,String(i)),h.domUpdated(n,`attr.${t}`,i)};if(_(e)){const i=m(()=>s(E(e)));a.trackEffect(this,i)}else s(e)})},c.fn.atomProp=function(t,e){return this.each(function(){const n=c(this);if(_(e)){const s=m(()=>{const i=E(e);n.prop(t,i),h.domUpdated(n,`prop.${t}`,i)});a.trackEffect(this,s)}else n.prop(t,e)})},c.fn.atomShow=function(t){return this.each(function(){const e=c(this);if(_(t)){const n=m(()=>{const s=!!E(t);e.toggle(s),h.domUpdated(e,"show",s)});a.trackEffect(this,n)}else e.toggle(!!t)})},c.fn.atomHide=function(t){return this.each(function(){const e=c(this);if(_(t)){const n=m(()=>{const s=!E(t);e.toggle(s),h.domUpdated(e,"hide",!s)});a.trackEffect(this,n)}else e.toggle(!t)})},c.fn.atomVal=function(t,e={}){const{debounce:n,event:s="input",parse:i=o=>o,format:r=o=>String(o??"")}=e;return this.each(function(){const o=c(this);let u=null,l=!1,f=!1,S=!1;const y=()=>{f=!0},X=()=>{f=!1,x()};o.on("compositionstart",y),o.on("compositionend",X);const x=()=>{l||S||U(()=>{t.value=i(o.val())})},Y=()=>{f||S||l||(n?(u&&clearTimeout(u),u=window.setTimeout(x,n)):x())};o.on(s,Y),o.on("change",Y);const A=m(()=>{const j=r(t.value);o.val()!==j&&(l=!0,S=!0,o.val(j),h.domUpdated(o,"val",j),S=!1,l=!1)});a.trackEffect(this,A),a.trackCleanup(this,()=>{o.off(s,Y),o.off("change",Y),o.off("compositionstart",y),o.off("compositionend",X),u&&clearTimeout(u)})})},c.fn.atomChecked=function(t){return this.each(function(){const e=c(this);let n=!1;const s=()=>{n||U(()=>{t.value=e.prop("checked")})};e.on("change",s),a.trackCleanup(this,()=>e.off("change",s));const i=m(()=>{n=!0,e.prop("checked",t.value),h.domUpdated(e,"checked",t.value),n=!1});a.trackEffect(this,i)})},c.fn.atomOn=function(t,e){return this.each(function(){const n=c(this),s=function(i){U(()=>e.call(this,i))};n.on(t,s),a.trackCleanup(this,()=>n.off(t,s))})},c.fn.atomUnbind=function(){return this.each(function(){a.cleanupTree(this)})},c.fn.atomBind=function(t){return this.each(function(){const e=c(this),n=[];if(t.text!==void 0&&(_(t.text)?n.push(()=>{const s=String(E(t.text)??"");e.text(s),h.domUpdated(e,"text",s)}):e.text(String(t.text??""))),t.html!==void 0&&(_(t.html)?n.push(()=>{const s=String(E(t.html)??"");e.html(s),h.domUpdated(e,"html",s)}):e.html(String(t.html??""))),t.class)for(const[s,i]of Object.entries(t.class))_(i)?n.push(()=>{const r=!!E(i);e.toggleClass(s,r),h.domUpdated(e,`class.${s}`,r)}):e.toggleClass(s,!!i);if(t.css)for(const[s,i]of Object.entries(t.css))if(Array.isArray(i)){const[r,o]=i;_(r)?n.push(()=>{const u=`${E(r)}${o}`;e.css(s,u),h.domUpdated(e,`css.${s}`,u)}):e.css(s,`${r}${o}`)}else _(i)?n.push(()=>{const r=E(i);e.css(s,r),h.domUpdated(e,`css.${s}`,r)}):e.css(s,i);if(t.attr)for(const[s,i]of Object.entries(t.attr)){const r=o=>{o==null||o===!1?e.removeAttr(s):o===!0?e.attr(s,s):e.attr(s,String(o)),h.domUpdated(e,`attr.${s}`,o)};_(i)?n.push(()=>r(E(i))):r(i)}if(t.prop)for(const[s,i]of Object.entries(t.prop))_(i)?n.push(()=>{const r=E(i);e.prop(s,r),h.domUpdated(e,`prop.${s}`,r)}):e.prop(s,i);if(t.show!==void 0&&(_(t.show)?n.push(()=>{const s=!!E(t.show);e.toggle(s),h.domUpdated(e,"show",s)}):e.toggle(!!t.show)),t.hide!==void 0&&(_(t.hide)?n.push(()=>{const s=!E(t.hide);e.toggle(s),h.domUpdated(e,"hide",!s)}):e.toggle(!t.hide)),t.val!==void 0){const s=t.val;let i=!1,r=!1;const o=()=>{r=!0},u=()=>{r=!1,i||U(()=>{s.value=e.val()})};e.on("compositionstart",o),e.on("compositionend",u);const l=()=>{r||i||U(()=>{s.value=e.val()})};e.on("input change",l),a.trackCleanup(this,()=>{e.off("input change",l),e.off("compositionstart",o),e.off("compositionend",u)}),n.push(()=>{const f=String(s.value??"");e.val()!==f&&(i=!0,e.val(f),h.domUpdated(e,"val",f),i=!1)})}if(t.checked!==void 0){const s=t.checked;let i=!1;const r=()=>{i||U(()=>{s.value=e.prop("checked")})};e.on("change",r),a.trackCleanup(this,()=>e.off("change",r)),n.push(()=>{i=!0,e.prop("checked",s.value),h.domUpdated(e,"checked",s.value),i=!1})}if(t.on)for(const[s,i]of Object.entries(t.on)){const r=function(o){U(()=>i.call(this,o))};e.on(s,r),a.trackCleanup(this,()=>e.off(s,r))}n.forEach(s=>{const i=m(s);a.trackEffect(this,i)})})};function tt(t){if(t.length===0)return[];const e=t.slice(),n=[0];let s,i,r,o;const u=t.length;for(s=0;s<u;s++){const S=t[s];if(S!==-1){const y=n[n.length-1];if(t[y]<S){e[s]=y,n.push(s);continue}for(i=0,r=n.length-1;i<r;)o=(i+r)/2|0,t[n[o]]<S?i=o+1:r=o;S<t[n[i]]&&(i>0&&(e[s]=n[i-1]),n[i]=s)}}let l=n.length,f=n[l-1];for(;l-- >0;)n[l]=f,f=e[f];return n}c.fn.atomList=function(t,e){return this.each(function(){const n=c(this),s=fe(this),{key:i,render:r,bind:o,onAdd:u,onRemove:l,empty:f}=e,S=typeof i=="function"?i:A=>A[i],y=new Map;let X=[],x=null;const Y=m(()=>{const A=t.value,j=[],ke=new Set;for(let d=0;d<A.length;d++){const C=S(A[d],d);j.push(C),ke.add(C)}if(h.log("list",`${s} updating with ${A.length} items`),A.length===0&&f){x||(x=c(f),n.append(x));for(const[,d]of y)d.$el.remove(),a.cleanup(d.$el[0]);y.clear(),X=[];return}else x&&(x.remove(),x=null);for(const[d,C]of y)if(!ke.has(d)){const P=()=>{C.$el.remove(),a.cleanup(C.$el[0]),h.log("list",`${s} removed item:`,d)};y.delete(d),l?Promise.resolve(l(C.$el)).then(P):P()}const _e=new Map;X.forEach((d,C)=>_e.set(d,C));const nt=j.map(d=>_e.has(d)?_e.get(d):-1),it=tt(nt),rt=new Set(it);let w=null;for(let d=A.length-1;d>=0;d--){const C=j[d],P=A[d],ot=rt.has(d);if(y.has(C)){const N=y.get(C);N.item=P;const k=N.$el[0];if(e.update&&e.update(N.$el,P,d),!ot)w?N.$el.insertBefore(w):N.$el.appendTo(n);else{const Me=k.nextSibling;w&&Me!==w?N.$el.insertBefore(w):!w&&Me&&N.$el.appendTo(n)}w=k}else{const N=r(P,d),k=(N instanceof Element,c(N));y.set(C,{$el:k,item:P}),w?k.insertBefore(w):k.appendTo(n),o&&o(k,P,d),u&&u(k),h.log("list",`${s} added item:`,C),w=k[0]}}X=j});a.trackEffect(this,Y),a.trackCleanup(this,()=>{y.clear(),X=[],x?.remove()})})};const ie=new WeakMap;c.fn.atomMount=function(t,e={}){return this.each(function(){const n=c(this),s=fe(this),i=ie.get(this);i&&(h.log("mount",`${s} unmounting existing component`),i()),h.log("mount",`${s} mounting component`);let r;try{r=t(n,e)}catch(l){console.error("[atom-effect-jquery] Mount error:",l);return}let o=!1;const u=()=>{if(!o){if(o=!0,h.log("mount",`${s} full cleanup`),typeof r=="function")try{r()}catch{}a.cleanupTree(this),ie.delete(this)}};ie.set(this,u),a.trackCleanup(this,u)})},c.fn.atomUnmount=function(){return this.each(function(){ie.get(this)?.()})};const W=new WeakMap;let Fe=!1;function de(){if(Fe)return;Fe=!0;const t=c.fn.on,e=c.fn.off,n=c.fn.remove,s=c.fn.empty,i=c.fn.detach;c.fn.remove=function(r){return(r?this.filter(r):this).each(function(){a.cleanupTree(this)}),n.call(this,r)},c.fn.empty=function(){return this.each(function(){this.querySelectorAll("*").forEach(o=>a.cleanup(o))}),s.call(this)},c.fn.detach=function(r){return(r?this.filter(r):this).each(function(){a.keep(this)}),i.call(this,r)},c.fn.on=function(...r){let o=-1;for(let u=r.length-1;u>=0;u--)if(typeof r[u]=="function"){o=u;break}if(o!==-1){const u=r[o];let l;W.has(u)?l=W.get(u):(l=function(...f){let S;return U(()=>{S=u.apply(this,f)}),S},W.set(u,l)),r[o]=l}return t.apply(this,r)},c.fn.off=function(...r){let o=-1;for(let u=r.length-1;u>=0;u--)if(typeof r[u]=="function"){o=u;break}if(o!==-1){const u=r[o];W.has(u)&&(r[o]=W.get(u))}return e.apply(this,r)}}const st=de;de(),c(()=>{we(document.body)}),p.default=c,p.atom=Ue,p.batch=U,p.computed=Oe,p.disableAutoCleanup=et,p.effect=m,p.enableAutoCleanup=we,p.enablejQueryBatching=st,p.enablejQueryOverrides=de,p.registry=a,p.untracked=he,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(b,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],c):(b=typeof globalThis<"u"?globalThis:b||self,c(b.AtomEffectJQuery={},b.jQuery))})(this,(function(b,c){"use strict";const Pe={ONE_SECOND_MS:1e3},Z={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},$={DISPOSED:1,EXECUTING:2},_={DIRTY:1,IDLE:2,PENDING:4,RESOLVED:8,REJECTED:16,RECOMPUTING:32,HAS_ERROR:64},V={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10},be={MAX_DEPENDENCIES:1e3,WARN_INFINITE_LOOP:!0},B=1073741823,v=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production",Ve=Object.freeze([]);class k extends Error{constructor(e,s=null,n=!0){super(e),this.name="AtomError",this.cause=s,this.recoverable=n,this.timestamp=new Date}}class G extends k{constructor(e,s=null){super(e,s,!0),this.name="ComputedError"}}class M extends k{constructor(e,s=null){super(e,s,!1),this.name="EffectError"}}class ee extends k{constructor(e,s=null){super(e,s,!1),this.name="SchedulerError"}}const g={COMPUTED_MUST_BE_FUNCTION:"Computed function must be a function",COMPUTED_SUBSCRIBER_MUST_BE_FUNCTION:"Subscriber listener must be a function or Subscriber object",COMPUTED_ASYNC_PENDING_NO_DEFAULT:"Async computation is pending. No default value provided",COMPUTED_COMPUTATION_FAILED:"Computed computation failed",COMPUTED_ASYNC_COMPUTATION_FAILED:"Async computed computation failed",COMPUTED_DEPENDENCY_SUBSCRIPTION_FAILED:"Failed to subscribe to dependency",ATOM_SUBSCRIBER_MUST_BE_FUNCTION:"Subscription listener must be a function or Subscriber object",ATOM_SUBSCRIBER_EXECUTION_FAILED:"Error occurred while executing atom subscribers",ATOM_INDIVIDUAL_SUBSCRIBER_FAILED:"Error during individual atom subscriber execution",EFFECT_MUST_BE_FUNCTION:"Effect function must be a function",EFFECT_EXECUTION_FAILED:"Effect execution failed",EFFECT_CLEANUP_FAILED:"Effect cleanup function execution failed",LARGE_DEPENDENCY_GRAPH:t=>`Large dependency graph detected: ${t} dependencies`,UNSUBSCRIBE_NON_EXISTENT:"Attempted to unsubscribe a non-existent listener",CALLBACK_ERROR_IN_ERROR_HANDLER:"Error occurred during onError callback execution"},ce=Symbol("debugName"),Be=Symbol("id"),ue=Symbol("type"),Ee=Symbol("noDefaultValue");function qe(t){return"dependencies"in t&&Array.isArray(t.dependencies)}let ge=0;function me(t,e,s){if(t._visitedEpoch!==s){if(t._visitedEpoch=s,t===e)throw new G("Indirect circular dependency detected");if(qe(t)){const n=t.dependencies;for(let i=0;i<n.length;i++){const r=n[i];r&&me(r,e,s)}}}}const T={enabled:typeof process<"u"&&process.env?.NODE_ENV==="development",maxDependencies:be.MAX_DEPENDENCIES,warnInfiniteLoop:be.WARN_INFINITE_LOOP,warn(t,e){this.enabled&&t&&console.warn(`[Atom Effect] ${e}`)},checkCircular(t,e){if(t===e)throw new G("Direct circular dependency detected");this.enabled&&(ge++,me(t,e,ge))},attachDebugInfo(t,e,s){if(!this.enabled)return;const n=t;n[ce]=`${e}_${s}`,n[Be]=s,n[ue]=e},getDebugName(t){if(t!=null&&ce in t)return t[ce]},getDebugType(t){if(t!=null&&ue in t)return t[ue]}};let ze=1;const Xe=()=>ze++;class Se{constructor(){this.id=Xe()&B,this.flags=0}}class ye extends Se{constructor(){super(),this.version=0,this._lastSeenEpoch=-1}subscribe(e){if(typeof e=="object"&&e!==null&&"execute"in e)return this._objectSubscribers.add(e);if(typeof e!="function")throw new k(g.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);return this._functionSubscribers.add(e)}subscriberCount(){return this._functionSubscribers.size+this._objectSubscribers.size}_notifySubscribers(e,s){this._functionSubscribers.forEachSafe(n=>n(e,s),n=>console.error(new k(g.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,n))),this._objectSubscribers.forEachSafe(n=>n.execute(),n=>console.error(new k(g.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,n)))}}let te=0;function De(){return te=(te+1|0)&B,te}function Qe(){return te}let se=0,he=0,ne=!1;function Ce(){return ne?(v&&console.warn("Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass"),!1):(ne=!0,se=se+1&B,he=0,!0)}function Ie(){ne=!1}function Ge(){return ne?++he:0}class Je{constructor(){this.queueA=[],this.queueB=[],this.queue=this.queueA,this.queueSize=0,this._epoch=0,this.isProcessing=!1,this.isBatching=!1,this.batchDepth=0,this.batchQueue=[],this.batchQueueSize=0,this.isFlushingSync=!1,this.maxFlushIterations=V.MAX_FLUSH_ITERATIONS}get phase(){return this.isProcessing||this.isFlushingSync?2:this.isBatching?1:0}schedule(e){if(typeof e!="function")throw new ee("Scheduler callback must be a function");e._nextEpoch!==this._epoch&&(e._nextEpoch=this._epoch,this.isBatching||this.isFlushingSync?this.batchQueue[this.batchQueueSize++]=e:(this.queue[this.queueSize++]=e,this.isProcessing||this.flush()))}flush(){if(this.isProcessing||this.queueSize===0)return;this.isProcessing=!0;const e=this.queue,s=this.queueSize;this.queue=this.queue===this.queueA?this.queueB:this.queueA,this.queueSize=0,this._epoch++,queueMicrotask(()=>{const n=Ce();this._processJobs(e,s),this.isProcessing=!1,n&&Ie(),this.queueSize>0&&!this.isBatching&&this.flush()})}flushSync(){this.isFlushingSync=!0;const e=Ce();try{this._mergeBatchQueue(),this._drainQueue()}finally{this.isFlushingSync=!1,e&&Ie()}}_mergeBatchQueue(){if(this._epoch++,this.batchQueueSize>0){for(let e=0;e<this.batchQueueSize;e++){const s=this.batchQueue[e];s&&s._nextEpoch!==this._epoch&&(s._nextEpoch=this._epoch,this.queue[this.queueSize++]=s)}this.batchQueueSize=0}}_drainQueue(){let e=0;for(;this.queueSize>0;){if(++e>this.maxFlushIterations){this._handleFlushOverflow();break}this._processCurrentQueue(),this._mergeBatchQueue()}}_processCurrentQueue(){const e=this.queue,s=this.queueSize;this.queue=this.queue===this.queueA?this.queueB:this.queueA,this.queueSize=0,this._epoch++,this._processJobs(e,s)}_handleFlushOverflow(){console.error(new ee(`Maximum flush iterations (${this.maxFlushIterations}) exceeded. Possible infinite loop.`)),this.queueSize=0,this.queue.length=0,this.batchQueueSize=0}_processJobs(e,s){for(let n=0;n<s;n++)try{e[n]?.()}catch(i){console.error(new ee("Error occurred during scheduler execution",i))}e.length=0}startBatch(){this.batchDepth++,this.isBatching=!0}endBatch(){this.batchDepth=Math.max(0,this.batchDepth-1),this.batchDepth===0&&(this.flushSync(),this.isBatching=!1)}setMaxFlushIterations(e){if(e<V.MIN_FLUSH_ITERATIONS)throw new ee(`Max flush iterations must be at least ${V.MIN_FLUSH_ITERATIONS}`);this.maxFlushIterations=e}}const Y=new Je;function R(t){if(typeof t!="function")throw new k("Batch callback must be a function");Y.startBatch();try{return t()}finally{Y.endBatch()}}const q={current:null,run(t,e){const s=this.current;this.current=t;try{return e()}finally{this.current=s}},getCurrent(){return this.current}};function ae(t){if(typeof t!="function")throw new k("Untracked callback must be a function");const e=q.current;q.current=null;try{return t()}finally{q.current=e}}class ie{constructor(){this.subscribers=null}add(e){if(this.subscribers||(this.subscribers=[]),this.subscribers.indexOf(e)!==-1)return()=>{};this.subscribers.push(e);let s=!1;return()=>{s||(s=!0,this.remove(e))}}remove(e){if(!this.subscribers)return!1;const s=this.subscribers.indexOf(e);if(s===-1)return!1;const n=this.subscribers.length-1;return s!==n&&(this.subscribers[s]=this.subscribers[n]),this.subscribers.pop(),!0}has(e){return this.subscribers?this.subscribers.indexOf(e)!==-1:!1}forEach(e){if(this.subscribers)for(let s=0;s<this.subscribers.length;s++)e(this.subscribers[s],s)}forEachSafe(e,s){if(this.subscribers)for(let n=0;n<this.subscribers.length;n++)try{e(this.subscribers[n],n)}catch(i){s?s(i):console.error("[SubscriberManager] Error in subscriber callback:",i)}}get size(){return this.subscribers?.length??0}get hasSubscribers(){return this.subscribers!==null&&this.subscribers.length>0}clear(){this.subscribers=null}toArray(){return this.subscribers?[...this.subscribers]:[]}}function le(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t&&typeof t.subscribe=="function"}function ve(t){if(T.enabled&&(t==null||typeof t=="object")){const e=T.getDebugType(t);if(e)return e==="computed"}return le(t)&&"invalidate"in t&&typeof t.invalidate=="function"}function xe(t){return t!=null&&typeof t.then=="function"}function He(t){return typeof t=="object"&&t!==null}function Ne(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof t.addDependency=="function"}function Te(t){return typeof t=="function"&&typeof t.addDependency!="function"}function Re(t){return He(t)&&typeof t.execute=="function"}class Ye extends ye{constructor(e,s){super(),this._isNotificationScheduled=!1,this._value=e,this._functionSubscribersStore=new ie,this._objectSubscribersStore=new ie,this._sync=s,this._notifyTask=this._flushNotifications.bind(this),T.attachDebugInfo(this,"atom",this.id)}get _functionSubscribers(){return this._functionSubscribersStore}get _objectSubscribers(){return this._objectSubscribersStore}get value(){const e=q.getCurrent();return e&&this._track(e),this._value}set value(e){if(Object.is(this._value,e))return;const s=this._value;this.version=this.version+1&B,this._value=e,!(!this._functionSubscribersStore.hasSubscribers&&!this._objectSubscribersStore.hasSubscribers)&&this._scheduleNotification(s)}_track(e){if(Ne(e)){e.addDependency(this);return}if(Te(e)){this._functionSubscribersStore.add(e);return}Re(e)&&this._objectSubscribersStore.add(e)}_scheduleNotification(e){this._isNotificationScheduled||(this._pendingOldValue=e,this._isNotificationScheduled=!0),this._sync&&!Y.isBatching?this._flushNotifications():Y.schedule(this._notifyTask)}_flushNotifications(){if(!this._isNotificationScheduled)return;const e=this._pendingOldValue,s=this._value;this._pendingOldValue=void 0,this._isNotificationScheduled=!1,this._notifySubscribers(s,e)}peek(){return this._value}dispose(){this._functionSubscribersStore.clear(),this._objectSubscribersStore.clear(),this._value=void 0}}function Ue(t,e={}){return new Ye(t,e.sync??!1)}class fe{constructor(){this.pool=[],this.maxPoolSize=50,this.maxReusableCapacity=256,this.stats=v?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return v&&this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,s){if(!(s&&e===s)){if(Object.isFrozen(e)){v&&this.stats&&this.stats.rejected.frozen++;return}if(e.length>this.maxReusableCapacity){v&&this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.maxPoolSize){v&&this.stats&&this.stats.rejected.poolFull++;return}e.length=0,this.pool.push(e),v&&this.stats&&this.stats.released++}}getStats(){if(!v||!this.stats)return null;const{acquired:e,released:s,rejected:n}=this.stats,i=n.frozen+n.tooLarge+n.poolFull;return{acquired:e,released:s,rejected:n,leaked:e-s-i,poolSize:this.pool.length}}reset(){this.pool.length=0,v&&this.stats&&(this.stats.acquired=0,this.stats.released=0,this.stats.rejected={frozen:0,tooLarge:0,poolFull:0})}}const D=Object.freeze([]),U=Object.freeze([]),C=Object.freeze([]),L=new fe,z=new fe,O=new fe;function Ke(t,e,s,n){if(e!==D&&s!==U)for(let r=0;r<e.length;r++){const o=e[r];o&&(o._tempUnsub=s[r])}const i=z.acquire();i.length=t.length;for(let r=0;r<t.length;r++){const o=t[r];o&&(o._tempUnsub?(i[r]=o._tempUnsub,o._tempUnsub=void 0):(T.checkCircular(o,n),i[r]=o.subscribe(n)))}if(e!==D)for(let r=0;r<e.length;r++){const o=e[r];o?._tempUnsub&&(o._tempUnsub(),o._tempUnsub=void 0)}return s!==U&&z.release(s),i}function J(t,e,s){if(t instanceof TypeError)return new e(`Type error (${s}): ${t.message}`,t);if(t instanceof ReferenceError)return new e(`Reference error (${s}): ${t.message}`,t);if(t instanceof k)return t;const n=t instanceof Error?t.message:String(t),i=t instanceof Error?t:null;return new e(`Unexpected error (${s}): ${n}`,i)}const Oe=_.RESOLVED|_.PENDING|_.REJECTED,re=Array(Oe+1).fill(Z.IDLE);re[_.RESOLVED]=Z.RESOLVED,re[_.PENDING]=Z.PENDING,re[_.REJECTED]=Z.REJECTED;class Ae extends ye{constructor(e,s={}){if(typeof e!="function")throw new G(g.COMPUTED_MUST_BE_FUNCTION);if(super(),this._cachedErrors=null,this._errorCacheEpoch=-1,this._value=void 0,this.flags=_.DIRTY|_.IDLE,this._error=null,this._promiseId=0,this._equal=s.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in s?s.defaultValue:Ee,this._hasDefaultValue=this._defaultValue!==Ee,this._onError=s.onError??null,this.MAX_PROMISE_ID=Number.MAX_SAFE_INTEGER-1,this._functionSubscribersStore=new ie,this._objectSubscribersStore=new ie,this._dependencies=D,this._dependencyVersions=C,this._unsubscribes=U,this._notifyJob=()=>{this._functionSubscribersStore.forEachSafe(n=>n(),n=>console.error(n)),this._objectSubscribersStore.forEachSafe(n=>n.execute(),n=>console.error(n))},this._trackable=Object.assign(()=>this._markDirty(),{addDependency:n=>{}}),T.attachDebugInfo(this,"computed",this.id),T.enabled){const n=this;n.subscriberCount=()=>this._functionSubscribersStore.size+this._objectSubscribersStore.size,n.isDirty=()=>this._isDirty(),n.dependencies=this._dependencies,n.stateFlags=this._getFlagsAsString()}if(s.lazy===!1)try{this._recompute()}catch{}}get _functionSubscribers(){return this._functionSubscribersStore}get _objectSubscribers(){return this._objectSubscribersStore}get value(){return this._registerTracking(),this._computeValue()}peek(){return this._value}get state(){return this._registerTracking(),this._getAsyncState()}get hasError(){if(this._registerTracking(),this._isRejected())return!0;for(let e=0;e<this._dependencies.length;e++){const s=this._dependencies[e];if(s&&"hasError"in s&&s.hasError)return!0}return!1}get isValid(){return!this.hasError}get errors(){if(this._registerTracking(),!this.hasError)return Ve;const e=Qe();if(this._errorCacheEpoch===e&&this._cachedErrors!==null)return this._cachedErrors;const s=new Set;this._error&&s.add(this._error);for(let n=0;n<this._dependencies.length;n++){const i=this._dependencies[n];if(i&&"errors"in i){const r=i.errors;for(let o=0;o<r.length;o++){const u=r[o];u&&s.add(u)}}}return this._cachedErrors=Object.freeze([...s]),this._errorCacheEpoch=e,this._cachedErrors}get lastError(){return this._registerTracking(),this._error}get isPending(){return this._registerTracking(),this._isPending()}get isResolved(){return this._registerTracking(),this._isResolved()}invalidate(){this._markDirty(),this._dependencyVersions!==C&&(O.release(this._dependencyVersions),this._dependencyVersions=C),this._errorCacheEpoch=-1,this._cachedErrors=null}dispose(){if(this._unsubscribes!==U){for(let e=0;e<this._unsubscribes.length;e++){const s=this._unsubscribes[e];s&&s()}z.release(this._unsubscribes),this._unsubscribes=U}this._dependencies!==D&&(L.release(this._dependencies),this._dependencies=D),this._dependencyVersions!==C&&(O.release(this._dependencyVersions),this._dependencyVersions=C),this._functionSubscribersStore.clear(),this._objectSubscribersStore.clear(),this.flags=_.DIRTY|_.IDLE,this._error=null,this._value=void 0,this._promiseId=(this._promiseId+1)%this.MAX_PROMISE_ID,this._cachedErrors=null,this._errorCacheEpoch=-1}_isDirty(){return(this.flags&_.DIRTY)!==0}_setDirty(){this.flags|=_.DIRTY}_clearDirty(){this.flags&=-2}_isIdle(){return(this.flags&_.IDLE)!==0}_setIdle(){this.flags|=_.IDLE,this.flags&=-29}_isPending(){return(this.flags&_.PENDING)!==0}_setPending(){this.flags|=_.PENDING,this.flags&=-27}_isResolved(){return(this.flags&_.RESOLVED)!==0}_setResolved(){this.flags|=_.RESOLVED,this.flags&=-87}_isRejected(){return(this.flags&_.REJECTED)!==0}_setRejected(){this.flags|=_.REJECTED|_.HAS_ERROR,this.flags&=-15}_isRecomputing(){return(this.flags&_.RECOMPUTING)!==0}_setRecomputing(e){const s=_.RECOMPUTING;this.flags=this.flags&~s|-Number(e)&s}_getAsyncState(){return re[this.flags&Oe]}_getFlagsAsString(){const e=[];return this._isDirty()&&e.push("DIRTY"),this._isIdle()&&e.push("IDLE"),this._isPending()&&e.push("PENDING"),this._isResolved()&&e.push("RESOLVED"),this._isRejected()&&e.push("REJECTED"),this._isRecomputing()&&e.push("RECOMPUTING"),e.join(" | ")}_computeValue(){return this._isRecomputing()?this._value:((this._isDirty()||this._isIdle())&&this._recompute(),this._isPending()?this._handlePending():this._isRejected()?this._handleRejected():this._value)}_recompute(){if(this._isRecomputing())return;this._setRecomputing(!0);const e=this._prepareComputationContext();let s=!1;try{const n=q.run(this._trackable,this._fn);this._commitDependencies(e),s=!0,xe(n)?this._handleAsyncComputation(n):this._handleSyncResult(n)}catch(n){if(!s)try{this._commitDependencies(e),s=!0}catch(i){this._handleComputationError(i)}this._handleComputationError(n)}finally{this._cleanupContext(e,s),this._setRecomputing(!1)}}_prepareComputationContext(){const e=this._dependencies,s=this._dependencyVersions,n=L.acquire(),i=O.acquire(),r=De(),o={depCount:0},u=f=>{f._lastSeenEpoch!==r&&(f._lastSeenEpoch=r,o.depCount<n.length?(n[o.depCount]=f,i[o.depCount]=f.version):(n.push(f),i.push(f.version)),o.depCount++)},l=this._trackable.addDependency;return this._trackable.addDependency=u,{prevDeps:e,prevVersions:s,nextDeps:n,nextVersions:i,originalAdd:l,state:o}}_commitDependencies(e){const{nextDeps:s,nextVersions:n,state:i,prevDeps:r}=e;s.length=i.depCount,n.length=i.depCount,this._unsubscribes=Ke(s,r,this._unsubscribes,this),this._dependencies=s,this._dependencyVersions=n}_cleanupContext(e,s){this._trackable.addDependency=e.originalAdd,s?(e.prevDeps!==D&&L.release(e.prevDeps),e.prevVersions!==C&&O.release(e.prevVersions)):(L.release(e.nextDeps),O.release(e.nextVersions))}_handleSyncResult(e){const s=!this._isResolved()||!this._equal(this._value,e);this.version=this.version+Number(s)&B,this._value=e,this._clearDirty(),this._setResolved(),this._error=null,this._setRecomputing(!1),this._cachedErrors=null,this._errorCacheEpoch=-1}_handleAsyncComputation(e){this._setPending(),this._clearDirty(),this._notifyJob(),this._promiseId=this._promiseId>=this.MAX_PROMISE_ID?1:this._promiseId+1;const s=this._promiseId;e.then(n=>{s===this._promiseId&&this._handleAsyncResolution(n)}).catch(n=>{s===this._promiseId&&this._handleAsyncRejection(n)})}_handleAsyncResolution(e){const s=!this._isResolved()||!this._equal(this._value,e);this.version=this.version+Number(s)&B,this._value=e,this._clearDirty(),this._setResolved(),this._error=null,this._setRecomputing(!1),this._cachedErrors=null,this._errorCacheEpoch=-1,this._notifyJob()}_handleAsyncRejection(e){const s=J(e,G,g.COMPUTED_ASYNC_COMPUTATION_FAILED),n=!this._isRejected();if(this.version=this.version+Number(n)&B,this._error=s,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(s)}catch(i){console.error(g.CALLBACK_ERROR_IN_ERROR_HANDLER,i)}this._notifyJob()}_handleComputationError(e){const s=J(e,G,g.COMPUTED_COMPUTATION_FAILED);if(this._error=s,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(s)}catch(n){console.error(g.CALLBACK_ERROR_IN_ERROR_HANDLER,n)}throw s}_handlePending(){if(this._hasDefaultValue)return this._defaultValue;throw new G(g.COMPUTED_ASYNC_PENDING_NO_DEFAULT)}_handleRejected(){if(this._error?.recoverable&&this._hasDefaultValue)return this._defaultValue;throw this._error}execute(){this._markDirty()}_markDirty(){this._isRecomputing()||this._isDirty()||(this._setDirty(),this._notifyJob())}_registerTracking(){const e=q.getCurrent();if(e){if(Ne(e)){e.addDependency(this);return}if(Te(e)){this._functionSubscribersStore.add(e);return}Re(e)&&this._objectSubscribersStore.add(e)}}}Object.freeze(Ae.prototype);function we(t,e={}){return new Ae(t,e)}class We extends Se{constructor(e,s={}){super(),this.run=()=>{if(this.isDisposed)throw new M(g.EFFECT_MUST_BE_FUNCTION);this._dependencyVersions!==C&&(O.release(this._dependencyVersions),this._dependencyVersions=C),this.execute()},this.dispose=()=>{if(!this.isDisposed){if(this._setDisposed(),this._safeCleanup(),this._unsubscribes!==U){for(let n=0;n<this._unsubscribes.length;n++){const i=this._unsubscribes[n];i&&i()}z.release(this._unsubscribes),this._unsubscribes=U}this._dependencies!==D&&(L.release(this._dependencies),this._dependencies=D),this._dependencyVersions!==C&&(O.release(this._dependencyVersions),this._dependencyVersions=C)}},this.addDependency=n=>{if(this.isExecuting&&this._nextDeps&&this._nextUnsubs&&this._nextVersions){const i=this._currentEpoch;if(n._lastSeenEpoch===i)return;n._lastSeenEpoch=i,this._nextDeps.push(n),this._nextVersions.push(n.version),n._tempUnsub?(this._nextUnsubs.push(n._tempUnsub),n._tempUnsub=void 0):this._subscribeTo(n)}},this.execute=()=>{if(this.isDisposed||this.isExecuting||!this._shouldExecute())return;this._checkInfiniteLoop(),this._setExecuting(!0),this._safeCleanup();const n=this._prepareEffectContext();let i=!1;try{const r=q.run(this,this._fn);this._commitEffect(n),i=!0,this._checkLoopWarnings(),xe(r)?r.then(o=>{!this.isDisposed&&typeof o=="function"&&(this._cleanup=o)}).catch(o=>{console.error(J(o,M,g.EFFECT_EXECUTION_FAILED))}):this._cleanup=typeof r=="function"?r:null}catch(r){i=!0,console.error(J(r,M,g.EFFECT_EXECUTION_FAILED)),this._cleanup=null}finally{this._cleanupEffect(n,i),this._setExecuting(!1)}},this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._fn=e,this._sync=s.sync??!1,this._maxExecutions=s.maxExecutionsPerSecond??V.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=s.maxExecutionsPerFlush??V.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=s.trackModifications??!1,this._cleanup=null,this._dependencies=D,this._dependencyVersions=C,this._unsubscribes=U,this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,this._history=v?[]:null,this._executionCount=0,T.attachDebugInfo(this,"effect",this.id)}_prepareEffectContext(){const e=this._dependencies,s=this._dependencyVersions,n=this._unsubscribes,i=L.acquire(),r=O.acquire(),o=z.acquire(),u=De();if(e!==D&&n!==U)for(let l=0;l<e.length;l++){const f=e[l];f&&(f._tempUnsub=n[l])}return this._nextDeps=i,this._nextVersions=r,this._nextUnsubs=o,this._currentEpoch=u,{prevDeps:e,prevVersions:s,prevUnsubs:n,nextDeps:i,nextVersions:r,nextUnsubs:o}}_commitEffect(e){const s=e.nextDeps.length;e.nextDeps.length=s,e.nextVersions.length=s,this._dependencies=e.nextDeps,this._dependencyVersions=e.nextVersions,this._unsubscribes=e.nextUnsubs}_cleanupEffect(e,s){if(this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,s){if(e.prevDeps!==D){for(let n=0;n<e.prevDeps.length;n++){const i=e.prevDeps[n];i?._tempUnsub&&(i._tempUnsub(),i._tempUnsub=void 0)}L.release(e.prevDeps)}e.prevUnsubs!==U&&z.release(e.prevUnsubs),e.prevVersions!==C&&O.release(e.prevVersions)}else{L.release(e.nextDeps),O.release(e.nextVersions);for(let n=0;n<e.nextUnsubs.length;n++)e.nextUnsubs[n]?.();if(z.release(e.nextUnsubs),e.prevDeps!==D)for(let n=0;n<e.prevDeps.length;n++){const i=e.prevDeps[n];i&&(i._tempUnsub=void 0)}}}_subscribeTo(e){try{const s=e.subscribe(()=>{this._trackModifications&&this.isExecuting&&(e._modifiedAtEpoch=this._currentEpoch),this._sync?this.execute():Y.schedule(this.execute)});this._nextUnsubs&&this._nextUnsubs.push(s)}catch(s){console.error(J(s,M,g.EFFECT_EXECUTION_FAILED)),this._nextUnsubs&&this._nextUnsubs.push(()=>{})}}get isDisposed(){return(this.flags&$.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&$.EXECUTING)!==0}_setDisposed(){this.flags|=$.DISPOSED}_setExecuting(e){const s=$.EXECUTING;this.flags=this.flags&~s|-Number(e)&s}_safeCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){console.error(J(e,M,g.EFFECT_CLEANUP_FAILED))}this._cleanup=null}}_checkInfiniteLoop(){if(this._lastFlushEpoch!==se&&(this._lastFlushEpoch=se,this._executionsInEpoch=0),this._executionsInEpoch++,this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),Ge()>V.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history){const e=Date.now();this._history.push(e),this._history.length>V.MAX_EXECUTIONS_PER_SECOND+10&&this._history.shift(),this._checkTimestampLoop(e)}}_checkTimestampLoop(e){const s=this._history;if(!s||this._maxExecutions<=0)return;const n=e-Pe.ONE_SECOND_MS;let i=0;for(let r=s.length-1;r>=0&&!(s[r]<n);r--)i++;if(i>this._maxExecutions){const r=new M(`Effect executed ${i} times within 1 second. Infinite loop suspected`);if(this.dispose(),console.error(r),v)throw r}}_throwInfiniteLoopError(e){const s=new M(`Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${he}`);throw this.dispose(),console.error(s),s}_shouldExecute(){if(this._dependencies===D||this._dependencyVersions===C)return!0;for(let e=0;e<this._dependencies.length;e++){const s=this._dependencies[e];if(s){if("value"in s)try{ae(()=>s.value)}catch{return!0}if(s.version!==this._dependencyVersions[e])return!0}}return!1}_checkLoopWarnings(){if(this._trackModifications&&T.enabled){const e=this._dependencies;for(let s=0;s<e.length;s++){const n=e[s];n&&n._modifiedAtEpoch===this._currentEpoch&&T.warn(!0,`Effect is reading a dependency (${T.getDebugName(n)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function m(t,e={}){if(typeof t!="function")throw new M(g.EFFECT_MUST_BE_FUNCTION);const s=new We(t,e);return s.execute(),s}function Ze(){if(typeof window<"u"){const t=window.__ATOM_DEBUG__;if(typeof t=="boolean")return t}try{if(typeof process<"u"&&process.env&&process.env.NODE_ENV==="development")return!0}catch{}return!1}let X=Ze();const h={get enabled(){return X},set enabled(t){X=t},log(t,...e){X&&console.log(`[atom-effect-jquery] ${t}:`,...e)},atomChanged(t,e,s){X&&console.log(`[atom-effect-jquery] Atom "${t||"anonymous"}" changed:`,e,"→",s)},domUpdated(t,e,s){if(!X)return;const n=$e(t);console.log(`[atom-effect-jquery] DOM updated: ${n}.${e} =`,s),et(t)},cleanup(t){X&&console.log(`[atom-effect-jquery] Cleanup: ${t}`)},warn(...t){X&&console.warn("[atom-effect-jquery]",...t)}};function $e(t){const e=t[0];if(!e)return"unknown";if(e.id)return`#${e.id}`;if(e.className){const s=String(e.className).split(" ").filter(Boolean).join(".");return`${e.tagName.toLowerCase()}.${s}`}return e.tagName.toLowerCase()}function et(t){const e=t[0];if(!e||!document.contains(e))return;const s="atom_debug_timer",n="atom_debug_cleanup_timer",i="atom_debug_org_style";clearTimeout(t.data(s)),clearTimeout(t.data(n)),t.data(i)||t.data(i,{outline:t.css("outline"),outlineOffset:t.css("outline-offset"),transition:t.css("transition")}),t.css({outline:"2px solid rgba(255, 68, 68, 0.8)","outline-offset":"1px",transition:"none"});const r=setTimeout(()=>{const o=t.data(i);t.css("transition","outline 0.5s ease-out"),requestAnimationFrame(()=>{t.css({outline:o?.outline||"","outline-offset":o?.outlineOffset||""});const u=setTimeout(()=>{t.css("transition",o?.transition||""),t.removeData(s),t.removeData(n),t.removeData(i)},500);t.data(n,u)})},100);t.data(s,r)}const tt=new WeakMap;function ke(t,e={}){const s=Ue(t,e);return e.name&&tt.set(s,{name:e.name}),s}Object.defineProperty(ke,"debug",{get(){return h.enabled},set(t){h.enabled=t}});function st(){return new Promise(t=>setTimeout(t,0))}c.extend({atom:ke,computed:we,effect:m,batch:R,untracked:ae,isAtom:le,isComputed:ve,isReactive:t=>le(t)||ve(t),nextTick:st});function p(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t}function E(t){return p(t)?t.value:t}function de(t){if(t.id)return`#${t.id}`;if(t.className){const e=String(t.className).split(/\s+/).filter(Boolean).join(".");return e?`${t.tagName.toLowerCase()}.${e}`:t.tagName.toLowerCase()}return t.tagName.toLowerCase()}class nt{effects=new WeakMap;cleanups=new WeakMap;boundElements=new WeakSet;preservedNodes=new WeakSet;keep(e){this.preservedNodes.add(e)}isKept(e){return this.preservedNodes.has(e)}trackEffect(e,s){const n=this.effects.get(e)||[];n.push(s),this.effects.set(e,n),this.boundElements.add(e)}trackCleanup(e,s){const n=this.cleanups.get(e)||[];n.push(s),this.cleanups.set(e,n),this.boundElements.add(e)}hasBind(e){return this.boundElements.has(e)}cleanup(e){if(!this.boundElements.has(e))return;h.cleanup(de(e));const s=this.effects.get(e);s&&(this.effects.delete(e),s.forEach(i=>{try{i.dispose()}catch(r){h.warn("Effect dispose error:",r)}}));const n=this.cleanups.get(e);n&&(this.cleanups.delete(e),n.forEach(i=>{try{i()}catch(r){h.warn("Cleanup error:",r)}})),this.boundElements.delete(e)}cleanupTree(e){e.querySelectorAll("*").forEach(n=>{this.boundElements.has(n)&&this.cleanup(n)}),this.cleanup(e)}}const a=new nt;let K=null;function Fe(t=document.body){K||(K=new MutationObserver(e=>{for(const s of e)s.removedNodes.forEach(n=>{a.isKept(n)||n.nodeType===1&&a.cleanupTree(n)})}),K.observe(t,{childList:!0,subtree:!0}))}function it(){K?.disconnect(),K=null}c.fn.atomText=function(t,e){return this.each(function(){const s=c(this);if(p(t)){const n=m(()=>{const i=E(t),r=e?e(i):String(i??"");s.text(r),h.domUpdated(s,"text",r)});a.trackEffect(this,n)}else{const n=e?e(t):String(t??"");s.text(n)}})},c.fn.atomHtml=function(t){return this.each(function(){const e=c(this);if(p(t)){const s=m(()=>{const n=String(E(t)??"");e.html(n),h.domUpdated(e,"html",n)});a.trackEffect(this,s)}else e.html(String(t??""))})},c.fn.atomClass=function(t,e){return this.each(function(){const s=c(this);if(p(e)){const n=m(()=>{const i=!!E(e);s.toggleClass(t,i),h.domUpdated(s,`class.${t}`,i)});a.trackEffect(this,n)}else s.toggleClass(t,!!e)})},c.fn.atomCss=function(t,e,s){return this.each(function(){const n=c(this);if(p(e)){const i=m(()=>{const r=E(e),o=s?`${r}${s}`:r;n.css(t,o),h.domUpdated(n,`css.${t}`,o)});a.trackEffect(this,i)}else n.css(t,s?`${e}${s}`:e)})},c.fn.atomAttr=function(t,e){return this.each(function(){const s=c(this),n=i=>{i==null||i===!1?s.removeAttr(t):i===!0?s.attr(t,t):s.attr(t,String(i)),h.domUpdated(s,`attr.${t}`,i)};if(p(e)){const i=m(()=>n(E(e)));a.trackEffect(this,i)}else n(e)})},c.fn.atomProp=function(t,e){return this.each(function(){const s=c(this);if(p(e)){const n=m(()=>{const i=E(e);s.prop(t,i),h.domUpdated(s,`prop.${t}`,i)});a.trackEffect(this,n)}else s.prop(t,e)})},c.fn.atomShow=function(t){return this.each(function(){const e=c(this);if(p(t)){const s=m(()=>{const n=!!E(t);e.toggle(n),h.domUpdated(e,"show",n)});a.trackEffect(this,s)}else e.toggle(!!t)})},c.fn.atomHide=function(t){return this.each(function(){const e=c(this);if(p(t)){const s=m(()=>{const n=!E(t);e.toggle(n),h.domUpdated(e,"hide",!n)});a.trackEffect(this,s)}else e.toggle(!t)})},c.fn.atomVal=function(t,e={}){const{debounce:s,event:n="input",parse:i=o=>o,format:r=o=>String(o??"")}=e;return this.each(function(){const o=c(this);let u=null,l=!1,f=!1,S=!1;const y=()=>{f=!0},Q=()=>{f=!1,x()};o.on("compositionstart",y),o.on("compositionend",Q);const x=()=>{l||S||R(()=>{t.value=i(o.val())})},H=()=>{f||S||l||(s?(u&&clearTimeout(u),u=window.setTimeout(x,s)):x())};o.on(n,H),o.on("change",H);const A=m(()=>{const j=r(t.value);o.val()!==j&&(l=!0,S=!0,o.val(j),h.domUpdated(o,"val",j),S=!1,l=!1)});a.trackEffect(this,A),a.trackCleanup(this,()=>{o.off(n,H),o.off("change",H),o.off("compositionstart",y),o.off("compositionend",Q),u&&clearTimeout(u)})})},c.fn.atomChecked=function(t){return this.each(function(){const e=c(this);let s=!1;const n=()=>{s||R(()=>{t.value=e.prop("checked")})};e.on("change",n),a.trackCleanup(this,()=>e.off("change",n));const i=m(()=>{s=!0,e.prop("checked",t.value),h.domUpdated(e,"checked",t.value),s=!1});a.trackEffect(this,i)})},c.fn.atomOn=function(t,e){return this.each(function(){const s=c(this),n=function(i){R(()=>e.call(this,i))};s.on(t,n),a.trackCleanup(this,()=>s.off(t,n))})},c.fn.atomUnbind=function(){return this.each(function(){a.cleanupTree(this)})},c.fn.atomBind=function(t){return this.each(function(){const e=c(this),s=[];if(t.text!==void 0&&(p(t.text)?s.push(()=>{const n=String(E(t.text)??"");e.text(n),h.domUpdated(e,"text",n)}):e.text(String(t.text??""))),t.html!==void 0&&(p(t.html)?s.push(()=>{const n=String(E(t.html)??"");e.html(n),h.domUpdated(e,"html",n)}):e.html(String(t.html??""))),t.class)for(const[n,i]of Object.entries(t.class))p(i)?s.push(()=>{const r=!!E(i);e.toggleClass(n,r),h.domUpdated(e,`class.${n}`,r)}):e.toggleClass(n,!!i);if(t.css)for(const[n,i]of Object.entries(t.css))if(Array.isArray(i)){const[r,o]=i;p(r)?s.push(()=>{const u=`${E(r)}${o}`;e.css(n,u),h.domUpdated(e,`css.${n}`,u)}):e.css(n,`${r}${o}`)}else p(i)?s.push(()=>{const r=E(i);e.css(n,r),h.domUpdated(e,`css.${n}`,r)}):e.css(n,i);if(t.attr)for(const[n,i]of Object.entries(t.attr)){const r=o=>{o==null||o===!1?e.removeAttr(n):o===!0?e.attr(n,n):e.attr(n,String(o)),h.domUpdated(e,`attr.${n}`,o)};p(i)?s.push(()=>r(E(i))):r(i)}if(t.prop)for(const[n,i]of Object.entries(t.prop))p(i)?s.push(()=>{const r=E(i);e.prop(n,r),h.domUpdated(e,`prop.${n}`,r)}):e.prop(n,i);if(t.show!==void 0&&(p(t.show)?s.push(()=>{const n=!!E(t.show);e.toggle(n),h.domUpdated(e,"show",n)}):e.toggle(!!t.show)),t.hide!==void 0&&(p(t.hide)?s.push(()=>{const n=!E(t.hide);e.toggle(n),h.domUpdated(e,"hide",!n)}):e.toggle(!t.hide)),t.val!==void 0){const n=t.val;let i=!1,r=!1;const o=()=>{r=!0},u=()=>{r=!1,i||R(()=>{n.value=e.val()})};e.on("compositionstart",o),e.on("compositionend",u);const l=()=>{r||i||R(()=>{n.value=e.val()})};e.on("input change",l),a.trackCleanup(this,()=>{e.off("input change",l),e.off("compositionstart",o),e.off("compositionend",u)}),s.push(()=>{const f=String(n.value??"");e.val()!==f&&(i=!0,e.val(f),h.domUpdated(e,"val",f),i=!1)})}if(t.checked!==void 0){const n=t.checked;let i=!1;const r=()=>{i||R(()=>{n.value=e.prop("checked")})};e.on("change",r),a.trackCleanup(this,()=>e.off("change",r)),s.push(()=>{i=!0,e.prop("checked",n.value),h.domUpdated(e,"checked",n.value),i=!1})}if(t.on)for(const[n,i]of Object.entries(t.on)){const r=function(o){R(()=>i.call(this,o))};e.on(n,r),a.trackCleanup(this,()=>e.off(n,r))}s.forEach(n=>{const i=m(n);a.trackEffect(this,i)})})};function rt(t){if(t.length===0)return[];const e=t.slice(),s=[0];let n,i,r,o;const u=t.length;for(n=0;n<u;n++){const S=t[n];if(S!==-1){const y=s[s.length-1];if(t[y]<S){e[n]=y,s.push(n);continue}for(i=0,r=s.length-1;i<r;)o=(i+r)/2|0,t[s[o]]<S?i=o+1:r=o;S<t[s[i]]&&(i>0&&(e[n]=s[i-1]),s[i]=n)}}let l=s.length,f=s[l-1];for(;l-- >0;)s[l]=f,f=e[f];return s}c.fn.atomList=function(t,e){return this.each(function(){const s=c(this),n=de(this),{key:i,render:r,bind:o,onAdd:u,onRemove:l,empty:f}=e,S=typeof i=="function"?i:A=>A[i],y=new Map;let Q=[],x=null;const H=m(()=>{const A=t.value,j=[],Le=new Set;for(let d=0;d<A.length;d++){const I=S(A[d],d);j.push(I),Le.add(I)}if(h.log("list",`${n} updating with ${A.length} items`),A.length===0&&f){x||(x=c(f),s.append(x));for(const[,d]of y)d.$el.remove(),a.cleanup(d.$el[0]);y.clear(),Q=[];return}else x&&(x.remove(),x=null);for(const[d,I]of y)if(!Le.has(d)){const P=()=>{I.$el.remove(),a.cleanup(I.$el[0]),h.log("list",`${n} removed item:`,d)};y.delete(d),l?Promise.resolve(l(I.$el)).then(P):P()}const pe=new Map;Q.forEach((d,I)=>pe.set(d,I));const ct=j.map(d=>pe.has(d)?pe.get(d):-1),ut=rt(ct),ht=new Set(ut);let w=null;for(let d=A.length-1;d>=0;d--){const I=j[d],P=A[d],at=ht.has(d);if(y.has(I)){const N=y.get(I);N.item=P;const F=N.$el[0];if(e.update&&e.update(N.$el,P,d),!at)w?N.$el.insertBefore(w):N.$el.appendTo(s);else{const je=F.nextSibling;w&&je!==w?N.$el.insertBefore(w):!w&&je&&N.$el.appendTo(s)}w=F}else{const N=r(P,d),F=(N instanceof Element,c(N));y.set(I,{$el:F,item:P}),w?F.insertBefore(w):F.appendTo(s),o&&o(F,P,d),u&&u(F),h.log("list",`${n} added item:`,I),w=F[0]}}Q=j});a.trackEffect(this,H),a.trackCleanup(this,()=>{y.clear(),Q=[],x?.remove()})})};const oe=new WeakMap;c.fn.atomMount=function(t,e={}){return this.each(function(){const s=c(this),n=de(this),i=oe.get(this);i&&(h.log("mount",`${n} unmounting existing component`),i()),h.log("mount",`${n} mounting component`);let r;try{r=t(s,e)}catch(l){console.error("[atom-effect-jquery] Mount error:",l);return}let o=!1;const u=()=>{if(!o){if(o=!0,h.log("mount",`${n} full cleanup`),typeof r=="function")try{r()}catch{}a.cleanupTree(this),oe.delete(this)}};oe.set(this,u),a.trackCleanup(this,u)})},c.fn.atomUnmount=function(){return this.each(function(){oe.get(this)?.()})};const W=new WeakMap;let Me=!1;function _e(){if(Me)return;Me=!0;const t=c.fn.on,e=c.fn.off,s=c.fn.remove,n=c.fn.empty,i=c.fn.detach;c.fn.remove=function(r){return(r?this.filter(r):this).each(function(){a.cleanupTree(this)}),s.call(this,r)},c.fn.empty=function(){return this.each(function(){this.querySelectorAll("*").forEach(o=>a.cleanup(o))}),n.call(this)},c.fn.detach=function(r){return(r?this.filter(r):this).each(function(){a.keep(this)}),i.call(this,r)},c.fn.on=function(...r){let o=-1;for(let u=r.length-1;u>=0;u--)if(typeof r[u]=="function"){o=u;break}if(o!==-1){const u=r[o];let l;W.has(u)?l=W.get(u):(l=function(...f){let S;return R(()=>{S=u.apply(this,f)}),S},W.set(u,l)),r[o]=l}return t.apply(this,r)},c.fn.off=function(...r){let o=-1;for(let u=r.length-1;u>=0;u--)if(typeof r[u]=="function"){o=u;break}if(o!==-1){const u=r[o];W.has(u)&&(r[o]=W.get(u))}return e.apply(this,r)}}const ot=_e;_e(),c(()=>{Fe(document.body)}),b.default=c,b.atom=Ue,b.batch=R,b.computed=we,b.disableAutoCleanup=it,b.effect=m,b.enableAutoCleanup=Fe,b.enablejQueryBatching=ot,b.enablejQueryOverrides=_e,b.registry=a,b.untracked=ae,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
2
  //# sourceMappingURL=atom-effect-jquery.min.js.map