@but212/atom-effect-jquery 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,7 +14,7 @@ npm install @but212/atom-effect-jquery jquery
14
14
  ### CDN
15
15
 
16
16
  ```html
17
- <script src="https://cdn.jsdelivr.net/npm/@but212/atom-effect-jquery@0.17.0"></script>
17
+ <script src="https://cdn.jsdelivr.net/npm/@but212/atom-effect-jquery@0.19.0"></script>
18
18
  ```
19
19
 
20
20
  ### Usage
@@ -37,6 +37,17 @@ const isBig = $.computed(() => count.value > 10);
37
37
  $('#warning-msg').atomShow(isBig);
38
38
  ```
39
39
 
40
+ ## Security Note
41
+
42
+ For rendering HTML content (`atomHtml`), this library includes **minimal** XSS protection.
43
+ For production applications dealing with user-generated content, use **[DOMPurify](https://github.com/cure53/DOMPurify)**.
44
+
45
+ ```javascript
46
+ import DOMPurify from 'dompurify';
47
+ // Always sanitize before binding HTML
48
+ $('#content').atomHtml($.computed(() => DOMPurify.sanitize(rawHTML.value)));
49
+ ```
50
+
40
51
  ## Documentation
41
52
 
42
53
  - [**API Reference**](./docs/API.md): Full list of bindings (`atomText`, `atomVal`, `atomBind`...).
@@ -1,2 +1,2 @@
1
- (function(y,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],u):(y=typeof globalThis<"u"?globalThis:y||self,u(y.AtomEffectJQuery={},y.jQuery))})(this,(function(y,u){"use strict";const tt={ONE_SECOND_MS:1e3},se={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},L={DISPOSED:1,HAS_FN_SUBS:2,HAS_OBJ_SUBS:4},O={...L,EXECUTING:8},h={...L,DIRTY:8,IDLE:16,PENDING:32,RESOLVED:64,REJECTED:128,RECOMPUTING:256,HAS_ERROR:512},U={...L,SYNC:8,NOTIFICATION_SCHEDULED:16},M={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10,BATCH_QUEUE_SHRINK_THRESHOLD:1e3},ke={MAX_DEPENDENCIES:1e3,WARN_INFINITE_LOOP:!0},q=1073741823,m=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"||typeof __DEV__<"u"&&!!__DEV__,nt=Object.freeze([]);class K extends Error{constructor(e,t=null,s=!0){super(e),this.cause=t,this.recoverable=s,this.timestamp=new Date,this.name="AtomError"}}class B extends K{constructor(e,t=null){super(e,t,!0),this.name="ComputedError"}}class X extends K{constructor(e,t=null){super(e,t,!1),this.name="EffectError"}}class ie extends K{constructor(e,t=null){super(e,t,!1),this.name="SchedulerError"}}const Ae=Symbol("AtomEffect.DebugName"),st=Symbol("AtomEffect.Id"),ve=Symbol("AtomEffect.Type"),Ee=Symbol("AtomEffect.NoDefaultValue"),it=n=>"dependencies"in n&&Array.isArray(n.dependencies);function Ue(n,e,t){if(n===e)throw new B("Circular dependency detected: The computation refers to itself explicitly or implicitly.");if(!t.has(n.id)&&(t.add(n.id),it(n))){const s=n.dependencies;for(let i=0;i<s.length;i++){const o=s[i];o&&Ue(o,e,t)}}}const Q={enabled:m,maxDependencies:ke.MAX_DEPENDENCIES,warnInfiniteLoop:ke.WARN_INFINITE_LOOP,warn(n,e){m&&this.enabled&&n&&console.warn(`[Atom Effect] ${e}`)},checkCircular(n,e){if(n===e)throw new B("Direct circular dependency detected");m&&this.enabled&&Ue(n,e,new Set)},attachDebugInfo(n,e,t){if(!m||!this.enabled)return;const s=n;s[Ae]=`${e}_${t}`,s[st]=t,s[ve]=e},getDebugName:n=>n?.[Ae],getDebugType:n=>n?.[ve]};let ot=1;const rt=()=>ot++;function Re(n,e,t){if(typeof e=="function"){const i=e;for(let o=0,r=t.length;o<r;o++){const c=t[o];if(c&&c.fn===i)return}t.push(new ge(i,void 0)),n.flags|=L.HAS_FN_SUBS,"_fnSubCount"in n&&n._fnSubCount++;return}if("addDependency"in e){e.addDependency(n);return}const s=e;for(let i=0,o=t.length;i<o;i++){const r=t[i];if(r&&r.sub===s)return}t.push(new ge(void 0,s)),n.flags|=L.HAS_OBJ_SUBS,"_objSubCount"in n&&n._objSubCount++}function ct(n,e,t){for(let s=0,i=e.length;s<i;s++){const o=e[s];o&&(o.node._tempUnsub=o.unsub)}for(let s=0,i=n.length;s<i;s++){const o=n[s];if(!o)continue;const r=o.node;r._tempUnsub!==void 0?(o.unsub=r._tempUnsub,r._tempUnsub=void 0):(Q.checkCircular(r,t),o.unsub=r.subscribe(t))}for(let s=0,i=e.length;s<i;s++){const o=e[s];if(o){const r=o.node;r._tempUnsub!==void 0&&(r._tempUnsub(),r._tempUnsub=void 0),o.unsub=void 0}}}class pe{constructor(e,t,s=void 0){this.node=e,this.version=t,this.unsub=s}}class ge{constructor(e,t){this.fn=e,this.sub=t}}const b={COMPUTED_MUST_BE_FUNCTION:"Computed target must be a function",COMPUTED_ASYNC_PENDING_NO_DEFAULT:"Async computation pending with no default value",COMPUTED_COMPUTATION_FAILED:"Computation execution failed",COMPUTED_ASYNC_COMPUTATION_FAILED:"Async computation execution failed",COMPUTED_CIRCULAR_DEPENDENCY:"Circular dependency detected",COMPUTED_DISPOSED:"Attempted to access disposed computed",ATOM_SUBSCRIBER_MUST_BE_FUNCTION:"Subscriber must be a function or Subscriber object",ATOM_INDIVIDUAL_SUBSCRIBER_FAILED:"Subscriber execution failed",EFFECT_MUST_BE_FUNCTION:"Effect target must be a function",EFFECT_EXECUTION_FAILED:"Effect execution failed",EFFECT_CLEANUP_FAILED:"Effect cleanup failed",EFFECT_DISPOSED:"Attempted to run disposed effect",CALLBACK_ERROR_IN_ERROR_HANDLER:"Exception encountered in onError handler"};function Z(n,e,t){if(n instanceof K)return n;const s=n instanceof Error,i=s?n.message:String(n),o=s?n:void 0;let r="Unexpected error";n instanceof TypeError?r="Type error":n instanceof ReferenceError&&(r="Reference error");const c=`${r} (${t}): ${i}`;return new e(c,o)}class we{constructor(){this.flags=0,this.version=0,this._lastSeenEpoch=-1,this._modifiedAtEpoch=-1,this.id=rt()&q,this._tempUnsub=void 0}}class Le extends we{constructor(){super(...arguments),this._fnSubCount=0,this._objSubCount=0}subscribe(e){const t=typeof e=="function";if(!t&&(!e||typeof e.execute!="function"))throw Z(new TypeError("Invalid subscriber"),K,b.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);const s=this._subscribers;for(let o=0,r=s.length;o<r;o++){const c=s[o];if(c&&(t?c.fn===e:c.sub===e))return m&&console.warn("Duplicate subscription ignored."),()=>{}}const i=new ge(t?e:void 0,t?void 0:e);return s.push(i),t?(this._fnSubCount++,this.flags|=L.HAS_FN_SUBS):(this._objSubCount++,this.flags|=L.HAS_OBJ_SUBS),()=>this._unsubscribe(i)}_unsubscribe(e){const t=this._subscribers,s=t.indexOf(e);if(s===-1)return;const i=t.pop();s<t.length&&i&&(t[s]=i),e.fn?this._fnSubCount--:this._objSubCount--,t.length===0?(this.flags&=-7,this._fnSubCount=0,this._objSubCount=0):e.fn&&this._fnSubCount<=0?(this.flags&=-3,this._fnSubCount=0):!e.fn&&this._objSubCount<=0&&(this.flags&=-5,this._objSubCount=0)}subscriberCount(){return this._subscribers.length}_notifySubscribers(e,t){if(!(this.flags&(L.HAS_FN_SUBS|L.HAS_OBJ_SUBS)))return;const s=this._subscribers,i=s.length;for(let o=0;o<i;o++){const r=s[o];if(r)try{r.fn?r.fn(e,t):r.sub&&r.sub.execute()}catch(c){this._handleNotifyError(c)}}}_handleNotifyError(e){console.error(Z(e,K,b.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED))}}let oe=0;const xe=()=>(oe=oe+1&q||1,oe),ut=()=>oe;let me=0,ye=0,re=!1;function Fe(){return re?(m&&console.warn("startFlush() called during flush - ignored"),!1):(re=!0,me=me+1&q||1,ye=0,!0)}const Pe=()=>{re=!1},lt=()=>re?++ye:0,k={_queueBuffer:[[],[]],_bufferIndex:0,_size:0,_epoch:0,_isProcessing:!1,_isBatching:!1,_isFlushingSync:!1,_batchDepth:0,_batchQueue:[],_batchQueueSize:0,_maxFlushIterations:M.MAX_FLUSH_ITERATIONS,get phase(){return this._isProcessing||this._isFlushingSync?2:this._isBatching?1:0},get queueSize(){return this._size},get isBatching(){return this._isBatching},schedule(n){if(m&&typeof n!="function")throw new ie("Scheduler callback must be a function");if(n._nextEpoch!==this._epoch){if(n._nextEpoch=this._epoch,this._isBatching||this._isFlushingSync){this._batchQueue[this._batchQueueSize++]=n;return}this._queueBuffer[this._bufferIndex][this._size++]=n,this._isProcessing||this._flush()}},_flush(){this._isProcessing||this._size===0||(this._isProcessing=!0,queueMicrotask(this._runLoop))},_runLoop:()=>{try{if(k._size===0)return;const n=Fe();k._drainQueue(),n&&Pe()}finally{k._isProcessing=!1,k._size>0&&!k._isBatching&&k._flush()}},_flushSync(){this._isFlushingSync=!0;const n=Fe();try{this._mergeBatchQueue(),this._drainQueue()}finally{this._isFlushingSync=!1,n&&Pe()}},_mergeBatchQueue(){if(this._batchQueueSize===0)return;const n=++this._epoch,e=this._batchQueue,t=this._queueBuffer[this._bufferIndex];let s=this._size;for(let i=0;i<this._batchQueueSize;i++){const o=e[i];o._nextEpoch!==n&&(o._nextEpoch=n,t[s++]=o)}this._size=s,this._batchQueueSize=0,e.length>M.BATCH_QUEUE_SHRINK_THRESHOLD&&(e.length=0)},_drainQueue(){let n=0;for(;this._size>0;){if(++n>this._maxFlushIterations){this._handleFlushOverflow();return}this._processQueue(),this._mergeBatchQueue()}},_processQueue(){const n=this._bufferIndex,e=this._queueBuffer[n],t=this._size;this._bufferIndex=n^1,this._size=0,this._epoch++;for(let s=0;s<t;s++)try{e[s]()}catch(i){console.error(new ie("Error occurred during scheduler execution",i))}e.length=0},_handleFlushOverflow(){console.error(new ie(`Maximum flush iterations (${this._maxFlushIterations}) exceeded. Possible infinite loop.`)),this._size=0,this._queueBuffer[this._bufferIndex].length=0,this._batchQueueSize=0},startBatch(){this._batchDepth++,this._isBatching=!0},endBatch(){if(this._batchDepth===0){m&&console.warn("endBatch() called without matching startBatch(). Ignoring.");return}--this._batchDepth===0&&(this._flushSync(),this._isBatching=!1)},setMaxFlushIterations(n){if(n<M.MIN_FLUSH_ITERATIONS)throw new ie(`Max flush iterations must be at least ${M.MIN_FLUSH_ITERATIONS}`);this._maxFlushIterations=n}},G={current:null,run(n,e){const t=this.current;this.current=n;try{return e()}finally{this.current=t}}};function be(n){const e=G.current;if(e===null)return n();G.current=null;try{return n()}finally{G.current=e}}const ht=U.HAS_FN_SUBS|U.HAS_OBJ_SUBS;class at extends Le{constructor(e,t){super(),this._pendingOldValue=void 0,this._notifyTask=void 0,this._subscribers=[],this._value=e,t&&(this.flags|=U.SYNC),Q.attachDebugInfo(this,"atom",this.id)}get value(){const e=G.current;return e&&Re(this,e,this._subscribers),this._value}set value(e){const t=this._value;if(Object.is(t,e))return;this._value=e,this.version=this.version+1&q;const s=this.flags;if(!((s&ht)===0||s&U.NOTIFICATION_SCHEDULED)){if(this._pendingOldValue=t,this.flags=s|U.NOTIFICATION_SCHEDULED,s&U.SYNC&&!k.isBatching){this._flushNotifications();return}this._notifyTask||(this._notifyTask=()=>this._flushNotifications()),k.schedule(this._notifyTask)}}_flushNotifications(){const e=this.flags;if(!(e&U.NOTIFICATION_SCHEDULED)||e&U.DISPOSED)return;const t=this._pendingOldValue;this._pendingOldValue=void 0,this.flags&=-17,this._notifySubscribers(this._value,t)}peek(){return this._value}dispose(){this.flags&U.DISPOSED||(this._subscribers.length=0,this.flags|=U.DISPOSED,this._value=void 0,this._pendingOldValue=void 0,this._notifyTask=void 0)}}function Me(n,e={}){return new at(n,e.sync??!1)}class ft{constructor(e=50,t=256){this.limit=e,this.capacity=t,this.pool=[],this.stats=m?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return m&&this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,t){if(!(t&&e===t)){if(e.length>this.capacity){m&&this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.limit){m&&this.stats&&this.stats.rejected.poolFull++;return}if(Object.isFrozen(e)){m&&this.stats&&this.stats.rejected.frozen++;return}e.length=0,this.pool.push(e),m&&this.stats&&this.stats.released++}}getStats(){if(!m||!this.stats)return null;const{acquired:e,released:t,rejected:s}=this.stats,i=e-t-(s.frozen+s.tooLarge+s.poolFull);return{acquired:e,released:t,rejected:{...s},leaked:i,poolSize:this.pool.length}}reset(){this.pool.length=0,m&&this.stats&&(this.stats={acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}})}}const $=n=>Object.freeze(n);$([]),$([]),$([]),$([]);const T=$([]);$([]);const j=new ft;function Se(n){return n!==null&&typeof n=="object"&&"value"in n&&typeof n.subscribe=="function"}function Be(n){return Se(n)&&typeof n.invalidate=="function"}function je(n){return n!==null&&typeof n=="object"&&typeof n.then=="function"}const He=h.RESOLVED|h.PENDING|h.REJECTED,ce=Array(He+1).fill(se.IDLE);ce[h.RESOLVED]=se.RESOLVED,ce[h.PENDING]=se.PENDING,ce[h.REJECTED]=se.REJECTED;const Ve=3,ze=Number.MAX_SAFE_INTEGER-1;class qe extends Le{constructor(e,t={}){if(typeof e!="function")throw new B(b.COMPUTED_MUST_BE_FUNCTION);if(super(),this._error=null,this._promiseId=0,this._subscribers=[],this._links=T,this._cachedErrors=null,this._errorCacheEpoch=-1,this._asyncStartAggregateVersion=0,this._asyncRetryCount=0,this._trackEpoch=-1,this._trackLinks=T,this._trackCount=0,this._value=void 0,this.flags=h.DIRTY|h.IDLE,this._equal=t.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in t?t.defaultValue:Ee,this._onError=t.onError??null,Q.attachDebugInfo(this,"computed",this.id),t.lazy===!1)try{this._recompute()}catch{}}_track(){const e=G.current;e&&Re(this,e,this._subscribers)}get value(){this._track();const e=this.flags;if((e&(h.RESOLVED|h.DIRTY|h.IDLE))===h.RESOLVED)return this._value;if(e&h.DISPOSED)throw new B(b.COMPUTED_DISPOSED);if(e&h.RECOMPUTING){if(this._defaultValue!==Ee)return this._defaultValue;throw new B(b.COMPUTED_CIRCULAR_DEPENDENCY)}if(e&(h.DIRTY|h.IDLE)&&(this._recompute(),this.flags&h.RESOLVED))return this._value;const t=this._defaultValue,s=t!==Ee;if(this.flags&h.PENDING){if(s)return t;throw new B(b.COMPUTED_ASYNC_PENDING_NO_DEFAULT)}if(this.flags&h.REJECTED){if(this._error?.recoverable&&s)return t;throw this._error}return this._value}peek(){return this._value}get state(){return this._track(),ce[this.flags&He]}get hasError(){if(this._track(),this.flags&(h.REJECTED|h.HAS_ERROR))return!0;const e=this._links;for(let t=0,s=e.length;t<s;t++){const i=e[t]?.node;if(i&&i.flags&h.HAS_ERROR)return!0}return!1}get isValid(){return!this.hasError}get errors(){if(this._track(),!this.hasError)return nt;const e=ut();if(this._errorCacheEpoch===e&&this._cachedErrors)return this._cachedErrors;const t=new Set;this._error&&t.add(this._error);const s=this._links;for(let o=0,r=s.length;o<r;o++){const c=s[o].node;if(c.flags&h.HAS_ERROR){const l=c;if(l.errors){const a=l.errors;for(let _=0;_<a.length;_++){const A=a[_];A&&t.add(A)}}}}const i=Object.freeze(Array.from(t));return this._errorCacheEpoch=e,this._cachedErrors=i,i}get lastError(){return this._track(),this._error}get isPending(){return this._track(),(this.flags&h.PENDING)!==0}get isResolved(){return this._track(),(this.flags&h.RESOLVED)!==0}invalidate(){this._markDirty(),this._errorCacheEpoch=-1,this._cachedErrors=null}dispose(){if(this.flags&h.DISPOSED)return;const e=this._links;if(e!==T){for(let t=0,s=e.length;t<s;t++)e[t].unsub?.();j.release(e),this._links=T}this._subscribers.length=0,this.flags=h.DISPOSED|h.DIRTY|h.IDLE,this._error=null,this._value=void 0,this._promiseId=(this._promiseId+1)%ze,this._cachedErrors=null,this._errorCacheEpoch=-1}addDependency(e){if(e._lastSeenEpoch!==this._trackEpoch){if(e._lastSeenEpoch=this._trackEpoch,this._trackCount<this._trackLinks.length){const t=this._trackLinks[this._trackCount];t.node=e,t.version=e.version}else this._trackLinks.push(new pe(e,e.version));this._trackCount++}}_commitDeps(e){this._trackLinks.length=this._trackCount,ct(this._trackLinks,e,this),this._links=this._trackLinks}_recompute(){if(this.flags&h.RECOMPUTING)return;this.flags|=h.RECOMPUTING;const e=this._links;this._trackEpoch=xe(),this._trackLinks=j.acquire(),this._trackCount=0;let t=!1;try{const s=G.run(this,this._fn);this._commitDeps(e),t=!0,je(s)?this._handleAsyncComputation(s):this._finalizeResolution(s)}catch(s){if(!t)try{this._commitDeps(e),t=!0}catch{}this._handleError(s,b.COMPUTED_COMPUTATION_FAILED,!0)}finally{t&&e!==T?j.release(e):t||j.release(this._trackLinks),this._trackEpoch=-1,this._trackLinks=T,this._trackCount=0,this.flags&=-257}}_handleAsyncComputation(e){this.flags=(this.flags|h.PENDING)&-217,this._notifySubscribers(void 0,void 0),this._asyncStartAggregateVersion=this._captureVersionSnapshot(),this._asyncRetryCount=0,this._promiseId=(this._promiseId+1)%ze;const t=this._promiseId;e.then(s=>{if(t===this._promiseId){if(this._captureVersionSnapshot()!==this._asyncStartAggregateVersion)return this._asyncRetryCount++<Ve?this._markDirty():this._handleError(new B(`Async drift threshold exceeded after ${Ve} retries.`),b.COMPUTED_ASYNC_COMPUTATION_FAILED);this._finalizeResolution(s),this._notifySubscribers(s,void 0)}},s=>t===this._promiseId&&this._handleError(s,b.COMPUTED_ASYNC_COMPUTATION_FAILED))}_captureVersionSnapshot(){let e=0;const t=this._links;for(let s=0,i=t.length;s<i;s++)e=((e<<5)-e|0)+t[s].node.version&q;return e}_handleError(e,t,s=!1){const i=Z(e,B,t);if(!s&&!(this.flags&h.REJECTED)&&(this.version=this.version+1&q),this._error=i,this.flags=this.flags&-121|(h.REJECTED|h.HAS_ERROR),this._onError)try{this._onError(i)}catch(o){console.error(b.CALLBACK_ERROR_IN_ERROR_HANDLER,o)}if(s)throw i;this._notifySubscribers(void 0,void 0)}_finalizeResolution(e){(!(this.flags&h.RESOLVED)||!this._equal(this._value,e))&&(this.version=this.version+1&q),this._value=e,this._error=null,this.flags=(this.flags|h.RESOLVED)&-697,this._cachedErrors=null,this._errorCacheEpoch=-1}execute(){this._markDirty()}_markDirty(){this.flags&(h.RECOMPUTING|h.DIRTY)||(this.flags|=h.DIRTY,this._notifySubscribers(void 0,void 0))}}Object.freeze(qe.prototype);function Xe(n,e={}){return new qe(n,e)}class dt extends we{constructor(e,t={}){super(),this._cleanup=null,this._links=T,this._nextLinks=null,this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._executionCount=0,this._historyPtr=0,this._execId=0,this._fn=e,this._onError=t.onError??null,this._sync=t.sync??!1,this._maxExecutions=t.maxExecutionsPerSecond??M.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=t.maxExecutionsPerFlush??M.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=t.trackModifications??!1;const s=Number.isFinite(this._maxExecutions),i=s?Math.min(this._maxExecutions+1,M.MAX_EXECUTIONS_PER_SECOND+1):0;this._historyCapacity=i,this._history=m&&s&&i>0?new Array(i).fill(0):null,Q.attachDebugInfo(this,"effect",this.id)}run(){if(this.flags&O.DISPOSED)throw new X(b.EFFECT_DISPOSED);this.execute(!0)}dispose(){this.flags&O.DISPOSED||(this.flags|=O.DISPOSED,this._execCleanup(),this._releaseLinks(this._links),this._links=T,this._executeTask=void 0)}addDependency(e){if(!(this.flags&O.EXECUTING)||e._lastSeenEpoch===this._currentEpoch)return;e._lastSeenEpoch=this._currentEpoch;const t=this._nextLinks;if(e._tempUnsub){t.push(new pe(e,e.version,e._tempUnsub)),e._tempUnsub=void 0;return}try{const s=e.subscribe(()=>{if(this._trackModifications&&this.flags&O.EXECUTING&&(e._modifiedAtEpoch=this._currentEpoch),this._sync)return this.execute();this._executeTask||(this._executeTask=()=>this.execute()),k.schedule(this._executeTask)});t.push(new pe(e,e.version,s))}catch(s){console.error(Z(s,X,b.EFFECT_EXECUTION_FAILED))}}execute(e=!1){if(this.flags&(O.DISPOSED|O.EXECUTING)||!e&&this._links.length>0&&!this._isDirty())return;this._checkInfiniteLoops(),this.flags|=O.EXECUTING,this._execCleanup();const t=this._links;if(t!==T)for(let o=0,r=t.length;o<r;o++){const c=t[o];c&&(c.node._tempUnsub=c.unsub)}const s=j.acquire();this._nextLinks=s,this._currentEpoch=xe();let i=!1;try{const o=G.run(this,this._fn);this._links=s,i=!0,this._checkLoopWarnings(),je(o)?this._handleAsyncResult(o):this._cleanup=typeof o=="function"?o:null}catch(o){i=!0,this._handleExecutionError(o),this._cleanup=null}finally{this._finalizeDependencies(i,t,s),this.flags&=-9}}_handleAsyncResult(e){const t=++this._execId;e.then(s=>{if(t!==this._execId||this.flags&O.DISPOSED){if(typeof s=="function")try{s()}catch(i){this._handleExecutionError(i,b.EFFECT_CLEANUP_FAILED)}return}typeof s=="function"&&(this._cleanup=s)},s=>t===this._execId&&this._handleExecutionError(s))}_finalizeDependencies(e,t,s){if(this._nextLinks=null,e){if(t!==T){for(let i=0,o=t.length;i<o;i++){const r=t[i],c=r?.node._tempUnsub;c&&(c(),r&&(r.node._tempUnsub=void 0))}j.release(t)}}else if(this._releaseLinks(s),j.release(s),t!==T)for(let i=0,o=t.length;i<o;i++)t[i]&&(t[i].node._tempUnsub=void 0)}_releaseLinks(e){if(e!==T){for(let t=0,s=e.length;t<s;t++)e[t]?.unsub?.();j.release(e)}}_isDirty(){const e=this._links;for(let t=0,s=e.length;t<s;t++){const i=e[t],o=i.node;if(o.version!==i.version)return!0;if("value"in o){try{be(()=>o.value)}catch{return!0}if(o.version!==i.version)return!0}}return!1}_execCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){this._handleExecutionError(e,b.EFFECT_CLEANUP_FAILED)}this._cleanup=null}}_checkInfiniteLoops(){const e=me;if(this._lastFlushEpoch!==e&&(this._lastFlushEpoch=e,this._executionsInEpoch=0),++this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),lt()>M.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history){const t=Date.now();this._history[this._historyPtr]=t,this._historyPtr=(this._historyPtr+1)%this._historyCapacity;const s=this._history[this._historyPtr]||0;if(s>0&&t-s<tt.ONE_SECOND_MS){const i=new X("Effect executed too frequently within 1 second. Suspected infinite loop.");if(this.dispose(),this._handleExecutionError(i),m)throw i}}}get isDisposed(){return(this.flags&O.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&O.EXECUTING)!==0}_throwInfiniteLoopError(e){const t=new X(`Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${ye}`);throw this.dispose(),console.error(t),t}_handleExecutionError(e,t=b.EFFECT_EXECUTION_FAILED){const s=Z(e,X,t);if(console.error(s),this._onError)try{this._onError(s)}catch(i){console.error(Z(i,X,b.CALLBACK_ERROR_IN_ERROR_HANDLER))}}_checkLoopWarnings(){if(this._trackModifications&&Q.enabled){const e=this._currentEpoch,t=this._links;for(let s=0,i=t.length;s<i;s++){const o=t[s].node;o._modifiedAtEpoch===e&&Q.warn(!0,`Effect is reading a dependency (${Q.getDebugName(o)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function H(n,e={}){if(typeof n!="function")throw new X(b.EFFECT_MUST_BE_FUNCTION);const t=new dt(n,e);return t.execute(),t}function ue(n){if(typeof n!="function")throw new TypeError("Batch callback must be a function");k.startBatch();try{return n()}finally{k.endBatch()}}function _t(n){return n!==null&&typeof n=="object"&&"value"in n&&"subscribe"in n}function le(n){if(!n)return"unknown";const e="jquery"in n?n[0]:n;if(!e)return"unknown";const t=e.id;if(t&&typeof t=="string")return`#${t}`;const s=e.tagName.toLowerCase(),i=e.classList;if(i&&i.length>0){let o=s;for(let r=0,c=i.length;r<c;r++){const l=i[r];l&&(o+=`.${l}`)}return o}return s}function Et(n){const e=n.length;if(e===0)return new Int32Array(0);const t=new Int32Array(e),s=new Int32Array(e);let i=0;for(let r=0;r<e;r++){const c=n[r];if(c===void 0||c===-1)continue;const l=i>0?s[i-1]:void 0;if(i===0||l!==void 0&&(n[l]??-1)<c){t[r]=l??-1,s[i++]=r;continue}let a=0,_=i-1;for(;a<_;){const I=a+_>>>1,R=s[I];R!==void 0&&(n[R]??-1)<c?a=I+1:_=I}const A=s[a];A!==void 0&&c<(n[A]??Number.MAX_SAFE_INTEGER)&&(a>0&&(t[r]=s[a-1]??-1),s[a]=r)}const o=new Int32Array(i);if(i>0){let r=s[i-1];for(let c=i-1;c>=0&&r!==void 0&&r!==-1;c--)o[c]=r,r=t[r]}return o}function pt(){if(typeof window<"u"){const n=window.__ATOM_DEBUG__;if(typeof n=="boolean")return n}try{if(typeof process<"u"&&process.env?.NODE_ENV==="development")return!0}catch{}return!1}let Y=pt();const d={get enabled(){return Y},set enabled(n){Y=n},log(n,...e){Y&&console.log(`[atom-effect-jquery] ${n}:`,...e)},atomChanged(n,e,t){Y&&console.log(`[atom-effect-jquery] Atom "${n??"anonymous"}" changed:`,e,"→",t)},domUpdated(n,e,t){Y&&(console.log(`[atom-effect-jquery] DOM updated: ${le(n)}.${e} =`,t),gt(n))},cleanup(n){Y&&console.log(`[atom-effect-jquery] Cleanup: ${n}`)},warn(...n){Y&&console.warn("[atom-effect-jquery]",...n)}},Ce=new WeakMap;function gt(n){const e="jquery"in n?n[0]:n;if(!e||!e.isConnected)return;let t=Ce.get(e);if(t||(t={},Ce.set(e,t)),t.timer&&clearTimeout(t.timer),t.cleanupTimer&&clearTimeout(t.cleanupTimer),!t.orgStyle){const i=e.style;t.orgStyle={outline:i.outline,outlineOffset:i.outlineOffset,transition:i.transition}}const s=e.style;s.outline="2px solid rgba(255, 68, 68, 0.8)",s.outlineOffset="1px",s.transition="none",t.timer=setTimeout(()=>{e.isConnected&&(s.transition="outline 0.5s ease-out",requestAnimationFrame(()=>{if(!e.isConnected)return;const i=t?.orgStyle;i&&(s.outline=i.outline,s.outlineOffset=i.outlineOffset),t.cleanupTimer=setTimeout(()=>{e.isConnected&&t?.orgStyle&&(s.transition=t.orgStyle.transition),Ce.delete(e)},500)}))},100)}const mt=new WeakMap;function Qe(n,e={}){const t=Me(n,e);return e.name&&mt.set(t,{name:e.name}),t}Object.defineProperty(Qe,"debug",{get(){return d.enabled},set(n){d.enabled=n}});function yt(){return new Promise(n=>setTimeout(n,0))}u.extend({atom:Qe,computed:Xe,effect:H,batch:ue,untracked:be,isAtom:Se,isComputed:Be,isReactive:n=>Se(n)||Be(n),nextTick:yt});const he="_aes-bound";class bt{records=new WeakMap;boundElements=new WeakSet;preservedNodes=new WeakSet;ignoredNodes=new WeakSet;keep(e){this.preservedNodes.add(e)}isKept(e){return this.preservedNodes.has(e)}markIgnored(e){this.ignoredNodes.add(e)}isIgnored(e){return this.ignoredNodes.has(e)}_getOrCreateRecord(e){let t=this.records.get(e);return t||(t={},this.records.set(e,t),this.boundElements.has(e)||(this.boundElements.add(e),e.classList.add(he))),t}trackEffect(e,t){const s=this._getOrCreateRecord(e);s.effects||(s.effects=[]),s.effects.push(t)}trackCleanup(e,t){const s=this._getOrCreateRecord(e);s.cleanups||(s.cleanups=[]),s.cleanups.push(t)}hasBind(e){return this.boundElements.has(e)}cleanup(e){if(!this.boundElements.delete(e))return;const t=this.records.get(e);if(!t)return;this.records.delete(e),this.preservedNodes.delete(e),this.ignoredNodes.delete(e),e.classList.remove(he),d.enabled&&d.cleanup(le(e));const s=t.effects;if(s)for(let o=0,r=s.length;o<r;o++)try{s[o]?.dispose()}catch(c){d.warn("Effect dispose error:",c)}const i=t.cleanups;if(i)for(let o=0,r=i.length;o<r;o++)try{i[o]?.()}catch(c){d.warn("Cleanup error:",c)}}cleanupDescendants(e){const t=e.querySelectorAll(`.${he}`);for(let s=0,i=t.length;s<i;s++){const o=t[s];o&&this.boundElements.has(o)?this.cleanup(o):o&&o.classList.remove(he)}}cleanupTree(e){this.cleanupDescendants(e),this.cleanup(e)}}const p=new bt;let ne=null;function Ge(n=document.body){ne||(ne=new MutationObserver(e=>{for(let t=0,s=e.length;t<s;t++){const i=e[t]?.removedNodes;if(!i)continue;const o=i.length;if(o!==0)for(let r=0;r<o;r++){const c=i[r];c.nodeType===1&&(c.isConnected||p.isKept(c)||p.isIgnored(c)||p.cleanupTree(c))}}}),ne.observe(n,{childList:!0,subtree:!0}))}function St(){ne?.disconnect(),ne=null}function S(n,e,t,s){_t(e)?p.trackEffect(n,H(()=>{const i=e.value;t(i),d.domUpdated(u(n),s,i)})):(t(e),d.domUpdated(u(n),s,e))}var g=(n=>(n[n.None=0]="None",n[n.Focused=1]="Focused",n[n.Composing=2]="Composing",n[n.SyncingToAtom=4]="SyncingToAtom",n[n.SyncingToDom=8]="SyncingToDom",n[n.Busy=14]="Busy",n))(g||{});function Ie(){return{timeoutId:null,flags:0}}function Ye(n,e,t={}){const{debounce:s,event:i="input",parse:o=D=>D,format:r=D=>String(D??""),equal:c=Object.is}=t,l=Ie(),a=n[0],_=()=>{if(!(l.flags&g.Busy)){l.flags|=g.SyncingToAtom;try{const D=a.value,N=o(D);c(e.value,N)||(e.value=N)}finally{l.flags&=~g.SyncingToAtom}}},A=()=>{l.timeoutId&&(clearTimeout(l.timeoutId),l.timeoutId=null,_()),l.flags&=~g.Focused;const D=r(e.value);a.value!==D&&(a.value=D)},I=()=>{l.flags&g.Busy||(s?(l.timeoutId&&clearTimeout(l.timeoutId),l.timeoutId=setTimeout(_,s)):_())},R={compositionstart:()=>{l.flags|=g.Composing},compositionend:()=>{l.flags&=~g.Composing,_()},focus:()=>{l.flags|=g.Focused},blur:A,[i]:I,change:I};return n.on(R),{effect:()=>{const D=e.value,N=r(D),v=a.value;if(v!==N&&!(l.flags&g.Focused&&c(o(v),D))){l.flags|=g.SyncingToDom;try{if(l.flags&g.Focused){const{selectionStart:de,selectionEnd:Te}=a;a.value=N;const V=N.length;a.setSelectionRange(Math.min(de??V,V),Math.min(Te??V,V))}else a.value=N;d.domUpdated(n,"val",N)}finally{l.flags&=~g.SyncingToDom}}},cleanup:()=>{n.off(R),l.timeoutId&&clearTimeout(l.timeoutId)}}}u.fn.atomText=function(n,e){return this.each(function(){const t=u(this);S(this,n,e?i=>t.text(e(i)):i=>t.text(String(i??"")),"text")})},u.fn.atomHtml=function(n){return this.each(function(){const e=u(this);S(this,n,t=>e.html(String(t??"")),"html")})},u.fn.atomClass=function(n,e){return this.each(function(){const t=u(this);S(this,e,s=>t.toggleClass(n,!!s),`class.${n}`)})},u.fn.atomCss=function(n,e,t){return this.each(function(){const s=u(this);S(this,e,t?o=>s.css(n,`${o}${t}`):o=>s.css(n,o),`css.${n}`)})},u.fn.atomAttr=function(n,e){return this.each(function(){const t=u(this);S(this,e,s=>{if(s==null||s===!1){t.removeAttr(n);return}t.attr(n,s===!0?n:String(s))},`attr.${n}`)})},u.fn.atomProp=function(n,e){return this.each(function(){const t=u(this);S(this,e,s=>t.prop(n,s),`prop.${n}`)})},u.fn.atomShow=function(n){return this.each(function(){const e=u(this);S(this,n,t=>e.toggle(!!t),"show")})},u.fn.atomHide=function(n){return this.each(function(){const e=u(this);S(this,n,t=>e.toggle(!t),"hide")})},u.fn.atomVal=function(n,e={}){return this.each(function(){const{effect:t,cleanup:s}=Ye(u(this),n,e);p.trackEffect(this,H(t)),p.trackCleanup(this,s)})},u.fn.atomChecked=function(n){return this.each(function(){const e=u(this),t=this,s=Ie(),i=()=>{if(s.flags&g.Busy)return;const r=t.checked;n.value!==r&&(n.value=r)};e.on("change",i),p.trackCleanup(this,()=>e.off("change",i));const o=H(()=>{s.flags|=g.SyncingToDom;const r=!!n.value;t.checked!==r&&(t.checked=r,d.domUpdated(e,"checked",r)),s.flags&=~g.SyncingToDom});p.trackEffect(this,o)})},u.fn.atomOn=function(n,e){return this.each(function(){const t=u(this);t.on(n,e),p.trackCleanup(this,()=>t.off(n,e))})},u.fn.atomUnbind=function(){return this.each(function(){p.cleanupTree(this)})};const Je=Object.create(null);function Ct(n){let e=Je[n];return e||(e=n.includes("-")?n.replace(/-./g,t=>t[1].toUpperCase()):n,Je[n]=e,e)}function It(n,e){const t=n.el;S(t,e,s=>{const i=typeof s=="string"?s:String(s??"");t.textContent!==i&&(t.textContent=i)},"text")}function Dt(n,e){const t=n.el;S(t,e,s=>{const i=String(s??"");t.innerHTML!==i&&(t.innerHTML=i)},"html")}function Tt(n,e){for(const t in e)S(n.el,e[t],s=>{n.el.classList.toggle(t,!!s)},`class.${t}`)}function Nt(n,e){const t=n.el,s=t.style;for(const i in e){const o=e[i];if(o===void 0)continue;const r=Ct(i);Array.isArray(o)?S(t,o[0],c=>{s[r]=`${c}${o[1]}`},`css.${i}`):S(t,o,c=>{s[r]=c},`css.${i}`)}}function Ot(n,e){const t=n.el;for(const s in e)S(t,e[s],i=>{if(i==null||i===!1){t.removeAttribute(s);return}const o=i===!0?s:String(i);t.getAttribute(s)!==o&&t.setAttribute(s,o)},`attr.${s}`)}function kt(n,e){const t=n.el;for(const s in e)S(n.el,e[s],i=>{t[s]!==i&&(t[s]=i)},`prop.${s}`)}function At(n,e){const t=n.el;S(t,e,s=>{t.style.display=s?"":"none",d.enabled&&d.domUpdated(t,"show",s)},"show")}function vt(n,e){const t=n.el;S(t,e,s=>{t.style.display=s?"none":"",d.enabled&&d.domUpdated(t,"hide",s)},"hide")}function Ut(n,e){const t=Array.isArray(e),{effect:s,cleanup:i}=Ye(n.$el,t?e[0]:e,t?e[1]:{});p.trackEffect(n.el,H(s)),n.trackCleanup(i)}function Rt(n,e){const t=n.el,s=Ie(),i=()=>{if(s.flags&g.Busy)return;const r=t.checked;e.value!==r&&(e.value=r)};t.addEventListener("change",i),n.trackCleanup(()=>t.removeEventListener("change",i));const o=H(()=>{s.flags|=g.SyncingToDom;const r=!!e.value;t.checked!==r&&(t.checked=r,d.enabled&&d.domUpdated(t,"checked",r)),s.flags&=~g.SyncingToDom});p.trackEffect(t,o)}function wt(n,e){for(const t in e){const s=e[t];if(typeof s!="function")continue;const i=o=>{ue(()=>s.call(n.el,u.Event(o.type,{originalEvent:o})))};n.el.addEventListener(t,i),n.trackCleanup(()=>n.el.removeEventListener(t,i))}}u.fn.atomBind=function(n){return this.each(function(){const e=this;let t=null;const s={get $el(){return t||(t=u(e)),t},el:e,trackCleanup:i=>p.trackCleanup(e,i)};n.text!==void 0&&It(s,n.text),n.html!==void 0&&Dt(s,n.html),n.class&&Tt(s,n.class),n.css&&Nt(s,n.css),n.attr&&Ot(s,n.attr),n.prop&&kt(s,n.prop),n.show!==void 0&&At(s,n.show),n.hide!==void 0&&vt(s,n.hide),n.val!==void 0&&Ut(s,n.val),n.checked!==void 0&&Rt(s,n.checked),n.on&&wt(s,n.on)})},u.fn.atomList=function(n,e){const{key:t,render:s,bind:i,update:o,onAdd:r,onRemove:c,empty:l}=e,a=typeof t=="function"?t:(_,A)=>_[t];return this.each(function(){const _=u(this),A=le(this),I=new Map,R=new Set;let J=[],W=null;const D=H(()=>{const N=n.value,v=N.length;if(v===0?l&&!W&&(W=u(l).appendTo(_)):W&&(W.remove(),W=null),v===0&&I.size===0){J=[];return}d.log("list",`${A} updating with ${v} items`);const de=new Map,Te=J.length;for(let f=0;f<Te;f++)de.set(J[f],f);const V=new Array(v),Ne=new Set,Ze=new Int32Array(v);for(let f=0;f<v;f++){const F=N[f],E=a(F,f);d.enabled&&Ne.has(E)&&console.warn(`[atomList] Duplicate key "${E}" at index ${f}.`),V[f]=E,Ne.add(E),Ze[f]=de.get(E)??-1}if(I.size>0)for(const[f,F]of I){if(Ne.has(f)||R.has(f))continue;const E=()=>{F.$el.remove(),F.$el[0]&&p.cleanup(F.$el[0]),R.delete(f),d.log("list",`${A} removed item:`,f)};if(I.delete(f),R.add(f),c){const C=c(F.$el);C instanceof Promise?C.then(E):E()}else E()}if(v===0){J=[];return}const $e=Et(Ze);let Oe=$e.length-1,x=null;for(let f=v-1;f>=0;f--){const F=V[f],E=N[f],C=I.get(F);if(C){const ee=C.item;C.item=E;const w=C.$el[0];if(!w)continue;if(o)o(C.$el,E,f),d.domUpdated(C.$el,"list.update",E);else if(ee!==E){let z=!0;if(typeof ee=="object"&&ee!==null&&typeof E=="object"&&E!==null){z=!1;let P=0;const _e=ee,et=E;for(const te in _e){if(_e[te]!==et[te]){z=!0;break}P++}if(!z){let te=0;for(const xt in et)if(te++,te>P){z=!0;break}P!==te&&(z=!0)}}if(z){const P=u(s(E,f)),_e=x===w;C.$el.replaceWith(P),C.$el=P,i&&i(P,E,f),d.domUpdated(P,"list.render",E),_e&&(x=P[0]||null)}}if(Oe>=0&&$e[Oe]===f)Oe--;else{const z=C.$el[0];x?.isConnected?x!==z&&C.$el.insertBefore(x):C.$el.appendTo(_)}x=C.$el[0]||null}else{const ee=s(E,f),w=u(ee);I.set(F,{$el:w,item:E}),x?.isConnected?w.insertBefore(x):w.appendTo(_),i&&i(w,E,f),r&&r(w),d.domUpdated(w,"list.add",E),x=w[0]||null}}J=V});p.trackEffect(this,D),p.trackCleanup(this,()=>{I.clear(),R.clear(),J=[],W?.remove()})})};const ae=new WeakMap;u.fn.atomMount=function(n,e={}){return this.each(function(){const t=d.enabled,s=t?le(this):"",i=ae.get(this);i&&(t&&d.log("mount",`${s} unmounting existing component`),i()),t&&d.log("mount",`${s} mounting component`);let o;try{o=n(u(this),e)}catch(c){console.error("[atom-effect-jquery] Mount error:",c);return}const r=()=>{if(ae.delete(this)){if(t&&d.log("mount",`${s} full cleanup`),typeof o=="function")try{o()}catch(c){console.error("[atom-effect-jquery] Cleanup error:",c)}p.cleanupTree(this)}};ae.set(this,r),p.trackCleanup(this,r)})},u.fn.atomUnmount=function(){return this.each(function(){const n=ae.get(this);n&&n()})};const fe=new WeakMap;let We=!1;const Ke=n=>{let e=fe.get(n);return e||(e=function(...t){return ue(()=>n.apply(this,t))},fe.set(n,e)),e};function De(){if(We)return;We=!0;const n=u.fn.on,e=u.fn.off,t=u.fn.remove,s=u.fn.empty,i=u.fn.detach;u.fn.remove=function(o){const r=o?this.filter(o):this;for(let c=0,l=r.length;c<l;c++){const a=r[c];a&&(p.cleanupTree(a),p.markIgnored(a))}return t.call(this,o)},u.fn.empty=function(){for(let o=0,r=this.length;o<r;o++){const c=this[o];c&&p.cleanupDescendants(c)}return s.call(this)},u.fn.detach=function(o){const r=o?this.filter(o):this;for(let c=0,l=r.length;c<l;c++){const a=r[c];a&&p.keep(a)}return i.call(this,o)},u.fn.on=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,l={};for(const a in c){const _=c[a];_&&(l[a]=Ke(_))}o[0]=l}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=Ke(o[c]);break}return n.apply(this,o)},u.fn.off=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,l={};for(const a in c){const _=c[a];_&&(l[a]=fe.get(_)||_)}o[0]=l}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=fe.get(o[c])||o[c];break}return e.apply(this,o)}}const Lt=De;De(),u(()=>{Ge(document.body)}),y.default=u,y.atom=Me,y.batch=ue,y.computed=Xe,y.disableAutoCleanup=St,y.effect=H,y.enableAutoCleanup=Ge,y.enablejQueryBatching=Lt,y.enablejQueryOverrides=De,y.registry=p,y.untracked=be,Object.defineProperties(y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(O,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],a):(O=typeof globalThis<"u"?globalThis:O||self,a(O.AtomEffectJQuery={},O.jQuery))})(this,(function(O,a){"use strict";const nt={ONE_SECOND_MS:1e3},ce={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},Ce={DISPOSED:1},P={...Ce,EXECUTING:8},d={...Ce,DIRTY:8,IDLE:16,PENDING:32,RESOLVED:64,REJECTED:128,RECOMPUTING:256,HAS_ERROR:512},q={...Ce,SYNC:8,NOTIFICATION_SCHEDULED:16},Q={MAX_EXECUTIONS_PER_SECOND:1e3,MAX_EXECUTIONS_PER_EFFECT:100,MAX_EXECUTIONS_PER_FLUSH:1e4,MAX_FLUSH_ITERATIONS:1e3,MIN_FLUSH_ITERATIONS:10,BATCH_QUEUE_SHRINK_THRESHOLD:1e3},st={WARN_INFINITE_LOOP:!0},ne=1073741823,A=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"||typeof __DEV__<"u"&&!!__DEV__,it=Object.freeze([]);class J extends Error{constructor(e,t=null,s=!0){super(e),this.cause=t,this.recoverable=s,this.timestamp=new Date,this.name="AtomError"}}class X extends J{constructor(e,t=null){super(e,t,!0),this.name="ComputedError"}}class Y extends J{constructor(e,t=null){super(e,t,!1),this.name="EffectError"}}class ae extends J{constructor(e,t=null){super(e,t,!1),this.name="SchedulerError"}}const Ae=Symbol("AtomEffect.DebugName"),ot=Symbol("AtomEffect.Id"),xe=Symbol("AtomEffect.Type"),Ie=Symbol("AtomEffect.NoDefaultValue"),rt=n=>"dependencies"in n&&Array.isArray(n.dependencies);function Le(n,e,t){if(n===e)throw new X("Circular dependency detected: The computation refers to itself explicitly or implicitly.");if(!t.has(n.id)&&(t.add(n.id),rt(n))){const s=n.dependencies;for(let i=0;i<s.length;i++){const o=s[i];o&&Le(o,e,t)}}}const W={enabled:A,warnInfiniteLoop:st.WARN_INFINITE_LOOP,warn(n,e){A&&this.enabled&&n&&console.warn(`[Atom Effect] ${e}`)},checkCircular(n,e){if(n===e)throw new X("Direct circular dependency detected");A&&this.enabled&&Le(n,e,new Set)},attachDebugInfo(n,e,t){if(!A||!this.enabled)return;const s=n;s[Ae]=`${e}_${t}`,s[ot]=t,s[xe]=e},getDebugName:n=>n?.[Ae],getDebugType:n=>n?.[xe]};let ct=1;const at=()=>ct++;function Ue(n,e,t){if(typeof e=="function"){const i=e;for(let o=0,r=t.length;o<r;o++){const c=t[o];if(c&&c.fn===i)return}t.push(new Se(i,void 0));return}if("addDependency"in e){e.addDependency(n);return}const s=e;for(let i=0,o=t.length;i<o;i++){const r=t[i];if(r&&r.sub===s)return}t.push(new Se(void 0,s))}function ut(n,e,t){for(let s=0,i=e.length;s<i;s++){const o=e[s];o&&(o.node._tempUnsub=o.unsub)}for(let s=0,i=n.length;s<i;s++){const o=n[s];if(!o)continue;const r=o.node;r._tempUnsub!==void 0?(o.unsub=r._tempUnsub,r._tempUnsub=void 0):(W.checkCircular(r,t),o.unsub=r.subscribe(t))}for(let s=0,i=e.length;s<i;s++){const o=e[s];if(o){const r=o.node;r._tempUnsub!==void 0&&(r._tempUnsub(),r._tempUnsub=void 0),o.unsub=void 0}}}class ue{constructor(e,t,s=void 0){this.node=e,this.version=t,this.unsub=s}}class Se{constructor(e,t){this.fn=e,this.sub=t}}const I={COMPUTED_MUST_BE_FUNCTION:"Computed target must be a function",COMPUTED_ASYNC_PENDING_NO_DEFAULT:"Async computation pending with no default value",COMPUTED_COMPUTATION_FAILED:"Computation execution failed",COMPUTED_ASYNC_COMPUTATION_FAILED:"Async computation execution failed",COMPUTED_CIRCULAR_DEPENDENCY:"Circular dependency detected",COMPUTED_DISPOSED:"Attempted to access disposed computed",ATOM_SUBSCRIBER_MUST_BE_FUNCTION:"Subscriber must be a function or Subscriber object",ATOM_INDIVIDUAL_SUBSCRIBER_FAILED:"Subscriber execution failed",EFFECT_MUST_BE_FUNCTION:"Effect target must be a function",EFFECT_EXECUTION_FAILED:"Effect execution failed",EFFECT_CLEANUP_FAILED:"Effect cleanup failed",EFFECT_DISPOSED:"Attempted to run disposed effect",SCHEDULER_FLUSH_OVERFLOW:(n,e)=>`Maximum flush iterations (${n}) exceeded. ${e} jobs dropped. Possible infinite loop.`,CALLBACK_ERROR_IN_ERROR_HANDLER:"Exception encountered in onError handler",EFFECT_FREQUENCY_LIMIT_EXCEEDED:"Effect executed too frequently within 1 second. Suspected infinite loop."};function Z(n,e,t){if(n instanceof J)return n;const s=n instanceof Error,i=s?n.message:String(n),o=s?n:void 0;let r="Unexpected error";n instanceof TypeError?r="Type error":n instanceof ReferenceError&&(r="Reference error");const c=`${r} (${t}): ${i}`;return new e(c,o)}class Fe{constructor(){this.flags=0,this.version=0,this._lastSeenEpoch=-1,this._modifiedAtEpoch=-1,this.id=at()&ne,this._tempUnsub=void 0}}class Pe extends Fe{subscribe(e){const t=typeof e=="function";if(!t&&(!e||typeof e.execute!="function"))throw Z(new TypeError("Invalid subscriber"),J,I.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);const s=this._subscribers;for(let o=0,r=s.length;o<r;o++){const c=s[o];if(c&&(t?c.fn===e:c.sub===e))return A&&console.warn("Duplicate subscription ignored."),()=>{}}const i=new Se(t?e:void 0,t?void 0:e);return s.push(i),()=>this._unsubscribe(i)}_unsubscribe(e){const t=this._subscribers,s=t.indexOf(e);if(s===-1)return;const i=t.pop();s<t.length&&i&&(t[s]=i)}subscriberCount(){return this._subscribers.length}_notifySubscribers(e,t){if(this._subscribers.length===0)return;const s=this._subscribers.slice(0),i=s.length;for(let o=0;o<i;o++){const r=s[o];if(r)try{r.fn?r.fn(e,t):r.sub&&r.sub.execute()}catch(c){this._handleNotifyError(c)}}}_handleNotifyError(e){console.error(Z(e,J,I.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED))}}let le=0;const Me=()=>(le=le+1&ne||1,le),lt=()=>le,De=n=>n+1&ne;let ve=0,Te=0,he=!1;function je(){return he?(A&&console.warn("startFlush() called during flush - ignored"),!1):(he=!0,ve=ve+1&ne||1,Te=0,!0)}const Be=()=>{he=!1},ht=()=>he?++Te:0,M={_queueBuffer:[[],[]],_bufferIndex:0,_size:0,_epoch:0,_isProcessing:!1,_isBatching:!1,_isFlushingSync:!1,_batchDepth:0,_batchQueue:[],_batchQueueSize:0,_maxFlushIterations:Q.MAX_FLUSH_ITERATIONS,get phase(){return this._isProcessing||this._isFlushingSync?2:this._isBatching?1:0},get queueSize(){return this._size},get isBatching(){return this._isBatching},schedule(n){if(A&&typeof n!="function")throw new ae("Scheduler callback must be a function");if(n._nextEpoch!==this._epoch){if(n._nextEpoch=this._epoch,this._isBatching||this._isFlushingSync){this._batchQueue[this._batchQueueSize++]=n;return}this._queueBuffer[this._bufferIndex][this._size++]=n,this._isProcessing||this._flush()}},_flush(){this._isProcessing||this._size===0||(this._isProcessing=!0,queueMicrotask(this._runLoop))},_runLoop:()=>{try{if(M._size===0)return;const n=je();M._drainQueue(),n&&Be()}finally{M._isProcessing=!1,M._size>0&&!M._isBatching&&M._flush()}},_flushSync(){this._isFlushingSync=!0;const n=je();try{this._mergeBatchQueue(),this._drainQueue()}finally{this._isFlushingSync=!1,n&&Be()}},_mergeBatchQueue(){if(this._batchQueueSize===0)return;const n=++this._epoch,e=this._batchQueue,t=this._queueBuffer[this._bufferIndex];let s=this._size;for(let i=0;i<this._batchQueueSize;i++){const o=e[i];o._nextEpoch!==n&&(o._nextEpoch=n,t[s++]=o)}this._size=s,this._batchQueueSize=0,e.length>Q.BATCH_QUEUE_SHRINK_THRESHOLD&&(e.length=0)},_drainQueue(){let n=0;for(;this._size>0;){if(++n>this._maxFlushIterations){this._handleFlushOverflow();return}this._processQueue(),this._mergeBatchQueue()}},_processQueue(){const n=this._bufferIndex,e=this._queueBuffer[n],t=this._size;this._bufferIndex=n^1,this._size=0,this._epoch++;for(let s=0;s<t;s++)try{e[s]()}catch(i){console.error(new ae("Error occurred during scheduler execution",i))}e.length=0},onOverflow:null,_handleFlushOverflow(){const n=this._size+this._batchQueueSize;if(console.error(new ae(I.SCHEDULER_FLUSH_OVERFLOW(this._maxFlushIterations,n))),this._size=0,this._queueBuffer[this._bufferIndex].length=0,this._batchQueueSize=0,this.onOverflow)try{this.onOverflow(n)}catch{}},startBatch(){this._batchDepth++,this._isBatching=!0},endBatch(){if(this._batchDepth===0){A&&console.warn("endBatch() called without matching startBatch(). Ignoring.");return}--this._batchDepth===0&&(this._flushSync(),this._isBatching=!1)},setMaxFlushIterations(n){if(n<Q.MIN_FLUSH_ITERATIONS)throw new ae(`Max flush iterations must be at least ${Q.MIN_FLUSH_ITERATIONS}`);this._maxFlushIterations=n}},B={current:null,run(n,e){const t=this.current;this.current=n;try{return e()}finally{this.current=t}}};function Ve(n){const e=B.current;if(e===null)return n();B.current=null;try{return n()}finally{B.current=e}}class ft extends Pe{constructor(e,t){super(),this._pendingOldValue=void 0,this._notifyTask=void 0,this._subscribers=[],this._value=e,t&&(this.flags|=q.SYNC),W.attachDebugInfo(this,"atom",this.id)}get value(){const e=B.current;return e&&Ue(this,e,this._subscribers),this._value}set value(e){const t=this._value;if(Object.is(t,e))return;this._value=e,this.version=De(this.version);const s=this.flags;if(!(this._subscribers.length===0||s&q.NOTIFICATION_SCHEDULED)){if(this._pendingOldValue=t,this.flags=s|q.NOTIFICATION_SCHEDULED,s&q.SYNC&&!M.isBatching){this._flushNotifications();return}this._notifyTask||(this._notifyTask=()=>this._flushNotifications()),M.schedule(this._notifyTask)}}_flushNotifications(){const e=this.flags;if(!(e&q.NOTIFICATION_SCHEDULED)||e&q.DISPOSED)return;const t=this._pendingOldValue;this._pendingOldValue=void 0,this.flags&=-17,this._notifySubscribers(this._value,t)}peek(){return this._value}dispose(){this.flags&q.DISPOSED||(this._subscribers.length=0,this.flags|=q.DISPOSED,this._value=void 0,this._pendingOldValue=void 0,this._notifyTask=void 0)}}function Oe(n,e={}){return new ft(n,e.sync??!1)}class dt{constructor(e=50,t=256,s=!1){this.limit=e,this.capacity=t,this.pool=[],this.stats=null,this.stats=A||s?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(e,t){if(!(t&&e===t)){if(e.length>this.capacity){this.stats&&this.stats.rejected.tooLarge++;return}if(this.pool.length>=this.limit){this.stats&&this.stats.rejected.poolFull++;return}if(Object.isFrozen(e)){this.stats&&this.stats.rejected.frozen++;return}e.length=0,this.pool.push(e),this.stats&&this.stats.released++}}getStats(){if(!this.stats)return null;const{acquired:e,released:t,rejected:s}=this.stats,i=e-t-(s.frozen+s.tooLarge+s.poolFull);return{acquired:e,released:t,rejected:{...s},leaked:i,poolSize:this.pool.length}}reset(){this.pool.length=0,this.stats&&(this.stats={acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}})}}const se=n=>Object.freeze(n);se([]),se([]),se([]),se([]);const U=se([]),G=new dt;function ke(n){return n!==null&&typeof n=="object"&&"value"in n&&typeof n.subscribe=="function"}function He(n){return ke(n)&&typeof n.invalidate=="function"}function ze(n){return n!==null&&typeof n=="object"&&typeof n.then=="function"}const qe=d.RESOLVED|d.PENDING|d.REJECTED,fe=Array(qe+1).fill(ce.IDLE);fe[d.RESOLVED]=ce.RESOLVED,fe[d.PENDING]=ce.PENDING,fe[d.REJECTED]=ce.REJECTED;const _t=3,Qe=Number.MAX_SAFE_INTEGER-1,pt=d.REJECTED|d.HAS_ERROR;class Xe extends Pe{constructor(e,t={}){if(typeof e!="function")throw new X(I.COMPUTED_MUST_BE_FUNCTION);super(),this._error=null,this._promiseId=0,this._subscribers=[],this._links=U,this._cachedErrors=null,this._errorCacheEpoch=-1,this._asyncStartAggregateVersion=0,this._asyncRetryCount=0,this._errorDepCount=0,this._trackEpoch=-1,this._trackLinks=U,this._trackCount=0,this._value=void 0,this.flags=d.DIRTY|d.IDLE,this._equal=t.equal??Object.is,this._fn=e,this._defaultValue="defaultValue"in t?t.defaultValue:Ie,this._onError=t.onError??null;const s=t.maxAsyncRetries;if(this._maxAsyncRetries=s!=null&&s>=0?s:_t,W.attachDebugInfo(this,"computed",this.id),t.lazy===!1)try{this._recompute()}catch{}}_track(){const e=B.current;e&&Ue(this,e,this._subscribers)}get value(){this._track();const e=this.flags;if((e&(d.RESOLVED|d.DIRTY|d.IDLE))===d.RESOLVED)return this._value;if(e&d.DISPOSED)throw new X(I.COMPUTED_DISPOSED);if(e&d.RECOMPUTING){if(this._defaultValue!==Ie)return this._defaultValue;throw new X(I.COMPUTED_CIRCULAR_DEPENDENCY)}if(e&(d.DIRTY|d.IDLE)&&(this._recompute(),this.flags&d.RESOLVED))return this._value;const t=this._defaultValue,s=t!==Ie;if(this.flags&d.PENDING){if(s)return t;throw new X(I.COMPUTED_ASYNC_PENDING_NO_DEFAULT)}if(this.flags&d.REJECTED){if(this._error?.recoverable&&s)return t;throw this._error}return this._value}peek(){return this._value}get state(){return this._track(),fe[this.flags&qe]}get hasError(){if(this._track(),this.flags&(d.REJECTED|d.HAS_ERROR)||this._errorDepCount>0)return!0;const e=this._links;for(let t=0,s=e.length;t<s;t++){const i=e[t]?.node;if(i&&i.flags&d.HAS_ERROR)return!0}return!1}get isValid(){return!this.hasError}get errors(){if(this._track(),!this.hasError)return it;const e=lt();if(this._errorCacheEpoch===e&&this._cachedErrors)return this._cachedErrors;const t=[];this._error&&t.push(this._error);const s=this._links;for(let o=0,r=s.length;o<r;o++){const c=s[o].node;if(c.flags&d.HAS_ERROR){const l=c;if(l.errors){const _=l.errors;for(let g=0;g<_.length;g++){const v=_[g];v&&t.indexOf(v)===-1&&t.push(v)}}}}const i=Object.freeze(t);return this._errorCacheEpoch=e,this._cachedErrors=i,i}get lastError(){return this._track(),this._error}get isPending(){return this._track(),(this.flags&d.PENDING)!==0}get isResolved(){return this._track(),(this.flags&d.RESOLVED)!==0}invalidate(){this._markDirty(),this._errorCacheEpoch=-1,this._cachedErrors=null}dispose(){if(this.flags&d.DISPOSED)return;const e=this._links;if(e!==U){for(let t=0,s=e.length;t<s;t++)e[t].unsub?.();G.release(e),this._links=U}this._subscribers.length=0,this.flags=d.DISPOSED|d.DIRTY|d.IDLE,this._error=null,this._value=void 0,this._promiseId=(this._promiseId+1)%Qe,this._cachedErrors=null,this._errorCacheEpoch=-1}addDependency(e){if(e._lastSeenEpoch!==this._trackEpoch){if(e._lastSeenEpoch=this._trackEpoch,this._trackCount<this._trackLinks.length){const t=this._trackLinks[this._trackCount];t.node=e,t.version=e.version}else this._trackLinks.push(new ue(e,e.version));this._trackCount++}}_commitDeps(e){this._trackLinks.length=this._trackCount,ut(this._trackLinks,e,this),this._links=this._trackLinks}_updateErrorDepCount(){let e=0;const t=this._links;for(let s=0,i=t.length;s<i;s++){const o=t[s]?.node;o&&o.flags&d.HAS_ERROR&&e++}this._errorDepCount=e}_recompute(){if(this.flags&d.RECOMPUTING)return;this.flags|=d.RECOMPUTING;const e=this._links;this._trackEpoch=Me(),this._trackLinks=G.acquire(),this._trackCount=0;let t=!1;try{const s=B.run(this,this._fn);this._commitDeps(e),t=!0,this._updateErrorDepCount(),ze(s)?this._handleAsyncComputation(s):this._finalizeResolution(s)}catch(s){if(!t)try{this._commitDeps(e),t=!0,this._updateErrorDepCount()}catch(i){A&&console.warn("[atom-effect] _commitDeps failed during error recovery:",i)}this._handleError(s,I.COMPUTED_COMPUTATION_FAILED,!0)}finally{t&&e!==U?G.release(e):t||G.release(this._trackLinks),this._trackEpoch=-1,this._trackLinks=U,this._trackCount=0,this.flags&=-257}}_handleAsyncComputation(e){this.flags=(this.flags|d.PENDING)&-217,this._notifySubscribers(void 0,void 0),this._asyncStartAggregateVersion=this._captureVersionSnapshot(),this._asyncRetryCount=0,this._promiseId=(this._promiseId+1)%Qe;const t=this._promiseId;e.then(s=>{if(t===this._promiseId){if(this._captureVersionSnapshot()!==this._asyncStartAggregateVersion)return this._asyncRetryCount++<this._maxAsyncRetries?this._markDirty():this._handleError(new X(`Async drift threshold exceeded after ${this._maxAsyncRetries} retries.`),I.COMPUTED_ASYNC_COMPUTATION_FAILED);this._finalizeResolution(s),this._notifySubscribers(s,void 0)}},s=>t===this._promiseId&&this._handleError(s,I.COMPUTED_ASYNC_COMPUTATION_FAILED))}_captureVersionSnapshot(){let e=0;const t=this._links;for(let s=0,i=t.length;s<i;s++)e=((e<<5)-e|0)+t[s].node.version&ne;return e}_handleError(e,t,s=!1){const i=Z(e,X,t);if(!s&&!(this.flags&d.REJECTED)&&(this.version=De(this.version)),this._error=i,this.flags=this.flags&-121|pt,this._onError)try{this._onError(i)}catch(o){console.error(I.CALLBACK_ERROR_IN_ERROR_HANDLER,o)}if(s)throw i;this._notifySubscribers(void 0,void 0)}_finalizeResolution(e){(!(this.flags&d.RESOLVED)||!this._equal(this._value,e))&&(this.version=De(this.version)),this._value=e,this._error=null,this.flags=(this.flags|d.RESOLVED)&-697,this._cachedErrors=null,this._errorCacheEpoch=-1}execute(){this._markDirty()}_markDirty(){this.flags&(d.RECOMPUTING|d.DIRTY)||(this.flags|=d.DIRTY,this._notifySubscribers(void 0,void 0))}}Object.freeze(Xe.prototype);function Ge(n,e={}){return new Xe(n,e)}class Et extends Fe{constructor(e,t={}){super(),this._cleanup=null,this._links=U,this._nextLinks=null,this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._executionCount=0,this._historyPtr=0,this._execId=0,this._fn=e,this._onError=t.onError??null,this._sync=t.sync??!1,this._maxExecutions=t.maxExecutionsPerSecond??Q.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=t.maxExecutionsPerFlush??Q.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=t.trackModifications??!1;const s=Number.isFinite(this._maxExecutions),i=s?Math.min(this._maxExecutions+1,Q.MAX_EXECUTIONS_PER_SECOND+1):0;this._historyCapacity=i,this._history=A&&s&&i>0?new Array(i).fill(0):null,W.attachDebugInfo(this,"effect",this.id)}run(){if(this.flags&P.DISPOSED)throw new Y(I.EFFECT_DISPOSED);this.execute(!0)}dispose(){this.flags&P.DISPOSED||(this.flags|=P.DISPOSED,this._execCleanup(),this._releaseLinks(this._links),this._links=U,this._executeTask=void 0)}addDependency(e){if(!(this.flags&P.EXECUTING)||e._lastSeenEpoch===this._currentEpoch)return;e._lastSeenEpoch=this._currentEpoch;const t=this._nextLinks;if(e._tempUnsub){t.push(new ue(e,e.version,e._tempUnsub)),e._tempUnsub=void 0;return}try{const s=e.subscribe(()=>{if(this._trackModifications&&this.flags&P.EXECUTING&&(e._modifiedAtEpoch=this._currentEpoch),this._sync)return this.execute();this._executeTask||(this._executeTask=()=>this.execute()),M.schedule(this._executeTask)});t.push(new ue(e,e.version,s))}catch(s){const i=Z(s,Y,I.EFFECT_EXECUTION_FAILED);if(console.error(i),this._onError)try{this._onError(i)}catch{}t.push(new ue(e,e.version,void 0))}}execute(e=!1){if(this.flags&(P.DISPOSED|P.EXECUTING)||!e&&this._links.length>0&&!this._isDirty())return;this._checkInfiniteLoops(),this.flags|=P.EXECUTING,this._execCleanup();const t=this._links;if(t!==U)for(let o=0,r=t.length;o<r;o++){const c=t[o];c&&(c.node._tempUnsub=c.unsub)}const s=G.acquire();this._nextLinks=s,this._currentEpoch=Me();let i=!1;try{const o=B.run(this,this._fn);this._links=s,i=!0,this._checkLoopWarnings(),ze(o)?this._handleAsyncResult(o):this._cleanup=typeof o=="function"?o:null}catch(o){i=!0,this._handleExecutionError(o),this._cleanup=null}finally{this._finalizeDependencies(i,t,s),this.flags&=-9}}_handleAsyncResult(e){const t=++this._execId;e.then(s=>{if(t!==this._execId||this.flags&P.DISPOSED){if(typeof s=="function")try{s()}catch(i){this._handleExecutionError(i,I.EFFECT_CLEANUP_FAILED)}return}typeof s=="function"&&(this._cleanup=s)},s=>t===this._execId&&this._handleExecutionError(s))}_finalizeDependencies(e,t,s){if(this._nextLinks=null,e){if(t!==U){for(let i=0,o=t.length;i<o;i++){const r=t[i],c=r?.node._tempUnsub;c&&(c(),r&&(r.node._tempUnsub=void 0))}G.release(t)}}else if(this._releaseLinks(s),G.release(s),t!==U)for(let i=0,o=t.length;i<o;i++)t[i]&&(t[i].node._tempUnsub=void 0)}_releaseLinks(e){if(e!==U){for(let t=0,s=e.length;t<s;t++)e[t]?.unsub?.();G.release(e)}}_isDirty(){const e=this._links,t=B.current;B.current=null;try{for(let s=0,i=e.length;s<i;s++){const o=e[s],r=o.node;if("value"in r)try{r.value}catch{return A&&console.warn(`[atom-effect] Dependency #${r.id} threw during dirty check`),!0}if(r.version!==o.version)return!0}return!1}finally{B.current=t}}_execCleanup(){if(this._cleanup){try{this._cleanup()}catch(e){this._handleExecutionError(e,I.EFFECT_CLEANUP_FAILED)}this._cleanup=null}}_checkInfiniteLoops(){const e=ve;if(this._lastFlushEpoch!==e&&(this._lastFlushEpoch=e,this._executionsInEpoch=0),++this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),ht()>Q.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,this._history){const t=Date.now();this._history[this._historyPtr]=t,this._historyPtr=(this._historyPtr+1)%this._historyCapacity;const s=this._history[this._historyPtr]||0;if(s>0&&t-s<nt.ONE_SECOND_MS){const i=new Y(I.EFFECT_FREQUENCY_LIMIT_EXCEEDED);if(this.dispose(),this._handleExecutionError(i),A)throw i}}}get isDisposed(){return(this.flags&P.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&P.EXECUTING)!==0}_throwInfiniteLoopError(e){const t=new Y(`Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${Te}`);throw this.dispose(),console.error(t),t}_handleExecutionError(e,t=I.EFFECT_EXECUTION_FAILED){const s=Z(e,Y,t);if(console.error(s),this._onError)try{this._onError(s)}catch(i){console.error(Z(i,Y,I.CALLBACK_ERROR_IN_ERROR_HANDLER))}}_checkLoopWarnings(){if(this._trackModifications&&W.enabled){const e=this._currentEpoch,t=this._links;for(let s=0,i=t.length;s<i;s++){const o=t[s].node;o._modifiedAtEpoch===e&&W.warn(!0,`Effect is reading a dependency (${W.getDebugName(o)||"unknown"}) that it just modified. Infinite loop may occur`)}}}}function V(n,e={}){if(typeof n!="function")throw new Y(I.EFFECT_MUST_BE_FUNCTION);const t=new Et(n,e);return t.execute(),t}function de(n){if(typeof n!="function")throw new TypeError("Batch callback must be a function");M.startBatch();try{return n()}finally{M.endBatch()}}function gt(n){return n!==null&&typeof n=="object"&&"value"in n&&"subscribe"in n}function _e(n){if(!n)return"unknown";const e="jquery"in n?n[0]:n;if(!e)return"unknown";const t=e.id;if(t&&typeof t=="string")return`#${t}`;const s=e.tagName.toLowerCase(),i=e.classList;if(i&&i.length>0){let o=s;for(let r=0,c=i.length;r<c;r++){const l=i[r];l&&(o+=`.${l}`)}return o}return s}function Ye(n){let e=String(n??"");if(e=e.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,""),e=e.replace(/<\?[\s\S]*?\?>/g,"").replace(/<(script|iframe|object|embed|base|meta|form|applet|link|style|template|noscript|title)\b[^>]*>([\s\S]*?)<\/\1>/gim,"").replace(/<(script|iframe|object|embed|base|meta|form|applet|link|style|template|noscript|title)\b[^>]*\/?>/gim,""),(o=>o.replace(/&#x([0-9a-f]+);?/gi,(r,c)=>String.fromCharCode(parseInt(c,16))).replace(/&#([0-9]+);?/gi,(r,c)=>String.fromCharCode(parseInt(c,10))))(e).match(/(?:java|vb)script:|data:/i)){const o=r=>new RegExp(`${r.split("").map(c=>{const l=c.charCodeAt(0);return`(?:${c}|&#0*${l};?|&#x0*${l.toString(16)};?)`}).join("\\s*")}\\s*(?::|&colon;|&#x?0*((58)|(3a));?|%3a)`,"gi");e=e.replace(o("javascript"),"data-unsafe-protocol:").replace(o("vbscript"),"data-unsafe-protocol:")}else{const o=/((?:j\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t|v\s*b\s*s\s*c\s*r\s*i\s*p\s*t)\s*(?::|&colon;|&#x?0*((58)|(3a));?|%3a))/gim;e=e.replace(o,"data-unsafe-protocol:")}const i=/data\s*:\s*(?:text\/html|application\/javascript|text\/javascript|text\/vbscript)/gim;return e=e.replace(i,"data-unsafe-protocol:"),e=e.replace(/\bon\w+\s*=/gim,"data-unsafe-attr="),e=e.replace(/expression\s*\(/gim,"data-unsafe-css(").replace(/behavior\s*:/gim,"data-unsafe-css:"),e}function mt(n){const e=n.length;if(e===0)return new Int32Array(0);const t=new Int32Array(e),s=new Int32Array(e);let i=0;for(let r=0;r<e;r++){const c=n[r];if(c===void 0||c===-1)continue;const l=i>0?s[i-1]:void 0;if(i===0||l!==void 0&&(n[l]??-1)<c){t[r]=l??-1,s[i++]=r;continue}let _=0,g=i-1;for(;_<g;){const C=_+g>>>1,w=s[C];w!==void 0&&(n[w]??-1)<c?_=C+1:g=C}const v=s[_];v!==void 0&&c<(n[v]??Number.MAX_SAFE_INTEGER)&&(_>0&&(t[r]=s[_-1]??-1),s[_]=r)}const o=new Int32Array(i);if(i>0){let r=s[i-1];for(let c=i-1;c>=0&&r!==void 0&&r!==-1;c--)o[c]=r,r=t[r]}return o}function yt(){if(typeof window<"u"){const n=window.__ATOM_DEBUG__;if(typeof n=="boolean")return n}try{if(typeof process<"u"&&process.env?.NODE_ENV==="development")return!0}catch{}return!1}let K=yt();const b={get enabled(){return K},set enabled(n){K=n},log(n,...e){K&&console.log(`[atom-effect-jquery] ${n}:`,...e)},atomChanged(n,e,t){K&&console.log(`[atom-effect-jquery] Atom "${n??"anonymous"}" changed:`,e,"→",t)},domUpdated(n,e,t){K&&(console.log(`[atom-effect-jquery] DOM updated: ${_e(n)}.${e} =`,t),bt(n))},cleanup(n){K&&console.log(`[atom-effect-jquery] Cleanup: ${n}`)},warn(...n){K&&console.warn("[atom-effect-jquery]",...n)}},we=new WeakMap;function bt(n){const e="jquery"in n?n[0]:n;if(!e||!e.isConnected)return;let t=we.get(e);if(t||(t={},we.set(e,t)),t.timer&&clearTimeout(t.timer),t.cleanupTimer&&clearTimeout(t.cleanupTimer),!t.orgStyle){const i=e.style;t.orgStyle={outline:i.outline,outlineOffset:i.outlineOffset,transition:i.transition}}const s=e.style;s.outline="2px solid rgba(255, 68, 68, 0.8)",s.outlineOffset="1px",s.transition="none",t.timer=setTimeout(()=>{e.isConnected&&(s.transition="outline 0.5s ease-out",requestAnimationFrame(()=>{if(!e.isConnected)return;const i=t?.orgStyle;i&&(s.outline=i.outline,s.outlineOffset=i.outlineOffset),t.cleanupTimer=setTimeout(()=>{e.isConnected&&t?.orgStyle&&(s.transition=t.orgStyle.transition),we.delete(e)},500)}))},100)}const Ct=new WeakMap;function We(n,e={}){const t=Oe(n,e);return e.name&&Ct.set(t,{name:e.name}),t}Object.defineProperty(We,"debug",{get(){return b.enabled},set(n){b.enabled=n}});function It(){return new Promise(n=>setTimeout(n,0))}a.extend({atom:We,computed:Ge,effect:V,batch:de,untracked:Ve,isAtom:ke,isComputed:He,isReactive:n=>ke(n)||He(n),nextTick:It});const pe="_aes-bound";class St{records=new WeakMap;boundElements=new WeakSet;preservedNodes=new WeakSet;ignoredNodes=new WeakSet;keep(e){this.preservedNodes.add(e)}isKept(e){return this.preservedNodes.has(e)}markIgnored(e){this.ignoredNodes.add(e)}isIgnored(e){return this.ignoredNodes.has(e)}_getOrCreateRecord(e){let t=this.records.get(e);return t||(t={},this.records.set(e,t),this.boundElements.has(e)||(this.boundElements.add(e),e.classList.add(pe))),t}trackEffect(e,t){const s=this._getOrCreateRecord(e);s.effects||(s.effects=[]),s.effects.push(t)}trackCleanup(e,t){const s=this._getOrCreateRecord(e);s.cleanups||(s.cleanups=[]),s.cleanups.push(t)}hasBind(e){return this.boundElements.has(e)}cleanup(e){if(!this.boundElements.delete(e))return;const t=this.records.get(e);if(!t)return;this.records.delete(e),this.preservedNodes.delete(e),this.ignoredNodes.delete(e),e.classList.remove(pe),b.enabled&&b.cleanup(_e(e));const s=t.effects;if(s)for(let o=0,r=s.length;o<r;o++)try{s[o]?.dispose()}catch(c){b.warn("Effect dispose error:",c)}const i=t.cleanups;if(i)for(let o=0,r=i.length;o<r;o++)try{i[o]?.()}catch(c){b.warn("Cleanup error:",c)}}cleanupDescendants(e){const t=e.querySelectorAll(`.${pe}`);for(let s=0,i=t.length;s<i;s++){const o=t[s];o&&this.boundElements.has(o)?this.cleanup(o):o&&o.classList.remove(pe)}}cleanupTree(e){this.cleanupDescendants(e),this.cleanup(e)}}const y=new St;let ie=null;function Ke(n=document.body){ie||(ie=new MutationObserver(e=>{for(let t=0,s=e.length;t<s;t++){const i=e[t]?.removedNodes;if(!i)continue;const o=i.length;if(o!==0)for(let r=0;r<o;r++){const c=i[r];c.nodeType===1&&(c.isConnected||y.isKept(c)||y.isIgnored(c)||y.cleanupTree(c))}}}),ie.observe(n,{childList:!0,subtree:!0}))}function Dt(){ie?.disconnect(),ie=null}function k(n,e,t,s){gt(e)?y.trackEffect(n,V(()=>{const i=e.value;t(i),b.domUpdated(a(n),s,i)})):(t(e),b.domUpdated(a(n),s,e))}var S=(n=>(n[n.None=0]="None",n[n.Focused=1]="Focused",n[n.Composing=2]="Composing",n[n.SyncingToAtom=4]="SyncingToAtom",n[n.SyncingToDom=8]="SyncingToDom",n[n.Busy=14]="Busy",n))(S||{});function Ne(){return{timeoutId:null,flags:0}}function Je(n,e,t={}){const{debounce:s,event:i="input",parse:o=N=>N,format:r=N=>String(N??""),equal:c=Object.is}=t,l=Ne(),_=n[0],g=()=>{if(!(l.flags&S.Busy)){l.flags|=S.SyncingToAtom;try{const N=_.value,R=o(N);c(e.value,R)||(e.value=R)}finally{l.flags&=~S.SyncingToAtom}}},v=()=>{l.timeoutId&&(clearTimeout(l.timeoutId),l.timeoutId=null,g()),l.flags&=~S.Focused;const N=r(e.value);_.value!==N&&(_.value=N)},C=()=>{l.flags&S.Busy||(s?(l.timeoutId&&clearTimeout(l.timeoutId),l.timeoutId=setTimeout(g,s)):g())},w={compositionstart:()=>{l.flags|=S.Composing},compositionend:()=>{l.flags&=~S.Composing,g()},focus:()=>{l.flags|=S.Focused},blur:v,[i]:C,change:C};return n.on(w),{effect:()=>{const N=e.value,R=r(N),L=_.value;if(L!==R&&!(l.flags&S.Focused&&c(o(L),N))){l.flags|=S.SyncingToDom;try{if(l.flags&S.Focused){const{selectionStart:F,selectionEnd:$}=_;_.value=R;const j=R.length;_.setSelectionRange(Math.min(F??j,j),Math.min($??j,j))}else _.value=R;b.domUpdated(n,"val",R)}finally{l.flags&=~S.SyncingToDom}}},cleanup:()=>{n.off(w),l.timeoutId&&clearTimeout(l.timeoutId)}}}a.fn.atomText=function(n,e){return this.each(function(){const t=a(this);k(this,n,e?i=>t.text(e(i)):i=>t.text(String(i??"")),"text")})},a.fn.atomHtml=function(n){return this.each(function(){const e=a(this);k(this,n,t=>{const s=String(t??""),i=Ye(s);i!==s&&console.warn("[atomHtml] Unsafe content neutralized during sanitization."),e.html(i)},"html")})},a.fn.atomClass=function(n,e){return this.each(function(){const t=a(this);k(this,e,s=>t.toggleClass(n,!!s),`class.${n}`)})},a.fn.atomCss=function(n,e,t){return this.each(function(){const s=a(this);k(this,e,t?o=>s.css(n,`${o}${t}`):o=>s.css(n,o),`css.${n}`)})},a.fn.atomAttr=function(n,e){return this.each(function(){const t=a(this);k(this,e,s=>{if(s==null||s===!1){t.removeAttr(n);return}t.attr(n,s===!0?n:String(s))},`attr.${n}`)})},a.fn.atomProp=function(n,e){return this.each(function(){const t=a(this);k(this,e,s=>t.prop(n,s),`prop.${n}`)})},a.fn.atomShow=function(n){return this.each(function(){const e=a(this);k(this,n,t=>e.toggle(!!t),"show")})},a.fn.atomHide=function(n){return this.each(function(){const e=a(this);k(this,n,t=>e.toggle(!t),"hide")})},a.fn.atomVal=function(n,e={}){return this.each(function(){const t=this.tagName.toLowerCase();if(!["input","select","textarea"].includes(t)){console.warn(`[atomVal] Element <${t}> is not a valid input element.`);return}const{effect:s,cleanup:i}=Je(a(this),n,e);y.trackEffect(this,V(s)),y.trackCleanup(this,i)})},a.fn.atomChecked=function(n){return this.each(function(){const e=a(this),t=this,s=Ne(),i=()=>{if(s.flags&S.Busy)return;const r=t.checked;n.value!==r&&(n.value=r)};e.on("change",i),y.trackCleanup(this,()=>e.off("change",i));const o=V(()=>{s.flags|=S.SyncingToDom;const r=!!n.value;t.checked!==r&&(t.checked=r,b.domUpdated(e,"checked",r)),s.flags&=~S.SyncingToDom});y.trackEffect(this,o)})},a.fn.atomOn=function(n,e){return this.each(function(){const t=a(this);t.on(n,e),y.trackCleanup(this,()=>t.off(n,e))})},a.fn.atomUnbind=function(){return this.each(function(){y.cleanupTree(this)})};const Ze=Object.create(null);function vt(n){let e=Ze[n];return e||(e=n.includes("-")?n.replace(/-./g,t=>t[1].toUpperCase()):n,Ze[n]=e,e)}function Tt(n,e){const t=n.el;k(t,e,s=>{const i=typeof s=="string"?s:String(s??"");t.textContent!==i&&(t.textContent=i)},"text")}function Ot(n,e){const t=n.el;k(t,e,s=>{const i=String(s??""),o=Ye(i);o!==i&&console.warn("[atomBind] Unsafe content neutralized during sanitization.");const r=o;t.innerHTML!==r&&(t.innerHTML=r)},"html")}function kt(n,e){for(const t in e)k(n.el,e[t],s=>{n.el.classList.toggle(t,!!s)},`class.${t}`)}function wt(n,e){const t=n.el,s=t.style;for(const i in e){const o=e[i];if(o===void 0)continue;const r=vt(i);Array.isArray(o)?k(t,o[0],c=>{s[r]=`${c}${o[1]}`},`css.${i}`):k(t,o,c=>{s[r]=c},`css.${i}`)}}function Nt(n,e){const t=n.el;for(const s in e)k(t,e[s],i=>{if(i==null||i===!1){t.removeAttribute(s);return}const o=i===!0?s:String(i);t.getAttribute(s)!==o&&t.setAttribute(s,o)},`attr.${s}`)}function Rt(n,e){const t=n.el;for(const s in e)k(n.el,e[s],i=>{t[s]!==i&&(t[s]=i)},`prop.${s}`)}function At(n,e){const t=n.el;k(t,e,s=>{t.style.display=s?"":"none",b.enabled&&b.domUpdated(t,"show",s)},"show")}function xt(n,e){const t=n.el;k(t,e,s=>{t.style.display=s?"none":"",b.enabled&&b.domUpdated(t,"hide",s)},"hide")}function Lt(n,e){const t=n.el.tagName.toLowerCase();if(!["input","select","textarea"].includes(t)){console.warn(`[atomBind] Val binding used on non-input element <${t}>.`);return}const s=Array.isArray(e),{effect:i,cleanup:o}=Je(n.$el,s?e[0]:e,s?e[1]:{});y.trackEffect(n.el,V(i)),n.trackCleanup(o)}function Ut(n,e){const t=n.el,s=Ne(),i=()=>{if(s.flags&S.Busy)return;const r=t.checked;e.value!==r&&(e.value=r)};t.addEventListener("change",i),n.trackCleanup(()=>t.removeEventListener("change",i));const o=V(()=>{s.flags|=S.SyncingToDom;const r=!!e.value;t.checked!==r&&(t.checked=r,b.enabled&&b.domUpdated(t,"checked",r)),s.flags&=~S.SyncingToDom});y.trackEffect(t,o)}function Ft(n,e){for(const t in e){const s=e[t];if(typeof s!="function")continue;const i=o=>{de(()=>s.call(n.el,a.Event(o.type,{originalEvent:o})))};n.el.addEventListener(t,i),n.trackCleanup(()=>n.el.removeEventListener(t,i))}}a.fn.atomBind=function(n){return this.each(function(){const e=this;let t=null;const s={get $el(){return t||(t=a(e)),t},el:e,trackCleanup:i=>y.trackCleanup(e,i)};n.text!==void 0&&Tt(s,n.text),n.html!==void 0&&Ot(s,n.html),n.class&&kt(s,n.class),n.css&&wt(s,n.css),n.attr&&Nt(s,n.attr),n.prop&&Rt(s,n.prop),n.show!==void 0&&At(s,n.show),n.hide!==void 0&&xt(s,n.hide),n.val!==void 0&&Lt(s,n.val),n.checked!==void 0&&Ut(s,n.checked),n.on&&Ft(s,n.on)})},a.fn.atomList=function(n,e){const{key:t,render:s,bind:i,update:o,onAdd:r,onRemove:c,empty:l}=e,_=typeof t=="function"?t:(g,v)=>g[t];return this.each(function(){const g=a(this),v=_e(this),C=new Map,w=new Set;let x=[],H=null;const N=V(()=>{const R=n.value,L=R.length;if(L===0?l&&!H&&(H=a(l).appendTo(g)):H&&(H.remove(),H=null),L===0&&C.size===0){x=[];return}b.log("list",`${v} updating with ${L} items`);const F=new Map,$=x.length;for(let u=0;u<$;u++)F.set(x[u],u);const j=new Array(L),ee=new Set,ye=new Int32Array(L);for(let u=0;u<L;u++){const E=R[u],f=_(E,u);ee.has(f)&&console.warn(`[atomList] Duplicate key "${f}" at index ${u}.`),j[u]=f,ee.add(f),ye[u]=F.get(f)??-1}if(C.size>0)for(const[u,E]of C){if(ee.has(u)||w.has(u))continue;const f=()=>{E.$el.remove(),E.$el[0]&&y.cleanup(E.$el[0]),w.delete(u),b.log("list",`${v} removed item:`,u)};if(C.delete(u),w.add(u),c){const p=c(E.$el);p instanceof Promise?p.then(f):f()}else f()}if(L===0){x=[];return}const oe=mt(ye);let re=oe.length-1,h=null;for(let u=L-1;u>=0;u--){const E=j[u],f=R[u],p=C.get(E);if(p){const T=p.item;p.item=f;const m=p.$el[0];if(!m)continue;if(o)o(p.$el,f,u),b.domUpdated(p.$el,"list.update",f);else if(T!==f){let D=!0;if(typeof T=="object"&&T!==null&&typeof f=="object"&&f!==null){D=!1;let z=0;const be=T,tt=f;for(const te in be){if(be[te]!==tt[te]){D=!0;break}z++}if(!D){let te=0;for(const jt in tt)if(te++,te>z){D=!0;break}z!==te&&(D=!0)}}if(D){const z=a(s(f,u)),be=h===m;p.$el.replaceWith(z),p.$el=z,i&&i(z,f,u),b.domUpdated(z,"list.render",f),be&&(h=z[0]||null)}}if(re>=0&&oe[re]===u)re--;else{const D=p.$el[0];h?.isConnected?h!==D&&p.$el.insertBefore(h):p.$el.appendTo(g)}h=p.$el[0]||null}else{const T=s(f,u),m=a(T);C.set(E,{$el:m,item:f}),h?.isConnected?m.insertBefore(h):m.appendTo(g),i&&i(m,f,u),r&&r(m),b.domUpdated(m,"list.add",f),h=m[0]||null}}x=j});y.trackEffect(this,N),y.trackCleanup(this,()=>{C.clear(),w.clear(),x=[],H?.remove()})})};const Ee=new WeakMap;a.fn.atomMount=function(n,e={}){return this.each(function(){const t=b.enabled,s=t?_e(this):"",i=Ee.get(this);i&&(t&&b.log("mount",`${s} unmounting existing component`),i()),t&&b.log("mount",`${s} mounting component`);let o;try{o=n(a(this),e)}catch(c){console.error("[atom-effect-jquery] Mount error:",c);return}const r=()=>{if(Ee.delete(this)){if(t&&b.log("mount",`${s} full cleanup`),typeof o=="function")try{o()}catch(c){console.error("[atom-effect-jquery] Cleanup error:",c)}y.cleanupTree(this)}};Ee.set(this,r),y.trackCleanup(this,r)})},a.fn.atomUnmount=function(){return this.each(function(){const n=Ee.get(this);n&&n()})};const ge="[$.route]";function Pt(n){const{target:e,default:t,routes:s,notFound:i,autoBindLinks:o=!1,activeClass:r="active",beforeTransition:c,afterTransition:l}=n;let _=!1,g=null,v=window.location.hash;const C=[],w=new Set,x=a(e),H=()=>{const h=window.location.hash,u=h.indexOf("?");return(u===-1?h.substring(1):h.substring(1,u))||t},N=h=>{const u=h.indexOf("?");if(u===-1)return{};const E={},f=h.length;let p=u+1;const T=m=>{try{return decodeURIComponent(m)}catch{return console.warn(`${ge} Malformed URI component: ${m}`),m}};for(;p<f;){let m=h.indexOf("&",p);if(m===-1&&(m=f),m>p){const D=h.indexOf("=",p);D!==-1&&D<m?E[T(h.substring(p,D))]=T(h.substring(D+1,m)):E[T(h.substring(p,m))]=""}p=m+1}return E},R=h=>{let u=s[h];return!u&&i&&(u=s[i]),u||(console.warn(`${ge} Route "${h}" not found and no notFound route configured`),null)},L=h=>{const u=document.querySelector(h);if(!u?.content)return console.warn(`${ge} Template "${h}" not found`),!1;const E=u.content.cloneNode(!0);return x.append(E),!0},F=Oe(H()),$=h=>{if(_)return;const u=x[0];if(!u){console.warn(`${ge} Target element "${e}" not found`);return}const E=R(h);if(!E)return;const f=N(window.location.hash);c&&c(g||h,h),x.empty();let p=f;if(E.onEnter){const T=E.onEnter(f);T!==void 0&&(p={...f,...T})}E.render?E.render(u,h,p):E.template&&L(E.template),l&&l(g||h,h),g=h},j=h=>{if(_)return;const u=F.value,E=s[u];E?.onLeave&&E.onLeave()===!1||(v=`#${h}`,window.location.hash=v,F.value=h)},ee=()=>{if(_)return;const h=window.location.hash;if(h===v)return;const u=H(),E=F.value;if(E!==u){const f=s[E];if(f?.onLeave&&f.onLeave()===!1){window.location.hash=v;return}F.value=u}else $(u);v=h},ye=()=>{if(!o)return;const h=f=>{f.preventDefault();const p=a(f.currentTarget).data("route");j(p)};a(document).on("click","[data-route]",h),C.push(()=>{a(document).off("click","[data-route]",h)});const u=f=>{if(w.has(f))return;const p=a(f),T=p.data("route");w.add(f);const m=V(()=>{const D=F.value===T;p.toggleClass(r,D),D?p.attr("aria-current","page"):p.removeAttr("aria-current")});y.trackEffect(f,m),y.trackCleanup(f,()=>{w.delete(f)})};a("[data-route]").each(function(){u(this)});const E=new MutationObserver(f=>{for(const p of f)p.type==="childList"&&p.addedNodes.forEach(T=>{if(T.nodeType===1){const m=T;m.matches?.("[data-route]")&&u(m),m.querySelectorAll&&m.querySelectorAll("[data-route]").forEach(D=>u(D))}})});E.observe(document.body,{childList:!0,subtree:!0}),C.push(()=>E.disconnect())},oe=()=>{_||(_=!0,C.forEach(h=>h()),C.length=0,w.forEach(h=>y.cleanup(h)),w.clear())};window.addEventListener("hashchange",ee),C.push(()=>window.removeEventListener("hashchange",ee));const re=V(()=>{$(F.value)});return C.push(()=>re.dispose()),ye(),x[0]&&y.trackCleanup(x[0],oe),{currentRoute:F,navigate:j,destroy:oe}}a.extend({route:Pt});const me=new WeakMap;let $e=!1;const et=n=>{let e=me.get(n);return e||(e=function(...t){return de(()=>n.apply(this,t))},me.set(n,e)),e};function Re(){if($e)return;$e=!0;const n=a.fn.on,e=a.fn.off,t=a.fn.remove,s=a.fn.empty,i=a.fn.detach;a.fn.remove=function(o){const r=o?this.filter(o):this;for(let c=0,l=r.length;c<l;c++){const _=r[c];_&&(y.cleanupTree(_),y.markIgnored(_))}return t.call(this,o)},a.fn.empty=function(){for(let o=0,r=this.length;o<r;o++){const c=this[o];c&&y.cleanupDescendants(c)}return s.call(this)},a.fn.detach=function(o){const r=o?this.filter(o):this;for(let c=0,l=r.length;c<l;c++){const _=r[c];_&&y.keep(_)}return i.call(this,o)},a.fn.on=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,l={};for(const _ in c){const g=c[_];g&&(l[_]=et(g))}o[0]=l}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=et(o[c]);break}return n.apply(this,o)},a.fn.off=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,l={};for(const _ in c){const g=c[_];g&&(l[_]=me.get(g)||g)}o[0]=l}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=me.get(o[c])||o[c];break}return e.apply(this,o)}}const Mt=Re;Re(),a(()=>{Ke(document.body)}),O.default=a,O.atom=Oe,O.batch=de,O.computed=Ge,O.disableAutoCleanup=Dt,O.effect=V,O.enableAutoCleanup=Ke,O.enablejQueryBatching=Mt,O.enablejQueryOverrides=Re,O.registry=y,O.untracked=Ve,Object.defineProperties(O,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
2
  //# sourceMappingURL=atom-effect-jquery.min.js.map