@but212/atom-effect-jquery 0.21.0 → 0.21.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 +1 -1
- 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 +608 -630
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ npm install @but212/atom-effect-jquery jquery
|
|
|
17
17
|
### CDN
|
|
18
18
|
|
|
19
19
|
```html
|
|
20
|
-
<script src="https://cdn.jsdelivr.net/npm/@but212/atom-effect-jquery@0.21.
|
|
20
|
+
<script src="https://cdn.jsdelivr.net/npm/@but212/atom-effect-jquery@0.21.2"></script>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
### Usage
|
|
@@ -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";var dn=Object.defineProperty;var _n=(y,u,z)=>u in y?dn(y,u,{enumerable:!0,configurable:!0,writable:!0,value:z}):y[u]=z;var dt=(y,u,z)=>_n(y,typeof u!="symbol"?u+"":u,z);const z={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},F={DISPOSED:1,EXECUTING:8},Vt={DISPOSED:1,IS_COMPUTED:2,DIRTY:8,IDLE:16,PENDING:32,RESOLVED:64,REJECTED:128,RECOMPUTING:256,HAS_ERROR:512},V={DISPOSED:1,SYNC:8,NOTIFICATION_SCHEDULED:16},Y={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},De={WARN_INFINITE_LOOP:!0},At=1073741823,x=typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"||typeof __DEV__<"u"&&!!__DEV__,Oe=Object.freeze([]);class nt extends Error{constructor(t,n=null,s=!0){super(t),this.cause=n,this.recoverable=s,this.name="AtomError"}}class q extends nt{constructor(t,n=null){super(t,n,!0),this.name="ComputedError"}}class K extends nt{constructor(t,n=null){super(t,n,!1),this.name="EffectError"}}class _t extends nt{constructor(t,n=null){super(t,n,!1),this.name="SchedulerError"}}const qt=Symbol("AtomEffect.DebugName"),Ae=Symbol("AtomEffect.Id"),Qt=Symbol("AtomEffect.Type"),Lt=Symbol("AtomEffect.NoDefaultValue"),Le=e=>"dependencies"in e&&Array.isArray(e.dependencies);function Xt(e,t,n){if(e===t)throw new q("Circular dependency detected: The computation refers to itself explicitly or implicitly.");if(!n.has(e.id)&&(n.add(e.id),Le(e))){const s=e.dependencies;for(let i=0;i<s.length;i++){const o=s[i];o&&Xt(o,t,n)}}}const J={enabled:x,warnInfiniteLoop:De.WARN_INFINITE_LOOP,warn(e,t){x&&this.enabled&&e&&console.warn(`[Atom Effect] ${t}`)},checkCircular(e,t){if(e===t)throw new q("Direct circular dependency detected");x&&this.enabled&&Xt(e,t,new Set)},attachDebugInfo(e,t,n){if(!x||!this.enabled)return;const s=e;s[qt]=`${t}_${n}`,s[Ae]=n,s[Qt]=t},getDebugName:e=>e?.[qt],getDebugType:e=>e?.[Qt]};let Ne=1;const xe=()=>Ne++;function Gt(e,t,n){if(typeof t=="function"){const i=t;for(let o=0,r=n.length;o<r;o++){const c=n[o];if(c&&c.fn===i)return}n.push(new Nt(i,void 0));return}if("addDependency"in t){t.addDependency(e);return}const s=t;for(let i=0,o=n.length;i<o;i++){const r=n[i];if(r&&r.sub===s)return}n.push(new Nt(void 0,s))}function Wt(e,t,n){const s=new Map;for(let i=0,o=t.length;i<o;i++){const r=t[i];r?.unsub&&s.set(r.node,r.unsub)}for(let i=0,o=e.length;i<o;i++){const r=e[i];if(!r)continue;const c=r.node,a=s.get(c);a!==void 0?(r.unsub=a,s.delete(c)):(J.checkCircular(c,n),r.unsub=c.subscribe(n))}for(const i of s.values())i()}class pt{constructor(t,n,s=void 0){this.node=t,this.version=n,this.unsub=s}}class Nt{constructor(t,n){this.fn=t,this.sub=n}}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:(e,t)=>`Maximum flush iterations (${e}) exceeded. ${t} 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 st(e,t,n){if(e instanceof nt)return e;const s=e instanceof Error,i=s?e.message:String(e),o=s?e:void 0,r=`${s?e.constructor.name:"Unexpected error"} (${n}): ${i}`;return new t(r,o)}class Yt{constructor(){this.flags=0,this.version=0,this._lastSeenEpoch=-1,this.id=xe()&At}}class Kt extends Yt{subscribe(t){const n=typeof t=="function";if(!n&&(!t||typeof t.execute!="function"))throw st(new TypeError("Invalid subscriber"),nt,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&&(n?c.fn===t:c.sub===t))return x&&console.warn("Duplicate subscription ignored."),()=>{}}const i=new Nt(n?t:void 0,n?void 0:t);return s.push(i),()=>this._unsubscribe(i)}_unsubscribe(t){const n=this._subscribers,s=n.indexOf(t);if(s===-1)return;const i=n.pop();s<n.length&&i&&(n[s]=i)}subscriberCount(){return this._subscribers.length}_notifySubscribers(t,n){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(t,n):r.sub&&r.sub.execute()}catch(c){this._handleNotifyError(c)}}}_handleNotifyError(t){console.error(st(t,nt,I.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED))}}let xt=0;const Rt=()=>(xt=xt+1&At||1,xt),Ut=e=>e+1&At;let Ft=0,Et=!1,Jt=0;const Re=()=>Jt;function Zt(){return Et?(x&&console.warn("startFlush() called during flush - ignored"),!1):(Et=!0,Jt=Rt(),Ft=0,!0)}const $t=()=>{Et=!1},Ue=()=>Et?++Ft:0;class Fe{constructor(){this._queueBuffer=[[],[]],this._bufferIndex=0,this._size=0,this._epoch=0,this._isProcessing=!1,this._isBatching=!1,this._isFlushingSync=!1,this._batchDepth=0,this._batchQueue=[],this._batchQueueSize=0,this._maxFlushIterations=Y.MAX_FLUSH_ITERATIONS,this.onOverflow=null,this._boundRunLoop=this._runLoop.bind(this)}get phase(){return this._isProcessing||this._isFlushingSync?2:this._isBatching?1:0}get queueSize(){return this._size}get isBatching(){return this._isBatching}schedule(t){if(x&&typeof t!="function")throw new _t("Scheduler callback must be a function");if(t._nextEpoch!==this._epoch){if(t._nextEpoch=this._epoch,this._isBatching||this._isFlushingSync){this._batchQueue[this._batchQueueSize++]=t;return}this._queueBuffer[this._bufferIndex][this._size++]=t,this._isProcessing||this._flush()}}_flush(){this._isProcessing||this._size===0||(this._isProcessing=!0,queueMicrotask(this._boundRunLoop))}_runLoop(){try{if(this._size===0)return;const t=Zt();this._drainQueue(),t&&$t()}finally{this._isProcessing=!1,this._size>0&&!this._isBatching&&this._flush()}}_flushSync(){this._isFlushingSync=!0;const t=Zt();try{this._mergeBatchQueue(),this._drainQueue()}finally{this._isFlushingSync=!1,t&&$t()}}_mergeBatchQueue(){if(this._batchQueueSize===0)return;const t=++this._epoch,n=this._batchQueue,s=this._queueBuffer[this._bufferIndex];let i=this._size;for(let o=0;o<this._batchQueueSize;o++){const r=n[o];r._nextEpoch!==t&&(r._nextEpoch=t,s[i++]=r)}this._size=i,this._batchQueueSize=0,n.length>Y.BATCH_QUEUE_SHRINK_THRESHOLD&&(n.length=0)}_drainQueue(){let t=0;for(;this._size>0;){if(++t>this._maxFlushIterations){this._handleFlushOverflow();return}this._processQueue(),this._mergeBatchQueue()}}_processQueue(){const t=this._bufferIndex,n=this._queueBuffer[t],s=this._size;this._bufferIndex=t^1,this._size=0,this._epoch++;for(let i=0;i<s;i++)try{n[i]()}catch(o){console.error(new _t("Error occurred during scheduler execution",o))}n.length=0}_handleFlushOverflow(){const t=this._size+this._batchQueueSize;if(console.error(new _t(I.SCHEDULER_FLUSH_OVERFLOW(this._maxFlushIterations,t))),this._size=0,this._queueBuffer[this._bufferIndex].length=0,this._batchQueueSize=0,this.onOverflow)try{this.onOverflow(t)}catch{}}startBatch(){this._batchDepth++,this._isBatching=!0}endBatch(){if(this._batchDepth===0){x&&console.warn("endBatch() called without matching startBatch(). Ignoring.");return}--this._batchDepth===0&&(this._flushSync(),this._isBatching=!1)}setMaxFlushIterations(t){if(t<Y.MIN_FLUSH_ITERATIONS)throw new _t(`Max flush iterations must be at least ${Y.MIN_FLUSH_ITERATIONS}`);this._maxFlushIterations=t}}const ct=new Fe,Pt=Symbol.for("atom-effect/atom"),te=Symbol.for("atom-effect/computed"),Pe=Symbol.for("atom-effect/effect"),j={current:null,run(e,t){const n=this.current;this.current=e;try{return t()}finally{this.current=n}}};function ee(e){const t=j.current;if(t===null)return e();j.current=null;try{return e()}finally{j.current=t}}var ne,se;class Me extends(se=Kt,ne=Pt,se){constructor(t,n){super(),this._pendingOldValue=void 0,this._notifyTask=void 0,this._subscribers=[],this[ne]=!0,this._value=t,n&&(this.flags|=V.SYNC),J.attachDebugInfo(this,"atom",this.id)}get value(){const t=j.current;return t&&Gt(this,t,this._subscribers),this._value}set value(t){const n=this._value;if(Object.is(n,t))return;this._value=t,this.version=Ut(this.version);const s=this.flags;if(!(this._subscribers.length===0||s&V.NOTIFICATION_SCHEDULED)){if(this._pendingOldValue=n,this.flags=s|V.NOTIFICATION_SCHEDULED,s&V.SYNC&&!ct.isBatching){this._flushNotifications();return}this._notifyTask||(this._notifyTask=()=>this._flushNotifications()),ct.schedule(this._notifyTask)}}_flushNotifications(){const t=this.flags;if(!(t&V.NOTIFICATION_SCHEDULED)||t&V.DISPOSED)return;const n=this._pendingOldValue;this._pendingOldValue=void 0,this.flags&=-17,this._notifySubscribers(this._value,n)}peek(){return this._value}dispose(){this.flags&V.DISPOSED||(this._subscribers.length=0,this.flags|=V.DISPOSED,this._value=void 0,this._pendingOldValue=void 0,this._notifyTask=void 0)}}function Mt(e,t={}){return new Me(e,t.sync??!1)}class je{constructor(t=50,n=256,s=!1){this.limit=t,this.capacity=n,this.pool=[],this.stats=null,this.stats=x||s?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(t,n){if(!(n&&t===n)){if(t.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(t)){this.stats&&this.stats.rejected.frozen++;return}t.length=0,this.pool.push(t),this.stats&&this.stats.released++}}getStats(){if(!this.stats)return null;const{acquired:t,released:n,rejected:s}=this.stats,i=t-n-(s.frozen+s.tooLarge+s.poolFull);return{acquired:t,released:n,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 P=Object.freeze([]),Q=new je;function ie(e){return e!==null&&typeof e=="object"&&Pt in e}function oe(e){return e!==null&&typeof e=="object"&&te in e}function re(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var ce,ue,ae;const Be=3,ze=Number.MAX_SAFE_INTEGER-1,{IDLE:gt,DIRTY:it,PENDING:mt,RESOLVED:Z,REJECTED:ut,HAS_ERROR:yt,RECOMPUTING:at,DISPOSED:jt,IS_COMPUTED:He}=Vt;function Ve(e){return e&Z?z.RESOLVED:e&mt?z.PENDING:e&ut?z.REJECTED:z.IDLE}class qe extends(ae=Kt,ue=Pt,ce=te,ae){constructor(t,n={}){if(typeof t!="function")throw new q(I.COMPUTED_MUST_BE_FUNCTION);super(),this[ue]=!0,this[ce]=!0,this._error=null,this._promiseId=0,this._subscribers=[],this._links=P,this._asyncStartAggregateVersion=0,this._asyncRetryCount=0,this._trackEpoch=-1,this._trackLinks=P,this._trackCount=0,this._value=void 0,this.flags=He|it|gt,this._equal=n.equal??Object.is,this._fn=t,this._defaultValue="defaultValue"in n?n.defaultValue:Lt,this._onError=n.onError??null;const s=n.maxAsyncRetries;if(this._maxAsyncRetries=s!=null&&s>=0?s:Be,J.attachDebugInfo(this,"computed",this.id),n.lazy===!1)try{this._recompute()}catch{}}_track(){const t=j.current;t&&Gt(this,t,this._subscribers)}get value(){this._track();const t=this.flags;if((t&(Z|it|gt))===Z)return this._value;if(t&jt)throw new q(I.COMPUTED_DISPOSED);if(t&at){if(this._defaultValue!==Lt)return this._defaultValue;throw new q(I.COMPUTED_CIRCULAR_DEPENDENCY)}if(t&(it|gt)&&(this._recompute(),this.flags&Z))return this._value;const n=this._defaultValue,s=n!==Lt;if(this.flags&mt){if(s)return n;throw new q(I.COMPUTED_ASYNC_PENDING_NO_DEFAULT)}if(this.flags&ut){if(this._error?.recoverable&&s)return n;throw this._error}return this._value}peek(){return this._value}get state(){return this._track(),Ve(this.flags)}get hasError(){if(this._track(),this.flags&(ut|yt))return!0;const t=this._links;for(let n=0,s=t.length;n<s;n++){const i=t[n]?.node;if(i&&i.flags&yt)return!0}return!1}get isValid(){return!this.hasError}get errors(){if(this._track(),!this.hasError)return Oe;const t=[];this._error&&t.push(this._error);const n=this._links;for(let s=0,i=n.length;s<i;s++){const o=n[s].node;if(o.flags&yt){const r=o;if(r.errors){const c=r.errors;for(let a=0;a<c.length;a++){const h=c[a];h&&t.indexOf(h)===-1&&t.push(h)}}}}return Object.freeze(t)}get lastError(){return this._track(),this._error}get isPending(){return this._track(),(this.flags&mt)!==0}get isResolved(){return this._track(),(this.flags&Z)!==0}invalidate(){this._markDirty()}dispose(){if(this.flags&jt)return;const t=this._links;if(t!==P){for(let n=0,s=t.length;n<s;n++)t[n].unsub?.();Q.release(t),this._links=P}this._subscribers.length=0,this.flags=jt|it|gt,this._error=null,this._value=void 0}addDependency(t){if(t._lastSeenEpoch!==this._trackEpoch){if(t._lastSeenEpoch=this._trackEpoch,this._trackCount<this._trackLinks.length){const n=this._trackLinks[this._trackCount];n.node=t,n.version=t.version}else this._trackLinks.push(new pt(t,t.version));this._trackCount++}}_recompute(){if(this.flags&at)return;this.flags|=at;const t=this._links;this._trackEpoch=Rt(),this._trackLinks=Q.acquire(),this._trackCount=0;let n=!1;try{const s=j.run(this,this._fn);this._trackLinks.length=this._trackCount,Wt(this._trackLinks,t,this),this._links=this._trackLinks,n=!0,re(s)?this._handleAsyncComputation(s):this._finalizeResolution(s)}catch(s){if(!n)try{this._trackLinks.length=this._trackCount,Wt(this._trackLinks,t,this),this._links=this._trackLinks,n=!0}catch(i){x&&console.warn("[atom-effect] _commitDeps failed during error recovery:",i)}this._handleError(s,I.COMPUTED_COMPUTATION_FAILED,!0)}finally{n&&t!==P?Q.release(t):n||Q.release(this._trackLinks),this._trackEpoch=-1,this._trackLinks=P,this._trackCount=0,this.flags&=~at}}_handleAsyncComputation(t){this.flags=(this.flags|mt)&-217,this._notifySubscribers(void 0,void 0),this._asyncStartAggregateVersion=this._captureVersionSnapshot(),this._asyncRetryCount=0,this._promiseId=(this._promiseId+1)%ze;const n=this._promiseId;t.then(s=>{if(n===this._promiseId){if(this._captureVersionSnapshot()!==this._asyncStartAggregateVersion)return this._asyncRetryCount++<this._maxAsyncRetries?this._markDirty():this._handleError(new q(`Async drift threshold exceeded after ${this._maxAsyncRetries} retries.`),I.COMPUTED_ASYNC_COMPUTATION_FAILED);this._finalizeResolution(s),this._notifySubscribers(s,void 0)}},s=>n===this._promiseId&&this._handleError(s,I.COMPUTED_ASYNC_COMPUTATION_FAILED))}_captureVersionSnapshot(){let t=0;const n=this._links;for(let s=0,i=n.length;s<i;s++)t=(t<<5)-t+n[s].node.version|0;return t}_handleError(t,n,s=!1){const i=st(t,q,n);if(!s&&!(this.flags&ut)&&(this.version=Ut(this.version)),this._error=i,this.flags=this.flags&-121|ut|yt,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(t){(!(this.flags&Z)||!this._equal(this._value,t))&&(this.version=Ut(this.version)),this._value=t,this._error=null,this.flags=(this.flags|Z)&-697}execute(){this._markDirty()}_markDirty(){this.flags&(at|it)||(this.flags|=it,this._notifySubscribers(void 0,void 0))}}function Bt(e,t={}){return new qe(e,t)}var le,he;class Qe extends(he=Yt,le=Pe,he){constructor(t,n={}){super(),this[le]=!0,this._cleanup=null,this._links=P,this._nextLinks=null,this._prevLinks=null,this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._executionCount=0,this._windowStart=0,this._windowCount=0,this._execId=0,this._fn=t,this._onError=n.onError??null,this._sync=n.sync??!1,this._maxExecutions=n.maxExecutionsPerSecond??Y.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=n.maxExecutionsPerFlush??Y.MAX_EXECUTIONS_PER_EFFECT,this._trackModifications=n.trackModifications??!1,J.attachDebugInfo(this,"effect",this.id)}run(){if(this.flags&F.DISPOSED)throw new K(I.EFFECT_DISPOSED);this.execute(!0)}dispose(){this.flags&F.DISPOSED||(this.flags|=F.DISPOSED,this._execCleanup(),this._unsubLinks(this._links),this._links!==P&&Q.release(this._links),this._links=P,this._executeTask=void 0)}addDependency(t){if(!(this.flags&F.EXECUTING)||t._lastSeenEpoch===this._currentEpoch)return;t._lastSeenEpoch=this._currentEpoch;const n=this._nextLinks,s=this._prevLinks;if(s)for(let i=0,o=s.length;i<o;i++){const r=s[i];if(r&&r.node===t&&r.unsub){n.push(new pt(t,t.version,r.unsub)),r.unsub=void 0;return}}try{const i=t.subscribe(()=>{if(this._trackModifications&&this.flags&F.EXECUTING&&(t._modifiedAtEpoch=this._currentEpoch),this._sync)return this.execute();this._executeTask??=()=>this.execute(),ct.schedule(this._executeTask)});n.push(new pt(t,t.version,i))}catch(i){const o=st(i,K,I.EFFECT_EXECUTION_FAILED);if(console.error(o),this._onError)try{this._onError(o)}catch{}n.push(new pt(t,t.version,void 0))}}execute(t=!1){if(this.flags&(F.DISPOSED|F.EXECUTING)||!t&&this._links.length>0&&!this._isDirty())return;this._checkInfiniteLoops(),this.flags|=F.EXECUTING,this._execCleanup();const n=this._links;this._prevLinks=n!==P?n:null;const s=Q.acquire();this._nextLinks=s,this._currentEpoch=Rt();let i=!1;try{const o=j.run(this,this._fn);if(this._links=s,i=!0,this._trackModifications&&J.enabled){const r=this._currentEpoch;for(let c=0,a=s.length;c<a;c++){const h=s[c].node;h._modifiedAtEpoch===r&&J.warn(!0,`Effect is reading a dependency (${J.getDebugName(h)||"unknown"}) that it just modified. Infinite loop may occur`)}}re(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,n,s),this.flags&=-9}}_handleAsyncResult(t){const n=++this._execId;t.then(s=>{if(n!==this._execId||this.flags&F.DISPOSED){if(typeof s=="function")try{s()}catch(i){this._handleExecutionError(i,I.EFFECT_CLEANUP_FAILED)}return}typeof s=="function"&&(this._cleanup=s)},s=>n===this._execId&&this._handleExecutionError(s))}_finalizeDependencies(t,n,s){if(this._nextLinks=null,t){const i=this._prevLinks;if(i)for(let o=0,r=i.length;o<r;o++)i[o]?.unsub?.();n!==P&&Q.release(n)}else this._unsubLinks(s),Q.release(s);this._prevLinks=null}_unsubLinks(t){for(let n=0,s=t.length;n<s;n++)t[n]?.unsub?.()}_isDirty(){const t=this._links,n=j.current;j.current=null;try{for(let s=0,i=t.length;s<i;s++){const o=t[s],r=o.node;if(r.flags&Vt.IS_COMPUTED)try{r.value}catch{return x&&console.warn(`[atom-effect] Dependency #${r.id} threw during dirty check`),!0}if(r.version!==o.version)return!0}return!1}finally{j.current=n}}_execCleanup(){if(this._cleanup){try{this._cleanup()}catch(t){this._handleExecutionError(t,I.EFFECT_CLEANUP_FAILED)}this._cleanup=null}}_checkInfiniteLoops(){const t=Re();if(this._lastFlushEpoch!==t&&(this._lastFlushEpoch=t,this._executionsInEpoch=0),++this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),Ue()>Y.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++,x&&Number.isFinite(this._maxExecutions)){const n=Date.now();if(n-this._windowStart>=1e3)this._windowStart=n,this._windowCount=1;else if(++this._windowCount>this._maxExecutions){const s=new K(I.EFFECT_FREQUENCY_LIMIT_EXCEEDED);throw this.dispose(),this._handleExecutionError(s),s}}}get isDisposed(){return(this.flags&F.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&F.EXECUTING)!==0}_throwInfiniteLoopError(t){const n=new K(`Infinite loop detected (${t}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${Ft}`);throw this.dispose(),console.error(n),n}_handleExecutionError(t,n=I.EFFECT_EXECUTION_FAILED){const s=st(t,K,n);if(console.error(s),this._onError)try{this._onError(s)}catch(i){console.error(st(i,K,I.CALLBACK_ERROR_IN_ERROR_HANDLER))}}}function X(e,t={}){if(typeof e!="function")throw new K(I.EFFECT_MUST_BE_FUNCTION);const n=new Qe(e,t);return n.execute(),n}function bt(e){if(typeof e!="function")throw new TypeError("Batch callback must be a function");ct.startBatch();try{return e()}finally{ct.endBatch()}}function fe(e){return ie(e)||oe(e)}function Ct(e){if(!e)return"unknown";const t="jquery"in e?e[0]:e;if(!t)return"unknown";const n=t.id;if(n&&typeof n=="string")return`#${n}`;const s=t.tagName.toLowerCase(),i=t.classList;if(i&&i.length>0){let o=s;for(let r=0,c=i.length;r<c;r++){const a=i[r];a&&(o+=`.${a}`)}return o}return s}function It(e){let t=String(e??"");t=t.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,""),t=t.replace(/<\?[\s\S]*?\?>/g,"");const n=/(<(script|iframe|object|embed|base|meta|applet|noscript)\b[^>]*>([\s\S]*?)<\/\2>|<(script|iframe|object|embed|base|meta|applet|noscript)\b[^>]*\/?>)/gim;let s;do s=t,t=t.replace(n,"");while(t!==s);const i=/(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*:/gi;t=t.replace(i,"data-unsafe-protocol:");const o=/data\s*:\s*(?:text\/html|application\/javascript|text\/javascript|text\/vbscript|text\/xml|application\/xhtml\+xml)/gim;return t=t.replace(o,"data-unsafe-protocol:"),t=t.replace(/\bon\w+\s*=/gim,"data-unsafe-attr="),t=t.replace(/expression\s*\(/gim,"data-unsafe-css(").replace(/behavior\s*:/gim,"data-unsafe-css:"),t}const Xe=new Set(["href","src","action","formaction","xlink:href","data","poster","srcset","background","cite","longdesc","profile","usemap","classid","codebase"]),Ge=/^\s*(?:javascript|vbscript)\s*:/i;function We(e,t){return Xe.has(e.toLowerCase())?Ge.test(t):!1}function Ye(e){return e.toLowerCase().includes("url(")?/url\s*\(\s*(?:["']?\s*)?(?:javascript|vbscript)\s*:/i.test(e):!1}function Ke(e,t){if(e===t)return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;const i=t;for(let o=0;o<n.length;o++){const r=n[o];if(e[r]!==i[r])return!1}return!0}function Je(e){const t=e.length;if(t===0)return new Int32Array(0);const n=new Int32Array(t),s=new Int32Array(t);let i=0;for(let r=0;r<t;r++){const c=e[r];if(c===void 0||c===-1)continue;const a=i>0?s[i-1]:void 0;if(i===0||a!==void 0&&(e[a]??-1)<c){n[r]=a??-1,s[i++]=r;continue}let h=0,p=i-1;for(;h<p;){const C=h+p>>>1,O=s[C];O!==void 0&&(e[O]??-1)<c?h=C+1:p=C}const S=s[h];S!==void 0&&c<(e[S]??Number.MAX_SAFE_INTEGER)&&(h>0&&(n[r]=s[h-1]??-1),s[h]=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=n[r]}return o}function Ze(){if(typeof window<"u"){const e=window.__ATOM_DEBUG__;if(typeof e=="boolean")return e}return!1}let $=Ze();const b={get enabled(){return $},set enabled(e){$=e},log(e,...t){$&&console.log(`[atom-effect-jquery] ${e}:`,...t)},atomChanged(e,t,n){$&&console.log(`[atom-effect-jquery] Atom "${e??"anonymous"}" changed:`,t,"→",n)},domUpdated(e,t,n){$&&(console.log(`[atom-effect-jquery] DOM updated: ${Ct(e)}.${t} =`,n),tn(e))},cleanup(e){$&&console.log(`[atom-effect-jquery] Cleanup: ${e}`)},warn(...e){$&&console.warn("[atom-effect-jquery]",...e)}},zt="atom-debug-highlight";let de=!1;function $e(){if(de)return;de=!0;const e=document.createElement("style");e.textContent=`.${zt}{outline:2px solid rgba(255,68,68,0.8);outline-offset:1px;transition:outline 0.5s ease-out}`,document.head.appendChild(e)}const Ht=new WeakMap;function tn(e){const t="jquery"in e?e[0]:e;if(!t||!t.isConnected)return;$e();const n=Ht.get(t);n&&clearTimeout(n),t.classList.add(zt),Ht.set(t,setTimeout(()=>{t.classList.remove(zt),Ht.delete(t)},600))}function _e(e,t={}){return Mt(e,t)}Object.defineProperty(_e,"debug",{get(){return b.enabled},set(e){b.enabled=e}});function en(){return new Promise(e=>setTimeout(e,0))}u.extend({atom:_e,computed:Bt,effect:X,batch:bt,untracked:ee,isAtom:ie,isComputed:oe,isReactive:fe,nextTick:en});const St="_aes-bound";class nn{constructor(){dt(this,"records",new WeakMap);dt(this,"boundElements",new WeakSet);dt(this,"preservedNodes",new WeakSet);dt(this,"ignoredNodes",new WeakSet)}keep(t){this.preservedNodes.add(t)}isKept(t){return this.preservedNodes.has(t)}markIgnored(t){this.ignoredNodes.add(t)}isIgnored(t){return this.ignoredNodes.has(t)}_getOrCreateRecord(t){let n=this.records.get(t);return n||(n={},this.records.set(t,n),this.boundElements.has(t)||(this.boundElements.add(t),t.classList.add(St))),n}trackEffect(t,n){const s=this._getOrCreateRecord(t);s.effects??=[],s.effects.push(n)}trackCleanup(t,n){const s=this._getOrCreateRecord(t);s.cleanups??=[],s.cleanups.push(n)}hasBind(t){return this.boundElements.has(t)}cleanup(t){if(!this.boundElements.delete(t))return;const n=this.records.get(t);if(!n)return;this.records.delete(t),this.preservedNodes.delete(t),this.ignoredNodes.delete(t),t.classList.remove(St),b.enabled&&b.cleanup(Ct(t));const s=n.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=n.cleanups;if(i)for(let o=0,r=i.length;o<r;o++)try{i[o]?.()}catch(c){b.warn("Cleanup error:",c)}}cleanupDescendants(t){const n=t.querySelectorAll(`.${St}`);for(let s=0,i=n.length;s<i;s++){const o=n[s];o&&this.boundElements.has(o)?this.cleanup(o):o&&o.classList.remove(St)}}cleanupTree(t){this.cleanupDescendants(t),this.cleanup(t)}}const m=new nn;let lt=null;function pe(e=document.body){lt||(lt=new MutationObserver(t=>{for(let n=0,s=t.length;n<s;n++){const i=t[n]?.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||m.isKept(c)||m.isIgnored(c)||m.cleanupTree(c))}}}),lt.observe(e,{childList:!0,subtree:!0}))}function sn(){lt?.disconnect(),lt=null}function G(e,t,n,s){fe(t)?m.trackEffect(e,X(()=>{const i=t.value;n(i),b.domUpdated(u(e),s,i)})):(n(t),b.enabled&&b.domUpdated(u(e),s,t))}var k=(e=>(e[e.None=0]="None",e[e.Focused=1]="Focused",e[e.Composing=2]="Composing",e[e.SyncingToAtom=4]="SyncingToAtom",e[e.SyncingToDom=8]="SyncingToDom",e[e.Busy=14]="Busy",e))(k||{});function Ee(){return{timeoutId:null,flags:0}}function on(e,t,n={}){const{debounce:s,event:i="input",parse:o=v=>v,format:r=v=>String(v??""),equal:c=Object.is}=n,a=Ee(),h=e[0],p=()=>{if(!(a.flags&k.Busy)){a.flags|=k.SyncingToAtom;try{const v=h.value,w=o(v);c(t.value,w)||(t.value=w)}finally{a.flags&=~k.SyncingToAtom}}},S=()=>{a.timeoutId&&(clearTimeout(a.timeoutId),a.timeoutId=null,p()),a.flags&=~k.Focused;const v=r(t.value);h.value!==v&&(h.value=v)},C=()=>{a.flags&k.Busy||(s?(a.timeoutId&&clearTimeout(a.timeoutId),a.timeoutId=setTimeout(p,s)):p())},O={compositionstart:()=>{a.flags|=k.Composing},compositionend:()=>{a.flags&=~k.Composing,p()},focus:()=>{a.flags|=k.Focused},blur:S,[i]:C,change:C};return e.on(O),{effect:()=>{const v=t.value,w=r(v),N=h.value;if(N!==w&&!(a.flags&k.Focused&&c(o(N),v))){a.flags|=k.SyncingToDom;try{if(a.flags&k.Focused){const{selectionStart:ot,selectionEnd:ht}=h;h.value=w;const W=w.length;h.setSelectionRange(Math.min(ot??0,W),Math.min(ht??0,W))}else h.value=w;b.domUpdated(e,"val",w)}finally{a.flags&=~k.SyncingToDom}}},cleanup:()=>{e.off(O),a.timeoutId&&clearTimeout(a.timeoutId)}}}const ge=Object.create(null);function rn(e){let t=ge[e];return t||(t=e.includes("-")?e.replace(/-./g,n=>n[1].toUpperCase()):e,ge[e]=t,t)}function B(e){let t=null;return{get $el(){return t||(t=u(e)),t},el:e,trackCleanup:n=>m.trackCleanup(e,n)}}function cn(e,t){const n=e.el;G(n,t,s=>{const i=typeof s=="string"?s:String(s??"");n.textContent!==i&&(n.textContent=i)},"text")}function me(e,t){const n=e.el;G(n,t,s=>{const i=String(s??""),o=It(i);o!==i&&console.warn("[atomBind] Unsafe content neutralized during sanitization."),n.innerHTML!==o&&(n.innerHTML=o)},"html")}function ye(e,t){for(const n in t)G(e.el,t[n],s=>{e.el.classList.toggle(n,!!s)},`class.${n}`)}function be(e,t){const n=e.el,s=n.style;for(const i in t){const o=t[i];if(o===void 0)continue;const r=rn(i),c=Array.isArray(o),a=c?o[0]:o,h=c?o[1]:"";G(n,a,p=>{const S=h?`${p}${h}`:String(p);if(Ye(S)){console.warn(`[atomBind] Blocked dangerous value in "${i}" property.`);return}s[r]=S},`css.${i}`)}}function Ce(e,t){const n=e.el;for(const s in t){const i=s.charCodeAt(0);if((i===111||i===79)&&(s.charCodeAt(1)===110||s.charCodeAt(1)===78)){console.warn(`[atomBind] Blocked setting dangerous event handler attribute "${s}".`);continue}G(n,t[s],o=>{if(o==null||o===!1){n.removeAttribute(s);return}const r=o===!0?s:String(o);if(We(s,r)){console.warn(`[atomBind] Blocked dangerous protocol in "${s}" attribute.`);return}n.getAttribute(s)!==r&&n.setAttribute(s,r)},`attr.${s}`)}}const un=["innerHTML","outerHTML"];function Ie(e,t){const n=e.el;for(const s in t){if(un.includes(s)){console.warn(`[atomBind] Blocked setting dangerous property "${s}". Use html binding for sanitized HTML.`);continue}G(e.el,t[s],i=>{n[s]!==i&&(n[s]=i)},`prop.${s}`)}}function vt(e,t,n,s){const i=e.el;G(i,t,o=>{const r=n?!o:!!o;i.style.display=r?"":"none",b.enabled&&b.domUpdated(i,s,o)},s)}function Se(e,t){const n=e.el.tagName.toLowerCase();if(n!=="input"&&n!=="select"&&n!=="textarea"){console.warn(`[atomBind] Val binding used on non-input element <${n}>.`);return}const s=Array.isArray(t),{effect:i,cleanup:o}=on(e.$el,s?t[0]:t,s?t[1]:{});m.trackEffect(e.el,X(i)),e.trackCleanup(o)}function ve(e,t){const n=e.el,s=e.$el,i=Ee(),o=()=>{if(i.flags&k.Busy)return;const c=n.checked;t.value!==c&&(t.value=c)};s.on("change",o),e.trackCleanup(()=>s.off("change",o));const r=X(()=>{i.flags|=k.SyncingToDom;const c=!!t.value;n.checked!==c&&(n.checked=c,b.enabled&&b.domUpdated(s,"checked",c)),i.flags&=~k.SyncingToDom});m.trackEffect(n,r)}function an(e,t){for(const n in t){const s=t[n];if(typeof s!="function")continue;const i=o=>{bt(()=>s.call(e.el,u.Event(o.type,{originalEvent:o})))};e.el.addEventListener(n,i),e.trackCleanup(()=>e.el.removeEventListener(n,i))}}u.fn.atomBind=function(e){return this.each(function(){const t=B(this);e.text!==void 0&&cn(t,e.text),e.html!==void 0&&me(t,e.html),e.class&&ye(t,e.class),e.css&&be(t,e.css),e.attr&&Ce(t,e.attr),e.prop&&Ie(t,e.prop),e.show!==void 0&&vt(t,e.show,!1,"show"),e.hide!==void 0&&vt(t,e.hide,!0,"hide"),e.val!==void 0&&Se(t,e.val),e.checked!==void 0&&ve(t,e.checked),e.on&&an(t,e.on)})},u.fn.atomText=function(e,t){return this.each(function(){const n=u(this);G(this,e,t?i=>n.text(t(i)):i=>n.text(String(i??"")),"text")})},u.fn.atomHtml=function(e){return this.each(function(){me(B(this),e)})},u.fn.atomClass=function(e,t){return this.each(function(){ye(B(this),{[e]:t})})},u.fn.atomCss=function(e,t,n){return this.each(function(){be(B(this),{[e]:n?[t,n]:t})})},u.fn.atomAttr=function(e,t){return this.each(function(){Ce(B(this),{[e]:t})})},u.fn.atomProp=function(e,t){return this.each(function(){Ie(B(this),{[e]:t})})},u.fn.atomShow=function(e){return this.each(function(){vt(B(this),e,!1,"show")})},u.fn.atomHide=function(e){return this.each(function(){vt(B(this),e,!0,"hide")})},u.fn.atomVal=function(e,t={}){return this.each(function(){Se(B(this),t&&Object.keys(t).length>0?[e,t]:e)})},u.fn.atomChecked=function(e){return this.each(function(){ve(B(this),e)})},u.fn.atomOn=function(e,t){return this.each(function(){const n=u(this);n.on(e,t),m.trackCleanup(this,()=>n.off(e,t))})},u.fn.atomUnbind=function(){return this.each(function(){m.cleanupTree(this)})},u.fn.atomList=function(e,t){const{key:n,render:s,bind:i,update:o,onAdd:r,onRemove:c,empty:a}=t,h=typeof n=="function"?n:(p,S)=>p[n];return this.each(function(){const p=u(this),S=Ct(this),C=new Map,O=new Set;let A=[],L=null;const v=X(()=>{const w=e.value,N=w.length;if(N===0){if(a&&!L){const d=typeof a=="string"?It(a):a;L=u(d).appendTo(p)}}else L&&(L.remove(),L=null);if(N===0&&C.size===0){A=[];return}b.log("list",`${S} updating with ${N} items`);const ot=new Map,ht=A.length;for(let d=0;d<ht;d++)ot.set(A[d],d);const W=new Array(N),ft=new Set,Dt=new Int32Array(N);for(let d=0;d<N;d++){const U=w[d],g=h(U,d);ft.has(g)&&console.warn(`[atomList] Duplicate key "${g}" at index ${d}.`),W[d]=g,ft.add(g),Dt[d]=ot.get(g)??-1}if(C.size>0)for(const[d,U]of C){if(ft.has(d)||O.has(d))continue;const g=()=>{U.$el.remove(),U.$el[0]&&m.cleanup(U.$el[0]),O.delete(d),b.log("list",`${S} removed item:`,d)};if(C.delete(d),O.add(d),c){const T=c(U.$el);T instanceof Promise?T.then(g):g()}else g()}if(N===0){A=[];return}const Ot=Je(Dt);let M=Ot.length-1,R=null;for(let d=N-1;d>=0;d--){const U=W[d],g=w[d],T=C.get(U);if(T){const H=T.item;T.item=g;const rt=T.$el[0];if(!rt)continue;if(o)o(T.$el,g,d),b.domUpdated(T.$el,"list.update",g);else if(H!==g&&!Ke(H,g)){const l=s(g,d),_=typeof l=="string"?It(l):l,E=u(_),f=R===rt;T.$el.replaceWith(E),T.$el=E,i&&i(E,g,d),b.domUpdated(E,"list.render",g),f&&(R=E[0]||null)}if(M>=0&&Ot[M]===d)M--;else{const l=T.$el[0];R?.isConnected?R!==l&&T.$el.insertBefore(R):T.$el.appendTo(p)}R=T.$el[0]||null}else{const H=s(g,d),rt=typeof H=="string"?It(H):H,l=u(rt);C.set(U,{$el:l,item:g}),R?.isConnected?l.insertBefore(R):l.appendTo(p),i&&i(l,g,d),r&&r(l),b.domUpdated(l,"list.add",g),R=l[0]||null}}A=W});m.trackEffect(this,v),m.trackCleanup(this,()=>{C.clear(),O.clear(),A=[],L?.remove()})})};const wt=new WeakMap;u.fn.atomMount=function(e,t={}){return this.each(function(){const n=Ct(this),s=wt.get(this);s&&(b.log("mount",`${n} unmounting existing component`),s()),b.log("mount",`${n} mounting component`);let i;try{i=e(u(this),t)}catch(r){console.error("[atom-effect-jquery] Mount error:",r);return}const o=()=>{if(wt.delete(this)){if(b.log("mount",`${n} full cleanup`),typeof i=="function")try{i()}catch(r){console.error("[atom-effect-jquery] Cleanup error:",r)}m.cleanupTree(this)}};wt.set(this,o),m.trackCleanup(this,o)})},u.fn.atomUnmount=function(){return this.each(function(){const e=wt.get(this);e&&e()})};const Tt="[$.route]";function ln(e){const{target:t,default:n,routes:s,notFound:i,mode:o="hash",basePath:r="",autoBindLinks:c=!1,activeClass:a="active",beforeTransition:h,afterTransition:p}=e,S=o==="history";let C=!1,O=null,A=S?window.location.pathname+window.location.search:window.location.hash;const L=[],v=new Set,w=u(t),N=()=>{if(S){let f=window.location.pathname;return r&&f.startsWith(r)&&(f=f.substring(r.length)),f.replace(/^\//,"")||n}const l=window.location.hash,_=l.indexOf("?");return(_===-1?l.substring(1):l.substring(1,_))||n},ot=()=>{let l;if(S){if(l=window.location.search.substring(1),!l)return{}}else{const f=window.location.hash,D=f.indexOf("?");if(D===-1)return{};l=f.substring(D+1)}const _=new URLSearchParams(l),E=Object.fromEntries(_);if(l.includes("%"))try{decodeURIComponent(l)}catch{console.warn(`${Tt} Malformed URI component: ${l}`)}return E},ht=l=>{if(S){const _=`${r.replace(/\/$/,"")}/${l}`;history.pushState(null,"",_),A=_}else{const _=`#${l}`;A=_,window.location.hash=_}},W=()=>{S?history.replaceState(null,"",A):window.location.hash=A},ft=()=>S?window.location.pathname+window.location.search:window.location.hash,Dt=l=>{let _=s[l];return!_&&i&&(_=s[i]),_||(console.warn(`${Tt} Route "${l}" not found and no notFound route configured`),null)},Ot=l=>{const _=document.querySelector(l);if(!_?.content)return console.warn(`${Tt} Template "${l}" not found`),!1;const E=_.content.cloneNode(!0);return w.append(E),!0},M=Mt(N()),R=l=>{if(C)return;const _=w[0];if(!_){console.warn(`${Tt} Target element "${t}" not found`);return}const E=Dt(l);if(!E)return;const f=ot();h&&h(O||l,l),w.empty();let D=f;if(E.onEnter){const tt=E.onEnter(f);tt!==void 0&&(D={...f,...tt})}E.render?E.render(_,l,D):E.template&&Ot(E.template),p&&p(O||l,l),O=l},d=l=>{if(C)return;const _=M.value,E=s[_];if(E?.onLeave&&E.onLeave()===!1)return;const f=l||n;ht(f),M.value=f},U=()=>{if(C)return;const l=ft();if(l===A)return;const _=N(),E=M.value;if(E!==_){const f=s[E];if(f?.onLeave&&f.onLeave()===!1){W();return}M.value=_}else R(_);A=l},g=()=>{if(!c)return;const l=f=>{f.preventDefault();const D=f.currentTarget.dataset.route;D!=null&&d(D)};u(document).on("click","[data-route]",l),L.push(()=>{u(document).off("click","[data-route]",l)});const _=f=>{if(v.has(f))return;const D=f.dataset.route;v.add(f);const tt=X(()=>{const et=M.value===D;f.classList.toggle(a,et),et?f.setAttribute("aria-current","page"):f.removeAttribute("aria-current")});m.trackEffect(f,tt),m.trackCleanup(f,()=>{v.delete(f)})};for(const f of document.querySelectorAll("[data-route]"))_(f);const E=new MutationObserver(f=>{for(const D of f)D.type==="childList"&&D.addedNodes.forEach(tt=>{if(tt.nodeType===1){const et=tt;et.matches?.("[data-route]")&&_(et),et.querySelectorAll&&et.querySelectorAll("[data-route]").forEach(fn=>_(fn))}})});E.observe(document.body,{childList:!0,subtree:!0}),L.push(()=>E.disconnect())},T=()=>{C||(C=!0,L.forEach(l=>l()),L.length=0,v.forEach(l=>m.cleanup(l)),v.clear())},H=S?"popstate":"hashchange";window.addEventListener(H,U),L.push(()=>window.removeEventListener(H,U));const rt=X(()=>{R(M.value)});return L.push(()=>rt.dispose()),g(),w[0]&&m.trackCleanup(w[0],T),{currentRoute:M,navigate:d,destroy:T}}u.extend({route:ln});function hn(e,t){const{defaultValue:n,transform:s,method:i,headers:o,ajaxOptions:r}=t,c=typeof e=="function"?e:()=>e;return Bt(async()=>{const a=c(),h=await u.ajax({...r,url:a,method:i,headers:o});return s?s(h):h},{defaultValue:n,lazy:!1})}u.extend({atomFetch:hn});const kt=new WeakMap;let we=!1;const Te=e=>{let t=kt.get(e);return t||(t=function(...n){return bt(()=>e.apply(this,n))},kt.set(e,t)),t};function ke(){if(we)return;we=!0;const e=u.fn.on,t=u.fn.off,n=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,a=r.length;c<a;c++){const h=r[c];h&&(m.cleanupTree(h),m.markIgnored(h))}return n.call(this,o)},u.fn.empty=function(){for(let o=0,r=this.length;o<r;o++){const c=this[o];c&&m.cleanupDescendants(c)}return s.call(this)},u.fn.detach=function(o){const r=o?this.filter(o):this;for(let c=0,a=r.length;c<a;c++){const h=r[c];h&&m.keep(h)}return i.call(this,o)},u.fn.on=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,a={};for(const h in c){const p=c[h];p&&(a[h]=Te(p))}o[0]=a}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=Te(o[c]);break}return e.apply(this,o)},u.fn.off=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,a={};for(const h in c){const p=c[h];p&&(a[h]=kt.get(p)||p)}o[0]=a}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=kt.get(o[c])||o[c];break}return t.apply(this,o)}}u(()=>{ke(),pe(document.body)}),y.default=u,y.atom=Mt,y.batch=bt,y.computed=Bt,y.disableAutoCleanup=sn,y.effect=X,y.enableAutoCleanup=pe,y.enablejQueryOverrides=ke,y.registry=m,y.untracked=ee,Object.defineProperties(y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
1
|
+
(function(O,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("jquery")):typeof define=="function"&&define.amd?define(["exports","jquery"],l):(O=typeof globalThis<"u"?globalThis:O||self,l(O.AtomEffectJQuery={},O.jQuery))})(this,(function(O,l){"use strict";const ft={IDLE:"idle",PENDING:"pending",RESOLVED:"resolved",REJECTED:"rejected"},F={DISPOSED:1,EXECUTING:8},qt={DISPOSED:1,IS_COMPUTED:2,DIRTY:8,IDLE:16,PENDING:32,RESOLVED:64,REJECTED:128,RECOMPUTING:256,HAS_ERROR:512},H={DISPOSED:1,SYNC:8,NOTIFICATION_SCHEDULED:16},G={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},Te={WARN_INFINITE_LOOP:!0},Xt={MAX_ASYNC_RETRIES:3,MAX_PROMISE_ID:Number.MAX_SAFE_INTEGER-1},Lt=1073741823,De=typeof process<"u"&&process.env&&!1||!1,Oe=Object.freeze([]);class $ extends Error{constructor(t,n=null,s=!0){super(t),this.cause=n,this.recoverable=s,this.name="AtomError"}}class Q extends ${constructor(t,n=null){super(t,n,!0),this.name="ComputedError"}}class tt extends ${constructor(t,n=null){super(t,n,!1),this.name="EffectError"}}class Nt extends ${constructor(t,n=null){super(t,n,!1),this.name="SchedulerError"}}const ve=Symbol("AtomEffect.DebugName"),Ae=Symbol("AtomEffect.Type"),kt=Symbol("AtomEffect.NoDefaultValue"),dt={enabled:De,warnInfiniteLoop:Te.WARN_INFINITE_LOOP,warn(e,t){},checkCircular(e,t){if(e===t)throw new Q("Direct circular dependency detected")},attachDebugInfo(e,t,n){},getDebugName:e=>e?.[ve],getDebugType:e=>e?.[Ae]};let Le=1;const Ne=()=>Le++;function Gt(e,t,n){if(typeof t=="function"){const i=t;for(let o=0,r=n.length;o<r;o++){const c=n[o];if(c&&c.fn===i)return}n.push(new wt(i,void 0));return}if("addDependency"in t){t.addDependency(e);return}const s=t;for(let i=0,o=n.length;i<o;i++){const r=n[i];if(r&&r.sub===s)return}n.push(new wt(void 0,s))}function Qt(e,t,n){const s=new Map;for(let i=0,o=t.length;i<o;i++){const r=t[i];r?.unsub&&s.set(r.node,r.unsub)}for(let i=0,o=e.length;i<o;i++){const r=e[i];if(!r)continue;const c=r.node,u=s.get(c);u!==void 0?(r.unsub=u,s.delete(c)):(dt.checkCircular(c,n),r.unsub=c.subscribe(n))}for(const i of s.values())i()}class Rt{constructor(t,n,s=void 0){this.node=t,this.version=n,this.unsub=s}}class wt{constructor(t,n){this.fn=t,this.sub=n}}const C={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:(e,t)=>`Maximum flush iterations (${e}) exceeded. ${t} 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.",SCHEDULER_CALLBACK_MUST_BE_FUNCTION:"Scheduler callback must be a function",SCHEDULER_END_BATCH_WITHOUT_START:"endBatch() called without matching startBatch(). Ignoring."};function et(e,t,n){if(e instanceof $)return e;const s=e instanceof Error,i=s?e.message:String(e),o=s?e:void 0,r=`${s?e.constructor.name:"Unexpected error"} (${n}): ${i}`;return new t(r,o)}class Kt{constructor(){this.flags=0,this.version=0,this._lastSeenEpoch=-1,this.id=Ne()&Lt}}class Yt extends Kt{subscribe(t){const n=typeof t=="function";if(!n&&(!t||typeof t.execute!="function"))throw et(new TypeError("Invalid subscriber"),$,C.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&&(n?c.fn===t:c.sub===t))return()=>{}}const i=new wt(n?t:void 0,n?void 0:t);return s.push(i),()=>this._unsubscribe(i)}_unsubscribe(t){const n=this._subscribers,s=n.indexOf(t);if(s===-1)return;const i=n.pop();s<n.length&&i&&(n[s]=i)}subscriberCount(){return this._subscribers.length}_notifySubscribers(t,n){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(t,n):r.sub&&r.sub.execute()}catch(c){this._handleNotifyError(c)}}}_handleNotifyError(t){console.error(et(t,$,C.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED))}}let Ut=0;const xt=()=>(Ut=Ut+1&Lt||1,Ut),Pt=e=>e+1≪let Ft=0,_t=!1,Wt=0;const ke=()=>Wt;function Jt(){return _t?!1:(_t=!0,Wt=xt(),Ft=0,!0)}const Zt=()=>{_t=!1},Re=()=>_t?++Ft:0;class we{constructor(){this._queueBuffer=[[],[]],this._bufferIndex=0,this._size=0,this._epoch=0,this._isProcessing=!1,this._isBatching=!1,this._isFlushingSync=!1,this._batchDepth=0,this._batchQueue=[],this._batchQueueSize=0,this._maxFlushIterations=G.MAX_FLUSH_ITERATIONS,this.onOverflow=null,this._boundRunLoop=this._runLoop.bind(this)}get phase(){return this._isProcessing||this._isFlushingSync?2:this._isBatching?1:0}get queueSize(){return this._size}get isBatching(){return this._isBatching}schedule(t){if(t._nextEpoch!==this._epoch){if(t._nextEpoch=this._epoch,this._isBatching||this._isFlushingSync){this._batchQueue[this._batchQueueSize++]=t;return}this._queueBuffer[this._bufferIndex][this._size++]=t,this._isProcessing||this._flush()}}_flush(){this._isProcessing||this._size===0||(this._isProcessing=!0,queueMicrotask(this._boundRunLoop))}_runLoop(){try{if(this._size===0)return;const t=Jt();this._drainQueue(),t&&Zt()}finally{this._isProcessing=!1,this._size>0&&!this._isBatching&&this._flush()}}_flushSync(){this._isFlushingSync=!0;const t=Jt();try{this._mergeBatchQueue(),this._drainQueue()}finally{this._isFlushingSync=!1,t&&Zt()}}_mergeBatchQueue(){if(this._batchQueueSize===0)return;const t=++this._epoch,n=this._batchQueue,s=this._queueBuffer[this._bufferIndex];let i=this._size;for(let o=0;o<this._batchQueueSize;o++){const r=n[o];r._nextEpoch!==t&&(r._nextEpoch=t,s[i++]=r)}this._size=i,this._batchQueueSize=0,n.length>G.BATCH_QUEUE_SHRINK_THRESHOLD&&(n.length=0)}_drainQueue(){let t=0;for(;this._size>0;){if(++t>this._maxFlushIterations){this._handleFlushOverflow();return}this._processQueue(),this._mergeBatchQueue()}}_processQueue(){const t=this._bufferIndex,n=this._queueBuffer[t],s=this._size;this._bufferIndex=t^1,this._size=0,this._epoch++;for(let i=0;i<s;i++)try{n[i]()}catch(o){console.error(new Nt("Error occurred during scheduler execution",o))}n.length=0}_handleFlushOverflow(){const t=this._size+this._batchQueueSize;if(console.error(new Nt(C.SCHEDULER_FLUSH_OVERFLOW(this._maxFlushIterations,t))),this._size=0,this._queueBuffer[this._bufferIndex].length=0,this._batchQueueSize=0,this.onOverflow)try{this.onOverflow(t)}catch{}}startBatch(){this._batchDepth++,this._isBatching=!0}endBatch(){this._batchDepth!==0&&--this._batchDepth===0&&(this._flushSync(),this._isBatching=!1)}setMaxFlushIterations(t){if(t<G.MIN_FLUSH_ITERATIONS)throw new Nt(`Max flush iterations must be at least ${G.MIN_FLUSH_ITERATIONS}`);this._maxFlushIterations=t}}const rt=new we,Mt=Symbol.for("atom-effect/atom"),$t=Symbol.for("atom-effect/computed"),Ue=Symbol.for("atom-effect/effect"),M={current:null,run(e,t){const n=this.current;this.current=e;try{return t()}finally{this.current=n}}};function te(e){const t=M.current;if(t===null)return e();M.current=null;try{return e()}finally{M.current=t}}var ee;class xe extends Yt{constructor(t,n){super(),this._pendingOldValue=void 0,this._notifyTask=()=>this._flushNotifications(),this._subscribers=[],this[ee]=!0,this._value=t,n&&(this.flags|=H.SYNC),dt.attachDebugInfo(this,"atom",this.id)}get value(){const t=M.current;return t&&Gt(this,t,this._subscribers),this._value}set value(t){const n=this._value;if(Object.is(n,t))return;this._value=t,this.version=Pt(this.version);const s=this.flags;if(!(this._subscribers.length===0||s&H.NOTIFICATION_SCHEDULED)){if(this._pendingOldValue=n,this.flags=s|H.NOTIFICATION_SCHEDULED,s&H.SYNC&&!rt.isBatching){this._flushNotifications();return}rt.schedule(this._notifyTask)}}_flushNotifications(){const t=this.flags;if(!(t&H.NOTIFICATION_SCHEDULED)||t&H.DISPOSED)return;const n=this._pendingOldValue;this._pendingOldValue=void 0,this.flags&=-17,this._notifySubscribers(this._value,n)}peek(){return this._value}dispose(){this.flags&H.DISPOSED||(this._subscribers.length=0,this.flags|=H.DISPOSED,this._value=void 0,this._pendingOldValue=void 0)}[(ee=Mt,Symbol.dispose)](){this.dispose()}}function Bt(e,t={}){return new xe(e,t.sync??!1)}class Pe{constructor(t=50,n=256,s=!1){this.limit=t,this.capacity=n,this.pool=[],this.stats=null,this.stats=s?{acquired:0,released:0,rejected:{frozen:0,tooLarge:0,poolFull:0}}:null}acquire(){return this.stats&&this.stats.acquired++,this.pool.pop()??[]}release(t,n){if(!(n&&t===n)){if(t.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(t)){this.stats&&this.stats.rejected.frozen++;return}t.length=0,this.pool.push(t),this.stats&&this.stats.released++}}getStats(){if(!this.stats)return null;const{acquired:t,released:n,rejected:s}=this.stats,i=t-n-(s.frozen+s.tooLarge+s.poolFull);return{acquired:t,released:n,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 w=Object.freeze([]),V=new Pe;function ne(e){return e!==null&&typeof e=="object"&&Mt in e}function se(e){return e!==null&&typeof e=="object"&&$t in e}function ie(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var oe,re;const{IDLE:Et,DIRTY:nt,PENDING:pt,RESOLVED:K,REJECTED:ct,HAS_ERROR:gt,RECOMPUTING:ut,DISPOSED:jt,IS_COMPUTED:Fe}=qt;function Me(e){return e&K?ft.RESOLVED:e&pt?ft.PENDING:e&ct?ft.REJECTED:ft.IDLE}class Be extends Yt{constructor(t,n={}){if(typeof t!="function")throw new Q(C.COMPUTED_MUST_BE_FUNCTION);super(),this[re]=!0,this[oe]=!0,this._error=null,this._promiseId=0,this._subscribers=[],this._links=w,this._asyncStartAggregateVersion=0,this._asyncRetryCount=0,this._trackEpoch=-1,this._trackLinks=w,this._trackCount=0,this._value=void 0,this.flags=Fe|nt|Et,this._equal=n.equal??Object.is,this._fn=t,this._defaultValue="defaultValue"in n?n.defaultValue:kt,this._onError=n.onError??null;const s=n.maxAsyncRetries;if(this._maxAsyncRetries=s!=null&&s>=0?s:Xt.MAX_ASYNC_RETRIES,dt.attachDebugInfo(this,"computed",this.id),n.lazy===!1)try{this._recompute()}catch{}}_track(){const t=M.current;t&&Gt(this,t,this._subscribers)}get value(){this._track();const t=this.flags;if((t&(K|nt|Et))===K)return this._value;if(t&jt)throw new Q(C.COMPUTED_DISPOSED);if(t&ut){if(this._defaultValue!==kt)return this._defaultValue;throw new Q(C.COMPUTED_CIRCULAR_DEPENDENCY)}if(t&(nt|Et)&&(this._recompute(),this.flags&K))return this._value;const n=this._defaultValue,s=n!==kt;if(this.flags&pt){if(s)return n;throw new Q(C.COMPUTED_ASYNC_PENDING_NO_DEFAULT)}if(this.flags&ct){if(s)return n;throw this._error}return this._value}peek(){return this._value}get state(){return this._track(),Me(this.flags)}get hasError(){if(this._track(),this.flags&(ct|gt))return!0;const t=this._links;for(let n=0,s=t.length;n<s;n++){const i=t[n]?.node;if(i&&i.flags>)return!0}return!1}get isValid(){return!this.hasError}get errors(){if(this._track(),!this.hasError)return Oe;const t=[];this._error&&t.push(this._error);const n=this._links;for(let s=0,i=n.length;s<i;s++){const o=n[s].node;if(o.flags>){const r=o.errors;if(r.length>0)for(let c=0;c<r.length;c++){const u=r[c];u&&t.indexOf(u)===-1&&t.push(u)}}}return Object.freeze(t)}get lastError(){return this._track(),this._error}get isPending(){return this._track(),(this.flags&pt)!==0}get isResolved(){return this._track(),(this.flags&K)!==0}invalidate(){this._markDirty()}dispose(){if(this.flags&jt)return;const t=this._links;if(t!==w){for(let n=0,s=t.length;n<s;n++)t[n].unsub?.();V.release(t),this._links=w}this._subscribers.length=0,this.flags=jt|nt|Et,this._error=null,this._value=void 0}[(re=Mt,oe=$t,Symbol.dispose)](){this.dispose()}addDependency(t){if(t._lastSeenEpoch!==this._trackEpoch){if(t._lastSeenEpoch=this._trackEpoch,this._trackCount<this._trackLinks.length){const n=this._trackLinks[this._trackCount];n.node=t,n.version=t.version}else this._trackLinks.push(new Rt(t,t.version));this._trackCount++}}_recompute(){if(this.flags&ut)return;this.flags|=ut;const t=this._links;this._trackEpoch=xt(),this._trackLinks=V.acquire(),this._trackCount=0;let n=!1;try{const s=M.run(this,this._fn);this._trackLinks.length=this._trackCount,Qt(this._trackLinks,t,this),this._links=this._trackLinks,n=!0,ie(s)?this._handleAsyncComputation(s):this._finalizeResolution(s)}catch(s){if(!n)try{this._trackLinks.length=this._trackCount,Qt(this._trackLinks,t,this),this._links=this._trackLinks,n=!0}catch{}this._handleError(s,C.COMPUTED_COMPUTATION_FAILED,!0)}finally{n&&t!==w?V.release(t):n||V.release(this._trackLinks),this._trackEpoch=-1,this._trackLinks=w,this._trackCount=0,this.flags&=~ut}}_handleAsyncComputation(t){this.flags=(this.flags|pt)&-217,this._notifySubscribers(void 0,void 0),this._asyncStartAggregateVersion=this._captureVersionSnapshot(),this._asyncRetryCount=0,this._promiseId=(this._promiseId+1)%Xt.MAX_PROMISE_ID;const n=this._promiseId;t.then(s=>{if(n===this._promiseId){if(this._captureVersionSnapshot()!==this._asyncStartAggregateVersion)return this._asyncRetryCount++<this._maxAsyncRetries?this._markDirty():this._handleError(new Q(`Async drift threshold exceeded after ${this._maxAsyncRetries} retries.`),C.COMPUTED_ASYNC_COMPUTATION_FAILED);this._finalizeResolution(s),this._notifySubscribers(s,void 0)}},s=>n===this._promiseId&&this._handleError(s,C.COMPUTED_ASYNC_COMPUTATION_FAILED))}_captureVersionSnapshot(){let t=0;const n=this._links;for(let s=0,i=n.length;s<i;s++)t=(t<<5)-t+n[s].node.version|0;return t}_handleError(t,n,s=!1){const i=et(t,Q,n);if(!s&&!(this.flags&ct)&&(this.version=Pt(this.version)),this._error=i,this.flags=this.flags&-121|ct|gt,this._onError)try{this._onError(i)}catch(o){console.error(C.CALLBACK_ERROR_IN_ERROR_HANDLER,o)}if(s)throw i;this._notifySubscribers(void 0,void 0)}_finalizeResolution(t){(!(this.flags&K)||!this._equal(this._value,t))&&(this.version=Pt(this.version)),this._value=t,this._error=null,this.flags=(this.flags|K)&-697}execute(){this._markDirty()}_markDirty(){this.flags&(ut|nt)||(this.flags|=nt,this._notifySubscribers(void 0,void 0))}}function Ht(e,t={}){return new Be(e,t)}var ce;class je extends Kt{constructor(t,n={}){super(),this[ce]=!0,this._cleanup=null,this._links=w,this._nextLinks=null,this._prevLinks=w,this._currentEpoch=-1,this._lastFlushEpoch=-1,this._executionsInEpoch=0,this._executionCount=0,this._windowStart=0,this._windowCount=0,this._execId=0,this._fn=t,this._onError=n.onError??null,this._sync=n.sync??!1,this._maxExecutions=n.maxExecutionsPerSecond??G.MAX_EXECUTIONS_PER_SECOND,this._maxExecutionsPerFlush=n.maxExecutionsPerFlush??G.MAX_EXECUTIONS_PER_EFFECT,this._sync?(this._executeTask=void 0,this._notifyCallback=()=>this.execute()):(this._executeTask=()=>this.execute(),this._notifyCallback=()=>rt.schedule(this._executeTask)),dt.attachDebugInfo(this,"effect",this.id)}run(){if(this.flags&F.DISPOSED)throw new tt(C.EFFECT_DISPOSED);this.execute(!0)}dispose(){this.flags&F.DISPOSED||(this.flags|=F.DISPOSED,this._execCleanup(),this._unsubLinks(this._links),this._links!==w&&V.release(this._links),this._links=w,this._prevLinks=w)}[(ce=Ue,Symbol.dispose)](){this.dispose()}addDependency(t){if(!(this.flags&F.EXECUTING))return;const n=this._currentEpoch;if(t._lastSeenEpoch===n)return;t._lastSeenEpoch=n;const s=this._nextLinks,i=this._prevLinks;for(let o=0,r=i.length;o<r;o++){const c=i[o];if(c&&c.node===t&&c.unsub){c.version=t.version,s.push(c),i[o]=null;return}}try{const o=t.subscribe(this._notifyCallback);s.push(new Rt(t,t.version,o))}catch(o){const r=et(o,tt,C.EFFECT_EXECUTION_FAILED);if(console.error(r),this._onError)try{this._onError(r)}catch{}s.push(new Rt(t,t.version,void 0))}}execute(t=!1){if(this.flags&(F.DISPOSED|F.EXECUTING)||!t&&this._links.length>0&&!this._isDirty())return;this._checkInfiniteLoops(),this.flags|=F.EXECUTING,this._execCleanup(),this._prevLinks=this._links;const n=V.acquire();this._nextLinks=n,this._currentEpoch=xt();let s=!1;try{const i=M.run(this,this._fn);this._links=n,s=!0,ie(i)?this._handleAsyncResult(i):this._cleanup=typeof i=="function"?i:null}catch(i){this._links=n,s=!0,this._handleExecutionError(i),this._cleanup=null}finally{this._finalizeDependencies(s,this._prevLinks,n),this.flags&=-9}}_handleAsyncResult(t){const n=++this._execId;t.then(s=>{if(n!==this._execId||this.flags&F.DISPOSED){if(typeof s=="function")try{s()}catch(i){this._handleExecutionError(i,C.EFFECT_CLEANUP_FAILED)}return}typeof s=="function"&&(this._cleanup=s)},s=>n===this._execId&&this._handleExecutionError(s))}_finalizeDependencies(t,n,s){if(this._nextLinks=null,this._prevLinks=w,t){for(let i=0,o=n.length;i<o;i++){const r=n[i];r&&r.unsub?.()}n!==w&&V.release(n)}else this._unsubLinks(s),V.release(s)}_unsubLinks(t){for(let n=0,s=t.length;n<s;n++)t[n]?.unsub?.()}_isDirty(){const t=this._links,n=M.current;M.current=null;try{for(let s=0,i=t.length;s<i;s++){const o=t[s],r=o.node;if(r.flags&qt.IS_COMPUTED)try{r.value}catch{return!0}if(r.version!==o.version)return!0}return!1}finally{M.current=n}}_execCleanup(){if(this._cleanup){try{this._cleanup()}catch(t){this._handleExecutionError(t,C.EFFECT_CLEANUP_FAILED)}this._cleanup=null}}_checkInfiniteLoops(){const t=ke();this._lastFlushEpoch!==t&&(this._lastFlushEpoch=t,this._executionsInEpoch=0),++this._executionsInEpoch>this._maxExecutionsPerFlush&&this._throwInfiniteLoopError("per-effect"),Re()>G.MAX_EXECUTIONS_PER_FLUSH&&this._throwInfiniteLoopError("global"),this._executionCount++}get isDisposed(){return(this.flags&F.DISPOSED)!==0}get executionCount(){return this._executionCount}get isExecuting(){return(this.flags&F.EXECUTING)!==0}_throwInfiniteLoopError(t){const n=new tt(`Infinite loop detected (${t}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${Ft}`);throw this.dispose(),console.error(n),n}_handleExecutionError(t,n=C.EFFECT_EXECUTION_FAILED){const s=et(t,tt,n);if(console.error(s),this._onError)try{this._onError(s)}catch(i){console.error(et(i,tt,C.CALLBACK_ERROR_IN_ERROR_HANDLER))}}}function z(e,t={}){if(typeof e!="function")throw new tt(C.EFFECT_MUST_BE_FUNCTION);const n=new je(e,t);return n.execute(),n}function mt(e){if(typeof e!="function")throw new TypeError("Batch callback must be a function");rt.startBatch();try{return e()}finally{rt.endBatch()}}function ue(e){return ne(e)||se(e)}function yt(e){if(!e)return"unknown";const t="jquery"in e?e[0]:e;if(!t)return"unknown";const n=t.id;if(n&&typeof n=="string")return`#${n}`;const s=t.tagName.toLowerCase(),i=t.classList;if(i&&i.length>0){let o=s;for(let r=0,c=i.length;r<c;r++){const u=i[r];u&&(o+=`.${u}`)}return o}return s}function bt(e){let t=String(e??"");t=t.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,""),t=t.replace(/<\?[\s\S]*?\?>/g,"");const n=/(<(script|iframe|object|embed|base|meta|applet|noscript)\b[^>]*>([\s\S]*?)<\/\2>|<(script|iframe|object|embed|base|meta|applet|noscript)\b[^>]*\/?>)/gim;let s;do s=t,t=t.replace(n,"");while(t!==s);const i=/(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*:/gi;t=t.replace(i,"data-unsafe-protocol:");const o=/data\s*:\s*(?:text\/html|application\/javascript|text\/javascript|text\/vbscript|text\/xml|application\/xhtml\+xml)/gim;return t=t.replace(o,"data-unsafe-protocol:"),t=t.replace(/\bon\w+\s*=/gim,"data-unsafe-attr="),t=t.replace(/expression\s*\(/gim,"data-unsafe-css(").replace(/behavior\s*:/gim,"data-unsafe-css:"),t}const He=new Set(["href","src","action","formaction","xlink:href","data","poster","srcset","background","cite","longdesc","profile","usemap","classid","codebase"]),Ve=/^\s*(?:javascript|vbscript)\s*:/i;function ze(e,t){return He.has(e.toLowerCase())?Ve.test(t):!1}function qe(e){return e.toLowerCase().includes("url(")?/url\s*\(\s*(?:["']?\s*)?(?:javascript|vbscript)\s*:/i.test(e):!1}function Xe(e,t){if(e===t)return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;const i=t;for(let o=0;o<n.length;o++){const r=n[o];if(e[r]!==i[r])return!1}return!0}function Ge(e){const t=e.length;if(t===0)return new Int32Array(0);const n=new Int32Array(t),s=new Int32Array(t);let i=0;for(let r=0;r<t;r++){const c=e[r];if(c===void 0||c===-1)continue;const u=i>0?s[i-1]:void 0;if(i===0||u!==void 0&&(e[u]??-1)<c){n[r]=u??-1,s[i++]=r;continue}let h=0,E=i-1;for(;h<E;){const b=h+E>>>1,L=s[b];L!==void 0&&(e[L]??-1)<c?h=b+1:E=b}const S=s[h];S!==void 0&&c<(e[S]??Number.MAX_SAFE_INTEGER)&&(h>0&&(n[r]=s[h-1]??-1),s[h]=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=n[r]}return o}function Qe(){if(typeof window<"u"){const e=window.__ATOM_DEBUG__;if(typeof e=="boolean")return e}return!1}let Y=Qe();const y={get enabled(){return Y},set enabled(e){Y=e},log(e,...t){Y&&console.log(`[atom-effect-jquery] ${e}:`,...t)},atomChanged(e,t,n){Y&&console.log(`[atom-effect-jquery] Atom "${e??"anonymous"}" changed:`,t,"→",n)},domUpdated(e,t,n){Y&&(console.log(`[atom-effect-jquery] DOM updated: ${yt(e)}.${t} =`,n),Ye(e))},cleanup(e){Y&&console.log(`[atom-effect-jquery] Cleanup: ${e}`)},warn(...e){Y&&console.warn("[atom-effect-jquery]",...e)}},Vt="atom-debug-highlight";let ae=!1;function Ke(){if(ae)return;ae=!0;const e=document.createElement("style");e.textContent=`.${Vt}{outline:2px solid rgba(255,68,68,0.8);outline-offset:1px;transition:outline 0.5s ease-out}`,document.head.appendChild(e)}const zt=new WeakMap;function Ye(e){const t="jquery"in e?e[0]:e;if(!t||!t.isConnected)return;Ke();const n=zt.get(t);n&&clearTimeout(n),t.classList.add(Vt),zt.set(t,setTimeout(()=>{t.classList.remove(Vt),zt.delete(t)},600))}function le(e,t={}){return Bt(e,t)}Object.defineProperty(le,"debug",{get(){return y.enabled},set(e){y.enabled=e}});function We(){return new Promise(e=>setTimeout(e,0))}l.extend({atom:le,computed:Ht,effect:z,batch:mt,untracked:te,isAtom:ne,isComputed:se,isReactive:ue,nextTick:We});const Je="_aes-bound",W={ROUTE:"[$.route]",BIND:"[atomBind]",LIST:"[atomList]"},St={MODE:"hash",ACTIVE_CLASS:"active",BASE_PATH:"",AUTO_BIND_LINKS:!1},Ze={EVENT:"input"},$e=["innerHTML","outerHTML"],st={ROUTE_NOT_FOUND:e=>`Route "${e}" not found and no notFound route configured`,TEMPLATE_NOT_FOUND:e=>`Template "${e}" not found`,TARGET_NOT_FOUND:e=>`Target element "${e}" not found`,MALFORMED_URI:e=>`Malformed URI component: ${e}`,UNSAFE_CONTENT:"Unsafe content neutralized during sanitization.",BLOCKED_DANGEROUS_VALUE:e=>`Blocked dangerous value in "${e}" property.`,BLOCKED_EVENT_HANDLER:e=>`Blocked setting dangerous event handler attribute "${e}".`,BLOCKED_PROTOCOL:e=>`Blocked dangerous protocol in "${e}" attribute.`,BLOCKED_DANGEROUS_PROP:e=>`Blocked setting dangerous property "${e}". Use html binding for sanitized HTML.`,INVALID_INPUT_ELEMENT:e=>`Val binding used on non-input element <${e}>.`,DUPLICATE_KEY:(e,t)=>`Duplicate key "${e}" at index ${t}.`},It=Je;class tn{constructor(){this.records=new WeakMap,this.boundElements=new WeakSet,this.preservedNodes=new WeakSet,this.ignoredNodes=new WeakSet}keep(t){this.preservedNodes.add(t)}isKept(t){return this.preservedNodes.has(t)}markIgnored(t){this.ignoredNodes.add(t)}isIgnored(t){return this.ignoredNodes.has(t)}_getOrCreateRecord(t){let n=this.records.get(t);return n||(n={},this.records.set(t,n),this.boundElements.has(t)||(this.boundElements.add(t),t.classList.add(It))),n}trackEffect(t,n){const s=this._getOrCreateRecord(t);s.effects??=[],s.effects.push(n)}trackCleanup(t,n){const s=this._getOrCreateRecord(t);s.cleanups??=[],s.cleanups.push(n)}hasBind(t){return this.boundElements.has(t)}cleanup(t){if(!this.boundElements.delete(t))return;const n=this.records.get(t);if(!n)return;this.records.delete(t),this.preservedNodes.delete(t),this.ignoredNodes.delete(t),t.classList.remove(It),y.enabled&&y.cleanup(yt(t));const s=n.effects;if(s)for(let o=0,r=s.length;o<r;o++)try{s[o]?.dispose()}catch(c){y.warn("Effect dispose error:",c)}const i=n.cleanups;if(i)for(let o=0,r=i.length;o<r;o++)try{i[o]?.()}catch(c){y.warn("Cleanup error:",c)}}cleanupDescendants(t){const n=t.querySelectorAll(`.${It}`);for(let s=0,i=n.length;s<i;s++){const o=n[s];o&&this.boundElements.has(o)?this.cleanup(o):o&&o.classList.remove(It)}}cleanupTree(t){this.cleanupDescendants(t),this.cleanup(t)}}const m=new tn;let at=null;function he(e=document.body){at||(at=new MutationObserver(t=>{for(let n=0,s=t.length;n<s;n++){const i=t[n]?.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||m.isKept(c)||m.isIgnored(c)||m.cleanupTree(c))}}}),at.observe(e,{childList:!0,subtree:!0}))}function en(){at?.disconnect(),at=null}function q(e,t,n,s){ue(t)?m.trackEffect(e,z(()=>{const i=t.value;n(i),y.domUpdated(l(e),s,i)})):(n(t),y.enabled&&y.domUpdated(l(e),s,t))}var v=(e=>(e[e.None=0]="None",e[e.Focused=1]="Focused",e[e.Composing=2]="Composing",e[e.SyncingToAtom=4]="SyncingToAtom",e[e.SyncingToDom=8]="SyncingToDom",e[e.Busy=14]="Busy",e))(v||{});function fe(){return{timeoutId:null,flags:0}}function nn(e,t,n={}){const{debounce:s,event:i=Ze.EVENT,parse:o=I=>I,format:r=I=>String(I??""),equal:c=Object.is}=n,u=fe(),h=e[0],E=()=>{if(!(u.flags&v.Busy)){u.flags|=v.SyncingToAtom;try{const I=h.value,T=o(I);c(t.value,T)||(t.value=T)}finally{u.flags&=~v.SyncingToAtom}}},S=()=>{u.timeoutId&&(clearTimeout(u.timeoutId),u.timeoutId=null,E()),u.flags&=~v.Focused;const I=r(t.value);h.value!==I&&(h.value=I)},b=()=>{u.flags&v.Busy||(s?(u.timeoutId&&clearTimeout(u.timeoutId),u.timeoutId=setTimeout(E,s)):E())},L={compositionstart:()=>{u.flags|=v.Composing},compositionend:()=>{u.flags&=~v.Composing,E()},focus:()=>{u.flags|=v.Focused},blur:S,[i]:b,change:b};return e.on(L),{effect:()=>{const I=t.value,T=r(I),R=h.value;if(R!==T&&!(u.flags&v.Focused&&c(o(R),I))){u.flags|=v.SyncingToDom;try{if(u.flags&v.Focused){const{selectionStart:it,selectionEnd:lt}=h;h.value=T;const X=T.length;h.setSelectionRange(Math.min(it??0,X),Math.min(lt??0,X))}else h.value=T;y.domUpdated(e,"val",T)}finally{u.flags&=~v.SyncingToDom}}},cleanup:()=>{e.off(L),u.timeoutId&&clearTimeout(u.timeoutId)}}}const de=Object.create(null);function sn(e){let t=de[e];return t||(t=e.includes("-")?e.replace(/-./g,n=>n[1].toUpperCase()):e,de[e]=t,t)}function B(e){let t=null;return{get $el(){return t||(t=l(e)),t},el:e,trackCleanup:n=>m.trackCleanup(e,n)}}function on(e,t){const n=e.el;q(n,t,s=>{const i=typeof s=="string"?s:String(s??"");n.textContent!==i&&(n.textContent=i)},"text")}function _e(e,t){const n=e.el;q(n,t,s=>{const i=String(s??""),o=bt(i);o!==i&&console.warn(`${W.BIND} ${st.UNSAFE_CONTENT}`),n.innerHTML!==o&&(n.innerHTML=o)},"html")}function Ee(e,t){for(const n in t)q(e.el,t[n],s=>{e.el.classList.toggle(n,!!s)},`class.${n}`)}function pe(e,t){const n=e.el,s=n.style;for(const i in t){const o=t[i];if(o===void 0)continue;const r=sn(i),c=Array.isArray(o),u=c?o[0]:o,h=c?o[1]:"";q(n,u,E=>{const S=h?`${E}${h}`:String(E);if(qe(S)){console.warn(`${W.BIND} ${st.BLOCKED_DANGEROUS_VALUE(i)}`);return}s[r]=S},`css.${i}`)}}function ge(e,t){const n=e.el;for(const s in t){const i=s.charCodeAt(0);if((i===111||i===79)&&(s.charCodeAt(1)===110||s.charCodeAt(1)===78)){console.warn(`${W.BIND} ${st.BLOCKED_EVENT_HANDLER(s)}`);continue}q(n,t[s],o=>{if(o==null||o===!1){n.removeAttribute(s);return}const r=o===!0?s:String(o);if(ze(s,r)){console.warn(`${W.BIND} ${st.BLOCKED_PROTOCOL(s)}`);return}n.getAttribute(s)!==r&&n.setAttribute(s,r)},`attr.${s}`)}}function me(e,t){const n=e.el;for(const s in t){if($e.includes(s)){console.warn(`${W.BIND} ${st.BLOCKED_DANGEROUS_PROP(s)}`);continue}q(e.el,t[s],i=>{n[s]!==i&&(n[s]=i)},`prop.${s}`)}}function Ct(e,t,n,s){const i=e.el;q(i,t,o=>{const r=n?!o:!!o;i.style.display=r?"":"none",y.enabled&&y.domUpdated(i,s,o)},s)}function ye(e,t){const n=e.el.tagName.toLowerCase();if(n!=="input"&&n!=="select"&&n!=="textarea"){console.warn(`[atomBind] Val binding used on non-input element <${n}>.`);return}const s=Array.isArray(t),{effect:i,cleanup:o}=nn(e.$el,s?t[0]:t,s?t[1]:{});m.trackEffect(e.el,z(i)),e.trackCleanup(o)}function be(e,t){const n=e.el,s=e.$el,i=fe(),o=()=>{if(i.flags&v.Busy)return;const c=n.checked;t.value!==c&&(t.value=c)};s.on("change",o),e.trackCleanup(()=>s.off("change",o));const r=z(()=>{i.flags|=v.SyncingToDom;const c=!!t.value;n.checked!==c&&(n.checked=c,y.enabled&&y.domUpdated(s,"checked",c)),i.flags&=~v.SyncingToDom});m.trackEffect(n,r)}function rn(e,t){for(const n in t){const s=t[n];if(typeof s!="function")continue;const i=o=>{mt(()=>s.call(e.el,l.Event(o.type,{originalEvent:o})))};e.el.addEventListener(n,i),e.trackCleanup(()=>e.el.removeEventListener(n,i))}}l.fn.atomBind=function(e){return this.each(function(){const t=B(this);e.text!==void 0&&on(t,e.text),e.html!==void 0&&_e(t,e.html),e.class&&Ee(t,e.class),e.css&&pe(t,e.css),e.attr&&ge(t,e.attr),e.prop&&me(t,e.prop),e.show!==void 0&&Ct(t,e.show,!1,"show"),e.hide!==void 0&&Ct(t,e.hide,!0,"hide"),e.val!==void 0&&ye(t,e.val),e.checked!==void 0&&be(t,e.checked),e.on&&rn(t,e.on)})},l.fn.atomText=function(e,t){return this.each(function(){const n=l(this);q(this,e,t?i=>n.text(t(i)):i=>n.text(String(i??"")),"text")})},l.fn.atomHtml=function(e){return this.each(function(){_e(B(this),e)})},l.fn.atomClass=function(e,t){return this.each(function(){Ee(B(this),{[e]:t})})},l.fn.atomCss=function(e,t,n){return this.each(function(){pe(B(this),{[e]:n?[t,n]:t})})},l.fn.atomAttr=function(e,t){return this.each(function(){ge(B(this),{[e]:t})})},l.fn.atomProp=function(e,t){return this.each(function(){me(B(this),{[e]:t})})},l.fn.atomShow=function(e){return this.each(function(){Ct(B(this),e,!1,"show")})},l.fn.atomHide=function(e){return this.each(function(){Ct(B(this),e,!0,"hide")})},l.fn.atomVal=function(e,t={}){return this.each(function(){ye(B(this),t&&Object.keys(t).length>0?[e,t]:e)})},l.fn.atomChecked=function(e){return this.each(function(){be(B(this),e)})},l.fn.atomOn=function(e,t){return this.each(function(){const n=l(this);n.on(e,t),m.trackCleanup(this,()=>n.off(e,t))})},l.fn.atomUnbind=function(){return this.each(function(){m.cleanupTree(this)})},l.fn.atomList=function(e,t){const{key:n,render:s,bind:i,update:o,onAdd:r,onRemove:c,empty:u}=t,h=typeof n=="function"?n:(E,S)=>E[n];return this.each(function(){const E=l(this),S=yt(this),b=new Map,L=new Set;let N=[],k=null;const I=z(()=>{const T=e.value,R=T.length;if(R===0){if(u&&!k){const d=typeof u=="string"?bt(u):u;k=l(d).appendTo(E)}}else k&&(k.remove(),k=null);if(R===0&&b.size===0){N=[];return}y.log("list",`${S} updating with ${R} items`);const it=new Map,lt=N.length;for(let d=0;d<lt;d++)it.set(N[d],d);const X=new Array(R),ht=new Set,vt=new Int32Array(R);for(let d=0;d<R;d++){const x=T[d],g=h(x,d);ht.has(g)&&console.warn(`${W.LIST} ${st.DUPLICATE_KEY(g,d)}`),X[d]=g,ht.add(g),vt[d]=it.get(g)??-1}if(b.size>0)for(const[d,x]of b){if(ht.has(d)||L.has(d))continue;const g=()=>{x.$el.remove(),x.$el[0]&&m.cleanup(x.$el[0]),L.delete(d),y.log("list",`${S} removed item:`,d)};if(b.delete(d),L.add(d),c){const D=c(x.$el);D instanceof Promise?D.then(g):g()}else g()}if(R===0){N=[];return}const At=Ge(vt);let P=At.length-1,U=null;for(let d=R-1;d>=0;d--){const x=X[d],g=T[d],D=b.get(x);if(D){const j=D.item;D.item=g;const ot=D.$el[0];if(!ot)continue;if(o)o(D.$el,g,d),y.domUpdated(D.$el,"list.update",g);else if(j!==g&&!Xe(j,g)){const a=s(g,d),_=typeof a=="string"?bt(a):a,p=l(_),f=U===ot;D.$el.replaceWith(p),D.$el=p,i&&i(p,g,d),y.domUpdated(p,"list.render",g),f&&(U=p[0]||null)}if(P>=0&&At[P]===d)P--;else{const a=D.$el[0];U?.isConnected?U!==a&&D.$el.insertBefore(U):D.$el.appendTo(E)}U=D.$el[0]||null}else{const j=s(g,d),ot=typeof j=="string"?bt(j):j,a=l(ot);b.set(x,{$el:a,item:g}),U?.isConnected?a.insertBefore(U):a.appendTo(E),i&&i(a,g,d),r&&r(a),y.domUpdated(a,"list.add",g),U=a[0]||null}}N=X});m.trackEffect(this,I),m.trackCleanup(this,()=>{b.clear(),L.clear(),N=[],k?.remove()})})};const Tt=new WeakMap;l.fn.atomMount=function(e,t={}){return this.each(function(){const n=yt(this),s=Tt.get(this);s&&(y.log("mount",`${n} unmounting existing component`),s()),y.log("mount",`${n} mounting component`);let i;try{i=e(l(this),t)}catch(r){console.error("[atom-effect-jquery] Mount error:",r);return}const o=()=>{if(Tt.delete(this)){if(y.log("mount",`${n} full cleanup`),typeof i=="function")try{i()}catch(r){console.error("[atom-effect-jquery] Cleanup error:",r)}m.cleanupTree(this)}};Tt.set(this,o),m.trackCleanup(this,o)})},l.fn.atomUnmount=function(){return this.each(function(){const e=Tt.get(this);e&&e()})};const Dt=W.ROUTE;function cn(e){const{target:t,default:n,routes:s,notFound:i,mode:o=St.MODE,basePath:r=St.BASE_PATH,autoBindLinks:c=St.AUTO_BIND_LINKS,activeClass:u=St.ACTIVE_CLASS,beforeTransition:h,afterTransition:E}=e,S=o==="history";let b=!1,L=null,N=S?window.location.pathname+window.location.search:window.location.hash;const k=[],I=new Set,T=l(t),R=()=>{if(S){let f=window.location.pathname;return r&&f.startsWith(r)&&(f=f.substring(r.length)),f.replace(/^\//,"")||n}const a=window.location.hash,_=a.indexOf("?");return(_===-1?a.substring(1):a.substring(1,_))||n},it=()=>{let a;if(S){if(a=window.location.search.substring(1),!a)return{}}else{const f=window.location.hash,A=f.indexOf("?");if(A===-1)return{};a=f.substring(A+1)}const _=new URLSearchParams(a),p=Object.fromEntries(_);if(a.includes("%"))try{decodeURIComponent(a)}catch{console.warn(`${Dt} Malformed URI component: ${a}`)}return p},lt=a=>{if(S){const _=`${r.replace(/\/$/,"")}/${a}`;history.pushState(null,"",_),N=_}else{const _=`#${a}`;N=_,window.location.hash=_}},X=()=>{S?history.replaceState(null,"",N):window.location.hash=N},ht=()=>S?window.location.pathname+window.location.search:window.location.hash,vt=a=>{let _=s[a];return!_&&i&&(_=s[i]),_||(console.warn(`${Dt} Route "${a}" not found and no notFound route configured`),null)},At=a=>{const _=document.querySelector(a);if(!_?.content)return console.warn(`${Dt} Template "${a}" not found`),!1;const p=_.content.cloneNode(!0);return T.append(p),!0},P=Bt(R()),U=a=>{if(b)return;const _=T[0];if(!_){console.warn(`${Dt} Target element "${t}" not found`);return}const p=vt(a);if(!p)return;const f=it();h&&h(L||a,a),T.empty();let A=f;if(p.onEnter){const J=p.onEnter(f);J!==void 0&&(A={...f,...J})}p.render?p.render(_,a,A):p.template&&At(p.template),E&&E(L||a,a),L=a},d=a=>{if(b)return;const _=P.value,p=s[_];if(p?.onLeave&&p.onLeave()===!1)return;const f=a||n;lt(f),P.value=f},x=()=>{if(b)return;const a=ht();if(a===N)return;const _=R(),p=P.value;if(p!==_){const f=s[p];if(f?.onLeave&&f.onLeave()===!1){X();return}P.value=_}else U(_);N=a},g=()=>{if(!c)return;const a=f=>{f.preventDefault();const A=f.currentTarget.dataset.route;A!=null&&d(A)};l(document).on("click","[data-route]",a),k.push(()=>{l(document).off("click","[data-route]",a)});const _=f=>{if(I.has(f))return;const A=f.dataset.route;I.add(f);const J=z(()=>{const Z=P.value===A;f.classList.toggle(u,Z),Z?f.setAttribute("aria-current","page"):f.removeAttribute("aria-current")});m.trackEffect(f,J),m.trackCleanup(f,()=>{I.delete(f)})};for(const f of document.querySelectorAll("[data-route]"))_(f);const p=new MutationObserver(f=>{for(const A of f)A.type==="childList"&&A.addedNodes.forEach(J=>{if(J.nodeType===1){const Z=J;Z.matches?.("[data-route]")&&_(Z),Z.querySelectorAll&&Z.querySelectorAll("[data-route]").forEach(an=>_(an))}})});p.observe(document.body,{childList:!0,subtree:!0}),k.push(()=>p.disconnect())},D=()=>{b||(b=!0,k.forEach(a=>a()),k.length=0,I.forEach(a=>m.cleanup(a)),I.clear())},j=S?"popstate":"hashchange";window.addEventListener(j,x),k.push(()=>window.removeEventListener(j,x));const ot=z(()=>{U(P.value)});return k.push(()=>ot.dispose()),g(),T[0]&&m.trackCleanup(T[0],D),{currentRoute:P,navigate:d,destroy:D}}l.extend({route:cn});function un(e,t){const{defaultValue:n,transform:s,method:i,headers:o,ajaxOptions:r}=t,c=typeof e=="function"?e:()=>e;return Ht(async()=>{const u=c(),h=await l.ajax({...r,url:u,method:i,headers:o});return s?s(h):h},{defaultValue:n,lazy:!1})}l.extend({atomFetch:un});const Ot=new WeakMap;let Se=!1;const Ie=e=>{let t=Ot.get(e);return t||(t=function(...n){return mt(()=>e.apply(this,n))},Ot.set(e,t)),t};function Ce(){if(Se)return;Se=!0;const e=l.fn.on,t=l.fn.off,n=l.fn.remove,s=l.fn.empty,i=l.fn.detach;l.fn.remove=function(o){const r=o?this.filter(o):this;for(let c=0,u=r.length;c<u;c++){const h=r[c];h&&(m.cleanupTree(h),m.markIgnored(h))}return n.call(this,o)},l.fn.empty=function(){for(let o=0,r=this.length;o<r;o++){const c=this[o];c&&m.cleanupDescendants(c)}return s.call(this)},l.fn.detach=function(o){const r=o?this.filter(o):this;for(let c=0,u=r.length;c<u;c++){const h=r[c];h&&m.keep(h)}return i.call(this,o)},l.fn.on=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,u={};for(const h in c){const E=c[h];E&&(u[h]=Ie(E))}o[0]=u}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=Ie(o[c]);break}return e.apply(this,o)},l.fn.off=function(...o){const r=o[0];if(r&&typeof r=="object"){const c=r,u={};for(const h in c){const E=c[h];E&&(u[h]=Ot.get(E)||E)}o[0]=u}else for(let c=o.length-1;c>=0;c--)if(typeof o[c]=="function"){o[c]=Ot.get(o[c])||o[c];break}return t.apply(this,o)}}l(()=>{Ce(),he(document.body)}),O.default=l,O.atom=Bt,O.batch=mt,O.computed=Ht,O.disableAutoCleanup=en,O.effect=z,O.enableAutoCleanup=he,O.enablejQueryOverrides=Ce,O.registry=m,O.untracked=te,Object.defineProperties(O,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
2
2
|
//# sourceMappingURL=atom-effect-jquery.min.js.map
|