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