@but212/atom-effect-jquery 0.10.1 → 0.12.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.
@@ -1,2 +1,2 @@
1
- (function(b,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],u):(b=typeof globalThis<"u"?globalThis:b||self,u(b.AtomEffectJQuery={},b.jQuery))})(this,(function(b,u){"use strict";const Ge={ONE_SECOND_MS:1e3},te={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},se={DISPOSED:1,EXECUTING:2},d={DIRTY:1,IDLE:2,PENDING:4,RESOLVED:8,REJECTED:16,RECOMPUTING:32,HAS_ERROR:64},K={SYNC:1,NOTIFICATION_SCHEDULED:2},M={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10},ye={MAX_DEPENDENCIES:1e3,WARN_INFINITE_LOOP:!0},L=1073741823,T=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production",He=Object.freeze([]);class U extends Error{constructor(e,s=null,n=!0){super(e),this.name="AtomError",this.cause=s,this.recoverable=n,this.timestamp=new Date}}class H extends U{constructor(e,s=null){super(e,s,!0),this.name="ComputedError"}}class P extends U{constructor(e,s=null){super(e,s,!1),this.name="EffectError"}}class ne extends U{constructor(e,s=null){super(e,s,!1),this.name="SchedulerError"}}const g={COMPUTED_MUST_BE_FUNCTION:"Computed function must be a function",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",ATOM_SUBSCRIBER_MUST_BE_FUNCTION:"Subscription listener must be a function or Subscriber object",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",CALLBACK_ERROR_IN_ERROR_HANDLER:"Error occurred during onError callback execution"},fe=Symbol("debugName"),Ye=Symbol("id"),de=Symbol("type"),Se=Symbol("noDefaultValue");function Je(t){return"dependencies"in t&&Array.isArray(t.dependencies)}let De=0;function Ie(t,e,s){if(t._visitedEpoch!==s){if(t._visitedEpoch=s,t===e)throw new H("Indirect circular dependency detected");if(Je(t)){const n=t.dependencies;for(let i=0;i<n.length;i++){const r=n[i];r&&Ie(r,e,s)}}}}const N={enabled:typeof process<"u"&&process.env?.NODE_ENV==="development",maxDependencies:ye.MAX_DEPENDENCIES,warnInfiniteLoop:ye.WARN_INFINITE_LOOP,warn(t,e){this.enabled&&t&&console.warn(`[Atom Effect] ${e}`)},checkCircular(t,e){if(t===e)throw new H("Direct circular dependency detected");this.enabled&&(De++,Ie(t,e,De))},attachDebugInfo(t,e,s){if(!this.enabled)return;const n=t;n[fe]=`${e}_${s}`,n[Ye]=s,n[de]=e},getDebugName(t){if(t!=null&&fe in t)return t[fe]},getDebugType(t){if(t!=null&&de in t)return t[de]}};let Ke=1;const We=()=>Ke++;class Ce{constructor(){this.id=We()&L,this.flags=0}}class ve extends Ce{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 U(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 U(g.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,n))),this._objectSubscribers.forEachSafe(n=>n.execute(),n=>console.error(new U(g.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,n)))}}let ie=0;function Te(){return ie=ie+1&L||1,ie}function Ze(){return ie}let re=0,_e=0,oe=!1;function Ne(){return oe?(T&&console.warn("Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass"),!1):(oe=!0,re=re+1&L,_e=0,!0)}function Ae(){oe=!1}function $e(){return oe?++_e:0}class et{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=M.MAX_FLUSH_ITERATIONS}get phase(){return this.isProcessing||this.isFlushingSync?2:this.isBatching?1:0}schedule(e){if(typeof e!="function")throw new ne("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(){this.isProcessing||this.queueSize===0||(this.isProcessing=!0,queueMicrotask(()=>{try{if(this.queueSize===0)return;const e=Ne();this._drainQueue(),e&&Ae()}finally{this.isProcessing=!1,this.queueSize>0&&!this.isBatching&&this.flush()}}))}flushSync(){this.isFlushingSync=!0;const e=Ne();try{this._mergeBatchQueue(),this._drainQueue()}finally{this.isFlushingSync=!1,e&&Ae()}}_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 ne(`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 ne("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<M.MIN_FLUSH_ITERATIONS)throw new ne(`Max flush iterations must be at least ${M.MIN_FLUSH_ITERATIONS}`);this.maxFlushIterations=e}}const W=new et;function Oe(t){if(typeof t!="function")throw new U("Batch callback must be a function");W.startBatch();try{return t()}finally{W.endBatch()}}class tt{constructor(){this.current=null}run(e,s){const n=this.current;this.current=e;try{return s()}finally{this.current=n}}getCurrent(){return this.current}}const V=new tt;function pe(t){if(typeof t!="function")throw new U("Untracked callback must be a function");const e=V.current;V.current=null;try{return t()}finally{V.current=e}}class ce{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]:[]}}class be{constructor(){this.pool=[],this.maxPoolSize=50,this.maxReusableCapacity=256,this.stats=T?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return T&&this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,s){if(!(s&&e===s)){if(Object.isFrozen(e)){T&&this.stats&&this.stats.rejected.frozen++;return}if(e.length>this.maxReusableCapacity){T&&this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.maxPoolSize){T&&this.stats&&this.stats.rejected.poolFull++;return}e.length=0,this.pool.push(e),T&&this.stats&&this.stats.released++}}getStats(){if(!T||!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,T&&this.stats&&(this.stats.acquired=0,this.stats.released=0,this.stats.rejected={frozen:0,tooLarge:0,poolFull:0})}}const S=Object.freeze([]),A=Object.freeze([]),D=Object.freeze([]),j=new be,B=new be,O=new be;function Ee(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t&&typeof t.subscribe=="function"}function Re(t){if(N.enabled&&(t==null||typeof t=="object")){const e=N.getDebugType(t);if(e)return e==="computed"}return Ee(t)&&"invalidate"in t&&typeof t.invalidate=="function"}function Ue(t){return t!=null&&typeof t.then=="function"}function st(t){return typeof t=="object"&&t!==null}function nt(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof t.addDependency=="function"}function it(t){return typeof t=="function"&&typeof t.addDependency!="function"}function rt(t){return st(t)&&typeof t.execute=="function"}function xe(t,e,s,n){if(e){if(nt(e)){e.addDependency(t);return}if(it(e)){s.add(e);return}rt(e)&&n.add(e)}}function ot(t,e,s,n){if(e!==S&&s!==A)for(let r=0;r<e.length;r++){const o=e[r];o&&(o._tempUnsub=s[r])}const i=B.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):(N.checkCircular(o,n),i[r]=o.subscribe(n)))}if(e!==S)for(let r=0;r<e.length;r++){const o=e[r];o?._tempUnsub&&(o._tempUnsub(),o._tempUnsub=void 0)}return s!==A&&B.release(s),i}class ct extends ve{constructor(e,s){super(),this._functionSubscribersStore=null,this._objectSubscribersStore=null,this._value=e,s&&(this.flags|=K.SYNC),N.attachDebugInfo(this,"atom",this.id)}get _functionSubscribers(){return this._functionSubscribersStore||(this._functionSubscribersStore=new ce),this._functionSubscribersStore}get _objectSubscribers(){return this._objectSubscribersStore||(this._objectSubscribersStore=new ce),this._objectSubscribersStore}get value(){const e=V.current;return e&&xe(this,e,this._functionSubscribers,this._objectSubscribers),this._value}set value(e){if(Object.is(this._value,e))return;const s=this._value;this._value=e,this.version=this.version+1&L;const n=this._functionSubscribersStore?.hasSubscribers,i=this._objectSubscribersStore?.hasSubscribers;(n||i)&&this._scheduleNotification(s)}_scheduleNotification(e){if(this.flags&K.NOTIFICATION_SCHEDULED||(this._pendingOldValue=e,this.flags|=K.NOTIFICATION_SCHEDULED),this.flags&K.SYNC&&!W.isBatching){this._flushNotifications();return}this._notifyTask||(this._notifyTask=()=>this._flushNotifications()),W.schedule(this._notifyTask)}_flushNotifications(){if(!(this.flags&K.NOTIFICATION_SCHEDULED))return;const e=this._pendingOldValue,s=this._value;this._pendingOldValue=void 0,this.flags&=-3,this._notifySubscribers(s,e)}_notifySubscribers(e,s){this._functionSubscribersStore&&this._functionSubscribersStore.forEachSafe(n=>n(e,s)),this._objectSubscribersStore&&this._objectSubscribersStore.forEachSafe(n=>n.execute())}peek(){return this._value}dispose(){this._functionSubscribersStore?.clear(),this._objectSubscribersStore?.clear(),this._value=void 0,this._notifyTask=void 0}}function we(t,e={}){return new ct(t,e.sync??!1)}function Z(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 U)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 ke=d.RESOLVED|d.PENDING|d.REJECTED,ue=Array(ke+1).fill(te.IDLE);ue[d.RESOLVED]=te.RESOLVED,ue[d.PENDING]=te.PENDING,ue[d.REJECTED]=te.REJECTED;class Fe extends ve{constructor(e,s={}){if(typeof e!="function")throw new H(g.COMPUTED_MUST_BE_FUNCTION);if(super(),this._cachedErrors=null,this._errorCacheEpoch=-1,this._value=void 0,this.flags=d.DIRTY|d.IDLE,this._error=null,this._promiseId=0,this._equal=s.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in s?s.defaultValue:Se,this._hasDefaultValue=this._defaultValue!==Se,this._onError=s.onError??null,this.MAX_PROMISE_ID=Number.MAX_SAFE_INTEGER-1,this._functionSubscribersStore=new ce,this._objectSubscribersStore=new ce,this._dependencies=S,this._dependencyVersions=D,this._unsubscribes=A,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=>{}}),N.attachDebugInfo(this,"computed",this.id),N.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 He;const e=Ze();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 c=r[o];c&&s.add(c)}}}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!==D&&(O.release(this._dependencyVersions),this._dependencyVersions=D),this._errorCacheEpoch=-1,this._cachedErrors=null}dispose(){if(this._unsubscribes!==A){for(let e=0;e<this._unsubscribes.length;e++){const s=this._unsubscribes[e];s&&s()}B.release(this._unsubscribes),this._unsubscribes=A}this._dependencies!==S&&(j.release(this._dependencies),this._dependencies=S),this._dependencyVersions!==D&&(O.release(this._dependencyVersions),this._dependencyVersions=D),this._functionSubscribersStore.clear(),this._objectSubscribersStore.clear(),this.flags=d.DIRTY|d.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&d.DIRTY)!==0}_setDirty(){this.flags|=d.DIRTY}_clearDirty(){this.flags&=-2}_isIdle(){return(this.flags&d.IDLE)!==0}_setIdle(){this.flags|=d.IDLE,this.flags&=-29}_isPending(){return(this.flags&d.PENDING)!==0}_setPending(){this.flags|=d.PENDING,this.flags&=-27}_isResolved(){return(this.flags&d.RESOLVED)!==0}_setResolved(){this.flags|=d.RESOLVED,this.flags&=-87}_isRejected(){return(this.flags&d.REJECTED)!==0}_setRejected(){this.flags|=d.REJECTED|d.HAS_ERROR,this.flags&=-15}_isRecomputing(){return(this.flags&d.RECOMPUTING)!==0}_setRecomputing(e){const s=d.RECOMPUTING;this.flags=this.flags&~s|-Number(e)&s}_getAsyncState(){return ue[this.flags&ke]}_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=V.run(this._trackable,this._fn);this._commitDependencies(e),s=!0,Ue(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=j.acquire(),i=O.acquire(),r=Te(),o={depCount:0},c=_=>{_._lastSeenEpoch!==r&&(_._lastSeenEpoch=r,o.depCount<n.length?(n[o.depCount]=_,i[o.depCount]=_.version):(n.push(_),i.push(_.version)),o.depCount++)},h=this._trackable.addDependency;return this._trackable.addDependency=c,{prevDeps:e,prevVersions:s,nextDeps:n,nextVersions:i,originalAdd:h,state:o}}_commitDependencies(e){const{nextDeps:s,nextVersions:n,state:i,prevDeps:r}=e;s.length=i.depCount,n.length=i.depCount,this._unsubscribes=ot(s,r,this._unsubscribes,this),this._dependencies=s,this._dependencyVersions=n}_cleanupContext(e,s){this._trackable.addDependency=e.originalAdd,s?(e.prevDeps!==S&&j.release(e.prevDeps),e.prevVersions!==D&&O.release(e.prevVersions)):(j.release(e.nextDeps),O.release(e.nextVersions))}_handleSyncResult(e){const s=!this._isResolved()||!this._equal(this._value,e);this.version=this.version+Number(s)&L,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)&L,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=Z(e,H,g.COMPUTED_ASYNC_COMPUTATION_FAILED),n=!this._isRejected();if(this.version=this.version+Number(n)&L,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=Z(e,H,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 H(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(){xe(this,V.getCurrent(),this._functionSubscribersStore,this._objectSubscribersStore)}}Object.freeze(Fe.prototype);function je(t,e={}){return new Fe(t,e)}class ut extends Ce{constructor(e,s={}){super(),this.run=()=>{if(this.isDisposed)throw new P(g.EFFECT_MUST_BE_FUNCTION);this._dependencyVersions!==D&&(O.release(this._dependencyVersions),this._dependencyVersions=D),this.execute()},this.dispose=()=>{if(!this.isDisposed){if(this._setDisposed(),this._safeCleanup(),this._unsubscribes!==A){for(let i=0;i<this._unsubscribes.length;i++){const r=this._unsubscribes[i];r&&r()}B.release(this._unsubscribes),this._unsubscribes=A}this._dependencies!==S&&(j.release(this._dependencies),this._dependencies=S),this._dependencyVersions!==D&&(O.release(this._dependencyVersions),this._dependencyVersions=D)}},this.addDependency=i=>{if(this.isExecuting&&this._nextDeps&&this._nextUnsubs&&this._nextVersions){const r=this._currentEpoch;if(i._lastSeenEpoch===r)return;i._lastSeenEpoch=r,this._nextDeps.push(i),this._nextVersions.push(i.version),i._tempUnsub?(this._nextUnsubs.push(i._tempUnsub),i._tempUnsub=void 0):this._subscribeTo(i)}},this.execute=()=>{if(this.isDisposed||this.isExecuting||!this._shouldExecute())return;this._checkInfiniteLoop(),this._setExecuting(!0),this._safeCleanup();const i=this._prepareEffectContext();let r=!1;try{const o=V.run(this,this._fn);this._commitEffect(i),r=!0,this._checkLoopWarnings(),Ue(o)?o.then(c=>{!this.isDisposed&&typeof c=="function"&&(this._cleanup=c)}).catch(c=>{this._handleExecutionError(c)}):this._cleanup=typeof o=="function"?o:null}catch(o){r=!0,this._handleExecutionError(o),this._cleanup=null}finally{this._cleanupEffect(i,r),this._setExecuting(!1)}},this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._fn=e,this._sync=s.sync??!1,this._maxExecutions=s.maxExecutionsPerSecond??M.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=s.maxExecutionsPerFlush??M.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=s.trackModifications??!1,this._cleanup=null,this._dependencies=S,this._dependencyVersions=D,this._unsubscribes=A,this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,this._onError=s.onError??null,this._historyPtr=0;const n=Number.isFinite(this._maxExecutions);this._historyCapacity=n?Math.min(this._maxExecutions+1,M.MAX_EXECUTIONS_PER_SECOND+1):0,this._history=T&&n&&this._historyCapacity>0?new Array(this._historyCapacity).fill(0):null,this._executionCount=0,N.attachDebugInfo(this,"effect",this.id)}_prepareEffectContext(){const e=this._dependencies,s=this._dependencyVersions,n=this._unsubscribes,i=j.acquire(),r=O.acquire(),o=B.acquire(),c=Te();if(e!==S&&n!==A)for(let h=0;h<e.length;h++){const _=e[h];_&&(_._tempUnsub=n[h])}return this._nextDeps=i,this._nextVersions=r,this._nextUnsubs=o,this._currentEpoch=c,{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!==S){for(let n=0;n<e.prevDeps.length;n++){const i=e.prevDeps[n];i?._tempUnsub&&(i._tempUnsub(),i._tempUnsub=void 0)}j.release(e.prevDeps)}e.prevUnsubs!==A&&B.release(e.prevUnsubs),e.prevVersions!==D&&O.release(e.prevVersions)}else{j.release(e.nextDeps),O.release(e.nextVersions);for(let n=0;n<e.nextUnsubs.length;n++)e.nextUnsubs[n]?.();if(B.release(e.nextUnsubs),e.prevDeps!==S)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():W.schedule(this.execute)});this._nextUnsubs&&this._nextUnsubs.push(s)}catch(s){console.error(Z(s,P,g.EFFECT_EXECUTION_FAILED)),this._nextUnsubs&&this._nextUnsubs.push(()=>{})}}get isDisposed(){return(this.flags&se.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&se.EXECUTING)!==0}_setDisposed(){this.flags|=se.DISPOSED}_setExecuting(e){const s=se.EXECUTING;this.flags=this.flags&~s|-Number(e)&s}_safeCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){console.error(Z(e,P,g.EFFECT_CLEANUP_FAILED))}this._cleanup=null}}_checkInfiniteLoop(){if(this._lastFlushEpoch!==re&&(this._lastFlushEpoch=re,this._executionsInEpoch=0),this._executionsInEpoch++,this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),$e()>M.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history&&this._maxExecutions>0){const e=Date.now(),s=this._historyPtr,n=this._historyCapacity;this._history[s]=e;const i=(s+1)%n,r=this._history[i]??0;if(this._historyPtr=i,r>0&&e-r<Ge.ONE_SECOND_MS){const o=new P(`Effect executed ${n} times within 1 second. Infinite loop suspected`);if(this.dispose(),console.error(o),this._onError&&this._onError(o),T)throw o}}}_throwInfiniteLoopError(e){const s=new P(`Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${_e}`);throw this.dispose(),console.error(s),s}_shouldExecute(){if(this._dependencies===S||this._dependencyVersions===D)return!0;for(let e=0;e<this._dependencies.length;e++){const s=this._dependencies[e];if(s){if("value"in s)try{pe(()=>s.value)}catch{return!0}if(s.version!==this._dependencyVersions[e])return!0}}return!1}_handleExecutionError(e){const s=Z(e,P,g.EFFECT_EXECUTION_FAILED);console.error(s),this._onError&&this._onError(s)}_checkLoopWarnings(){if(this._trackModifications&&N.enabled){const e=this._dependencies;for(let s=0;s<e.length;s++){const n=e[s];n&&n._modifiedAtEpoch===this._currentEpoch&&N.warn(!0,`Effect is reading a dependency (${N.getDebugName(n)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function m(t,e={}){if(typeof t!="function")throw new P(g.EFFECT_MUST_BE_FUNCTION);const s=new ut(t,e);return s.execute(),s}function p(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t}function x(t){return p(t)?t.value:t}function he(t){if(!t)return"unknown";const e="jquery"in t?t[0]:t;if(!e)return"unknown";if(e.id)return`#${e.id}`;if(e.className){const s=String(e.className).split(/\s+/).filter(Boolean).join(".");return s?`${e.tagName.toLowerCase()}.${s}`:e.tagName.toLowerCase()}return e.tagName.toLowerCase()}function ht(){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 q=ht();const a={get enabled(){return q},set enabled(t){q=t},log(t,...e){q&&console.log(`[atom-effect-jquery] ${t}:`,...e)},atomChanged(t,e,s){q&&console.log(`[atom-effect-jquery] Atom "${t||"anonymous"}" changed:`,e,"→",s)},domUpdated(t,e,s){if(!q)return;const n=he(t);console.log(`[atom-effect-jquery] DOM updated: ${n}.${e} =`,s),at(t)},cleanup(t){q&&console.log(`[atom-effect-jquery] Cleanup: ${t}`)},warn(...t){q&&console.warn("[atom-effect-jquery]",...t)}};function at(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 c=setTimeout(()=>{t.css("transition",o?.transition||""),t.removeData(s),t.removeData(n),t.removeData(i)},500);t.data(n,c)})},100);t.data(s,r)}const lt=new WeakMap;function Me(t,e={}){const s=we(t,e);return e.name&&lt.set(s,{name:e.name}),s}Object.defineProperty(Me,"debug",{get(){return a.enabled},set(t){a.enabled=t}});function ft(){return new Promise(t=>setTimeout(t,0))}u.extend({atom:Me,computed:je,effect:m,batch:Oe,untracked:pe,isAtom:Ee,isComputed:Re,isReactive:t=>Ee(t)||Re(t),nextTick:ft});function Le(){return{timeoutId:null,phase:"idle",hasFocus:!1}}function Pe(t,e,s={}){const{debounce:n,event:i="input",parse:r=C=>C,format:o=C=>String(C??"")}=s,c=Le(),h=()=>{c.phase="composing"},_=()=>{c.phase="idle",R()};t.on("compositionstart",h),t.on("compositionend",_);const I=()=>{c.hasFocus=!0},Y=()=>{c.hasFocus=!1;const C=o(e.value);t.val()!==C&&t.val(C)};t.on("focus",I),t.on("blur",Y);const R=()=>{c.phase==="idle"&&(c.phase="syncing-to-atom",e.value=r(t.val()),c.phase="idle")},w=()=>{c.phase==="idle"&&(n?(c.timeoutId&&clearTimeout(c.timeoutId),c.timeoutId=window.setTimeout(R,n)):R())};return t.on(i,w),t.on("change",w),{effect:()=>{const C=o(e.value),J=t.val();if(J!==C){if(c.hasFocus&&r(J)===e.value)return;c.phase="syncing-to-dom",t.val(C),a.domUpdated(t,"val",C),c.phase="idle"}},cleanup:()=>{t.off(i,w),t.off("change",w),t.off("compositionstart",h),t.off("compositionend",_),t.off("focus",I),t.off("blur",Y),c.timeoutId&&clearTimeout(c.timeoutId)}}}class dt{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){let n=this.effects.get(e);n||(n=[],this.effects.set(e,n),this.boundElements.add(e)),n.push(s)}trackCleanup(e,s){let n=this.cleanups.get(e);n||(n=[],this.cleanups.set(e,n),this.boundElements.add(e)),n.push(s)}hasBind(e){return this.boundElements.has(e)}cleanup(e){if(!this.boundElements.delete(e))return;a.cleanup(he(e));const s=this.effects.get(e);if(s){this.effects.delete(e);for(let i=0,r=s.length;i<r;i++){const o=s[i];if(o)try{o.dispose()}catch(c){a.warn("Effect dispose error:",c)}}}const n=this.cleanups.get(e);if(n){this.cleanups.delete(e);for(let i=0,r=n.length;i<r;i++){const o=n[i];if(o)try{o()}catch(c){a.warn("Cleanup error:",c)}}}}cleanupTree(e){const s=e.querySelectorAll("*");for(let n=0,i=s.length;n<i;n++){const r=s[n];r&&this.boundElements.has(r)&&this.cleanup(r)}this.cleanup(e)}}const f=new dt;let $=null;function Ve(t=document.body){$||($=new MutationObserver(e=>{for(let s=0,n=e.length;s<n;s++){const i=e[s];if(!i)continue;const r=i.removedNodes;for(let o=0,c=r.length;o<c;o++){const h=r[o];h&&(f.isKept(h)||h.isConnected||h.nodeType===1&&f.cleanupTree(h))}}}),$.observe(t,{childList:!0,subtree:!0}))}function _t(){$?.disconnect(),$=null}u.fn.atomText=function(t,e){if(p(t))return this.each(function(){const n=u(this),i=m(()=>{const r=t.value,o=e?e(r):String(r??"");n.text(o),a.domUpdated(n,"text",o)});f.trackEffect(this,i)});const s=e?e(t):String(t??"");return this.text(s)},u.fn.atomHtml=function(t){return p(t)?this.each(function(){const e=u(this),s=m(()=>{const n=String(t.value??"");e.html(n),a.domUpdated(e,"html",n)});f.trackEffect(this,s)}):this.html(String(t??""))},u.fn.atomClass=function(t,e){return p(e)?this.each(function(){const s=u(this),n=m(()=>{const i=!!e.value;s.toggleClass(t,i),a.domUpdated(s,`class.${t}`,i)});f.trackEffect(this,n)}):this.toggleClass(t,!!e)},u.fn.atomCss=function(t,e,s){if(p(e))return this.each(function(){const i=u(this),r=m(()=>{const o=e.value,c=s?`${o}${s}`:o;i.css(t,c),a.domUpdated(i,`css.${t}`,c)});f.trackEffect(this,r)});const n=s?`${e}${s}`:e;return this.css(t,n)},u.fn.atomAttr=function(t,e){return p(e)?this.each(function(){const s=u(this),n=m(()=>{const i=e.value;i==null||i===!1?s.removeAttr(t):i===!0?s.attr(t,t):s.attr(t,String(i)),a.domUpdated(s,`attr.${t}`,i)});f.trackEffect(this,n)}):e==null||e===!1?this.removeAttr(t):e===!0?this.attr(t,t):this.attr(t,String(e))},u.fn.atomProp=function(t,e){return p(e)?this.each(function(){const s=u(this),n=m(()=>{const i=e.value;s.prop(t,i),a.domUpdated(s,`prop.${t}`,i)});f.trackEffect(this,n)}):this.prop(t,e)},u.fn.atomShow=function(t){return p(t)?this.each(function(){const e=u(this),s=m(()=>{const n=!!t.value;e.toggle(n),a.domUpdated(e,"show",n)});f.trackEffect(this,s)}):this.toggle(!!t)},u.fn.atomHide=function(t){return p(t)?this.each(function(){const e=u(this),s=m(()=>{const n=!t.value;e.toggle(n),a.domUpdated(e,"hide",!n)});f.trackEffect(this,s)}):this.toggle(!t)},u.fn.atomVal=function(t,e={}){return this.each(function(){const s=u(this),{effect:n,cleanup:i}=Pe(s,t,e),r=m(n);f.trackEffect(this,r),f.trackCleanup(this,i)})},u.fn.atomChecked=function(t){return this.each(function(){const e=u(this);let s=!1;const n=()=>{s||(t.value=!!e.prop("checked"))};e.on("change",n),f.trackCleanup(this,()=>e.off("change",n));const i=m(()=>{s=!0;const r=!!t.value;e.prop("checked",r),a.domUpdated(e,"checked",r),s=!1});f.trackEffect(this,i)})},u.fn.atomOn=function(t,e){return this.each(function(){const s=u(this);s.on(t,e),f.trackCleanup(this,()=>s.off(t,e))})},u.fn.atomUnbind=function(){return this.each(function(){f.cleanupTree(this)})};function pt(t,e){p(e)?t.effects.push(()=>{const s=String(x(e)??"");t.$el.text(s),a.domUpdated(t.$el,"text",s)}):t.$el.text(String(e??""))}function bt(t,e){p(e)?t.effects.push(()=>{const s=String(x(e)??"");t.$el.html(s),a.domUpdated(t.$el,"html",s)}):t.$el.html(String(e??""))}function Et(t,e){for(const[s,n]of Object.entries(e))p(n)?t.effects.push(()=>{const i=!!x(n);t.$el.toggleClass(s,i),a.domUpdated(t.$el,`class.${s}`,i)}):t.$el.toggleClass(s,!!n)}function gt(t,e){for(const[s,n]of Object.entries(e))if(Array.isArray(n)){const[i,r]=n;p(i)?t.effects.push(()=>{const o=`${x(i)}${r}`;t.$el.css(s,o),a.domUpdated(t.$el,`css.${s}`,o)}):t.$el.css(s,`${i}${r}`)}else p(n)?t.effects.push(()=>{const i=x(n);t.$el.css(s,i),a.domUpdated(t.$el,`css.${s}`,i)}):t.$el.css(s,n)}function mt(t,e){for(const[s,n]of Object.entries(e)){const i=r=>{r==null||r===!1?t.$el.removeAttr(s):r===!0?t.$el.attr(s,s):t.$el.attr(s,String(r)),a.domUpdated(t.$el,`attr.${s}`,r)};p(n)?t.effects.push(()=>i(x(n))):i(n)}}function yt(t,e){for(const[s,n]of Object.entries(e))p(n)?t.effects.push(()=>{const i=x(n);t.$el.prop(s,i),a.domUpdated(t.$el,`prop.${s}`,i)}):t.$el.prop(s,n)}function St(t,e){p(e)?t.effects.push(()=>{const s=!!x(e);t.$el.toggle(s),a.domUpdated(t.$el,"show",s)}):t.$el.toggle(!!e)}function Dt(t,e){p(e)?t.effects.push(()=>{const s=!x(e);t.$el.toggle(s),a.domUpdated(t.$el,"hide",!s)}):t.$el.toggle(!e)}function It(t,e){const s=Array.isArray(e)?e[0]:e,n=Array.isArray(e)?e[1]:{},{effect:i,cleanup:r}=Pe(t.$el,s,n);t.effects.push(i),t.trackCleanup(r)}function Ct(t,e){const s=Le(),n=()=>{s.phase==="idle"&&(e.value=t.$el.prop("checked"))};t.$el.on("change",n),t.trackCleanup(()=>t.$el.off("change",n)),t.effects.push(()=>{s.phase="syncing-to-dom",t.$el.prop("checked",e.value),a.domUpdated(t.$el,"checked",e.value),s.phase="idle"})}function vt(t,e){for(const[s,n]of Object.entries(e)){const i=function(r){n.call(this,r)};t.$el.on(s,i),t.trackCleanup(()=>t.$el.off(s,i))}}u.fn.atomBind=function(t){return this.each(function(){const e=u(this),s=[],n={$el:e,el:this,effects:s,trackCleanup:i=>f.trackCleanup(this,i)};t.text!==void 0&&pt(n,t.text),t.html!==void 0&&bt(n,t.html),t.class&&Et(n,t.class),t.css&&gt(n,t.css),t.attr&&mt(n,t.attr),t.prop&&yt(n,t.prop),t.show!==void 0&&St(n,t.show),t.hide!==void 0&&Dt(n,t.hide),t.val!==void 0&&It(n,t.val),t.checked!==void 0&&Ct(n,t.checked),t.on&&vt(n,t.on),s.forEach(i=>{const r=m(i);f.trackEffect(this,r)})})};function Tt(t){const e=t.length;if(e===0)return new Int32Array(0);const s=new Int32Array(e),n=new Int32Array(e);let i=0;for(let o=0;o<e;o++){const c=t[o];if(c===-1)continue;if(i===0||t[n[i-1]]<c){s[o]=i>0?n[i-1]:-1,n[i++]=o;continue}let h=0,_=i-1;for(;h<_;){const I=h+_>>>1;t[n[I]]<c?h=I+1:_=I}c<t[n[h]]&&(h>0&&(s[o]=n[h-1]),n[h]=o)}const r=new Int32Array(i);for(let o=i-1,c=n[i-1];o>=0;o--)r[o]=c,c=s[c];return r}u.fn.atomList=function(t,e){const{key:s,render:n,bind:i,update:r,onAdd:o,onRemove:c,empty:h}=e,_=typeof s=="function"?s:I=>I[s];return this.each(function(){const I=u(this),Y=he(this),R=new Map,w=new Set;let z=[],X=null;const C=m(()=>{const J=t.value,k=J.length;if(k===0?h&&!X&&(X=u(h).appendTo(I)):X&&(X.remove(),X=null),k===0&&R.size===0){z=[];return}a.log("list",`${Y} updating with ${k} items`);const le=new Array(k),qe=new Set;for(let l=0;l<k;l++){const E=J[l],v=_(E,l);le[l]=v,qe.add(v)}for(const[l,E]of R){if(qe.has(l)||w.has(l))continue;const v=()=>{E.$el.remove();const y=E.$el[0];y&&f.cleanup(y),w.delete(l),a.log("list",`${Y} removed item:`,l)};if(R.delete(l),w.add(l),c){const y=c(E.$el);y instanceof Promise?y.then(v):v()}else v()}if(k===0){z=[];return}const ze=new Map;for(let l=0;l<z.length;l++){const E=z[l];E!==void 0&&ze.set(E,l)}const Xe=new Int32Array(k);for(let l=0;l<k;l++){const E=le[l];Xe[l]=E!==void 0?ze.get(E)??-1:-1}const Qe=Tt(Xe);let me=Qe.length-1,F=null;for(let l=k-1;l>=0;l--){const E=le[l],v=J[l],y=R.get(E);if(y){y.item=v;const Q=y.$el[0];if(!Q)continue;r&&r(y.$el,v,l),me>=0&&Qe[me]===l?(me--,Q.nextSibling!==F&&(F?y.$el.insertBefore(F):y.$el.appendTo(I))):F?y.$el.insertBefore(F):y.$el.appendTo(I),F=Q}else{const Q=n(v,l),G=(Q instanceof Element,u(Q));R.set(E,{$el:G,item:v}),F?G.insertBefore(F):G.appendTo(I),i&&i(G,v,l),o&&o(G),a.log("list",`${Y} added item:`,E),F=G[0]||null}}z=le});f.trackEffect(this,C),f.trackCleanup(this,()=>{R.clear(),w.clear(),z=[],X?.remove()})})};const ae=new WeakMap;u.fn.atomMount=function(t,e={}){return this.each(function(){const s=u(this),n=he(this),i=ae.get(this);i&&(a.log("mount",`${n} unmounting existing component`),i()),a.log("mount",`${n} mounting component`);let r;try{r=t(s,e)}catch(h){console.error("[atom-effect-jquery] Mount error:",h);return}let o=!1;const c=()=>{if(!o){if(o=!0,a.log("mount",`${n} full cleanup`),typeof r=="function")try{r()}catch{}f.cleanupTree(this),ae.delete(this)}};ae.set(this,c),f.trackCleanup(this,c)})},u.fn.atomUnmount=function(){return this.each(function(){ae.get(this)?.()})};const ee=new WeakMap;let Be=!1;function ge(){if(Be)return;Be=!0;const t=u.fn.on,e=u.fn.off,s=u.fn.remove,n=u.fn.empty,i=u.fn.detach;u.fn.remove=function(r){return(r?this.filter(r):this).each(function(){f.cleanupTree(this)}),s.call(this,r)},u.fn.empty=function(){return this.each(function(){this.querySelectorAll("*").forEach(o=>f.cleanup(o))}),n.call(this)},u.fn.detach=function(r){return(r?this.filter(r):this).each(function(){f.keep(this)}),i.call(this,r)},u.fn.on=function(...r){let o=-1;for(let c=r.length-1;c>=0;c--)if(typeof r[c]=="function"){o=c;break}if(o!==-1){const c=r[o];let h;ee.has(c)?h=ee.get(c):(h=function(..._){return c.apply(this,_)},ee.set(c,h)),r[o]=h}return t.apply(this,r)},u.fn.off=function(...r){let o=-1;for(let c=r.length-1;c>=0;c--)if(typeof r[c]=="function"){o=c;break}if(o!==-1){const c=r[o];ee.has(c)&&(r[o]=ee.get(c))}return e.apply(this,r)}}const Nt=ge;ge(),u(()=>{Ve(document.body)}),b.default=u,b.atom=we,b.batch=Oe,b.computed=je,b.disableAutoCleanup=_t,b.effect=m,b.enableAutoCleanup=Ve,b.enablejQueryBatching=Nt,b.enablejQueryOverrides=ge,b.registry=f,b.untracked=pe,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(_,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],u):(_=typeof globalThis<"u"?globalThis:_||self,u(_.AtomEffectJQuery={},_.jQuery))})(this,(function(_,u){"use strict";const Xe={ONE_SECOND_MS:1e3},ee={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},te={DISPOSED:1,EXECUTING:2},l={DIRTY:1,IDLE:2,PENDING:4,RESOLVED:8,REJECTED:16,RECOMPUTING:32,HAS_ERROR:64},J={SYNC:1,NOTIFICATION_SCHEDULED:2},P={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10},me={MAX_DEPENDENCIES:1e3,WARN_INFINITE_LOOP:!0},F=1073741823,ae=1<<19,T=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production",He=Object.freeze([]);class x extends Error{constructor(e,s=null,n=!0){super(e),this.name="AtomError",this.cause=s,this.recoverable=n,this.timestamp=new Date}}class M extends x{constructor(e,s=null){super(e,s,!0),this.name="ComputedError"}}class V extends x{constructor(e,s=null){super(e,s,!1),this.name="EffectError"}}class se extends x{constructor(e,s=null){super(e,s,!1),this.name="SchedulerError"}}const b={COMPUTED_MUST_BE_FUNCTION:"Computed function must be a function",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",ATOM_SUBSCRIBER_MUST_BE_FUNCTION:"Subscription listener must be a function or Subscriber object",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",CALLBACK_ERROR_IN_ERROR_HANDLER:"Error occurred during onError callback execution"},le=Symbol("debugName"),Ge=Symbol("id"),fe=Symbol("type"),ye=Symbol("noDefaultValue");function Ye(t){return"dependencies"in t&&Array.isArray(t.dependencies)}let Se=0;function De(t,e,s){if(t._visitedEpoch!==s){if(t._visitedEpoch=s,t===e)throw new M("Indirect circular dependency detected");if(Ye(t)){const n=t.dependencies;for(let i=0;i<n.length;i++){const r=n[i];r&&De(r,e,s)}}}}const v={enabled:typeof process<"u"&&process.env?.NODE_ENV==="development",maxDependencies:me.MAX_DEPENDENCIES,warnInfiniteLoop:me.WARN_INFINITE_LOOP,warn(t,e){this.enabled&&t&&console.warn(`[Atom Effect] ${e}`)},checkCircular(t,e){if(t===e)throw new M("Direct circular dependency detected");this.enabled&&(Se++,De(t,e,Se))},attachDebugInfo(t,e,s){if(!this.enabled)return;const n=t;n[le]=`${e}_${s}`,n[Ge]=s,n[fe]=e},getDebugName(t){if(t!=null&&le in t)return t[le]},getDebugType(t){if(t!=null&&fe in t)return t[fe]}};let Je=1;const Ke=()=>Je++;class Ie{constructor(){this.flags=0,this.version=0,this._lastSeenEpoch=-1,this.id=Ke()&F}rotatePhase(){return this.version=this.version+1&F,this.version}getShift(e){return this.version-e&F}}class Ce extends Ie{subscribe(e){if(typeof e=="object"&&e!==null&&"execute"in e)return this._addSubscriber(this._getObjSubs(),e);if(typeof e!="function")throw new x(b.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);return this._addSubscriber(this._getFnSubs(),e)}subscriberCount(){return(this._fnSubs?.length??0)+(this._objSubs?.length??0)}_addSubscriber(e,s){if(e.indexOf(s)!==-1)return()=>{};e.push(s);let n=!1;return()=>{if(n)return;n=!0;const i=e.indexOf(s);if(i!==-1){const r=e.length-1;i!==r&&(e[i]=e[r]),e.pop()}}}_notifySubscribers(e,s){const n=this._fnSubs;if(n)for(let r=n.length-1;r>=0;r--)try{const o=n[r];o&&o(e,s)}catch(o){console.error(new x(b.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,o))}const i=this._objSubs;if(i)for(let r=i.length-1;r>=0;r--)try{const o=i[r];o&&o.execute()}catch(o){console.error(new x(b.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED,o))}}}let ne=0;function Te(){return ne=ne+1&F||1,ne}function We(){return ne}let ie=0,de=0,re=!1;function ve(){return re?(T&&console.warn("Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass"),!1):(re=!0,ie=ie+1&F,de=0,!0)}function Ae(){re=!1}function Ze(){return re?++de:0}class $e{constructor(){this.queueA=[],this.queueB=[],this.queue=this.queueA,this.queueSize=0,this.urgentQueueA=[],this.urgentQueueB=[],this.urgentQueue=this.urgentQueueA,this.urgentQueueSize=0,this._epoch=0,this.isProcessing=!1,this.isBatching=!1,this.batchDepth=0,this.batchQueue=[],this.batchQueueSize=0,this.isFlushingSync=!1,this.maxFlushIterations=P.MAX_FLUSH_ITERATIONS}get phase(){return this.isProcessing||this.isFlushingSync?2:this.isBatching?1:0}schedule(e,s){if(typeof e!="function")throw new se("Scheduler callback must be a function");if(e._nextEpoch!==this._epoch)if(e._nextEpoch=this._epoch,this.isBatching||this.isFlushingSync)this.batchQueue[this.batchQueueSize++]=e;else{const n=this._calculateUrgency(e,s);this.urgentQueue[this.urgentQueueSize]=e,this.queue[this.queueSize]=e,this.urgentQueueSize+=n,this.queueSize+=n^1,this.isProcessing||this.flush()}}_calculateUrgency(e,s){if(!s||e._cachedVersion===void 0)return 0;const n=s.getShift(e._cachedVersion);return ae-1-n>>>31&1}flush(){this.isProcessing||this.queueSize===0&&this.urgentQueueSize===0||(this.isProcessing=!0,queueMicrotask(()=>{try{if(this.queueSize===0&&this.urgentQueueSize===0)return;const e=ve();this._drainQueue(),e&&Ae()}finally{this.isProcessing=!1,(this.queueSize>0||this.urgentQueueSize>0)&&!this.isBatching&&this.flush()}}))}flushSync(){this.isFlushingSync=!0;const e=ve();try{this._mergeBatchQueue(),this._drainQueue()}finally{this.isFlushingSync=!1,e&&Ae()}}_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.urgentQueueSize>0||this.queueSize>0;){if(++e>this.maxFlushIterations){this._handleFlushOverflow();return}this.urgentQueueSize>0&&this._processUrgentQueue(),this.queueSize>0&&this._processCurrentQueue(),this._mergeBatchQueue()}}_processUrgentQueue(){const e=this.urgentQueue,s=this.urgentQueueSize;this.urgentQueue=this.urgentQueue===this.urgentQueueA?this.urgentQueueB:this.urgentQueueA,this.urgentQueueSize=0,this._epoch++,this._processJobs(e,s)}_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 se(`Maximum flush iterations (${this.maxFlushIterations}) exceeded. Possible infinite loop.`)),this.queueSize=0,this.queue.length=0,this.urgentQueueSize=0,this.urgentQueue.length=0,this.batchQueueSize=0}_processJobs(e,s){for(let n=0;n<s;n++){const i=e[n];if(i)try{i()}catch(r){console.error(new se("Error occurred during scheduler execution",r))}}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<P.MIN_FLUSH_ITERATIONS)throw new se(`Max flush iterations must be at least ${P.MIN_FLUSH_ITERATIONS}`);this.maxFlushIterations=e}}const K=new $e;function Ne(t){if(typeof t!="function")throw new x("Batch callback must be a function");K.startBatch();try{return t()}finally{K.endBatch()}}class et{constructor(){this.current=null}run(e,s){const n=this.current;this.current=e;try{return s()}finally{this.current=n}}getCurrent(){return this.current}}const j=new et;function _e(t){if(typeof t!="function")throw new x("Untracked callback must be a function");const e=j.current;j.current=null;try{return t()}finally{j.current=e}}class pe{constructor(){this.pool=[],this.maxPoolSize=50,this.maxReusableCapacity=256,this.stats=T?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return T&&this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,s){if(!(s&&e===s)){if(Object.isFrozen(e)){T&&this.stats&&this.stats.rejected.frozen++;return}if(e.length>this.maxReusableCapacity){T&&this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.maxPoolSize){T&&this.stats&&this.stats.rejected.poolFull++;return}e.length=0,this.pool.push(e),T&&this.stats&&this.stats.released++}}getStats(){if(!T||!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,T&&this.stats&&(this.stats.acquired=0,this.stats.released=0,this.stats.rejected={frozen:0,tooLarge:0,poolFull:0})}}const y=Object.freeze([]),A=Object.freeze([]),S=Object.freeze([]),k=new pe,q=new pe,N=new pe;function ge(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t&&typeof t.subscribe=="function"}function Re(t){if(v.enabled&&(t==null||typeof t=="object")){const e=v.getDebugType(t);if(e)return e==="computed"}return ge(t)&&"invalidate"in t&&typeof t.invalidate=="function"}function xe(t){return t!=null&&typeof t.then=="function"}function tt(t){return typeof t=="object"&&t!==null}function st(t){return(typeof t=="object"||typeof t=="function")&&t!==null&&typeof t.addDependency=="function"}function nt(t){return typeof t=="function"&&typeof t.addDependency!="function"}function it(t){return tt(t)&&typeof t.execute=="function"}function Oe(t,e,s,n){if(e){if(st(e)){e.addDependency(t);return}if(nt(e)){const i=e;s.indexOf(i)===-1&&s.push(i);return}it(e)&&n.indexOf(e)===-1&&n.push(e)}}function rt(t,e,s,n){if(e!==y&&s!==A)for(let r=0;r<e.length;r++){const o=e[r];o&&(o._tempUnsub=s[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):(v.checkCircular(o,n),i[r]=o.subscribe(n)))}if(e!==y)for(let r=0;r<e.length;r++){const o=e[r];o?._tempUnsub&&(o._tempUnsub(),o._tempUnsub=void 0)}return s!==A&&q.release(s),i}class ot extends Ce{constructor(e,s){super(),this._fnSubs=null,this._objSubs=null,this._value=e,s&&(this.flags|=J.SYNC),v.attachDebugInfo(this,"atom",this.id)}_getFnSubs(){return this._fnSubs??=[],this._fnSubs}_getObjSubs(){return this._objSubs??=[],this._objSubs}get value(){const e=j.current;return e&&Oe(this,e,this._getFnSubs(),this._getObjSubs()),this._value}set value(e){if(Object.is(this._value,e))return;const s=this._value;this._value=e,this.rotatePhase(),((this._fnSubs?.length??0)>0||(this._objSubs?.length??0)>0)&&this._scheduleNotification(s)}_scheduleNotification(e){if(this.flags&J.NOTIFICATION_SCHEDULED||(this._pendingOldValue=e,this.flags|=J.NOTIFICATION_SCHEDULED),this.flags&J.SYNC&&!K.isBatching){this._flushNotifications();return}this._notifyTask||(this._notifyTask=()=>this._flushNotifications()),K.schedule(this._notifyTask)}_flushNotifications(){if(!(this.flags&J.NOTIFICATION_SCHEDULED))return;const e=this._pendingOldValue,s=this._value;this._pendingOldValue=void 0,this.flags&=-3,this._notifySubscribers(s,e)}peek(){return this._value}dispose(){this._fnSubs=null,this._objSubs=null,this._value=void 0,this._notifyTask=void 0}}function Ue(t,e={}){return new ot(t,e.sync??!1)}function W(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 x)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 we=l.RESOLVED|l.PENDING|l.REJECTED,oe=Array(we+1).fill(ee.IDLE);oe[l.RESOLVED]=ee.RESOLVED,oe[l.PENDING]=ee.PENDING,oe[l.REJECTED]=ee.REJECTED;class Fe extends Ce{constructor(e,s={}){if(typeof e!="function")throw new M(b.COMPUTED_MUST_BE_FUNCTION);if(super(),this._fnSubs=null,this._objSubs=null,this._cachedErrors=null,this._errorCacheEpoch=-1,this._asyncStartAggregateVersion=0,this._asyncRetryCount=0,this.MAX_ASYNC_RETRIES=3,this._value=void 0,this.flags=l.DIRTY|l.IDLE,this._error=null,this._promiseId=0,this._equal=s.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in s?s.defaultValue:ye,this._hasDefaultValue=this._defaultValue!==ye,this._onError=s.onError??null,this.MAX_PROMISE_ID=Number.MAX_SAFE_INTEGER-1,this._dependencies=y,this._dependencyVersions=S,this._unsubscribes=A,this._notifyJob=()=>{const n=this._fnSubs;if(n)for(let r=n.length-1;r>=0;r--)try{const o=n[r];o&&o(void 0,void 0)}catch(o){console.error(o)}const i=this._objSubs;if(i)for(let r=i.length-1;r>=0;r--)try{const o=i[r];o&&o.execute()}catch(o){console.error(o)}},this._trackable=Object.assign(()=>this._markDirty(),{addDependency:n=>{}}),v.attachDebugInfo(this,"computed",this.id),v.enabled){const n=this;n.subscriberCount=this.subscriberCount.bind(this),n.isDirty=()=>this._isDirty(),n.dependencies=this._dependencies,n.stateFlags=this._getFlagsAsString()}if(s.lazy===!1)try{this._recompute()}catch{}}_getFnSubs(){return this._fnSubs??=[],this._fnSubs}_getObjSubs(){return this._objSubs??=[],this._objSubs}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 He;const e=We();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 c=r[o];c&&s.add(c)}}}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!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S),this._errorCacheEpoch=-1,this._cachedErrors=null}dispose(){if(this._unsubscribes!==A){for(let e=0;e<this._unsubscribes.length;e++){const s=this._unsubscribes[e];s&&s()}q.release(this._unsubscribes),this._unsubscribes=A}this._dependencies!==y&&(k.release(this._dependencies),this._dependencies=y),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S),this._fnSubs=null,this._objSubs=null,this.flags=l.DIRTY|l.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&l.DIRTY)!==0}_setDirty(){this.flags|=l.DIRTY}_clearDirty(){this.flags&=-2}_isIdle(){return(this.flags&l.IDLE)!==0}_setIdle(){this.flags|=l.IDLE,this.flags&=-29}_isPending(){return(this.flags&l.PENDING)!==0}_setPending(){this.flags|=l.PENDING,this.flags&=-27}_isResolved(){return(this.flags&l.RESOLVED)!==0}_setResolved(){this.flags|=l.RESOLVED,this.flags&=-87}_isRejected(){return(this.flags&l.REJECTED)!==0}_setRejected(){this.flags|=l.REJECTED|l.HAS_ERROR,this.flags&=-15}_isRecomputing(){return(this.flags&l.RECOMPUTING)!==0}_setRecomputing(e){const s=l.RECOMPUTING;this.flags=this.flags&~s|-Number(e)&s}_getAsyncState(){return oe[this.flags&we]}_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=j.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=k.acquire(),i=N.acquire(),r=Te(),o={depCount:0},c=d=>{d._lastSeenEpoch!==r&&(d._lastSeenEpoch=r,o.depCount<n.length?(n[o.depCount]=d,i[o.depCount]=d.version):(n.push(d),i.push(d.version)),o.depCount++)},h=this._trackable.addDependency;return this._trackable.addDependency=c,{prevDeps:e,prevVersions:s,nextDeps:n,nextVersions:i,originalAdd:h,state:o}}_commitDependencies(e){const{nextDeps:s,nextVersions:n,state:i,prevDeps:r}=e;s.length=i.depCount,n.length=i.depCount,this._unsubscribes=rt(s,r,this._unsubscribes,this),this._dependencies=s,this._dependencyVersions=n}_cleanupContext(e,s){this._trackable.addDependency=e.originalAdd,s?(e.prevDeps!==y&&k.release(e.prevDeps),e.prevVersions!==S&&N.release(e.prevVersions)):(k.release(e.nextDeps),N.release(e.nextVersions))}_getAggregateShift(){let e=0;const s=this._dependencies,n=this._dependencyVersions;for(let i=0;i<s.length;i++){const r=s[i],o=n[i];r&&o!==void 0&&(e=e+r.getShift(o)&F)}return e}isUrgent(){return this._getAggregateShift()>=ae}_handleSyncResult(e){this._finalizeResolution(e)}_handleAsyncComputation(e){this._setPending(),this._clearDirty(),this._notifyJob(),this._asyncStartAggregateVersion=this._captureVersionSnapshot(),this._asyncRetryCount=0,this._promiseId=this._promiseId>=this.MAX_PROMISE_ID?1:this._promiseId+1;const s=this._promiseId;e.then(n=>{if(s!==this._promiseId)return;const i=this._captureVersionSnapshot()-this._asyncStartAggregateVersion&F;if(ae-1-i>>>31&1){if(this._asyncRetryCount<this.MAX_ASYNC_RETRIES){this._asyncRetryCount++,this._markDirty();return}const r=new M(`Async drift exceeded threshold after ${this.MAX_ASYNC_RETRIES} retries. Dependencies changed too rapidly for stable computation.`);this._handleAsyncRejection(r);return}this._handleAsyncResolution(n)}).catch(n=>{s===this._promiseId&&this._handleAsyncRejection(n)})}_captureVersionSnapshot(){let e=0;const s=this._dependencies;for(let n=0;n<s.length;n++){const i=s[n];i&&(e=e+i.version&F)}return e}_handleAsyncResolution(e){this._finalizeResolution(e),this._notifyJob()}_finalizeResolution(e){(!this._isResolved()||!this._equal(this._value,e))&&this.rotatePhase(),this._value=e,this._clearDirty(),this._setResolved(),this._error=null,this._setRecomputing(!1),this._cachedErrors=null,this._errorCacheEpoch=-1}_handleAsyncRejection(e){const s=W(e,M,b.COMPUTED_ASYNC_COMPUTATION_FAILED);if(!this._isRejected()&&this.rotatePhase(),this._error=s,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(s)}catch(n){console.error(b.CALLBACK_ERROR_IN_ERROR_HANDLER,n)}this._notifyJob()}_handleComputationError(e){const s=W(e,M,b.COMPUTED_COMPUTATION_FAILED);if(this._error=s,this._setRejected(),this._clearDirty(),this._setRecomputing(!1),this._onError)try{this._onError(s)}catch(n){console.error(b.CALLBACK_ERROR_IN_ERROR_HANDLER,n)}throw s}_handlePending(){if(this._hasDefaultValue)return this._defaultValue;throw new M(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(){Oe(this,j.getCurrent(),this._getFnSubs(),this._getObjSubs())}}Object.freeze(Fe.prototype);function ke(t,e={}){return new Fe(t,e)}class ct extends Ie{constructor(e,s={}){super(),this.run=()=>{if(this.isDisposed)throw new V(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!==A){for(let i=0;i<this._unsubscribes.length;i++){const r=this._unsubscribes[i];r&&r()}q.release(this._unsubscribes),this._unsubscribes=A}this._dependencies!==y&&(k.release(this._dependencies),this._dependencies=y),this._dependencyVersions!==S&&(N.release(this._dependencyVersions),this._dependencyVersions=S)}},this.addDependency=i=>{if(this.isExecuting&&this._nextDeps&&this._nextUnsubs&&this._nextVersions){const r=this._currentEpoch;if(i._lastSeenEpoch===r)return;i._lastSeenEpoch=r,this._nextDeps.push(i),this._nextVersions.push(i.version),i._tempUnsub?(this._nextUnsubs.push(i._tempUnsub),i._tempUnsub=void 0):this._subscribeTo(i)}},this.execute=()=>{if(this.isDisposed||this.isExecuting||!this._shouldExecute())return;this._checkInfiniteLoop(),this._setExecuting(!0),this._safeCleanup();const i=this._prepareEffectExecutionContext();let r=!1;try{const o=j.run(this,this._fn);this._commitEffect(i),r=!0,this._checkLoopWarnings(),xe(o)?o.then(c=>{!this.isDisposed&&typeof c=="function"&&(this._cleanup=c)}).catch(c=>{this._handleExecutionError(c)}):this._cleanup=typeof o=="function"?o:null}catch(o){r=!0,this._handleExecutionError(o),this._cleanup=null}finally{this._cleanupEffect(i,r),this._setExecuting(!1)}},this._cleanup=null,this._dependencies=y,this._dependencyVersions=S,this._unsubscribes=A,this._nextDeps=null,this._nextVersions=null,this._nextUnsubs=null,this._onError=s.onError??null,this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._fn=e,this._sync=s.sync??!1,this._maxExecutions=s.maxExecutionsPerSecond??P.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=s.maxExecutionsPerFlush??P.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=s.trackModifications??!1,this._historyPtr=0;const n=Number.isFinite(this._maxExecutions);this._historyCapacity=n?Math.min(this._maxExecutions+1,P.MAX_EXECUTIONS_PER_SECOND+1):0,this._history=T&&n&&this._historyCapacity>0?new Array(this._historyCapacity).fill(0):null,this._executionCount=0,v.attachDebugInfo(this,"effect",this.id)}_prepareEffectExecutionContext(){const e=this._dependencies,s=this._dependencyVersions,n=this._unsubscribes,i=k.acquire(),r=N.acquire(),o=q.acquire(),c=Te();if(e!==y&&n!==A)for(let h=0;h<e.length;h++){const d=e[h];d&&(d._tempUnsub=n[h])}return this._nextDeps=i,this._nextVersions=r,this._nextUnsubs=o,this._currentEpoch=c,{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!==y){for(let n=0;n<e.prevDeps.length;n++){const i=e.prevDeps[n];i?._tempUnsub&&(i._tempUnsub(),i._tempUnsub=void 0)}k.release(e.prevDeps)}e.prevUnsubs!==A&&q.release(e.prevUnsubs),e.prevVersions!==S&&N.release(e.prevVersions)}else{k.release(e.nextDeps),N.release(e.nextVersions);for(let n=0;n<e.nextUnsubs.length;n++)e.nextUnsubs[n]?.();if(q.release(e.nextUnsubs),e.prevDeps!==y)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():K.schedule(this.execute)});this._nextUnsubs&&this._nextUnsubs.push(s)}catch(s){console.error(W(s,V,b.EFFECT_EXECUTION_FAILED)),this._nextUnsubs&&this._nextUnsubs.push(()=>{})}}get isDisposed(){return(this.flags&te.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&te.EXECUTING)!==0}_setDisposed(){this.flags|=te.DISPOSED}_setExecuting(e){const s=te.EXECUTING;this.flags=this.flags&~s|-Number(e)&s}_safeCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){console.error(W(e,V,b.EFFECT_CLEANUP_FAILED))}this._cleanup=null}}_checkInfiniteLoop(){if(this._lastFlushEpoch!==ie&&(this._lastFlushEpoch=ie,this._executionsInEpoch=0),this._executionsInEpoch++,this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),Ze()>P.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history&&this._maxExecutions>0){const e=Date.now(),s=this._historyPtr,n=this._historyCapacity;this._history[s]=e;const i=(s+1)%n,r=this._history[i]??0;if(this._historyPtr=i,r>0&&e-r<Xe.ONE_SECOND_MS){const o=new V(`Effect executed ${n} times within 1 second. Infinite loop suspected`);if(this.dispose(),console.error(o),this._onError&&this._onError(o),T)throw o}}}_throwInfiniteLoopError(e){const s=new V(`Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${de}`);throw this.dispose(),console.error(s),s}_shouldExecute(){if(this._dependencies===y||this._dependencyVersions===S)return!0;for(let e=0;e<this._dependencies.length;e++){const s=this._dependencies[e];if(s){if("value"in s)try{_e(()=>s.value)}catch{return!0}if(s.version!==this._dependencyVersions[e])return!0}}return!1}_handleExecutionError(e){const s=W(e,V,b.EFFECT_EXECUTION_FAILED);console.error(s),this._onError&&this._onError(s)}_checkLoopWarnings(){if(this._trackModifications&&v.enabled){const e=this._dependencies;for(let s=0;s<e.length;s++){const n=e[s];n&&n._modifiedAtEpoch===this._currentEpoch&&v.warn(!0,`Effect is reading a dependency (${v.getDebugName(n)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function L(t,e={}){if(typeof t!="function")throw new V(b.EFFECT_MUST_BE_FUNCTION);const s=new ct(t,e);return s.execute(),s}function ut(t){return t!==null&&typeof t=="object"&&"value"in t&&"subscribe"in t}function ce(t){if(!t)return"unknown";const e="jquery"in t?t[0]:t;if(!e)return"unknown";if(e.id)return`#${e.id}`;if(e.className){const s=String(e.className).split(/\s+/).filter(Boolean).join(".");return s?`${e.tagName.toLowerCase()}.${s}`:e.tagName.toLowerCase()}return e.tagName.toLowerCase()}function ht(){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 B=ht();const g={get enabled(){return B},set enabled(t){B=t},log(t,...e){B&&console.log(`[atom-effect-jquery] ${t}:`,...e)},atomChanged(t,e,s){B&&console.log(`[atom-effect-jquery] Atom "${t||"anonymous"}" changed:`,e,"→",s)},domUpdated(t,e,s){if(!B)return;const n=ce(t);console.log(`[atom-effect-jquery] DOM updated: ${n}.${e} =`,s),at(t)},cleanup(t){B&&console.log(`[atom-effect-jquery] Cleanup: ${t}`)},warn(...t){B&&console.warn("[atom-effect-jquery]",...t)}};function at(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 c=setTimeout(()=>{t.css("transition",o?.transition||""),t.removeData(s),t.removeData(n),t.removeData(i)},500);t.data(n,c)})},100);t.data(s,r)}const lt=new WeakMap;function Le(t,e={}){const s=Ue(t,e);return e.name&&lt.set(s,{name:e.name}),s}Object.defineProperty(Le,"debug",{get(){return g.enabled},set(t){g.enabled=t}});function ft(){return new Promise(t=>setTimeout(t,0))}u.extend({atom:Le,computed:ke,effect:L,batch:Ne,untracked:_e,isAtom:ge,isComputed:Re,isReactive:t=>ge(t)||Re(t),nextTick:ft});class dt{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){let n=this.effects.get(e);n||(n=[],this.effects.set(e,n),this.boundElements.add(e)),n.push(s)}trackCleanup(e,s){let n=this.cleanups.get(e);n||(n=[],this.cleanups.set(e,n),this.boundElements.add(e)),n.push(s)}hasBind(e){return this.boundElements.has(e)}cleanup(e){if(!this.boundElements.delete(e))return;g.cleanup(ce(e));const s=this.effects.get(e);if(s){this.effects.delete(e);for(let i=0,r=s.length;i<r;i++){const o=s[i];if(o)try{o.dispose()}catch(c){g.warn("Effect dispose error:",c)}}}const n=this.cleanups.get(e);if(n){this.cleanups.delete(e);for(let i=0,r=n.length;i<r;i++){const o=n[i];if(o)try{o()}catch(c){g.warn("Cleanup error:",c)}}}}cleanupTree(e){const s=e.querySelectorAll("*");for(let n=0,i=s.length;n<i;n++){const r=s[n];r&&this.boundElements.has(r)&&this.cleanup(r)}this.cleanup(e)}}const f=new dt;let Z=null;function Pe(t=document.body){Z||(Z=new MutationObserver(e=>{for(let s=0,n=e.length;s<n;s++){const i=e[s];if(!i)continue;const r=i.removedNodes;for(let o=0,c=r.length;o<c;o++){const h=r[o];h&&(f.isKept(h)||h.isConnected||h.nodeType===1&&f.cleanupTree(h))}}}),Z.observe(t,{childList:!0,subtree:!0}))}function _t(){Z?.disconnect(),Z=null}function p(t,e,s,n){const i=u(t),r=t;if(ut(e)){const o=L(()=>{const c=e.value;s(c),g.domUpdated(i,n,c)});f.trackEffect(r,o)}else s(e)}function Me(){return{timeoutId:null,phase:"idle",hasFocus:!1}}function Ve(t,e,s={}){const{debounce:n,event:i="input",parse:r=I=>I,format:o=I=>String(I??"")}=s,c=Me(),h=()=>{c.phase="composing"},d=()=>{c.phase="idle",R()};t.on("compositionstart",h),t.on("compositionend",d);const D=()=>{c.hasFocus=!0},G=()=>{c.hasFocus=!1;const I=o(e.value);t.val()!==I&&t.val(I)};t.on("focus",D),t.on("blur",G);const R=()=>{c.phase==="idle"&&(c.phase="syncing-to-atom",e.value=r(t.val()),c.phase="idle")},O=()=>{c.phase==="idle"&&(n?(c.timeoutId&&clearTimeout(c.timeoutId),c.timeoutId=window.setTimeout(R,n)):R())};return t.on(i,O),t.on("change",O),{effect:()=>{const I=o(e.value),Y=t.val();if(Y!==I){if(c.hasFocus&&r(Y)===e.value)return;c.phase="syncing-to-dom",t.val(I),g.domUpdated(t,"val",I),c.phase="idle"}},cleanup:()=>{t.off(i,O),t.off("change",O),t.off("compositionstart",h),t.off("compositionend",d),t.off("focus",D),t.off("blur",G),c.timeoutId&&clearTimeout(c.timeoutId)}}}u.fn.atomText=function(t,e){return this.each(function(){p(this,t,s=>{const n=e?e(s):String(s??"");u(this).text(n)},"text")})},u.fn.atomHtml=function(t){return this.each(function(){p(this,t,e=>u(this).html(String(e??"")),"html")})},u.fn.atomClass=function(t,e){return this.each(function(){p(this,e,s=>u(this).toggleClass(t,!!s),`class.${t}`)})},u.fn.atomCss=function(t,e,s){return this.each(function(){p(this,e,n=>{const i=s?`${n}${s}`:n;u(this).css(t,i)},`css.${t}`)})},u.fn.atomAttr=function(t,e){return this.each(function(){p(this,e,s=>{const n=u(this);s==null||s===!1?n.removeAttr(t):s===!0?n.attr(t,t):n.attr(t,String(s))},`attr.${t}`)})},u.fn.atomProp=function(t,e){return this.each(function(){p(this,e,s=>u(this).prop(t,s),`prop.${t}`)})},u.fn.atomShow=function(t){return this.each(function(){p(this,t,e=>u(this).toggle(!!e),"show")})},u.fn.atomHide=function(t){return this.each(function(){p(this,t,e=>u(this).toggle(!e),"hide")})},u.fn.atomVal=function(t,e={}){return this.each(function(){const s=u(this),{effect:n,cleanup:i}=Ve(s,t,e),r=L(n);f.trackEffect(this,r),f.trackCleanup(this,i)})},u.fn.atomChecked=function(t){return this.each(function(){const e=u(this);let s=!1;const n=()=>{s||(t.value=!!e.prop("checked"))};e.on("change",n),f.trackCleanup(this,()=>e.off("change",n));const i=L(()=>{s=!0;const r=!!t.value;e.prop("checked",r),g.domUpdated(e,"checked",r),s=!1});f.trackEffect(this,i)})},u.fn.atomOn=function(t,e){return this.each(function(){const s=u(this);s.on(t,e),f.trackCleanup(this,()=>s.off(t,e))})},u.fn.atomUnbind=function(){return this.each(function(){f.cleanupTree(this)})};function pt(t,e){p(t.el,e,s=>{t.el.textContent=String(s??"")},"text")}function gt(t,e){p(t.el,e,s=>{t.el.innerHTML=String(s??"")},"html")}function Et(t,e){for(const s in e)p(t.el,e[s],n=>{t.el.classList.toggle(s,!!n)},`class.${s}`)}function bt(t,e){const s=t.el.style;for(const n in e){const i=e[n];if(i===void 0)continue;const r=n.includes("-")?n.replace(/-./g,o=>o.charAt(1).toUpperCase()):n;if(Array.isArray(i)){const[o,c]=i;p(t.el,o,h=>{s[r]=`${h}${c}`},`css.${n}`)}else p(t.el,i,o=>{s[r]=o},`css.${n}`)}}function mt(t,e){const s=t.el;for(const n in e){const i=e[n];p(s,i,r=>{if(r==null||r===!1){s.removeAttribute(n);return}s.setAttribute(n,r===!0?n:String(r))},`attr.${n}`)}}function yt(t,e){const s=t.el;for(const n in e)p(s,e[n],i=>{s[n]=i},`prop.${n}`)}function St(t,e){p(t.el,e,s=>{t.$el.toggle(!!s)},"show")}function Dt(t,e){p(t.el,e,s=>{t.$el.toggle(!s)},"hide")}function It(t,e){const s=Array.isArray(e)?e[0]:e,n=Array.isArray(e)?e[1]:{},{effect:i,cleanup:r}=Ve(t.$el,s,n),o=L(i);f.trackEffect(t.el,o),t.trackCleanup(r)}function Ct(t,e){const s=Me(),n=()=>{s.phase==="idle"&&(e.value=t.$el.prop("checked"))};t.$el.on("change",n),t.trackCleanup(()=>t.$el.off("change",n));const i=L(()=>{s.phase="syncing-to-dom";const r=!!e.value;t.$el.prop("checked",r),g.domUpdated(t.$el,"checked",r),s.phase="idle"});f.trackEffect(t.el,i)}function Tt(t,e){const s=t.el;for(const n in e){const i=e[n];if(typeof i!="function")continue;const r=o=>i.call(s,u.Event(o));s.addEventListener(n,r),t.trackCleanup(()=>s.removeEventListener(n,r))}}u.fn.atomBind=function(t){return this.each(function(){const s={$el:u(this),el:this,effects:[],trackCleanup:n=>f.trackCleanup(this,n)};t.text!==void 0&&pt(s,t.text),t.html!==void 0&&gt(s,t.html),t.class&&Et(s,t.class),t.css&&bt(s,t.css),t.attr&&mt(s,t.attr),t.prop&&yt(s,t.prop),t.show!==void 0&&St(s,t.show),t.hide!==void 0&&Dt(s,t.hide),t.val!==void 0&&It(s,t.val),t.checked!==void 0&&Ct(s,t.checked),t.on&&Tt(s,t.on)})};function vt(t){const e=t.length;if(e===0)return new Int32Array(0);const s=new Int32Array(e),n=new Int32Array(e);let i=0;for(let o=0;o<e;o++){const c=t[o];if(c===-1)continue;if(i===0||t[n[i-1]]<c){s[o]=i>0?n[i-1]:-1,n[i++]=o;continue}let h=0,d=i-1;for(;h<d;){const D=h+d>>>1;t[n[D]]<c?h=D+1:d=D}c<t[n[h]]&&(h>0&&(s[o]=n[h-1]),n[h]=o)}const r=new Int32Array(i);for(let o=i-1,c=n[i-1];o>=0;o--)r[o]=c,c=s[c];return r}u.fn.atomList=function(t,e){const{key:s,render:n,bind:i,update:r,onAdd:o,onRemove:c,empty:h}=e,d=typeof s=="function"?s:D=>D[s];return this.each(function(){const D=u(this),G=ce(this),R=new Map,O=new Set;let Q=[],z=null;const I=L(()=>{const Y=t.value,U=Y.length;if(U===0?h&&!z&&(z=u(h).appendTo(D)):z&&(z.remove(),z=null),U===0&&R.size===0){Q=[];return}g.log("list",`${G} updating with ${U} items`);const he=new Array(U),qe=new Set;for(let a=0;a<U;a++){const E=Y[a],C=d(E,a);he[a]=C,qe.add(C)}for(const[a,E]of R){if(qe.has(a)||O.has(a))continue;const C=()=>{E.$el.remove();const m=E.$el[0];m&&f.cleanup(m),O.delete(a),g.log("list",`${G} removed item:`,a)};if(R.delete(a),O.add(a),c){const m=c(E.$el);m instanceof Promise?m.then(C):C()}else C()}if(U===0){Q=[];return}const Be=new Map;for(let a=0;a<Q.length;a++){const E=Q[a];E!==void 0&&Be.set(E,a)}const Qe=new Int32Array(U);for(let a=0;a<U;a++){const E=he[a];Qe[a]=E!==void 0?Be.get(E)??-1:-1}const ze=vt(Qe);let be=ze.length-1,w=null;for(let a=U-1;a>=0;a--){const E=he[a],C=Y[a],m=R.get(E);if(m){m.item=C;const X=m.$el[0];if(!X)continue;r&&r(m.$el,C,a),be>=0&&ze[be]===a?(be--,X.nextSibling!==w&&(w?m.$el.insertBefore(w):m.$el.appendTo(D))):w?m.$el.insertBefore(w):m.$el.appendTo(D),w=X}else{const X=n(C,a),H=(X instanceof Element,u(X));R.set(E,{$el:H,item:C}),w?H.insertBefore(w):H.appendTo(D),i&&i(H,C,a),o&&o(H),g.log("list",`${G} added item:`,E),w=H[0]||null}}Q=he});f.trackEffect(this,I),f.trackCleanup(this,()=>{R.clear(),O.clear(),Q=[],z?.remove()})})};const ue=new WeakMap;u.fn.atomMount=function(t,e={}){return this.each(function(){const s=u(this),n=ce(this),i=ue.get(this);i&&(g.log("mount",`${n} unmounting existing component`),i()),g.log("mount",`${n} mounting component`);let r;try{r=t(s,e)}catch(h){console.error("[atom-effect-jquery] Mount error:",h);return}let o=!1;const c=()=>{if(!o){if(o=!0,g.log("mount",`${n} full cleanup`),typeof r=="function")try{r()}catch{}f.cleanupTree(this),ue.delete(this)}};ue.set(this,c),f.trackCleanup(this,c)})},u.fn.atomUnmount=function(){return this.each(function(){ue.get(this)?.()})};const $=new WeakMap;let je=!1;function Ee(){if(je)return;je=!0;const t=u.fn.on,e=u.fn.off,s=u.fn.remove,n=u.fn.empty,i=u.fn.detach;u.fn.remove=function(r){return(r?this.filter(r):this).each(function(){f.cleanupTree(this)}),s.call(this,r)},u.fn.empty=function(){return this.each(function(){this.querySelectorAll("*").forEach(o=>f.cleanup(o))}),n.call(this)},u.fn.detach=function(r){return(r?this.filter(r):this).each(function(){f.keep(this)}),i.call(this,r)},u.fn.on=function(...r){let o=-1;for(let c=r.length-1;c>=0;c--)if(typeof r[c]=="function"){o=c;break}if(o!==-1){const c=r[o];let h;$.has(c)?h=$.get(c):(h=function(...d){return c.apply(this,d)},$.set(c,h)),r[o]=h}return t.apply(this,r)},u.fn.off=function(...r){let o=-1;for(let c=r.length-1;c>=0;c--)if(typeof r[c]=="function"){o=c;break}if(o!==-1){const c=r[o];$.has(c)&&(r[o]=$.get(c))}return e.apply(this,r)}}const At=Ee;Ee(),u(()=>{Pe(document.body)}),_.default=u,_.atom=Ue,_.batch=Ne,_.computed=ke,_.disableAutoCleanup=_t,_.effect=L,_.enableAutoCleanup=Pe,_.enablejQueryBatching=At,_.enablejQueryOverrides=Ee,_.registry=f,_.untracked=_e,Object.defineProperties(_,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
2
  //# sourceMappingURL=atom-effect-jquery.min.js.map