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