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