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