atom-effect-jquery 0.2.0 → 0.2.1

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/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("jquery"),we={ONE_SECOND_MS:1e3},J={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},K={DISPOSED:1,EXECUTING:2},_={DIRTY:1,IDLE:2,PENDING:4,RESOLVED:8,REJECTED:16,RECOMPUTING:32,HAS_ERROR:64},L={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10},de={MAX_DEPENDENCIES:1e3,WARN_INFINITE_LOOP:!0},z=1073741823,C=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production";class w extends Error{constructor(e,n=null,s=!0){super(e),this.name="AtomError",this.cause=n,this.recoverable=s,this.timestamp=new Date}}class B extends w{constructor(e,n=null){super(e,n,!0),this.name="ComputedError"}}class F extends w{constructor(e,n=null){super(e,n,!1),this.name="EffectError"}}class Z extends w{constructor(e,n=null){super(e,n,!1),this.name="SchedulerError"}}const b={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"},ie=Symbol("debugName"),Fe=Symbol("id"),re=Symbol("type"),_e=Symbol("noDefaultValue");function ke(t){return"dependencies"in t&&Array.isArray(t.dependencies)}let pe=0;function Se(t,e,n){if(t._visitedEpoch!==n){if(t._visitedEpoch=n,t===e)throw new B("Indirect circular dependency detected");if(ke(t)){const s=t.dependencies;for(let i=0;i<s.length;i++){const r=s[i];r&&Se(r,e,n)}}}}const U={enabled:typeof process<"u"&&process.env?.NODE_ENV==="development",maxDependencies:de.MAX_DEPENDENCIES,warnInfiniteLoop:de.WARN_INFINITE_LOOP,warn(t,e){this.enabled&&t&&console.warn(`[Atom Effect] ${e}`)},checkCircular(t,e){if(t===e)throw new B("Direct circular dependency detected");this.enabled&&(pe++,Se(t,e,pe))},attachDebugInfo(t,e,n){if(!this.enabled)return;const s=t;s[ie]=`${e}_${n}`,s[Fe]=n,s[re]=e},getDebugName(t){if(t!=null&&ie in t)return t[ie]},getDebugType(t){if(t!=null&&re in t)return t[re]}};let Me=1;const Pe=()=>Me++;class ye{constructor(){this.id=Pe()&z,this.flags=0}}class De extends ye{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 w(b.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 w(b.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,s))),this._objectSubscribers.forEachSafe(s=>s.execute(),s=>console.error(new w(b.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,s)))}}let oe=0;function Ce(){return oe=(oe+1|0)&z,oe}let te=0,ue=0,se=!1;function be(){return se?(C&&console.warn("Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass"),!1):(se=!0,te=te+1&z,ue=0,!0)}function Ee(){se=!1}function Le(){return se?++ue: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=L.MAX_FLUSH_ITERATIONS}get phase(){return this.isProcessing||this.isFlushingSync?2:this.isBatching?1:0}schedule(e){if(typeof e!="function")throw new Z("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=be();this._processJobs(e,n),this.isProcessing=!1,s&&Ee(),this.queueSize>0&&!this.isBatching&&this.flush()})}flushSync(){this.isFlushingSync=!0;const e=be();try{this._mergeBatchQueue(),this._drainQueue()}finally{this.isFlushingSync=!1,e&&Ee()}}_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 Z(`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 Z("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<L.MIN_FLUSH_ITERATIONS)throw new Z(`Max flush iterations must be at least ${L.MIN_FLUSH_ITERATIONS}`);this.maxFlushIterations=e}}const H=new je;function R(t){if(typeof t!="function")throw new w("Batch callback must be a function");H.startBatch();try{return t()}finally{H.endBatch()}}const V={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 w("Untracked callback must be a function");const e=V.current;V.current=null;try{return t()}finally{V.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 ce(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t&&typeof t.subscribe=="function"}function ge(t){if(U.enabled&&(t==null||typeof t=="object")){const e=U.getDebugType(t);if(e)return e==="computed"}return ce(t)&&"invalidate"in t&&typeof t.invalidate=="function"}function Ie(t){return t!=null&&typeof t.then=="function"}function Ve(t){return typeof t=="object"&&t!==null}function ve(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof t.addDependency=="function"}function xe(t){return typeof t=="function"&&typeof t.addDependency!="function"}function Ne(t){return Ve(t)&&typeof t.execute=="function"}class $e extends De{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),U.attachDebugInfo(this,"atom",this.id)}get _functionSubscribers(){return this._functionSubscribersStore}get _objectSubscribers(){return this._objectSubscribersStore}get value(){const e=V.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&z,this._value=e,!(!this._functionSubscribersStore.hasSubscribers&&!this._objectSubscribersStore.hasSubscribers)&&this._scheduleNotification(n)}_track(e){if(ve(e)){e.addDependency(this);return}if(xe(e)){this._functionSubscribersStore.add(e);return}Ne(e)&&this._objectSubscribersStore.add(e)}_scheduleNotification(e){this._isNotificationScheduled||(this._pendingOldValue=e,this._isNotificationScheduled=!0),this._sync&&!H.isBatching?this._flushNotifications():H.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 $e(t,e.sync??!1)}class ae{constructor(){this.pool=[],this.maxPoolSize=50,this.maxReusableCapacity=256,this.stats=C?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return C&&this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,n){if(!(n&&e===n)){if(Object.isFrozen(e)){C&&this.stats&&this.stats.rejected.frozen++;return}if(e.length>this.maxReusableCapacity){C&&this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.maxPoolSize){C&&this.stats&&this.stats.rejected.poolFull++;return}e.length=0,this.pool.push(e),C&&this.stats&&this.stats.released++}}getStats(){if(!C||!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,C&&this.stats&&(this.stats.acquired=0,this.stats.released=0,this.stats.rejected={frozen:0,tooLarge:0,poolFull:0})}}const m=Object.freeze([]),x=Object.freeze([]),S=Object.freeze([]),k=new ae,j=new ae,N=new ae;function Be(t,e,n,s){if(e!==m&&n!==x)for(let r=0;r<e.length;r++){const o=e[r];o&&(o._tempUnsub=n[r])}const i=j.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):(U.checkCircular(o,s),i[r]=o.subscribe(s)))}if(e!==m)for(let r=0;r<e.length;r++){const o=e[r];o?._tempUnsub&&(o._tempUnsub(),o._tempUnsub=void 0)}return n!==x&&j.release(n),i}function q(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 w)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 De{constructor(e,n={}){if(typeof e!="function")throw new B(b.COMPUTED_MUST_BE_FUNCTION);if(super(),this._value=void 0,this.flags=_.DIRTY|_.IDLE,this._error=null,this._promiseId=0,this._equal=n.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in n?n.defaultValue:_e,this._hasDefaultValue=this._defaultValue!==_e,this._onError=n.onError??null,this.MAX_PROMISE_ID=Number.MAX_SAFE_INTEGER-1,this._functionSubscribersStore=new ne,this._objectSubscribersStore=new ne,this._dependencies=m,this._dependencyVersions=S,this._unsubscribes=x,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=>{}}),U.attachDebugInfo(this,"computed",this.id),U.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._getAsyncState()}get hasError(){return this._isRejected()}get lastError(){return this._error}get isPending(){return this._isPending()}get isResolved(){return this._isResolved()}invalidate(){this._markDirty(),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S)}dispose(){if(this._unsubscribes!==x){for(let e=0;e<this._unsubscribes.length;e++){const n=this._unsubscribes[e];n&&n()}j.release(this._unsubscribes),this._unsubscribes=x}this._dependencies!==m&&(k.release(this._dependencies),this._dependencies=m),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S),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}_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 n=_.RECOMPUTING;this.flags=this.flags&~n|-Number(e)&n}_getAsyncState(){return this._isResolved()?J.RESOLVED:this._isPending()?J.PENDING:this._isRejected()?J.REJECTED:J.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=V.run(this._trackable,this._fn);Ie(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=k.acquire(),i=N.acquire(),r=Ce(),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=Be(n,r,this._unsubscribes,this),this._dependencies=n,this._dependencyVersions=s}_cleanupContext(e,n){this._trackable.addDependency=e.originalAdd,n?(e.prevDeps!==m&&k.release(e.prevDeps),e.prevVersions!==S&&N.release(e.prevVersions)):(k.release(e.nextDeps),N.release(e.nextVersions))}_handleSyncResult(e){(!this._isResolved()||!this._equal(this._value,e))&&(this.version=this.version+1&z),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&z),this._value=e,this._clearDirty(),this._setResolved(),this._error=null,this._setRecomputing(!1)}_handleAsyncRejection(e){const n=q(e,B,b.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(b.CALLBACK_ERROR_IN_ERROR_HANDLER,s)}this._notifySubscribers(void 0,void 0)}_handleComputationError(e){const n=q(e,B,b.COMPUTED_COMPUTATION_FAILED);if(this._error=n,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(n)}catch(s){console.error(b.CALLBACK_ERROR_IN_ERROR_HANDLER,s)}throw n}_handlePending(){if(this._hasDefaultValue)return this._defaultValue;throw new B(b.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=V.getCurrent();if(e){if(ve(e)){e.addDependency(this);return}if(xe(e)){this._functionSubscribersStore.add(e);return}Ne(e)&&this._objectSubscribersStore.add(e)}}}Object.freeze(Re.prototype);function Te(t,e={}){return new Re(t,e)}class qe extends ye{constructor(e,n={}){super(),this.run=()=>{if(this.isDisposed)throw new F(b.EFFECT_MUST_BE_FUNCTION);this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S),this.execute()},this.dispose=()=>{if(!this.isDisposed){if(this._setDisposed(),this._safeCleanup(),this._unsubscribes!==x){for(let s=0;s<this._unsubscribes.length;s++){const i=this._unsubscribes[s];i&&i()}j.release(this._unsubscribes),this._unsubscribes=x}this._dependencies!==m&&(k.release(this._dependencies),this._dependencies=m),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S)}},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=V.run(this,this._fn);this._commitEffect(s),i=!0,this._checkLoopWarnings(),Ie(r)?r.then(o=>{!this.isDisposed&&typeof o=="function"&&(this._cleanup=o)}).catch(o=>{console.error(q(o,F,b.EFFECT_EXECUTION_FAILED))}):this._cleanup=typeof r=="function"?r:null}catch(r){i=!0,console.error(q(r,F,b.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??L.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=n.maxExecutionsPerFlush??L.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=n.trackModifications??!1,this._cleanup=null,this._dependencies=m,this._dependencyVersions=S,this._unsubscribes=x,this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,this._history=C?[]:null,this._executionCount=0,U.attachDebugInfo(this,"effect",this.id)}_prepareEffectContext(){const e=this._dependencies,n=this._dependencyVersions,s=this._unsubscribes,i=k.acquire(),r=N.acquire(),o=j.acquire(),u=Ce();if(e!==m&&s!==x)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!==m){for(let s=0;s<e.prevDeps.length;s++){const i=e.prevDeps[s];i?._tempUnsub&&(i._tempUnsub(),i._tempUnsub=void 0)}k.release(e.prevDeps)}e.prevUnsubs!==x&&j.release(e.prevUnsubs),e.prevVersions!==S&&N.release(e.prevVersions)}else{k.release(e.nextDeps),N.release(e.nextVersions);for(let s=0;s<e.nextUnsubs.length;s++)e.nextUnsubs[s]?.();if(j.release(e.nextUnsubs),e.prevDeps!==m)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():H.schedule(this.execute)});this._nextUnsubs&&this._nextUnsubs.push(n)}catch(n){console.error(q(n,F,b.EFFECT_EXECUTION_FAILED)),this._nextUnsubs&&this._nextUnsubs.push(()=>{})}}get isDisposed(){return(this.flags&K.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&K.EXECUTING)!==0}_setDisposed(){this.flags|=K.DISPOSED}_setExecuting(e){const n=K.EXECUTING;this.flags=this.flags&~n|-Number(e)&n}_safeCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){console.error(q(e,F,b.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"),Le()>L.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history){const e=Date.now();this._history.push(e),this._history.length>L.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-we.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 F(`Effect executed ${i} times within 1 second. Infinite loop suspected`);if(this.dispose(),console.error(r),C)throw r}}_throwInfiniteLoopError(e){const n=new F(`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===m||this._dependencyVersions===S)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&&U.enabled){const e=this._dependencies;for(let n=0;n<e.length;n++){const s=e[n];s&&s._modifiedAtEpoch===this._currentEpoch&&U.warn(!0,`Effect is reading a dependency (${U.getDebugName(s)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function E(t,e={}){if(typeof t!="function")throw new F(b.EFFECT_MUST_BE_FUNCTION);const n=new qe(t,e);return n.execute(),n}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 P=ze();const h={get enabled(){return P},set enabled(t){P=t},log(t,...e){P&&console.log(`[atom-effect-jquery] ${t}:`,...e)},atomChanged(t,e,n){P&&console.log(`[atom-effect-jquery] Atom "${t||"anonymous"}" changed:`,e,"→",n)},domUpdated(t,e,n){if(!P)return;const s=Xe(t);console.log(`[atom-effect-jquery] DOM updated: ${s}.${e} =`,n),Qe(t)},cleanup(t){P&&console.log(`[atom-effect-jquery] Cleanup: ${t}`)},warn(...t){P&&console.warn("[atom-effect-jquery]",...t)}};function Xe(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 Qe(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 Ge=new WeakMap;function Ae(t,e={}){const n=Ue(t,e);return e.name&&Ge.set(n,{name:e.name}),n}Object.defineProperty(Ae,"debug",{get(){return h.enabled},set(t){h.enabled=t}});function He(){return new Promise(t=>setTimeout(t,0))}c.extend({atom:Ae,computed:Te,effect:E,batch:R,untracked:he,isAtom:ce,isComputed:ge,isReactive:t=>ce(t)||ge(t),nextTick:He});function d(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t}function p(t){return d(t)?t.value:t}function le(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 Ye{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(le(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 Ye;let G=null;function Oe(t=document.body){G||(G=new MutationObserver(e=>{for(const n of e)n.removedNodes.forEach(s=>{a.isKept(s)||s instanceof Element&&a.cleanupTree(s)})}),G.observe(t,{childList:!0,subtree:!0}))}function We(){G?.disconnect(),G=null}c.fn.atomText=function(t,e){return this.each(function(){const n=c(this);if(d(t)){const s=E(()=>{const i=p(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(d(t)){const n=E(()=>{const s=String(p(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(d(e)){const s=E(()=>{const i=!!p(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(d(e)){const i=E(()=>{const r=p(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(d(e)){const i=E(()=>s(p(e)));a.trackEffect(this,i)}else s(e)})};c.fn.atomProp=function(t,e){return this.each(function(){const n=c(this);if(d(e)){const s=E(()=>{const i=p(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(d(t)){const n=E(()=>{const s=!!p(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(d(t)){const n=E(()=>{const s=!p(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,T=!1;const I=()=>{f=!0},v=()=>{f=!1,X()};o.on("compositionstart",I),o.on("compositionend",v);const X=()=>{l||T||R(()=>{t.value=i(o.val())})},D=()=>{f||T||l||(n?(u&&clearTimeout(u),u=window.setTimeout(X,n)):X())};o.on(s,D),o.on("change",D);const Y=E(()=>{const y=r(t.value);o.val()!==y&&(l=!0,T=!0,o.val(y),h.domUpdated(o,"val",y),T=!1,l=!1)});a.trackEffect(this,Y),a.trackCleanup(this,()=>{o.off(s,D),o.off("change",D),o.off("compositionstart",I),o.off("compositionend",v),u&&clearTimeout(u)})})};c.fn.atomChecked=function(t){return this.each(function(){const e=c(this);let n=!1;const s=()=>{n||R(()=>{t.value=e.prop("checked")})};e.on("change",s),a.trackCleanup(this,()=>e.off("change",s));const i=E(()=>{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){R(()=>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&&(d(t.text)?n.push(()=>{const s=String(p(t.text)??"");e.text(s),h.domUpdated(e,"text",s)}):e.text(String(t.text??""))),t.html!==void 0&&(d(t.html)?n.push(()=>{const s=String(p(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))d(i)?n.push(()=>{const r=!!p(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;d(r)?n.push(()=>{const u=`${p(r)}${o}`;e.css(s,u),h.domUpdated(e,`css.${s}`,u)}):e.css(s,`${r}${o}`)}else d(i)?n.push(()=>{const r=p(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)};d(i)?n.push(()=>r(p(i))):r(i)}if(t.prop)for(const[s,i]of Object.entries(t.prop))d(i)?n.push(()=>{const r=p(i);e.prop(s,r),h.domUpdated(e,`prop.${s}`,r)}):e.prop(s,i);if(t.show!==void 0&&(d(t.show)?n.push(()=>{const s=!!p(t.show);e.toggle(s),h.domUpdated(e,"show",s)}):e.toggle(!!t.show)),t.hide!==void 0&&(d(t.hide)?n.push(()=>{const s=!p(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||R(()=>{s.value=e.val()})};e.on("compositionstart",o),e.on("compositionend",u);const l=()=>{r||i||R(()=>{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||R(()=>{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){R(()=>i.call(this,o))};e.on(s,r),a.trackCleanup(this,()=>e.off(s,r))}n.forEach(s=>{const i=E(s);a.trackEffect(this,i)})})};c.fn.atomList=function(t,e){return this.each(function(){const n=c(this),s=le(this),{key:i,render:r,bind:o,onAdd:u,onRemove:l,empty:f}=e,T=typeof i=="function"?i:D=>D[i],I=new Map;let v=null;const X=E(()=>{const D=t.value,Y=new Set;if(h.log("list",`${s} updating with ${D.length} items`),D.length===0&&f){v||(v=c(f),n.append(v));for(const[,g]of I)g.$el.remove(),a.cleanup(g.$el[0]);I.clear();return}else v&&(v.remove(),v=null);let y=null;for(let g=0;g<D.length;g++){const A=D[g],M=T(A,g);Y.add(M);const $=I.get(M);if($){const W=$.$el[0],O=y?y[0]:null;(O?W.previousSibling===O:W===n[0].firstChild)||(y?y.after($.$el):n.prepend($.$el)),$.item=A,y=$.$el}else{const W=r(A,g),O=c(W);y?y.after(O):n.prepend(O),I.set(M,{$el:O,item:A}),o&&o(O,A,g),u&&u(O),h.log("list",`${s} added item:`,M),y=O}}for(const[g,A]of I)if(!Y.has(g)){const M=()=>{A.$el.remove(),a.cleanup(A.$el[0]),I.delete(g),h.log("list",`${s} removed item:`,g)};l?Promise.resolve(l(A.$el)).then(M):M()}});a.trackEffect(this,X),a.trackCleanup(this,()=>{I.clear(),v?.remove()})})};const ee=new WeakMap;c.fn.atomMount=function(t,e={}){return this.each(function(){const n=c(this),s=le(this),i=ee.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),ee.delete(this)}};ee.set(this,u),a.trackCleanup(this,u)})};c.fn.atomUnmount=function(){return this.each(function(){ee.get(this)?.()})};const Q=new WeakMap;let me=!1;function fe(){if(me)return;me=!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;Q.has(u)?l=Q.get(u):(l=function(...f){let T;return R(()=>{T=u.apply(this,f)}),T},Q.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];Q.has(u)&&(r[o]=Q.get(u))}return e.apply(this,r)}}const Je=fe;c(()=>{Oe(document.body),fe()});exports.default=c;exports.atom=Ue;exports.batch=R;exports.computed=Te;exports.disableAutoCleanup=We;exports.effect=E;exports.enableAutoCleanup=Oe;exports.enablejQueryBatching=Je;exports.enablejQueryOverrides=fe;exports.registry=a;exports.untracked=he;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("jquery"),we={ONE_SECOND_MS:1e3},J={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},K={DISPOSED:1,EXECUTING:2},_={DIRTY:1,IDLE:2,PENDING:4,RESOLVED:8,REJECTED:16,RECOMPUTING:32,HAS_ERROR:64},L={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10},de={MAX_DEPENDENCIES:1e3,WARN_INFINITE_LOOP:!0},z=1073741823,C=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production";class w extends Error{constructor(e,n=null,s=!0){super(e),this.name="AtomError",this.cause=n,this.recoverable=s,this.timestamp=new Date}}class B extends w{constructor(e,n=null){super(e,n,!0),this.name="ComputedError"}}class F extends w{constructor(e,n=null){super(e,n,!1),this.name="EffectError"}}class Z extends w{constructor(e,n=null){super(e,n,!1),this.name="SchedulerError"}}const b={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"},ie=Symbol("debugName"),Fe=Symbol("id"),re=Symbol("type"),_e=Symbol("noDefaultValue");function ke(t){return"dependencies"in t&&Array.isArray(t.dependencies)}let pe=0;function Se(t,e,n){if(t._visitedEpoch!==n){if(t._visitedEpoch=n,t===e)throw new B("Indirect circular dependency detected");if(ke(t)){const s=t.dependencies;for(let i=0;i<s.length;i++){const r=s[i];r&&Se(r,e,n)}}}}const U={enabled:typeof process<"u"&&process.env?.NODE_ENV==="development",maxDependencies:de.MAX_DEPENDENCIES,warnInfiniteLoop:de.WARN_INFINITE_LOOP,warn(t,e){this.enabled&&t&&console.warn(`[Atom Effect] ${e}`)},checkCircular(t,e){if(t===e)throw new B("Direct circular dependency detected");this.enabled&&(pe++,Se(t,e,pe))},attachDebugInfo(t,e,n){if(!this.enabled)return;const s=t;s[ie]=`${e}_${n}`,s[Fe]=n,s[re]=e},getDebugName(t){if(t!=null&&ie in t)return t[ie]},getDebugType(t){if(t!=null&&re in t)return t[re]}};let Me=1;const Pe=()=>Me++;class ye{constructor(){this.id=Pe()&z,this.flags=0}}class De extends ye{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 w(b.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 w(b.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,s))),this._objectSubscribers.forEachSafe(s=>s.execute(),s=>console.error(new w(b.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,s)))}}let oe=0;function Ce(){return oe=(oe+1|0)&z,oe}let te=0,ue=0,se=!1;function be(){return se?(C&&console.warn("Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass"),!1):(se=!0,te=te+1&z,ue=0,!0)}function Ee(){se=!1}function Le(){return se?++ue: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=L.MAX_FLUSH_ITERATIONS}get phase(){return this.isProcessing||this.isFlushingSync?2:this.isBatching?1:0}schedule(e){if(typeof e!="function")throw new Z("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=be();this._processJobs(e,n),this.isProcessing=!1,s&&Ee(),this.queueSize>0&&!this.isBatching&&this.flush()})}flushSync(){this.isFlushingSync=!0;const e=be();try{this._mergeBatchQueue(),this._drainQueue()}finally{this.isFlushingSync=!1,e&&Ee()}}_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 Z(`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 Z("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<L.MIN_FLUSH_ITERATIONS)throw new Z(`Max flush iterations must be at least ${L.MIN_FLUSH_ITERATIONS}`);this.maxFlushIterations=e}}const H=new je;function R(t){if(typeof t!="function")throw new w("Batch callback must be a function");H.startBatch();try{return t()}finally{H.endBatch()}}const V={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 w("Untracked callback must be a function");const e=V.current;V.current=null;try{return t()}finally{V.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 ce(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t&&typeof t.subscribe=="function"}function ge(t){if(U.enabled&&(t==null||typeof t=="object")){const e=U.getDebugType(t);if(e)return e==="computed"}return ce(t)&&"invalidate"in t&&typeof t.invalidate=="function"}function Ie(t){return t!=null&&typeof t.then=="function"}function Ve(t){return typeof t=="object"&&t!==null}function ve(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof t.addDependency=="function"}function xe(t){return typeof t=="function"&&typeof t.addDependency!="function"}function Ne(t){return Ve(t)&&typeof t.execute=="function"}class $e extends De{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),U.attachDebugInfo(this,"atom",this.id)}get _functionSubscribers(){return this._functionSubscribersStore}get _objectSubscribers(){return this._objectSubscribersStore}get value(){const e=V.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&z,this._value=e,!(!this._functionSubscribersStore.hasSubscribers&&!this._objectSubscribersStore.hasSubscribers)&&this._scheduleNotification(n)}_track(e){if(ve(e)){e.addDependency(this);return}if(xe(e)){this._functionSubscribersStore.add(e);return}Ne(e)&&this._objectSubscribersStore.add(e)}_scheduleNotification(e){this._isNotificationScheduled||(this._pendingOldValue=e,this._isNotificationScheduled=!0),this._sync&&!H.isBatching?this._flushNotifications():H.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 $e(t,e.sync??!1)}class ae{constructor(){this.pool=[],this.maxPoolSize=50,this.maxReusableCapacity=256,this.stats=C?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return C&&this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,n){if(!(n&&e===n)){if(Object.isFrozen(e)){C&&this.stats&&this.stats.rejected.frozen++;return}if(e.length>this.maxReusableCapacity){C&&this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.maxPoolSize){C&&this.stats&&this.stats.rejected.poolFull++;return}e.length=0,this.pool.push(e),C&&this.stats&&this.stats.released++}}getStats(){if(!C||!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,C&&this.stats&&(this.stats.acquired=0,this.stats.released=0,this.stats.rejected={frozen:0,tooLarge:0,poolFull:0})}}const m=Object.freeze([]),x=Object.freeze([]),S=Object.freeze([]),k=new ae,j=new ae,N=new ae;function Be(t,e,n,s){if(e!==m&&n!==x)for(let r=0;r<e.length;r++){const o=e[r];o&&(o._tempUnsub=n[r])}const i=j.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):(U.checkCircular(o,s),i[r]=o.subscribe(s)))}if(e!==m)for(let r=0;r<e.length;r++){const o=e[r];o?._tempUnsub&&(o._tempUnsub(),o._tempUnsub=void 0)}return n!==x&&j.release(n),i}function q(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 w)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 De{constructor(e,n={}){if(typeof e!="function")throw new B(b.COMPUTED_MUST_BE_FUNCTION);if(super(),this._value=void 0,this.flags=_.DIRTY|_.IDLE,this._error=null,this._promiseId=0,this._equal=n.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in n?n.defaultValue:_e,this._hasDefaultValue=this._defaultValue!==_e,this._onError=n.onError??null,this.MAX_PROMISE_ID=Number.MAX_SAFE_INTEGER-1,this._functionSubscribersStore=new ne,this._objectSubscribersStore=new ne,this._dependencies=m,this._dependencyVersions=S,this._unsubscribes=x,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=>{}}),U.attachDebugInfo(this,"computed",this.id),U.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._getAsyncState()}get hasError(){return this._isRejected()}get lastError(){return this._error}get isPending(){return this._isPending()}get isResolved(){return this._isResolved()}invalidate(){this._markDirty(),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S)}dispose(){if(this._unsubscribes!==x){for(let e=0;e<this._unsubscribes.length;e++){const n=this._unsubscribes[e];n&&n()}j.release(this._unsubscribes),this._unsubscribes=x}this._dependencies!==m&&(k.release(this._dependencies),this._dependencies=m),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S),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}_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 n=_.RECOMPUTING;this.flags=this.flags&~n|-Number(e)&n}_getAsyncState(){return this._isResolved()?J.RESOLVED:this._isPending()?J.PENDING:this._isRejected()?J.REJECTED:J.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=V.run(this._trackable,this._fn);Ie(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=k.acquire(),i=N.acquire(),r=Ce(),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=Be(n,r,this._unsubscribes,this),this._dependencies=n,this._dependencyVersions=s}_cleanupContext(e,n){this._trackable.addDependency=e.originalAdd,n?(e.prevDeps!==m&&k.release(e.prevDeps),e.prevVersions!==S&&N.release(e.prevVersions)):(k.release(e.nextDeps),N.release(e.nextVersions))}_handleSyncResult(e){(!this._isResolved()||!this._equal(this._value,e))&&(this.version=this.version+1&z),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&z),this._value=e,this._clearDirty(),this._setResolved(),this._error=null,this._setRecomputing(!1)}_handleAsyncRejection(e){const n=q(e,B,b.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(b.CALLBACK_ERROR_IN_ERROR_HANDLER,s)}this._notifySubscribers(void 0,void 0)}_handleComputationError(e){const n=q(e,B,b.COMPUTED_COMPUTATION_FAILED);if(this._error=n,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(n)}catch(s){console.error(b.CALLBACK_ERROR_IN_ERROR_HANDLER,s)}throw n}_handlePending(){if(this._hasDefaultValue)return this._defaultValue;throw new B(b.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=V.getCurrent();if(e){if(ve(e)){e.addDependency(this);return}if(xe(e)){this._functionSubscribersStore.add(e);return}Ne(e)&&this._objectSubscribersStore.add(e)}}}Object.freeze(Re.prototype);function Te(t,e={}){return new Re(t,e)}class qe extends ye{constructor(e,n={}){super(),this.run=()=>{if(this.isDisposed)throw new F(b.EFFECT_MUST_BE_FUNCTION);this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S),this.execute()},this.dispose=()=>{if(!this.isDisposed){if(this._setDisposed(),this._safeCleanup(),this._unsubscribes!==x){for(let s=0;s<this._unsubscribes.length;s++){const i=this._unsubscribes[s];i&&i()}j.release(this._unsubscribes),this._unsubscribes=x}this._dependencies!==m&&(k.release(this._dependencies),this._dependencies=m),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S)}},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=V.run(this,this._fn);this._commitEffect(s),i=!0,this._checkLoopWarnings(),Ie(r)?r.then(o=>{!this.isDisposed&&typeof o=="function"&&(this._cleanup=o)}).catch(o=>{console.error(q(o,F,b.EFFECT_EXECUTION_FAILED))}):this._cleanup=typeof r=="function"?r:null}catch(r){i=!0,console.error(q(r,F,b.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??L.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=n.maxExecutionsPerFlush??L.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=n.trackModifications??!1,this._cleanup=null,this._dependencies=m,this._dependencyVersions=S,this._unsubscribes=x,this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,this._history=C?[]:null,this._executionCount=0,U.attachDebugInfo(this,"effect",this.id)}_prepareEffectContext(){const e=this._dependencies,n=this._dependencyVersions,s=this._unsubscribes,i=k.acquire(),r=N.acquire(),o=j.acquire(),u=Ce();if(e!==m&&s!==x)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!==m){for(let s=0;s<e.prevDeps.length;s++){const i=e.prevDeps[s];i?._tempUnsub&&(i._tempUnsub(),i._tempUnsub=void 0)}k.release(e.prevDeps)}e.prevUnsubs!==x&&j.release(e.prevUnsubs),e.prevVersions!==S&&N.release(e.prevVersions)}else{k.release(e.nextDeps),N.release(e.nextVersions);for(let s=0;s<e.nextUnsubs.length;s++)e.nextUnsubs[s]?.();if(j.release(e.nextUnsubs),e.prevDeps!==m)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():H.schedule(this.execute)});this._nextUnsubs&&this._nextUnsubs.push(n)}catch(n){console.error(q(n,F,b.EFFECT_EXECUTION_FAILED)),this._nextUnsubs&&this._nextUnsubs.push(()=>{})}}get isDisposed(){return(this.flags&K.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&K.EXECUTING)!==0}_setDisposed(){this.flags|=K.DISPOSED}_setExecuting(e){const n=K.EXECUTING;this.flags=this.flags&~n|-Number(e)&n}_safeCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){console.error(q(e,F,b.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"),Le()>L.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history){const e=Date.now();this._history.push(e),this._history.length>L.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-we.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 F(`Effect executed ${i} times within 1 second. Infinite loop suspected`);if(this.dispose(),console.error(r),C)throw r}}_throwInfiniteLoopError(e){const n=new F(`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===m||this._dependencyVersions===S)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&&U.enabled){const e=this._dependencies;for(let n=0;n<e.length;n++){const s=e[n];s&&s._modifiedAtEpoch===this._currentEpoch&&U.warn(!0,`Effect is reading a dependency (${U.getDebugName(s)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function E(t,e={}){if(typeof t!="function")throw new F(b.EFFECT_MUST_BE_FUNCTION);const n=new qe(t,e);return n.execute(),n}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 P=ze();const h={get enabled(){return P},set enabled(t){P=t},log(t,...e){P&&console.log(`[atom-effect-jquery] ${t}:`,...e)},atomChanged(t,e,n){P&&console.log(`[atom-effect-jquery] Atom "${t||"anonymous"}" changed:`,e,"→",n)},domUpdated(t,e,n){if(!P)return;const s=Xe(t);console.log(`[atom-effect-jquery] DOM updated: ${s}.${e} =`,n),Qe(t)},cleanup(t){P&&console.log(`[atom-effect-jquery] Cleanup: ${t}`)},warn(...t){P&&console.warn("[atom-effect-jquery]",...t)}};function Xe(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 Qe(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 Ge=new WeakMap;function Ae(t,e={}){const n=Ue(t,e);return e.name&&Ge.set(n,{name:e.name}),n}Object.defineProperty(Ae,"debug",{get(){return h.enabled},set(t){h.enabled=t}});function He(){return new Promise(t=>setTimeout(t,0))}c.extend({atom:Ae,computed:Te,effect:E,batch:R,untracked:he,isAtom:ce,isComputed:ge,isReactive:t=>ce(t)||ge(t),nextTick:He});function d(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t}function p(t){return d(t)?t.value:t}function le(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 Ye{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(le(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 Ye;let G=null;function Oe(t=document.body){G||(G=new MutationObserver(e=>{for(const n of e)n.removedNodes.forEach(s=>{a.isKept(s)||s instanceof Element&&a.cleanupTree(s)})}),G.observe(t,{childList:!0,subtree:!0}))}function We(){G?.disconnect(),G=null}c.fn.atomText=function(t,e){return this.each(function(){const n=c(this);if(d(t)){const s=E(()=>{const i=p(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(d(t)){const n=E(()=>{const s=String(p(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(d(e)){const s=E(()=>{const i=!!p(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(d(e)){const i=E(()=>{const r=p(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(d(e)){const i=E(()=>s(p(e)));a.trackEffect(this,i)}else s(e)})};c.fn.atomProp=function(t,e){return this.each(function(){const n=c(this);if(d(e)){const s=E(()=>{const i=p(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(d(t)){const n=E(()=>{const s=!!p(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(d(t)){const n=E(()=>{const s=!p(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,T=!1;const I=()=>{f=!0},v=()=>{f=!1,X()};o.on("compositionstart",I),o.on("compositionend",v);const X=()=>{l||T||R(()=>{t.value=i(o.val())})},D=()=>{f||T||l||(n?(u&&clearTimeout(u),u=window.setTimeout(X,n)):X())};o.on(s,D),o.on("change",D);const Y=E(()=>{const y=r(t.value);o.val()!==y&&(l=!0,T=!0,o.val(y),h.domUpdated(o,"val",y),T=!1,l=!1)});a.trackEffect(this,Y),a.trackCleanup(this,()=>{o.off(s,D),o.off("change",D),o.off("compositionstart",I),o.off("compositionend",v),u&&clearTimeout(u)})})};c.fn.atomChecked=function(t){return this.each(function(){const e=c(this);let n=!1;const s=()=>{n||R(()=>{t.value=e.prop("checked")})};e.on("change",s),a.trackCleanup(this,()=>e.off("change",s));const i=E(()=>{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){R(()=>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&&(d(t.text)?n.push(()=>{const s=String(p(t.text)??"");e.text(s),h.domUpdated(e,"text",s)}):e.text(String(t.text??""))),t.html!==void 0&&(d(t.html)?n.push(()=>{const s=String(p(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))d(i)?n.push(()=>{const r=!!p(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;d(r)?n.push(()=>{const u=`${p(r)}${o}`;e.css(s,u),h.domUpdated(e,`css.${s}`,u)}):e.css(s,`${r}${o}`)}else d(i)?n.push(()=>{const r=p(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)};d(i)?n.push(()=>r(p(i))):r(i)}if(t.prop)for(const[s,i]of Object.entries(t.prop))d(i)?n.push(()=>{const r=p(i);e.prop(s,r),h.domUpdated(e,`prop.${s}`,r)}):e.prop(s,i);if(t.show!==void 0&&(d(t.show)?n.push(()=>{const s=!!p(t.show);e.toggle(s),h.domUpdated(e,"show",s)}):e.toggle(!!t.show)),t.hide!==void 0&&(d(t.hide)?n.push(()=>{const s=!p(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||R(()=>{s.value=e.val()})};e.on("compositionstart",o),e.on("compositionend",u);const l=()=>{r||i||R(()=>{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||R(()=>{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){R(()=>i.call(this,o))};e.on(s,r),a.trackCleanup(this,()=>e.off(s,r))}n.forEach(s=>{const i=E(s);a.trackEffect(this,i)})})};c.fn.atomList=function(t,e){return this.each(function(){const n=c(this),s=le(this),{key:i,render:r,bind:o,onAdd:u,onRemove:l,empty:f}=e,T=typeof i=="function"?i:D=>D[i],I=new Map;let v=null;const X=E(()=>{const D=t.value,Y=new Set;if(h.log("list",`${s} updating with ${D.length} items`),D.length===0&&f){v||(v=c(f),n.append(v));for(const[,g]of I)g.$el.remove(),a.cleanup(g.$el[0]);I.clear();return}else v&&(v.remove(),v=null);let y=null;for(let g=0;g<D.length;g++){const A=D[g],M=T(A,g);Y.add(M);const $=I.get(M);if($){const W=$.$el[0],O=y?y[0]:null;(O?W.previousSibling===O:W===n[0].firstChild)||(y?y.after($.$el):n.prepend($.$el)),$.item=A,y=$.$el}else{const W=r(A,g),O=c(W);y?y.after(O):n.prepend(O),I.set(M,{$el:O,item:A}),o&&o(O,A,g),u&&u(O),h.log("list",`${s} added item:`,M),y=O}}for(const[g,A]of I)if(!Y.has(g)){const M=()=>{A.$el.remove(),a.cleanup(A.$el[0]),I.delete(g),h.log("list",`${s} removed item:`,g)};l?Promise.resolve(l(A.$el)).then(M):M()}});a.trackEffect(this,X),a.trackCleanup(this,()=>{I.clear(),v?.remove()})})};const ee=new WeakMap;c.fn.atomMount=function(t,e={}){return this.each(function(){const n=c(this),s=le(this),i=ee.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),ee.delete(this)}};ee.set(this,u),a.trackCleanup(this,u)})};c.fn.atomUnmount=function(){return this.each(function(){ee.get(this)?.()})};const Q=new WeakMap;let me=!1;function fe(){if(me)return;me=!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;Q.has(u)?l=Q.get(u):(l=function(...f){let T;return R(()=>{T=u.apply(this,f)}),T},Q.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];Q.has(u)&&(r[o]=Q.get(u))}return e.apply(this,r)}}const Je=fe;fe();c(()=>{Oe(document.body)});exports.default=c;exports.atom=Ue;exports.batch=R;exports.computed=Te;exports.disableAutoCleanup=We;exports.effect=E;exports.enableAutoCleanup=Oe;exports.enablejQueryBatching=Je;exports.enablejQueryOverrides=fe;exports.registry=a;exports.untracked=he;
2
2
  //# sourceMappingURL=index.cjs.map