@but212/atom-effect-jquery 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -158
- package/dist/atom-effect-jquery.min.js +1 -1
- package/dist/atom-effect-jquery.min.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1054 -1278
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../core/dist/index.mjs","../src/utils.ts","../src/debug.ts","../src/namespace.ts","../src/registry.ts","../src/effect-factory.ts","../src/types.ts","../src/input-binding.ts","../src/chainable.ts","../src/unified.ts","../src/list.ts","../src/mount.ts","../src/jquery-patch.ts","../src/index.ts"],"sourcesContent":["const ue = {\n /** One second in milliseconds */\n ONE_SECOND_MS: 1e3\n}, G = {\n IDLE: \"idle\",\n PENDING: \"pending\",\n RESOLVED: \"resolved\",\n REJECTED: \"rejected\"\n}, b = {\n DISPOSED: 1,\n HAS_FN_SUBS: 2,\n HAS_OBJ_SUBS: 4\n}, I = {\n ...b,\n EXECUTING: 8\n}, o = {\n ...b,\n DIRTY: 8,\n IDLE: 16,\n PENDING: 32,\n RESOLVED: 64,\n REJECTED: 128,\n RECOMPUTING: 256,\n HAS_ERROR: 512\n}, C = {\n ...b,\n SYNC: 8,\n NOTIFICATION_SCHEDULED: 16\n}, ye = {\n /** Maximum number of pooled objects to prevent memory bloat */\n MAX_SIZE: 1e3,\n /** Number of objects to pre-allocate for performance-critical paths */\n WARMUP_SIZE: 100\n}, m = {\n /** Maximum effect executions per second to detect infinite loops (Legacy/Fallback) */\n MAX_EXECUTIONS_PER_SECOND: 1e3,\n /** Threshold for cleaning up old execution timestamps */\n CLEANUP_THRESHOLD: 1e3,\n /**\n * Maximum executions per effect within a single flush cycle\n * Increased from 50 to 100\n */\n MAX_EXECUTIONS_PER_EFFECT: 100,\n /**\n * Maximum total executions across all effects in a single flush cycle\n * Increased from 5000 to 10000\n */\n MAX_EXECUTIONS_PER_FLUSH: 1e4,\n /** Maximum iterations for synchronous flush loop to prevent infinite loops */\n MAX_FLUSH_ITERATIONS: 1e3,\n /** Minimum allowed value for max flush iterations */\n MIN_FLUSH_ITERATIONS: 10,\n /** Threshold for shrinking the batch queue to assist GC */\n BATCH_QUEUE_SHRINK_THRESHOLD: 1e3\n}, K = {\n /** Maximum dependencies before warning about large dependency graphs */\n MAX_DEPENDENCIES: 1e3,\n /** Enable infinite loop detection warnings */\n WARN_INFINITE_LOOP: !0\n}, v = 1073741823, M = typeof process < \"u\" && process.env && process.env.NODE_ENV !== \"production\", _e = Object.freeze([]);\nclass F extends Error {\n /**\n * Creates a new AtomError\n * @param message - Error message describing what went wrong\n * @param cause - Original error that caused this error\n * @param recoverable - Whether the operation can be retried\n */\n constructor(e, t = null, s = !0) {\n super(e), this.name = \"AtomError\", this.cause = t, this.recoverable = s, this.timestamp = /* @__PURE__ */ new Date();\n }\n}\nclass T extends F {\n /**\n * Creates a new ComputedError\n * @param message - Error message\n * @param cause - Original error\n */\n constructor(e, t = null) {\n super(e, t, !0), this.name = \"ComputedError\";\n }\n}\nclass P extends F {\n /**\n * Creates a new EffectError\n * @param message - Error message\n * @param cause - Original error\n */\n constructor(e, t = null) {\n super(e, t, !1), this.name = \"EffectError\";\n }\n}\nclass k extends F {\n /**\n * Creates a new SchedulerError\n * @param message - Error message\n * @param cause - Original error\n */\n constructor(e, t = null) {\n super(e, t, !1), this.name = \"SchedulerError\";\n }\n}\nconst f = {\n // ─────────────────────────────────────────────────────────────────\n // Computed errors\n // ─────────────────────────────────────────────────────────────────\n /**\n * Error thrown when computed() receives a non-function argument.\n */\n COMPUTED_MUST_BE_FUNCTION: \"Computed function must be a function\",\n /**\n * Error thrown when accessing a pending async computed without a default value.\n */\n COMPUTED_ASYNC_PENDING_NO_DEFAULT: \"Async computation is pending. No default value provided\",\n /**\n * Error thrown when a synchronous computed computation fails.\n */\n COMPUTED_COMPUTATION_FAILED: \"Computed computation failed\",\n /**\n * Error thrown when an asynchronous computed computation fails.\n */\n COMPUTED_ASYNC_COMPUTATION_FAILED: \"Async computed computation failed\",\n /**\n * Error thrown when a circular dependency is detected during computation.\n */\n COMPUTED_CIRCULAR_DEPENDENCY: \"Circular dependency detected during computation\",\n /**\n * Error thrown when accessing a disposed computed value.\n */\n COMPUTED_DISPOSED: \"Cannot access a disposed computed\",\n // ─────────────────────────────────────────────────────────────────\n // Atom errors\n // ─────────────────────────────────────────────────────────────────\n /**\n * Error thrown when atom.subscribe() receives an invalid listener.\n */\n ATOM_SUBSCRIBER_MUST_BE_FUNCTION: \"Subscription listener must be a function or Subscriber object\",\n /**\n * Error logged when an individual subscriber throws during notification.\n * @remarks This error is caught and logged to prevent cascading failures.\n */\n ATOM_INDIVIDUAL_SUBSCRIBER_FAILED: \"Error during individual atom subscriber execution\",\n // ─────────────────────────────────────────────────────────────────\n // Effect errors\n // ─────────────────────────────────────────────────────────────────\n /**\n * Error thrown when effect() receives a non-function argument.\n */\n EFFECT_MUST_BE_FUNCTION: \"Effect function must be a function\",\n /**\n * Error thrown when an effect's execution fails.\n */\n EFFECT_EXECUTION_FAILED: \"Effect execution failed\",\n /**\n * Error thrown when an effect's cleanup function fails.\n */\n EFFECT_CLEANUP_FAILED: \"Effect cleanup function execution failed\",\n /**\n * Error thrown when attempting to run a disposed effect.\n */\n EFFECT_DISPOSED: \"Cannot run a disposed effect\",\n // ─────────────────────────────────────────────────────────────────\n // Debug warnings\n // ─────────────────────────────────────────────────────────────────\n /**\n * Warning message for large dependency graphs.\n *\n * @param count - The number of dependencies detected\n * @returns Formatted warning message with dependency count\n *\n * @example\n * ```ts\n * console.warn(ERROR_MESSAGES.LARGE_DEPENDENCY_GRAPH(150));\n * // Output: \"Large dependency graph detected: 150 dependencies\"\n * ```\n */\n LARGE_DEPENDENCY_GRAPH: (i) => `Large dependency graph detected: ${i} dependencies`,\n /**\n * Error logged when the onError callback itself throws an error.\n * @remarks This prevents cascading failures from masking the original error.\n */\n CALLBACK_ERROR_IN_ERROR_HANDLER: \"Error occurred during onError callback execution\"\n}, X = /* @__PURE__ */ Symbol(\"debugName\"), ae = /* @__PURE__ */ Symbol(\"id\"), Y = /* @__PURE__ */ Symbol(\"type\"), q = /* @__PURE__ */ Symbol(\"noDefaultValue\");\nfunction le(i) {\n return \"dependencies\" in i && Array.isArray(i.dependencies);\n}\nfunction se(i, e, t) {\n if (!t.has(i.id)) {\n if (t.add(i.id), i === e)\n throw new T(\"Indirect circular dependency detected\");\n if (le(i)) {\n const s = i.dependencies;\n for (let n = 0; n < s.length; n++) {\n const r = s[n];\n r && se(r, e, t);\n }\n }\n }\n}\nconst N = {\n enabled: typeof process < \"u\" && process.env?.NODE_ENV === \"development\",\n maxDependencies: K.MAX_DEPENDENCIES,\n warnInfiniteLoop: K.WARN_INFINITE_LOOP,\n warn(i, e) {\n this.enabled && i && console.warn(`[Atom Effect] ${e}`);\n },\n /**\n * Checks for circular dependencies.\n * Direct check runs always; indirect check only in dev mode.\n * @throws {ComputedError} When circular dependency detected\n */\n checkCircular(i, e) {\n if (i === e)\n throw new T(\"Direct circular dependency detected\");\n this.enabled && se(i, e, /* @__PURE__ */ new Set());\n },\n attachDebugInfo(i, e, t) {\n if (!this.enabled)\n return;\n const s = i;\n s[X] = `${e}_${t}`, s[ae] = t, s[Y] = e;\n },\n getDebugName(i) {\n if (i != null && X in i)\n return i[X];\n },\n getDebugType(i) {\n if (i != null && Y in i)\n return i[Y];\n }\n};\nlet fe = 1;\nconst Ee = () => fe++;\nclass ie {\n constructor() {\n this.flags = 0, this.version = 0, this._lastSeenEpoch = -1, this._modifiedAtEpoch = -1, this.id = Ee() & v, this._tempUnsub = void 0;\n }\n}\nclass ne extends ie {\n /**\n * Subscribes a listener function or Subscriber object to value changes.\n */\n subscribe(e) {\n if (typeof e == \"function\")\n return this._addSubscriber(this._fnSubs, e, b.HAS_FN_SUBS);\n if (e !== null && typeof e == \"object\" && \"execute\" in e)\n return this._addSubscriber(this._objSubs, e, b.HAS_OBJ_SUBS);\n throw new F(f.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);\n }\n /**\n * Internal helper for subscription logic to reduce code duplication and branching.\n */\n _addSubscriber(e, t, s) {\n return e.indexOf(t) !== -1 ? (M && console.warn(\n \"Attempted to subscribe the same listener twice. Ignoring duplicate subscription.\"\n ), () => {\n }) : (e.push(t), this.flags |= s, () => {\n const n = e.indexOf(t);\n if (n === -1) return;\n const r = e.pop();\n n < e.length && (e[n] = r), e.length === 0 && (this.flags &= ~s);\n });\n }\n /**\n * Gets the total number of active subscribers.\n */\n subscriberCount() {\n return this._fnSubs.length + this._objSubs.length;\n }\n /**\n * Notifies all subscribers of a change.\n */\n _notifySubscribers(e, t) {\n const s = this.flags;\n if (s & (b.HAS_FN_SUBS | b.HAS_OBJ_SUBS)) {\n if (s & b.HAS_FN_SUBS) {\n const n = this._fnSubs;\n for (let r = 0; r < n.length; r++)\n try {\n n[r](e, t);\n } catch (h) {\n this._handleNotifyError(h);\n }\n }\n if (s & b.HAS_OBJ_SUBS) {\n const n = this._objSubs;\n for (let r = 0; r < n.length; r++)\n try {\n n[r].execute();\n } catch (h) {\n this._handleNotifyError(h);\n }\n }\n }\n }\n /**\n * Hoisted error reporter to keep notification loops lean and aid JIT inlining.\n */\n _handleNotifyError(e) {\n console.error(new F(f.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, e));\n }\n}\nclass de {\n constructor() {\n this.frozen = 0, this.tooLarge = 0, this.poolFull = 0;\n }\n}\nclass pe {\n constructor() {\n this.acquired = 0, this.released = 0, this.rejected = new de();\n }\n}\nclass J {\n constructor() {\n this.pool = [], this.maxPoolSize = 50, this.maxReusableCapacity = 256, this.stats = M ? new pe() : null;\n }\n /** Acquires an array from the pool or creates a new one if the pool is empty. */\n acquire() {\n const e = this.stats;\n return e && e.acquired++, this.pool.pop() ?? [];\n }\n /**\n * Releases an array back to the pool.\n * Clears the array before storing it.\n */\n release(e, t) {\n const s = this.stats;\n if (t && e === t) return;\n if (Object.isFrozen(e)) {\n s && s.rejected.frozen++;\n return;\n }\n if (e.length > this.maxReusableCapacity) {\n s && s.rejected.tooLarge++;\n return;\n }\n const n = this.pool;\n if (n.length >= this.maxPoolSize) {\n s && s.rejected.poolFull++;\n return;\n }\n e.length = 0, n.push(e), s && s.released++;\n }\n /** Returns current stats for the pool (dev mode only). */\n getStats() {\n const e = this.stats;\n if (!e) return null;\n const { acquired: t, released: s, rejected: n } = e, { frozen: r, tooLarge: h, poolFull: c } = n;\n return {\n acquired: t,\n released: s,\n rejected: {\n frozen: r,\n tooLarge: h,\n poolFull: c\n },\n leaked: t - s - (r + h + c),\n poolSize: this.pool.length\n };\n }\n /** Resets the pool and its stats. */\n reset() {\n this.pool.length = 0;\n const e = this.stats;\n e && (e.acquired = 0, e.released = 0, e.rejected.frozen = 0, e.rejected.tooLarge = 0, e.rejected.poolFull = 0);\n }\n}\nconst g = Object.freeze([]), U = Object.freeze([]), S = Object.freeze([]), x = new J(), L = new J(), y = new J();\nfunction R(i, e, t, s) {\n if (e != null) {\n if (typeof e.addDependency == \"function\") {\n e.addDependency(i);\n return;\n }\n if (typeof e == \"function\") {\n const n = e;\n t.indexOf(n) === -1 && (t.push(n), i.flags |= b.HAS_FN_SUBS);\n return;\n }\n if (typeof e.execute == \"function\") {\n const n = e;\n s.indexOf(n) === -1 && (s.push(n), i.flags |= b.HAS_OBJ_SUBS);\n }\n }\n}\nfunction Se(i, e, t, s) {\n const n = e.length;\n if (n > 0)\n for (let c = 0; c < n; c++) {\n const a = e[c];\n a && (a._tempUnsub = t[c]);\n }\n const r = i.length, h = L.acquire();\n h.length = r;\n for (let c = 0; c < r; c++) {\n const a = i[c];\n if (!a) continue;\n const E = a._tempUnsub;\n E ? (h[c] = E, a._tempUnsub = void 0) : (N.checkCircular(a, s), h[c] = a.subscribe(s));\n }\n if (n > 0)\n for (let c = 0; c < n; c++) {\n const a = e[c];\n if (a) {\n const E = a._tempUnsub;\n E && (E(), a._tempUnsub = void 0);\n }\n }\n return t !== U && L.release(t), h;\n}\nlet H = 0;\nfunction re() {\n return H = H + 1 & v || 1, H;\n}\nfunction ge() {\n return H;\n}\nlet Q = 0, $ = 0, z = !1;\nfunction W() {\n return z ? (M && console.warn(\n \"Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass\"\n ), !1) : (z = !0, Q = Q + 1 & v || 1, $ = 0, !0);\n}\nfunction Z() {\n z = !1;\n}\nfunction De() {\n return z ? ++$ : 0;\n}\nclass Ie {\n constructor() {\n this._queueBuffer = [[], []], this._bufferIndex = 0, this._size = 0, this._epoch = 0, this._isProcessing = !1, this._isBatching = !1, this._batchDepth = 0, this._batchQueue = [], this._batchQueueSize = 0, this._isFlushingSync = !1, this._maxFlushIterations = m.MAX_FLUSH_ITERATIONS;\n }\n /**\n * Returns the current operational phase of the scheduler.\n */\n get phase() {\n return this._isProcessing || this._isFlushingSync ? 2 : this._isBatching ? 1 : 0;\n }\n /** Current number of pending jobs. */\n get queueSize() {\n return this._size;\n }\n /**\n * Returns whether the scheduler is currently batching updates.\n */\n get isBatching() {\n return this._isBatching;\n }\n /**\n * Schedules a task for execution.\n */\n schedule(e) {\n if (M && typeof e != \"function\")\n throw new k(\"Scheduler callback must be a function\");\n const t = this._epoch;\n if (e._nextEpoch === t) return;\n if (e._nextEpoch = t, this._isBatching || this._isFlushingSync) {\n this._batchQueue[this._batchQueueSize++] = e;\n return;\n }\n const s = this._bufferIndex, n = this._size;\n this._queueBuffer[s][n] = e, this._size = n + 1, this._isProcessing || this.flush();\n }\n /**\n * Schedules a microtask-based flush of the queue.\n * Coalesces multiple schedule calls into a single microtask execution.\n */\n flush() {\n this._isProcessing || this._size === 0 || (this._isProcessing = !0, queueMicrotask(() => {\n try {\n if (this._size === 0) return;\n const e = W();\n this._drainQueue(), e && Z();\n } finally {\n this._isProcessing = !1, this._size > 0 && !this._isBatching && this.flush();\n }\n }));\n }\n /**\n * Immediately flushes all queues synchronously.\n * Used at the end of a batch block or when immediate reflection is required.\n */\n flushSync() {\n this._isFlushingSync = !0;\n const e = W();\n try {\n this._mergeBatchQueue(), this._drainQueue();\n } finally {\n this._isFlushingSync = !1, e && Z();\n }\n }\n /**\n * Merges jobs from the batching queue into the primary queue.\n * Increments the epoch to ensure deduplication.\n */\n _mergeBatchQueue() {\n const e = this._batchQueueSize;\n if (e === 0) return;\n const t = ++this._epoch, s = this._batchQueue, n = this._queueBuffer[this._bufferIndex];\n let r = this._size;\n for (let h = 0; h < e; h++) {\n const c = s[h];\n c._nextEpoch !== t && (c._nextEpoch = t, n[r++] = c);\n }\n this._size = r, this._batchQueueSize = 0, s.length > m.BATCH_QUEUE_SHRINK_THRESHOLD && (s.length = 0);\n }\n _drainQueue() {\n let e = 0;\n const t = this._maxFlushIterations;\n for (; this._size > 0; ) {\n if (++e > t) {\n this._handleFlushOverflow();\n return;\n }\n this._processQueue(), this._mergeBatchQueue();\n }\n }\n _processQueue() {\n const e = this._bufferIndex, t = this._queueBuffer[e], s = this._size;\n this._bufferIndex = e ^ 1, this._size = 0, this._epoch++, this._processJobs(t, s);\n }\n _handleFlushOverflow() {\n console.error(\n new k(\n `Maximum flush iterations (${this._maxFlushIterations}) exceeded. Possible infinite loop.`\n )\n ), this._size = 0, this._queueBuffer[this._bufferIndex].length = 0, this._batchQueueSize = 0;\n }\n _processJobs(e, t) {\n for (let s = 0; s < t; s++)\n try {\n const n = e[s];\n n && n();\n } catch (n) {\n console.error(\n new k(\"Error occurred during scheduler execution\", n)\n );\n }\n e.length = 0;\n }\n startBatch() {\n this._batchDepth++, this._isBatching = !0;\n }\n endBatch() {\n const e = this._batchDepth;\n if (e === 0) {\n M && console.warn(\"endBatch() called without matching startBatch(). Ignoring.\");\n return;\n }\n const t = e - 1;\n this._batchDepth = t, t === 0 && (this.flushSync(), this._isBatching = !1);\n }\n setMaxFlushIterations(e) {\n if (e < m.MIN_FLUSH_ITERATIONS)\n throw new k(\n `Max flush iterations must be at least ${m.MIN_FLUSH_ITERATIONS}`\n );\n this._maxFlushIterations = e;\n }\n}\nconst B = new Ie();\nclass be {\n constructor() {\n this.current = null;\n }\n /**\n * Runs the provided function within the context of the given listener.\n * Restores the previous context after the function completes or throws.\n *\n * @param listener - The tracking listener to associate with the current execution.\n * @param fn - The function to execute.\n */\n run(e, t) {\n const s = this.current;\n this.current = e;\n try {\n return t();\n } finally {\n this.current = s;\n }\n }\n /**\n * Retrieves the listener currently associated with the tracking context.\n */\n getCurrent() {\n return this.current;\n }\n}\nconst d = new be();\nfunction Ce(i) {\n if (typeof i != \"function\")\n throw new F(\"Untracked callback must be a function\");\n const e = d.current;\n d.current = null;\n try {\n return i();\n } finally {\n d.current = e;\n }\n}\nclass Ne extends ne {\n constructor(e, t) {\n super(), this._value = e, this._pendingOldValue = void 0, this._notifyTask = void 0, this._fnSubs = [], this._objSubs = [], t && (this.flags |= C.SYNC), N.attachDebugInfo(this, \"atom\", this.id);\n }\n /**\n * Returns the current value and registers the atom as a dependency if in a tracking context.\n */\n get value() {\n const e = d.current;\n return e && R(this, e, this._fnSubs, this._objSubs), this._value;\n }\n /**\n * Sets a new value and schedules notifications if the value has changed.\n */\n set value(e) {\n const t = this._value;\n if (t === e || Object.is(t, e)) return;\n this._value = e, this.version = this.version + 1 & v, this.flags & (C.HAS_FN_SUBS | C.HAS_OBJ_SUBS) && this._scheduleNotification(t);\n }\n /**\n * Schedules or flushes notifications based on sync mode and batching state.\n */\n _scheduleNotification(e) {\n let t = this.flags;\n if (t & C.NOTIFICATION_SCHEDULED || (this._pendingOldValue = e, t |= C.NOTIFICATION_SCHEDULED, this.flags = t), t & C.SYNC && !B.isBatching) {\n this._flushNotifications();\n return;\n }\n this._notifyTask || (this._notifyTask = () => this._flushNotifications());\n const s = this._notifyTask;\n B.schedule(s);\n }\n /**\n * Flushes scheduled notifications and resets state for the next cycle.\n */\n _flushNotifications() {\n const e = this.flags;\n if (!(e & C.NOTIFICATION_SCHEDULED) || e & C.DISPOSED)\n return;\n const t = this._pendingOldValue;\n this._pendingOldValue = void 0, this.flags = e & -17, this._notifySubscribers(this._value, t);\n }\n /**\n * Returns the current value without registering it as a dependency.\n */\n peek() {\n return this._value;\n }\n /**\n * Disposes of the atom and releases all subscribers and tasks.\n */\n dispose() {\n const e = this.flags;\n e & C.DISPOSED || (this._fnSubs.length = 0, this._objSubs.length = 0, this.flags = e | C.DISPOSED, this._value = void 0, this._pendingOldValue = void 0, this._notifyTask = void 0);\n }\n}\nfunction Ae(i, e = {}) {\n return new Ne(i, e.sync ?? !1);\n}\nfunction w(i, e, t) {\n if (i instanceof TypeError)\n return new e(`Type error (${t}): ${i.message}`, i);\n if (i instanceof ReferenceError)\n return new e(`Reference error (${t}): ${i.message}`, i);\n if (i instanceof F)\n return i;\n const s = i instanceof Error ? i.message : String(i), n = i instanceof Error ? i : null;\n return new e(`Unexpected error (${t}): ${s}`, n);\n}\nfunction Oe(i) {\n return i !== null && typeof i == \"object\" && \"value\" in i && typeof i.subscribe == \"function\";\n}\nfunction Re(i) {\n return N.enabled && i != null && typeof i == \"object\" && N.getDebugType(i) === \"computed\" ? !0 : Oe(i) && typeof i.invalidate == \"function\";\n}\nfunction me(i) {\n return i !== null && typeof i == \"object\" && typeof i.dispose == \"function\" && typeof i.run == \"function\";\n}\nfunction oe(i) {\n return i != null && typeof i.then == \"function\";\n}\nconst ce = o.RESOLVED | o.PENDING | o.REJECTED, j = Array(ce + 1).fill(G.IDLE);\nj[o.RESOLVED] = G.RESOLVED;\nj[o.PENDING] = G.PENDING;\nj[o.REJECTED] = G.REJECTED;\nconst ee = 3, te = Number.MAX_SAFE_INTEGER - 1;\nclass he extends ne {\n constructor(e, t = {}) {\n if (typeof e != \"function\")\n throw new T(f.COMPUTED_MUST_BE_FUNCTION);\n if (super(), this._value = void 0, this.flags = o.DIRTY | o.IDLE, this._error = null, this._promiseId = 0, this._equal = t.equal ?? Object.is, this._fn = e, this._defaultValue = \"defaultValue\" in t ? t.defaultValue : q, this._onError = t.onError ?? null, this._fnSubs = [], this._objSubs = [], this._dependencies = g, this._dependencyVersions = S, this._unsubscribes = U, this._cachedErrors = null, this._errorCacheEpoch = -1, this._asyncStartAggregateVersion = 0, this._asyncRetryCount = 0, this._trackEpoch = -1, this._trackDeps = g, this._trackVersions = S, this._trackCount = 0, N.attachDebugInfo(this, \"computed\", this.id), N.enabled) {\n const s = this;\n s.subscriberCount = this.subscriberCount.bind(this), s.isDirty = () => (this.flags & o.DIRTY) !== 0, s.dependencies = this._dependencies;\n }\n if (t.lazy === !1)\n try {\n this._recompute();\n } catch {\n }\n }\n get value() {\n const e = d.current;\n e && R(this, e, this._fnSubs, this._objSubs);\n let t = this.flags;\n if ((t & (o.RESOLVED | o.DIRTY | o.IDLE)) === o.RESOLVED)\n return this._value;\n if (t & o.DISPOSED)\n throw new T(f.COMPUTED_DISPOSED);\n if (t & o.RECOMPUTING) {\n const r = this._defaultValue;\n if (r !== q) return r;\n throw new T(f.COMPUTED_CIRCULAR_DEPENDENCY);\n }\n if (t & (o.DIRTY | o.IDLE) && (this._recompute(), t = this.flags), t & o.RESOLVED)\n return this._value;\n const s = this._defaultValue, n = s !== q;\n if (t & o.PENDING) {\n if (n) return s;\n throw new T(f.COMPUTED_ASYNC_PENDING_NO_DEFAULT);\n }\n if (t & o.REJECTED) {\n const r = this._error;\n if (r?.recoverable && n) return s;\n throw r;\n }\n return this._value;\n }\n peek() {\n return this._value;\n }\n get state() {\n const e = d.current;\n return e && R(this, e, this._fnSubs, this._objSubs), j[this.flags & ce];\n }\n get hasError() {\n const e = d.current;\n if (e && R(this, e, this._fnSubs, this._objSubs), this.flags & (o.REJECTED | o.HAS_ERROR)) return !0;\n const s = this._dependencies;\n for (let n = 0, r = s.length; n < r; n++)\n if (s[n].flags & o.HAS_ERROR) return !0;\n return !1;\n }\n get isValid() {\n return !this.hasError;\n }\n get errors() {\n const e = d.current;\n if (e && R(this, e, this._fnSubs, this._objSubs), !this.hasError) return _e;\n const t = ge();\n if (this._errorCacheEpoch === t && this._cachedErrors !== null)\n return this._cachedErrors;\n const s = /* @__PURE__ */ new Set(), n = this._error;\n n && s.add(n);\n const r = this._dependencies;\n for (let c = 0, a = r.length; c < a; c++) {\n const E = r[c];\n if (E.flags & o.HAS_ERROR) {\n const D = E.errors;\n if (D)\n for (let O = 0, u = D.length; O < u; O++) {\n const l = D[O];\n l && s.add(l);\n }\n }\n }\n const h = Object.freeze(Array.from(s));\n return this._errorCacheEpoch = t, this._cachedErrors = h, h;\n }\n get lastError() {\n const e = d.current;\n return e && R(this, e, this._fnSubs, this._objSubs), this._error;\n }\n get isPending() {\n const e = d.current;\n return e && R(this, e, this._fnSubs, this._objSubs), (this.flags & o.PENDING) !== 0;\n }\n get isResolved() {\n const e = d.current;\n return e && R(this, e, this._fnSubs, this._objSubs), (this.flags & o.RESOLVED) !== 0;\n }\n invalidate() {\n this._markDirty();\n const e = this._dependencyVersions;\n e !== S && (y.release(e), this._dependencyVersions = S), this._errorCacheEpoch = -1, this._cachedErrors = null;\n }\n dispose() {\n if (this.flags & o.DISPOSED) return;\n const t = this._unsubscribes;\n if (t !== U) {\n for (let r = 0, h = t.length; r < h; r++) {\n const c = t[r];\n c && c();\n }\n L.release(t), this._unsubscribes = U;\n }\n const s = this._dependencies;\n s !== g && (x.release(s), this._dependencies = g);\n const n = this._dependencyVersions;\n n !== S && (y.release(n), this._dependencyVersions = S), this._fnSubs.length = 0, this._objSubs.length = 0, this.flags = o.DISPOSED | o.DIRTY | o.IDLE, this._error = null, this._value = void 0, this._promiseId = (this._promiseId + 1) % te, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n addDependency(e) {\n if (e._lastSeenEpoch === this._trackEpoch) return;\n e._lastSeenEpoch = this._trackEpoch;\n const t = this._trackCount, s = this._trackDeps, n = this._trackVersions;\n t < s.length ? (s[t] = e, n[t] = e.version) : (s.push(e), n.push(e.version)), this._trackCount = t + 1;\n }\n _commitDeps(e) {\n const t = this._trackDeps, s = this._trackVersions, n = this._trackCount;\n t.length = n, s.length = n, this._unsubscribes = Se(t, e, this._unsubscribes, this), this._dependencies = t, this._dependencyVersions = s;\n }\n _recompute() {\n if (this.flags & o.RECOMPUTING) return;\n this.flags |= o.RECOMPUTING;\n const e = this._dependencies, t = this._dependencyVersions;\n this._trackEpoch = re(), this._trackDeps = x.acquire(), this._trackVersions = y.acquire(), this._trackCount = 0;\n let s = !1;\n try {\n const n = d.run(this, this._fn);\n this._commitDeps(e), s = !0, oe(n) ? this._handleAsyncComputation(n) : this._finalizeResolution(n);\n } catch (n) {\n let r = n;\n if (!s)\n try {\n this._commitDeps(e), s = !0;\n } catch (h) {\n r = h;\n }\n this._handleComputationError(r);\n } finally {\n s ? (e !== g && x.release(e), t !== S && y.release(t)) : (x.release(this._trackDeps), y.release(this._trackVersions)), this._trackEpoch = -1, this._trackDeps = g, this._trackVersions = S, this._trackCount = 0, this.flags &= -257;\n }\n }\n _handleAsyncComputation(e) {\n this.flags = (this.flags | o.PENDING) & -217, this._notifySubscribers(void 0, void 0), this._asyncStartAggregateVersion = this._captureVersionSnapshot(), this._asyncRetryCount = 0, this._promiseId = (this._promiseId + 1) % te;\n const t = this._promiseId;\n e.then((s) => {\n if (t === this._promiseId) {\n if (this._captureVersionSnapshot() !== this._asyncStartAggregateVersion) {\n if (this._asyncRetryCount < ee) {\n this._asyncRetryCount++, this._markDirty();\n return;\n }\n this._handleAsyncRejection(\n new T(`Async drift threshold exceeded after ${ee} retries.`)\n );\n return;\n }\n this._finalizeResolution(s), this._notifySubscribers(s, void 0);\n }\n }).catch((s) => {\n t === this._promiseId && this._handleAsyncRejection(s);\n });\n }\n _captureVersionSnapshot() {\n let e = 0;\n const t = this._dependencies;\n for (let s = 0, n = t.length; s < n; s++) {\n const r = t[s];\n if (r) {\n const h = r.version;\n e = ((e << 5) - e | 0) + h & v;\n }\n }\n return e;\n }\n _handleAsyncRejection(e) {\n const t = w(e, T, f.COMPUTED_ASYNC_COMPUTATION_FAILED);\n this.flags & o.REJECTED || (this.version = this.version + 1 & v), this._error = t, this.flags = this.flags & -121 | (o.REJECTED | o.HAS_ERROR);\n const s = this._onError;\n if (s)\n try {\n s(t);\n } catch (n) {\n console.error(f.CALLBACK_ERROR_IN_ERROR_HANDLER, n);\n }\n this._notifySubscribers(void 0, void 0);\n }\n _finalizeResolution(e) {\n (!(this.flags & o.RESOLVED) || !this._equal(this._value, e)) && (this.version = this.version + 1 & v), this._value = e, this._error = null, this.flags = (this.flags | o.RESOLVED) & -697, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n _handleComputationError(e) {\n const t = w(e, T, f.COMPUTED_COMPUTATION_FAILED);\n this._error = t, this.flags = this.flags & -121 | (o.REJECTED | o.HAS_ERROR);\n const s = this._onError;\n if (s)\n try {\n s(t);\n } catch (n) {\n console.error(f.CALLBACK_ERROR_IN_ERROR_HANDLER, n);\n }\n throw t;\n }\n execute() {\n this._markDirty();\n }\n /** @internal */\n _markDirty() {\n const e = this.flags;\n e & (o.RECOMPUTING | o.DIRTY) || (this.flags = e | o.DIRTY, this._notifySubscribers(void 0, void 0));\n }\n}\nObject.freeze(he.prototype);\nfunction Ue(i, e = {}) {\n return new he(i, e);\n}\nclass Te extends ie {\n constructor(e, t = {}) {\n super(), this._cleanup = null, this._dependencies = g, this._dependencyVersions = S, this._unsubscribes = U, this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, this._executeTask = void 0, this._onError = t.onError ?? null, this._currentEpoch = -1, this._lastFlushEpoch = -1, this._executionsInEpoch = 0, this._fn = e, this._sync = t.sync ?? !1, this._maxExecutions = t.maxExecutionsPerSecond ?? m.MAX_EXECUTIONS_PER_SECOND, this._maxExecutionsPerFlush = t.maxExecutionsPerFlush ?? m.MAX_EXECUTIONS_PER_EFFECT, this._trackModifications = t.trackModifications ?? !1, this._executionCount = 0, this._historyPtr = 0;\n const s = Number.isFinite(this._maxExecutions), n = s ? Math.min(this._maxExecutions + 1, m.MAX_EXECUTIONS_PER_SECOND + 1) : 0;\n this._historyCapacity = n, this._history = M && s && n > 0 ? new Array(n).fill(0) : null, this._execId = 0, N.attachDebugInfo(this, \"effect\", this.id);\n }\n run() {\n if (this.flags & I.DISPOSED)\n throw new P(f.EFFECT_DISPOSED);\n this.execute(!0);\n }\n dispose() {\n const e = this.flags;\n if (e & I.DISPOSED) return;\n if (this.flags = e | I.DISPOSED, this._cleanup) {\n try {\n this._cleanup();\n } catch (r) {\n this._handleExecutionError(r, f.EFFECT_CLEANUP_FAILED);\n }\n this._cleanup = null;\n }\n const t = this._unsubscribes;\n if (t !== U) {\n for (let r = 0, h = t.length; r < h; r++) {\n const c = t[r];\n c && c();\n }\n L.release(t), this._unsubscribes = U;\n }\n const s = this._dependencies;\n s !== g && (x.release(s), this._dependencies = g);\n const n = this._dependencyVersions;\n n !== S && (y.release(n), this._dependencyVersions = S), this._executeTask = void 0;\n }\n addDependency(e) {\n if (!(this.flags & I.EXECUTING)) return;\n const s = this._currentEpoch;\n if (e._lastSeenEpoch === s) return;\n e._lastSeenEpoch = s;\n const n = this._nextDeps, r = this._nextVersions, h = this._nextUnsubs;\n n.push(e), r.push(e.version);\n const c = e._tempUnsub;\n if (c) {\n h.push(c), e._tempUnsub = void 0;\n return;\n }\n try {\n const a = this._sync, E = this._trackModifications, D = e.subscribe(() => {\n if (E && this.flags & I.EXECUTING && (e._modifiedAtEpoch = this._currentEpoch), a) {\n this.execute();\n return;\n }\n this._executeTask || (this._executeTask = () => this.execute());\n const O = this._executeTask;\n B.schedule(O);\n });\n h.push(D);\n } catch (a) {\n console.error(w(a, P, f.EFFECT_EXECUTION_FAILED)), h.push(() => {\n });\n }\n }\n execute(e = !1) {\n if (this.flags & (I.DISPOSED | I.EXECUTING)) return;\n if (!e) {\n const u = this._dependencies, l = u.length;\n if (l > 0) {\n const _ = this._dependencyVersions;\n let p = !1;\n for (let A = 0; A < l; A++) {\n const V = u[A];\n if (V.version !== _[A]) {\n p = !0;\n break;\n }\n if (\"value\" in V)\n try {\n if (Ce(() => V.value), V.version !== _[A]) {\n p = !0;\n break;\n }\n } catch {\n p = !0;\n break;\n }\n }\n if (!p) return;\n }\n }\n const s = Q;\n this._lastFlushEpoch !== s && (this._lastFlushEpoch = s, this._executionsInEpoch = 0), ++this._executionsInEpoch > this._maxExecutionsPerFlush && this._throwInfiniteLoopError(\"per-effect\"), De() > m.MAX_EXECUTIONS_PER_FLUSH && this._throwInfiniteLoopError(\"global\"), this._executionCount++;\n const n = this._history;\n if (n) {\n const u = Date.now(), l = this._historyPtr;\n n[l] = u;\n const _ = (l + 1) % this._historyCapacity;\n this._historyPtr = _;\n const p = n[_] || 0;\n if (p > 0 && u - p < ue.ONE_SECOND_MS) {\n const A = new P(\n \"Effect executed too frequently within 1 second. Suspected infinite loop.\"\n );\n if (this.dispose(), this._handleExecutionError(A), M) throw A;\n return;\n }\n }\n if (this.flags |= I.EXECUTING, this._cleanup) {\n try {\n this._cleanup();\n } catch (u) {\n this._handleExecutionError(u, f.EFFECT_CLEANUP_FAILED);\n }\n this._cleanup = null;\n }\n const r = this._dependencies, h = this._dependencyVersions, c = this._unsubscribes;\n if (r !== g)\n for (let u = 0, l = r.length; u < l; u++) {\n const _ = r[u];\n _ && (_._tempUnsub = c[u]);\n }\n const a = x.acquire(), E = y.acquire(), D = L.acquire();\n this._nextDeps = a, this._nextVersions = E, this._nextUnsubs = D, this._currentEpoch = re();\n let O = !1;\n try {\n const u = d.run(this, this._fn);\n this._dependencies = a, this._dependencyVersions = E, this._unsubscribes = D, O = !0, this._checkLoopWarnings();\n const l = ++this._execId;\n oe(u) ? u.then((_) => {\n if (l !== this._execId || this.flags & I.DISPOSED) {\n if (typeof _ == \"function\")\n try {\n _();\n } catch (p) {\n this._handleExecutionError(p, f.EFFECT_CLEANUP_FAILED);\n }\n return;\n }\n typeof _ == \"function\" && (this._cleanup = _);\n }).catch((_) => {\n l === this._execId && this._handleExecutionError(_);\n }) : this._cleanup = typeof u == \"function\" ? u : null;\n } catch (u) {\n O = !0, this._handleExecutionError(u), this._cleanup = null;\n } finally {\n if (this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, O) {\n if (r !== g) {\n for (let u = 0, l = r.length; u < l; u++) {\n const _ = r[u], p = _ ? _._tempUnsub : void 0;\n p && (p(), _ && (_._tempUnsub = void 0));\n }\n x.release(r);\n }\n h !== S && y.release(h), c !== U && L.release(c);\n } else {\n x.release(a), y.release(E);\n for (let u = 0, l = D.length; u < l; u++) {\n const _ = D[u];\n _ && _();\n }\n if (L.release(D), r !== g)\n for (let u = 0, l = r.length; u < l; u++) {\n const _ = r[u];\n _ && (_._tempUnsub = void 0);\n }\n }\n this.flags &= -9;\n }\n }\n get isDisposed() {\n return (this.flags & I.DISPOSED) !== 0;\n }\n get executionCount() {\n return this._executionCount;\n }\n get isExecuting() {\n return (this.flags & I.EXECUTING) !== 0;\n }\n _throwInfiniteLoopError(e) {\n const t = new P(\n `Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${$}`\n );\n throw this.dispose(), console.error(t), t;\n }\n _handleExecutionError(e, t = f.EFFECT_EXECUTION_FAILED) {\n const s = w(e, P, t);\n console.error(s);\n const n = this._onError;\n if (n)\n try {\n n(s);\n } catch (r) {\n console.error(w(r, P, f.CALLBACK_ERROR_IN_ERROR_HANDLER));\n }\n }\n _checkLoopWarnings() {\n if (this._trackModifications && N.enabled) {\n const e = this._dependencies, t = this._currentEpoch;\n for (let s = 0, n = e.length; s < n; s++) {\n const r = e[s];\n r && r._modifiedAtEpoch === t && N.warn(\n !0,\n `Effect is reading a dependency (${N.getDebugName(r) || \"unknown\"}) that it just modified. Infinite loop may occur`\n );\n }\n }\n }\n}\nfunction xe(i, e = {}) {\n if (typeof i != \"function\")\n throw new P(f.EFFECT_MUST_BE_FUNCTION);\n const t = new Te(i, e);\n return t.execute(), t;\n}\nfunction Fe(i) {\n if (typeof i != \"function\")\n throw new F(\"Batch callback must be a function\");\n B.startBatch();\n try {\n return i();\n } finally {\n B.endBatch();\n }\n}\nexport {\n G as AsyncState,\n F as AtomError,\n T as ComputedError,\n K as DEBUG_CONFIG,\n N as DEBUG_RUNTIME,\n P as EffectError,\n ye as POOL_CONFIG,\n m as SCHEDULER_CONFIG,\n k as SchedulerError,\n Ae as atom,\n Fe as batch,\n Ue as computed,\n xe as effect,\n Oe as isAtom,\n Re as isComputed,\n me as isEffect,\n B as scheduler,\n Ce as untracked\n};\n//# sourceMappingURL=index.mjs.map\n","import type { ComputedAtom, ReactiveValue, ReadonlyAtom } from './types';\n\n/**\n * Checks if a given value is a reactive object (Atom or Computed).\n * Robust check for correctness: must have both 'value' property and 'subscribe' method.\n */\nexport function isReactive(value: unknown): value is ReadonlyAtom<unknown> | ComputedAtom<unknown> {\n return value !== null && typeof value === 'object' && 'value' in value && 'subscribe' in value;\n}\n\n/**\n * Extracts the underlying raw value from a ReactiveValue.\n * Optimized for hot path by inlining the reactive check with high correctness.\n */\nexport function getValue<T>(source: ReactiveValue<T>): T {\n if (source !== null && typeof source === 'object' && 'value' in source && 'subscribe' in source) {\n return (source as ReadonlyAtom<T>).value;\n }\n return source as T;\n}\n\n/**\n * Generates a CSS selector string for a DOM element.\n * Optimized for zero-allocation parsing using native classList.\n */\nexport function getSelector(el: Element | JQuery): string {\n if (!el) return 'unknown';\n const dom = 'jquery' in el ? (el as JQuery)[0] : (el as Element);\n if (!dom) return 'unknown';\n\n const id = dom.id;\n if (id && typeof id === 'string') return `#${id}`;\n\n const tagName = dom.tagName.toLowerCase();\n const classes = dom.classList;\n\n if (classes && classes.length > 0) {\n let res = tagName;\n for (let i = 0, len = classes.length; i < len; i++) {\n const cls = classes[i];\n if (cls) res += `.${cls}`;\n }\n return res;\n }\n return tagName;\n}\n\n/**\n * Longest Increasing Subsequence (LIS)\n * Optimized for hardware and TypeScript strict null checks.\n * Time Complexity: O(N log N), Space Complexity: $O(N)$.\n */\nexport function getLIS(arr: Int32Array | number[]): Int32Array {\n const len = arr.length;\n if (len === 0) return new Int32Array(0);\n\n const predecessors = new Int32Array(len);\n const result = new Int32Array(len);\n let resultLen = 0;\n\n for (let i = 0; i < len; i++) {\n const val = arr[i];\n if (val === undefined || val === -1) continue;\n\n const lastIdx = resultLen > 0 ? result[resultLen - 1] : undefined;\n if (resultLen === 0 || (lastIdx !== undefined && (arr[lastIdx] ?? -1) < val)) {\n predecessors[i] = lastIdx ?? -1;\n result[resultLen++] = i;\n continue;\n }\n\n // Binary search for insertion point\n let left = 0;\n let right = resultLen - 1;\n while (left < right) {\n const mid = (left + right) >>> 1;\n const midIdx = result[mid];\n if (midIdx !== undefined && (arr[midIdx] ?? -1) < val) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n\n const leftIdx = result[left];\n if (leftIdx !== undefined && val < (arr[leftIdx] ?? Number.MAX_SAFE_INTEGER)) {\n if (left > 0) {\n predecessors[i] = result[left - 1] ?? -1;\n }\n result[left] = i;\n }\n }\n\n const lis = new Int32Array(resultLen);\n if (resultLen > 0) {\n let curr: number | undefined = result[resultLen - 1];\n for (let i = resultLen - 1; i >= 0 && curr !== undefined && curr !== -1; i--) {\n lis[i] = curr;\n curr = predecessors[curr];\n }\n }\n\n return lis;\n}\n","/**\n * Debug Mode\n *\n * When $.atom.debug = true is enabled:\n * 1. Logs state changes to the console.\n * 2. Visually highlights DOM updates (red border flash).\n *\n * Debug mode can be enabled in two ways:\n * 1. Environment variable (build-time): NODE_ENV=development\n * 2. Runtime: $.atom.debug = true or window.__ATOM_DEBUG__ = true\n */\n\nimport { getSelector } from './utils';\n\n/**\n * Determines the initial debug state based on environment.\n * Priority: window.__ATOM_DEBUG__ > NODE_ENV === 'development'\n */\nfunction getInitialDebugState(): boolean {\n if (typeof window !== 'undefined') {\n const flag = (window as Window & { __ATOM_DEBUG__?: boolean }).__ATOM_DEBUG__;\n if (typeof flag === 'boolean') return flag;\n }\n\n if (import.meta.env?.DEV && import.meta.env.MODE !== 'test') return true;\n\n try {\n // @ts-expect-error\n if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'development') return true;\n } catch {\n // ignore\n }\n\n return false;\n}\n\nlet debugEnabled = getInitialDebugState();\n\nexport const debug = {\n get enabled() {\n return debugEnabled;\n },\n set enabled(value: boolean) {\n debugEnabled = value;\n },\n\n log<T>(type: string, ...args: T[]) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] ${type}:`, ...args);\n }\n },\n\n atomChanged<T>(name: string | undefined, oldVal: T, newVal: T) {\n if (debugEnabled) {\n console.log(\n `[atom-effect-jquery] Atom \"${name ?? 'anonymous'}\" changed:`,\n oldVal,\n '→',\n newVal\n );\n }\n },\n\n /**\n * Logs DOM updates and triggers visual highlight.\n */\n domUpdated<T>($el: JQuery | Element, type: string, value: T) {\n if (!debugEnabled) return;\n console.log(`[atom-effect-jquery] DOM updated: ${getSelector($el)}.${type} =`, value);\n highlightElement($el);\n },\n\n cleanup(selector: string) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] Cleanup: ${selector}`);\n }\n },\n\n warn<T>(...args: T[]) {\n if (debugEnabled) {\n console.warn('[atom-effect-jquery]', ...args);\n }\n },\n};\n\n/**\n * Visual highlight - flashes a red border.\n * Optimized with WeakMap and direct style access to minimize GC and reflows in debug mode.\n */\ninterface HighlightState {\n timer?: ReturnType<typeof setTimeout>;\n cleanupTimer?: ReturnType<typeof setTimeout>;\n orgStyle?: {\n outline: string;\n outlineOffset: string;\n transition: string;\n };\n}\n\nconst highlightStateMap = new WeakMap<HTMLElement, HighlightState>();\n\nfunction highlightElement($el: JQuery | Element): void {\n const el = ('jquery' in $el ? $el[0] : $el) as HTMLElement | undefined;\n if (!el || !el.isConnected) return; // O(1) check instead of O(N) document.contains\n\n let state = highlightStateMap.get(el);\n if (!state) {\n state = {};\n highlightStateMap.set(el, state);\n }\n\n // 1. Clear existing timers\n if (state.timer) clearTimeout(state.timer);\n if (state.cleanupTimer) clearTimeout(state.cleanupTimer);\n\n // 2. Save original style (inline only for performance & correctness)\n if (!state.orgStyle) {\n const style = el.style;\n state.orgStyle = {\n outline: style.outline,\n outlineOffset: style.outlineOffset,\n transition: style.transition,\n };\n }\n\n // 3. Apply highlight style via direct DOM properties\n const style = el.style;\n style.outline = '2px solid rgba(255, 68, 68, 0.8)';\n style.outlineOffset = '1px';\n style.transition = 'none';\n\n // 4. Set timer to restore\n state.timer = setTimeout(() => {\n if (!el.isConnected) return;\n\n // We add a transition for the fade out\n style.transition = 'outline 0.5s ease-out';\n\n // Defer the actual style restoration to allow transition to take effect\n requestAnimationFrame(() => {\n if (!el.isConnected) return;\n\n const org = state?.orgStyle;\n if (org) {\n style.outline = org.outline;\n style.outlineOffset = org.outlineOffset;\n }\n\n // 5. Cleanup data after fade out\n state!.cleanupTimer = setTimeout(() => {\n if (el.isConnected && state?.orgStyle) {\n style.transition = state.orgStyle.transition;\n }\n highlightStateMap.delete(el);\n }, 500);\n });\n }, 100);\n}\n","import {\n batch,\n computed,\n atom as createAtom,\n effect,\n isAtom,\n isComputed,\n untracked,\n} from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport type { AtomOptions, WritableAtom } from './types';\n\n/**\n * Stores Atom metadata (for debugging).\n */\nconst atomMetadata = new WeakMap<WritableAtom<unknown>, { name?: string }>();\n\n/**\n * Creates an atom with optional metadata.\n */\nfunction atom<T>(initialValue: T, options: AtomOptions = {}): WritableAtom<T> {\n const instance = createAtom(initialValue, options);\n\n // Store metadata\n if (options.name) {\n atomMetadata.set(instance, { name: options.name });\n }\n\n return instance;\n}\n\n// Add debug property\nObject.defineProperty(atom, 'debug', {\n get() {\n return debug.enabled;\n },\n set(value: boolean) {\n debug.enabled = value;\n },\n});\n\n/**\n * Waits for the next microtask (tick).\n * Useful for waiting for batched updates to complete in tests or async logic.\n * logic: Uses setTimeout to ensure it runs after all microtasks (where effects are processed).\n */\nfunction nextTick(): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, 0));\n}\n\n/**\n * Extend jQuery static methods.\n */\n$.extend({\n atom,\n computed,\n effect,\n batch,\n untracked,\n isAtom,\n isComputed,\n isReactive: (v: unknown) => isAtom(v) || isComputed(v),\n nextTick,\n});\n","import { debug } from './debug';\nimport type { EffectObject } from './types';\nimport { getSelector } from './utils';\n\n/**\n * Marker class for bound elements to optimize selector engines.\n */\nconst AES_BOUND = '_aes-bound';\n\ninterface BindingRecord {\n effects?: EffectObject[];\n cleanups?: Array<() => void>;\n}\n\n/**\n * Binding Registry\n *\n * Highly optimized for performance:\n * - Uses WeakMap for zero-leak DOM associations.\n * - Minimal allocations in the tracking path.\n * - Efficient tree traversal for cleanup.\n */\nclass BindingRegistry {\n private records = new WeakMap<Element, BindingRecord>();\n private boundElements = new WeakSet<Element>();\n private preservedNodes = new WeakSet<Node>();\n private ignoredNodes = new WeakSet<Node>(); // Prevent redundant cleanup\n\n keep(node: Node): void {\n this.preservedNodes.add(node);\n }\n\n isKept(node: Node): boolean {\n return this.preservedNodes.has(node);\n }\n\n markIgnored(node: Node): void {\n this.ignoredNodes.add(node);\n }\n\n isIgnored(node: Node): boolean {\n return this.ignoredNodes.has(node);\n }\n\n private _getOrCreateRecord(el: Element): BindingRecord {\n let res = this.records.get(el);\n if (!res) {\n res = {};\n this.records.set(el, res);\n // Mark as bound and add class for faster querySelector lookup\n if (!this.boundElements.has(el)) {\n this.boundElements.add(el);\n el.classList.add(AES_BOUND);\n }\n }\n return res;\n }\n\n trackEffect(el: Element, fx: EffectObject): void {\n const record = this._getOrCreateRecord(el);\n if (!record.effects) record.effects = [];\n record.effects.push(fx);\n }\n\n trackCleanup(el: Element, fn: () => void): void {\n const record = this._getOrCreateRecord(el);\n if (!record.cleanups) record.cleanups = [];\n record.cleanups.push(fn);\n }\n\n hasBind(el: Element): boolean {\n return this.boundElements.has(el);\n }\n\n cleanup(el: Element): void {\n // Atomic delete return value used as a high-performance guard\n if (!this.boundElements.delete(el)) return;\n\n const record = this.records.get(el);\n if (!record) return;\n\n // Fast cleanup of metadata\n this.records.delete(el);\n this.preservedNodes.delete(el);\n this.ignoredNodes.delete(el);\n el.classList.remove(AES_BOUND);\n\n // Hoist costly selector string generation to debug-only block\n if (debug.enabled) {\n debug.cleanup(getSelector(el));\n }\n\n // 1. Dispose Effects (Atom -> Subscription severed)\n const effects = record.effects;\n if (effects) {\n for (let i = 0, len = effects.length; i < len; i++) {\n try {\n effects[i]?.dispose();\n } catch (e) {\n debug.warn('Effect dispose error:', e);\n }\n }\n }\n\n // 2. Execute custom cleanups\n const cleanups = record.cleanups;\n if (cleanups) {\n for (let i = 0, len = cleanups.length; i < len; i++) {\n try {\n cleanups[i]?.();\n } catch (e) {\n debug.warn('Cleanup error:', e);\n }\n }\n }\n }\n\n cleanupDescendants(el: Element): void {\n const children = el.querySelectorAll(`.${AES_BOUND}`);\n for (let i = 0, len = children.length; i < len; i++) {\n const child = children[i] as Element;\n // Double check because querySelectorAll might return disconnected leftovers\n if (child && this.boundElements.has(child)) {\n this.cleanup(child);\n } else if (child) {\n child.classList.remove(AES_BOUND);\n }\n }\n }\n\n cleanupTree(el: Element): void {\n this.cleanupDescendants(el);\n this.cleanup(el);\n }\n}\n\nexport const registry = new BindingRegistry();\n\nlet observer: MutationObserver | null = null;\n\nexport function enableAutoCleanup(root: Element = document.body): void {\n if (observer) return;\n\n observer = new MutationObserver((mutations) => {\n for (let i = 0, len = mutations.length; i < len; i++) {\n const removedNodes = mutations[i]?.removedNodes;\n if (!removedNodes) continue;\n const rLen = removedNodes.length;\n if (rLen === 0) continue;\n\n for (let j = 0; j < rLen; j++) {\n const node = removedNodes[j]!;\n // Early exit: only elements can have AES_BOUND bindings\n if (node.nodeType !== 1) continue;\n\n // Skip if kept (detached for moves), explicitly ignored, or still connected\n if (node.isConnected || registry.isKept(node) || registry.isIgnored(node)) {\n continue;\n }\n\n registry.cleanupTree(node as Element);\n }\n }\n });\n\n observer.observe(root, { childList: true, subtree: true });\n}\n\nexport function disableAutoCleanup(): void {\n observer?.disconnect();\n observer = null;\n}\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ReactiveValue } from './types';\nimport { isReactive } from './utils';\n\n/**\n * Utility to register a reactive effect or apply a static update.\n * Centralizes the boilerplate for atomic bindings.\n *\n * @param el - The DOM element to associate with the effect.\n * @param source - The reactive or static value source.\n * @param updater - Function to apply the value to the DOM.\n * @param debugType - Type label for debug logging.\n */\nexport function registerReactiveEffect<T>(\n el: HTMLElement,\n source: ReactiveValue<T>,\n updater: (value: T) => void,\n debugType: string\n): void {\n if (isReactive(source)) {\n registry.trackEffect(\n el,\n effect(() => {\n const value = source.value;\n updater(value);\n debug.domUpdated($(el), debugType, value);\n })\n );\n } else {\n updater(source);\n debug.domUpdated($(el), debugType, source);\n }\n}\n","import type {\n AtomOptions as BaseAtomOptions,\n ComputedAtom,\n ComputedOptions,\n EffectObject,\n ReadonlyAtom,\n WritableAtom,\n} from '@but212/atom-effect';\n\n/**\n * Extended options for Atom creation.\n */\nexport interface AtomOptions extends BaseAtomOptions {\n /** Name for debugging purposes */\n name?: string;\n}\n\n/**\n * Represents a value that can be either dynamic (Atom/Computed) or static.\n */\nexport type ReactiveValue<T> = T | ReadonlyAtom<T> | ComputedAtom<T>;\n\n/**\n * CSS value: either a direct reactive value or a tuple of [source, unit].\n * Named type provides clear bone structure for CSS binding configurations.\n */\nexport type CssValue =\n | ReactiveValue<string | number>\n | [source: ReactiveValue<number>, unit: string];\n\n/**\n * CSS bindings map property names to CSS values.\n */\nexport type CssBindings = Record<string, CssValue>;\n\n/**\n * Configuration options for `atomBind`.\n */\nexport interface BindingOptions<T> {\n text?: ReactiveValue<T>;\n html?: ReactiveValue<string>;\n class?: Record<string, ReactiveValue<boolean>>;\n css?: CssBindings;\n attr?: Record<string, ReactiveValue<string | boolean | null>>;\n prop?: Record<string, ReactiveValue<T>>;\n show?: ReactiveValue<boolean>;\n hide?: ReactiveValue<boolean>;\n val?: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>];\n checked?: WritableAtom<boolean>;\n on?: Record<string, (e: JQuery.Event) => void>;\n}\n\n/**\n * Configuration options for `atomList`.\n */\nexport interface ListOptions<T> {\n key: keyof T | ((item: T, index: number) => string | number);\n render: (item: T, index: number) => string | Element | DocumentFragment | JQuery;\n bind?: ($el: JQuery, item: T, index: number) => void;\n update?: ($el: JQuery, item: T, index: number) => void;\n onAdd?: ($el: JQuery) => void;\n onRemove?: ($el: JQuery) => Promise<void> | void;\n empty?: string | Element | DocumentFragment | JQuery;\n}\n\n/**\n * Configuration options for `atomVal`.\n */\nexport interface ValOptions<T> {\n debounce?: number;\n event?: string;\n parse?: (v: string) => T;\n format?: (v: T) => string;\n /** Custom equality check for comparing parsed values. Defaults to Object.is. */\n equal?: (a: T, b: T) => boolean;\n}\n\n/**\n * State context for two-way input bindings.\n * Consolidates scattered state flags into a single, traceable object.\n * This is the \"bone structure\" for input binding lifecycle management.\n */\n/**\n * Bit flags for input binding state management.\n * Consolidates mutually exclusive phases and orthogonal states (focus) into a single integer.\n */\nexport enum BindingFlags {\n None = 0,\n Focused = 1 << 0,\n Composing = 1 << 1,\n SyncingToAtom = 1 << 2,\n SyncingToDom = 1 << 3,\n // Mask for any active processing phase (excluding simple focus)\n Busy = Composing | SyncingToAtom | SyncingToDom,\n}\n\n/**\n * State context for two-way input bindings.\n * Consolidates scattered state flags into a single, traceable object.\n * This is the \"bone structure\" for input binding lifecycle management.\n */\nexport interface InputBindingState {\n /** Timeout ID for debounced updates */\n timeoutId: number | null;\n /** Bitmask of current state flags */\n flags: number;\n}\n\n/**\n * Creates a fresh InputBindingState with default values.\n */\nexport function createInputBindingState(): InputBindingState {\n return { timeoutId: null, flags: BindingFlags.None };\n}\n\n/**\n * Functional Component type.\n */\nexport type ComponentFn<P = {}> = ($el: JQuery, props: P) => undefined | (() => void);\n\ndeclare global {\n interface JQueryStatic {\n atom: {\n <T>(initialValue: T, options?: AtomOptions): WritableAtom<T>;\n debug: boolean;\n };\n computed<T>(fn: () => T, options?: ComputedOptions<T>): ComputedAtom<T>;\n computed<T>(\n fn: () => Promise<T>,\n options: ComputedOptions<T> & { defaultValue: T }\n ): ComputedAtom<T>;\n effect(fn: () => undefined | (() => void)): EffectObject;\n batch(fn: () => void): void;\n untracked<T>(fn: () => T): T;\n isAtom(v: unknown): boolean;\n isComputed(v: unknown): boolean;\n isReactive(v: unknown): boolean;\n nextTick(): Promise<void>;\n }\n\n interface JQuery {\n // Chainable methods\n atomText<T>(source: ReactiveValue<T>, formatter?: (v: T) => string): this;\n atomHtml(source: ReactiveValue<string>): this;\n atomClass(className: string, condition: ReactiveValue<boolean>): this;\n atomCss(prop: string, source: ReactiveValue<string | number>, unit?: string): this;\n atomAttr(name: string, source: ReactiveValue<string | boolean | null>): this;\n atomProp<T extends string | number | boolean | null | undefined>(\n name: string,\n source: ReactiveValue<T>\n ): this;\n atomShow(condition: ReactiveValue<boolean>): this;\n atomHide(condition: ReactiveValue<boolean>): this;\n atomVal<T>(atom: WritableAtom<T>, options?: ValOptions<T>): this;\n atomChecked(atom: WritableAtom<boolean>): this;\n atomOn(event: string, handler: (e: JQuery.Event) => void): this;\n\n // Integrated binding\n atomBind<T extends string | number | boolean | null | undefined>(\n options: BindingOptions<T>\n ): this;\n\n // List rendering\n atomList<T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): this;\n\n // Component mounting\n atomMount<P>(component: ComponentFn<P>, props?: P): this;\n atomUnmount(): this;\n\n // Cleanup\n atomUnbind(): this;\n }\n}\n\n/**\n * Context passed to binding handlers for cleanup and effect registration.\n */\nexport interface BindingContext {\n readonly $el: JQuery;\n readonly el: HTMLElement;\n readonly trackCleanup: (fn: () => void) => void;\n}\n\nexport type { WritableAtom, ReadonlyAtom, ComputedAtom, EffectObject, ComputedOptions };\n","import { debug } from './debug';\nimport type { InputBindingState, ValOptions, WritableAtom } from './types';\nimport { BindingFlags, createInputBindingState } from './types';\n\n/**\n * Applies two-way data binding configuration to an input element.\n * Shared logic used by both implicit (atomBind) and explicit (atomVal) bindings.\n *\n * @param $el - The jQuery element to bind.\n * @param atom - The target atom for two-way binding.\n * @param options - Binding options (parse, format, debounce, events).\n * @returns Object containing the effect function (for Atom -> DOM) and cleanup function.\n */\nexport function applyInputBinding<T>(\n $el: JQuery,\n atom: WritableAtom<T>,\n options: ValOptions<T> = {}\n): { effect: () => void; cleanup: () => void } {\n const {\n debounce: debounceMs,\n event = 'input',\n parse = (v: string) => v as unknown as T,\n format = (v: T) => String(v ?? ''),\n equal = Object.is,\n } = options;\n\n const state: InputBindingState = createInputBindingState();\n const el = $el[0] as HTMLInputElement | HTMLTextAreaElement;\n\n // Core sync: DOM → Atom\n const syncAtomFromDom = () => {\n if (state.flags & BindingFlags.Busy) return;\n\n state.flags |= BindingFlags.SyncingToAtom;\n try {\n const currentRaw = el.value;\n const parsed = parse(currentRaw);\n // Avoid redundant atom updates to prevent unnecessary propagation\n if (!equal(atom.value, parsed)) {\n atom.value = parsed;\n }\n } finally {\n state.flags &= ~BindingFlags.SyncingToAtom;\n }\n };\n\n const onBlur = () => {\n // Flush pending debounce\n if (state.timeoutId) {\n clearTimeout(state.timeoutId);\n state.timeoutId = null;\n syncAtomFromDom();\n }\n\n state.flags &= ~BindingFlags.Focused;\n\n // Force formatting on blur\n const formatted = format(atom.value);\n if (el.value !== formatted) {\n el.value = formatted;\n }\n };\n\n // Input handler with optional debounce\n const onInput = () => {\n if (state.flags & BindingFlags.Busy) return;\n\n if (debounceMs) {\n if (state.timeoutId) clearTimeout(state.timeoutId);\n state.timeoutId = setTimeout(syncAtomFromDom, debounceMs);\n } else {\n syncAtomFromDom();\n }\n };\n\n const handlers = {\n compositionstart: () => {\n state.flags |= BindingFlags.Composing;\n },\n compositionend: () => {\n state.flags &= ~BindingFlags.Composing;\n syncAtomFromDom();\n },\n focus: () => {\n state.flags |= BindingFlags.Focused;\n },\n blur: onBlur,\n [event]: onInput,\n change: onInput,\n };\n\n $el.on(handlers);\n\n const cleanup = () => {\n $el.off(handlers);\n if (state.timeoutId) clearTimeout(state.timeoutId);\n };\n\n // Core sync: Atom → DOM (Effect body)\n const effect = () => {\n const val = atom.value;\n const formatted = format(val);\n const currentVal = el.value;\n\n // 1. Skip if already synchronized\n if (currentVal === formatted) return;\n\n // 2. Skip if focused and current input parses to same value (don't interrupt user)\n if (state.flags & BindingFlags.Focused && equal(parse(currentVal), val)) {\n return;\n }\n\n state.flags |= BindingFlags.SyncingToDom;\n try {\n if (state.flags & BindingFlags.Focused) {\n // [Fix] Preserve cursor position when focused\n const { selectionStart: start, selectionEnd: end } = el;\n el.value = formatted;\n const len = formatted.length;\n el.setSelectionRange(Math.min(start ?? len, len), Math.min(end ?? len, len));\n } else {\n el.value = formatted;\n }\n\n debug.domUpdated($el, 'val', formatted);\n } finally {\n state.flags &= ~BindingFlags.SyncingToDom;\n }\n };\n\n return { effect, cleanup };\n}\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registerReactiveEffect } from './effect-factory';\nimport { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type { ReactiveValue, ValOptions, WritableAtom } from './types';\nimport { BindingFlags, createInputBindingState } from './types';\n\n/**\n * Updates element text content.\n */\n$.fn.atomText = function <T>(source: ReactiveValue<T>, formatter?: (v: T) => string): JQuery {\n return this.each(function () {\n const $el = $(this);\n const update = formatter\n ? (val: T) => $el.text(formatter(val))\n : (val: T) => $el.text(String(val ?? ''));\n\n registerReactiveEffect(this, source, update, 'text');\n });\n};\n\n/**\n * Updates element inner HTML.\n */\n$.fn.atomHtml = function (source: ReactiveValue<string>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, source, (val) => $el.html(String(val ?? '')), 'html');\n });\n};\n\n/**\n * Toggles a CSS class based on boolean value.\n */\n$.fn.atomClass = function (className: string, condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(\n this,\n condition,\n (val) => $el.toggleClass(className, Boolean(val)),\n `class.${className}`\n );\n });\n};\n\n/**\n * Updates a CSS style property.\n */\n$.fn.atomCss = function (\n prop: string,\n source: ReactiveValue<string | number>,\n unit?: string\n): JQuery {\n return this.each(function () {\n const $el = $(this);\n const update = unit\n ? (val: string | number) => $el.css(prop, `${val}${unit}`)\n : (val: string | number) => $el.css(prop, val);\n\n registerReactiveEffect(this, source, update, `css.${prop}`);\n });\n};\n\n/**\n * Updates an HTML attribute.\n */\n$.fn.atomAttr = function (name: string, source: ReactiveValue<string | boolean | null>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(\n this,\n source,\n (val) => {\n if (val == null || val === false) {\n $el.removeAttr(name);\n return;\n }\n $el.attr(name, val === true ? name : String(val));\n },\n `attr.${name}`\n );\n });\n};\n\n/**\n * Updates a DOM property (e.g., checked, selected, value).\n */\n$.fn.atomProp = function <T extends string | number | boolean | null | undefined>(\n name: string,\n source: ReactiveValue<T>\n): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, source, (val) => $el.prop(name, val), `prop.${name}`);\n });\n};\n\n/**\n * Shows element when condition is true.\n */\n$.fn.atomShow = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, condition, (val) => $el.toggle(Boolean(val)), 'show');\n });\n};\n\n/**\n * Hides element when condition is true.\n */\n$.fn.atomHide = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, condition, (val) => $el.toggle(!val), 'hide');\n });\n};\n\n/**\n * Two-way binding for input values.\n */\n$.fn.atomVal = function <T>(atom: WritableAtom<T>, options: ValOptions<T> = {}): JQuery {\n return this.each(function () {\n const { effect: fxFn, cleanup } = applyInputBinding($(this), atom, options);\n registry.trackEffect(this, effect(fxFn));\n registry.trackCleanup(this, cleanup);\n });\n};\n\n/**\n * Two-way binding for checkbox/radio checked state.\n */\n$.fn.atomChecked = function (atom: WritableAtom<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n const element = this as HTMLInputElement;\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.flags & BindingFlags.Busy) return;\n const checked = element.checked;\n if (atom.value !== checked) {\n atom.value = checked;\n }\n };\n\n $el.on('change', handler);\n registry.trackCleanup(this, () => $el.off('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n state.flags |= BindingFlags.SyncingToDom;\n const val = !!atom.value;\n if (element.checked !== val) {\n element.checked = val;\n debug.domUpdated($el, 'checked', val);\n }\n state.flags &= ~BindingFlags.SyncingToDom;\n });\n registry.trackEffect(this, fx);\n });\n};\n\n/**\n * Binds an event handler with automatic cleanup.\n */\n$.fn.atomOn = function (event: string, handler: (e: JQuery.Event) => void): JQuery {\n return this.each(function () {\n const $el = $(this);\n $el.on(event, handler);\n registry.trackCleanup(this, () => $el.off(event, handler));\n });\n};\n\n/**\n * Removes all atom bindings.\n */\n$.fn.atomUnbind = function (): JQuery {\n return this.each(function () {\n registry.cleanupTree(this);\n });\n};\n","import { batch, effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registerReactiveEffect } from './effect-factory';\nimport { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type {\n BindingContext,\n BindingOptions,\n CssValue,\n ReactiveValue,\n ValOptions,\n WritableAtom,\n} from './types';\nimport { BindingFlags, createInputBindingState } from './types';\n\n// Cache for CSS property camelization to avoid repeated regex and check overhead\nconst camelCache: Record<string, string> = Object.create(null);\nfunction getCamelCase(prop: string): string {\n let cached = camelCache[prop];\n if (cached) return cached;\n\n cached = prop.includes('-') ? prop.replace(/-./g, (m) => m[1]!.toUpperCase()) : prop;\n camelCache[prop] = cached;\n return cached;\n}\n\n// ============================================================================\n// One-Way Binding Handlers (Atom → DOM)\n// ============================================================================\n\nfunction bindText<T>(ctx: BindingContext, value: ReactiveValue<T>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n value,\n (val) => {\n const newVal = typeof val === 'string' ? val : String(val ?? '');\n // Guard against redundant DOM writes\n if (el.textContent !== newVal) {\n el.textContent = newVal;\n }\n },\n 'text'\n );\n}\n\nfunction bindHtml(ctx: BindingContext, value: ReactiveValue<string>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n value,\n (val) => {\n const newVal = String(val ?? '');\n // Guard against redundant DOM writes which destroy/recreate subtrees\n if (el.innerHTML !== newVal) {\n el.innerHTML = newVal;\n }\n },\n 'html'\n );\n}\n\nfunction bindClass(ctx: BindingContext, classMap: Record<string, ReactiveValue<boolean>>): void {\n for (const className in classMap) {\n registerReactiveEffect(\n ctx.el,\n classMap[className],\n (val) => {\n ctx.el.classList.toggle(className, !!val);\n },\n `class.${className}`\n );\n }\n}\n\nfunction bindCss(ctx: BindingContext, cssMap: Record<string, CssValue>): void {\n const el = ctx.el;\n const style = el.style as unknown as Record<string, string>;\n for (const prop in cssMap) {\n const val = cssMap[prop];\n if (val === undefined) continue;\n\n const camel = getCamelCase(prop);\n\n if (Array.isArray(val)) {\n registerReactiveEffect(\n el,\n val[0],\n (v) => {\n style[camel] = `${v}${val[1]}`;\n },\n `css.${prop}`\n );\n } else {\n registerReactiveEffect(\n el,\n val,\n (v) => {\n style[camel] = v as string;\n },\n `css.${prop}`\n );\n }\n }\n}\n\nfunction bindAttr(\n ctx: BindingContext,\n attrMap: Record<string, ReactiveValue<string | boolean | null>>\n): void {\n const el = ctx.el;\n for (const name in attrMap) {\n registerReactiveEffect(\n el,\n attrMap[name],\n (v) => {\n if (v === null || v === undefined || v === false) {\n el.removeAttribute(name);\n return;\n }\n const newVal = v === true ? name : String(v);\n // Attribute write guard\n if (el.getAttribute(name) !== newVal) {\n el.setAttribute(name, newVal);\n }\n },\n `attr.${name}`\n );\n }\n}\n\nfunction bindProp(ctx: BindingContext, propMap: Record<string, ReactiveValue<unknown>>): void {\n const el = ctx.el as unknown as Record<string, unknown>;\n for (const name in propMap) {\n registerReactiveEffect(\n ctx.el,\n propMap[name],\n (val) => {\n // Redundancy check for DOM properties (e.g. className, title)\n if (el[name] !== val) {\n el[name] = val;\n }\n },\n `prop.${name}`\n );\n }\n}\n\nfunction bindShow(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n condition,\n (val) => {\n // Direct style access is faster than $el.toggle()\n el.style.display = val ? '' : 'none';\n if (debug.enabled) debug.domUpdated(el, 'show', val);\n },\n 'show'\n );\n}\n\nfunction bindHide(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n condition,\n (val) => {\n // Direct style access is faster than $el.toggle()\n el.style.display = val ? 'none' : '';\n if (debug.enabled) debug.domUpdated(el, 'hide', val);\n },\n 'hide'\n );\n}\n\n/**\n * Two-way value binding with full feature parity to $.fn.atomVal.\n * Supports parse/format options, debouncing, IME composition, and focus-aware updates.\n */\nfunction bindVal<T>(\n ctx: BindingContext,\n cfg: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>]\n): void {\n const isArr = Array.isArray(cfg);\n const { effect: fxFn, cleanup } = applyInputBinding(\n ctx.$el,\n isArr ? cfg[0] : cfg,\n isArr ? cfg[1] : {}\n );\n\n registry.trackEffect(ctx.el, effect(fxFn));\n ctx.trackCleanup(cleanup);\n}\n\nfunction bindChecked(ctx: BindingContext, atom: WritableAtom<boolean>): void {\n const el = ctx.el as HTMLInputElement;\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.flags & BindingFlags.Busy) return;\n const current = el.checked;\n if (atom.value !== current) {\n atom.value = current;\n }\n };\n\n el.addEventListener('change', handler);\n ctx.trackCleanup(() => el.removeEventListener('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n state.flags |= BindingFlags.SyncingToDom;\n const val = !!atom.value;\n if (el.checked !== val) {\n el.checked = val;\n if (debug.enabled) debug.domUpdated(el, 'checked', val);\n }\n state.flags &= ~BindingFlags.SyncingToDom;\n });\n registry.trackEffect(el, fx);\n}\n\n// ============================================================================\n// Event Binding Handler\n// ============================================================================\n\n/** Event handler map type for atomBind({ on: ... }) using jQuery's event handler signature */\ntype EventBindingMap = {\n [K in keyof JQuery.TypeToTriggeredEventMap<HTMLElement, undefined, HTMLElement, HTMLElement>]?:\n | JQuery.TypeEventHandler<HTMLElement, undefined, HTMLElement, HTMLElement, K>\n | false;\n} & {\n [eventName: string]: JQuery.EventHandler<HTMLElement, undefined> | false | undefined;\n};\n\nfunction bindEvents(ctx: BindingContext, eventMap: EventBindingMap): void {\n for (const name in eventMap) {\n const handler = eventMap[name];\n if (typeof handler !== 'function') continue;\n const listener = (e: Event) => {\n batch(() =>\n (handler as JQuery.EventHandler<HTMLElement, undefined>).call(\n ctx.el,\n $.Event(e.type, { originalEvent: e }) as JQuery.TriggeredEvent<HTMLElement>\n )\n );\n };\n ctx.el.addEventListener(name, listener);\n ctx.trackCleanup(() => ctx.el.removeEventListener(name, listener));\n }\n}\n\n// ============================================================================\n// Main Entry Point\n// ============================================================================\n\n/**\n * Extends jQuery with atom-based data binding capabilities.\n *\n * This plugin synchronizes DOM element states (text, html, classes, styles, etc.)\n * with reactive atoms. Handlers are modular and focused for maintainability.\n */\n$.fn.atomBind = function <T extends string | number | boolean | null | undefined>(\n options: BindingOptions<T>\n): JQuery {\n return this.each(function () {\n const el = this;\n let _$el: JQuery | null = null;\n\n // Build binding context with a lazy JQuery wrapper\n const ctx: BindingContext = {\n get $el() {\n if (!_$el) {\n _$el = $(el);\n }\n return _$el;\n },\n el,\n trackCleanup: (fn) => registry.trackCleanup(el, fn),\n };\n\n // Apply bindings through focused handlers\n if (options.text !== undefined) bindText(ctx, options.text);\n if (options.html !== undefined) bindHtml(ctx, options.html);\n if (options.class) bindClass(ctx, options.class);\n if (options.css) bindCss(ctx, options.css);\n if (options.attr) bindAttr(ctx, options.attr);\n if (options.prop) bindProp(ctx, options.prop);\n if (options.show !== undefined) bindShow(ctx, options.show);\n if (options.hide !== undefined) bindHide(ctx, options.hide);\n if (options.val !== undefined) bindVal(ctx, options.val);\n if (options.checked !== undefined) bindChecked(ctx, options.checked);\n if (options.on) bindEvents(ctx, options.on);\n });\n};\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ListOptions, ReadonlyAtom } from './types';\nimport { getLIS, getSelector } from './utils';\n\n/**\n * atomList with Smart Reconciliation\n * Optimized for performance and data locality.\n */\n$.fn.atomList = function <T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): JQuery {\n const { key, render, bind, update, onAdd, onRemove, empty } = options;\n\n // Resolve getKey once to avoid repeated typeof checks in the Hot Path\n const getKey =\n typeof key === 'function'\n ? key\n : (item: T, _index: number) => item[key as keyof T] as unknown as string | number;\n\n return this.each(function () {\n const $container = $(this);\n const containerSelector = getSelector(this);\n\n const itemMap = new Map<string | number, { $el: JQuery; item: T }>();\n const removingKeys = new Set<string | number>();\n let oldKeys: (string | number)[] = [];\n let $emptyEl: JQuery | null = null;\n\n const fx = effect(() => {\n const items = source.value;\n const itemCount = items.length;\n\n // 1. Handle Empty Template Logic\n if (itemCount === 0) {\n if (empty && !$emptyEl) {\n // Use type assertion to avoid overload ambiguity while maintaining JQuery return type\n $emptyEl = ($(empty as string) as JQuery).appendTo($container);\n }\n } else if ($emptyEl) {\n $emptyEl.remove();\n $emptyEl = null;\n }\n\n // Hot Path: If both new and old are empty, skip processing\n if (itemCount === 0 && itemMap.size === 0) {\n oldKeys = [];\n return;\n }\n\n debug.log('list', `${containerSelector} updating with ${itemCount} items`);\n\n // 2. Build Old Index Map (O(M))\n const oldIndexMap = new Map<string | number, number>();\n const oldLen = oldKeys.length;\n for (let i = 0; i < oldLen; i++) {\n oldIndexMap.set(oldKeys[i]!, i);\n }\n\n // 3. Prepare keys and LIS indices in a single pass (O(N))\n const newKeys: (string | number)[] = new Array(itemCount);\n const newKeySet = new Set<string | number>();\n const newIndices = new Int32Array(itemCount);\n\n for (let i = 0; i < itemCount; i++) {\n const item = items[i] as T;\n const k = getKey(item, i);\n\n if (debug.enabled && newKeySet.has(k)) {\n console.warn(`[atomList] Duplicate key \"${k}\" at index ${i}.`);\n }\n\n newKeys[i] = k;\n newKeySet.add(k);\n newIndices[i] = oldIndexMap.get(k) ?? -1;\n }\n\n // 4. Remove vanished items (O(M))\n if (itemMap.size > 0) {\n for (const [k, entry] of itemMap) {\n if (newKeySet.has(k) || removingKeys.has(k)) continue;\n\n const cleanupItem = () => {\n entry.$el.remove();\n if (entry.$el[0]) registry.cleanup(entry.$el[0]);\n removingKeys.delete(k);\n debug.log('list', `${containerSelector} removed item:`, k);\n };\n\n itemMap.delete(k);\n removingKeys.add(k);\n\n if (onRemove) {\n const result = onRemove(entry.$el);\n if (result instanceof Promise) result.then(cleanupItem);\n else cleanupItem();\n } else {\n cleanupItem();\n }\n }\n }\n\n // After removals, check if we can skip the rest\n if (itemCount === 0) {\n oldKeys = [];\n return;\n }\n\n // 5. Get LIS (O(N log N))\n const lisArr = getLIS(newIndices);\n let lisIdx = lisArr.length - 1;\n\n // 6. Update and Reorder (Backwards iteration for insertBefore efficiency)\n let nextNode: Node | null = null;\n for (let i = itemCount - 1; i >= 0; i--) {\n const k = newKeys[i]!;\n const item = items[i]!;\n const entry = itemMap.get(k);\n\n if (entry) {\n // Existing Item Path\n const oldItem = entry.item;\n entry.item = item;\n const el = entry.$el[0];\n if (!el) continue;\n\n if (update) {\n update(entry.$el, item, i);\n debug.domUpdated(entry.$el, 'list.update', item);\n } else if (oldItem !== item) {\n // Optimized shallow equal (O(K) without Object.keys allocations)\n let isChanged = true;\n if (\n typeof oldItem === 'object' &&\n oldItem !== null &&\n typeof item === 'object' &&\n item !== null\n ) {\n isChanged = false;\n let countA = 0;\n const objA = oldItem as Record<string, unknown>;\n const objB = item as Record<string, unknown>;\n for (const prop in objA) {\n if (objA[prop] !== objB[prop]) {\n isChanged = true;\n break;\n }\n countA++;\n }\n if (!isChanged) {\n let countB = 0;\n for (const _prop in objB) {\n countB++;\n if (countB > countA) {\n isChanged = true;\n break;\n }\n }\n if (countA !== countB) isChanged = true;\n }\n }\n\n if (isChanged) {\n const $newEl = $(render(item, i) as string) as JQuery;\n const needsNextNodeUpdate = nextNode === el;\n entry.$el.replaceWith($newEl);\n entry.$el = $newEl;\n if (bind) bind($newEl, item, i);\n debug.domUpdated($newEl, 'list.render', item);\n if (needsNextNodeUpdate) nextNode = $newEl[0] || null;\n }\n }\n\n // Move if not in LIS\n if (lisIdx >= 0 && lisArr[lisIdx] === i) {\n lisIdx--;\n } else {\n const currentEl = entry.$el[0]!;\n if (nextNode?.isConnected) {\n if (nextNode !== currentEl) entry.$el.insertBefore(nextNode);\n } else {\n entry.$el.appendTo($container);\n }\n }\n nextNode = entry.$el[0] || null;\n } else {\n // New Item Path\n const rendered = render(item, i);\n const $el = $(rendered as string) as JQuery;\n itemMap.set(k, { $el, item });\n\n if (nextNode?.isConnected) $el.insertBefore(nextNode);\n else $el.appendTo($container);\n\n if (bind) bind($el, item, i);\n if (onAdd) onAdd($el);\n\n debug.domUpdated($el, 'list.add', item);\n nextNode = $el[0] || null;\n }\n }\n\n oldKeys = newKeys;\n });\n\n registry.trackEffect(this, fx);\n registry.trackCleanup(this, () => {\n itemMap.clear();\n removingKeys.clear();\n oldKeys = [];\n $emptyEl?.remove();\n });\n });\n};\n","import $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ComponentFn } from './types';\nimport { getSelector } from './utils';\n\nconst mountedComponents = new WeakMap<Element, () => void>();\n\n/**\n * Mounts a functional component to the element.\n * Automatically cleans up existing components on the same element.\n */\n$.fn.atomMount = function <P>(component: ComponentFn<P>, props: P = {} as P): JQuery {\n return this.each(function () {\n const isDebug = debug.enabled;\n const selector = isDebug ? getSelector(this) : '';\n\n // 1. Unmount existing component (Consolidated O(1) lookup)\n const existingUnmount = mountedComponents.get(this);\n if (existingUnmount) {\n if (isDebug) debug.log('mount', `${selector} unmounting existing component`);\n existingUnmount();\n }\n\n if (isDebug) debug.log('mount', `${selector} mounting component`);\n\n // 2. Mount\n let userCleanup: undefined | (() => void);\n try {\n userCleanup = component($(this), props);\n } catch (e) {\n console.error('[atom-effect-jquery] Mount error:', e);\n return;\n }\n\n // 3. Optimized cleanup\n const fullCleanup = () => {\n // Atomic delete() acts as a high-performance guard against double-cleanup\n if (!mountedComponents.delete(this)) return;\n\n if (isDebug) debug.log('mount', `${selector} full cleanup`);\n\n if (typeof userCleanup === 'function') {\n try {\n userCleanup();\n } catch (e) {\n console.error('[atom-effect-jquery] Cleanup error:', e);\n }\n }\n registry.cleanupTree(this);\n };\n\n mountedComponents.set(this, fullCleanup);\n registry.trackCleanup(this, fullCleanup);\n });\n};\n\n/**\n * Manually unmounts a component from the element.\n */\n$.fn.atomUnmount = function (): JQuery {\n return this.each(function () {\n const unmount = mountedComponents.get(this);\n if (unmount) unmount();\n });\n};\n","import { batch } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { registry } from './registry';\n\n/** Generic event handler type matching jQuery's internal handler signature */\ntype EventHandler = JQuery.EventHandlerBase<unknown, JQuery.TriggeredEvent>;\n\n/**\n * WeakMap to store strict association between original handlers and batched wrappers.\n * This ensures that .off() works correctly when passing the original handler.\n */\nconst handlerMap = new WeakMap<EventHandler, EventHandler>();\n\nlet isjQueryOverridesEnabled = false;\n\nconst getWrappedHandler = (fn: EventHandler): EventHandler => {\n let wrapped = handlerMap.get(fn);\n if (!wrapped) {\n wrapped = function (this: unknown, ...args: unknown[]) {\n return batch(() => fn.apply(this, args as Parameters<EventHandler>));\n } as unknown as EventHandler;\n handlerMap.set(fn, wrapped);\n }\n return wrapped;\n};\n\n/**\n * Patches jQuery methods to integrate with the reactive system.\n */\nexport function enablejQueryOverrides() {\n if (isjQueryOverridesEnabled) return;\n isjQueryOverridesEnabled = true;\n\n const originalOn = $.fn.on;\n const originalOff = $.fn.off;\n const originalRemove = $.fn.remove;\n const originalEmpty = $.fn.empty;\n const originalDetach = $.fn.detach;\n\n // ========== Lifecycle Overrides ==========\n\n // .remove() - Delete element + Unsubscribe\n $.fn.remove = function (this: JQuery, selector?: string) {\n const targets = selector ? this.filter(selector) : this;\n for (let i = 0, len = targets.length; i < len; i++) {\n const el = targets[i];\n if (el) {\n registry.cleanupTree(el);\n registry.markIgnored(el);\n }\n }\n return originalRemove.call(this, selector);\n };\n\n // .empty() - Delete children + Recursive Unsubscribe\n $.fn.empty = function (this: JQuery) {\n for (let i = 0, len = this.length; i < len; i++) {\n const el = this[i];\n if (el) registry.cleanupDescendants(el);\n }\n return originalEmpty.call(this);\n };\n\n // .detach() - Remove from DOM + Keep Subscription\n $.fn.detach = function (this: JQuery, selector?: string) {\n const targets = selector ? this.filter(selector) : this;\n for (let i = 0, len = targets.length; i < len; i++) {\n const el = targets[i];\n if (el) registry.keep(el);\n }\n return originalDetach.call(this, selector);\n };\n\n // ========== Event Overrides ==========\n\n // Patch .on()\n $.fn.on = function (this: JQuery, ...args: unknown[]) {\n const types = args[0];\n\n if (types && typeof types === 'object') {\n const map = types as Record<string, EventHandler>;\n const newMap: Record<string, EventHandler> = {};\n for (const key in map) {\n const handler = map[key];\n if (handler) {\n newMap[key] = getWrappedHandler(handler);\n }\n }\n args[0] = newMap;\n } else {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = getWrappedHandler(args[i] as EventHandler);\n break;\n }\n }\n }\n\n return originalOn.apply(this, args as Parameters<typeof originalOn>);\n };\n\n // Patch .off()\n $.fn.off = function (this: JQuery, ...args: unknown[]) {\n const types = args[0];\n\n if (types && typeof types === 'object') {\n const map = types as Record<string, EventHandler>;\n const newMap: Record<string, EventHandler> = {};\n for (const key in map) {\n const handler = map[key];\n if (handler) {\n newMap[key] = handlerMap.get(handler) || handler;\n }\n }\n args[0] = newMap;\n } else {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = handlerMap.get(args[i] as EventHandler) || args[i];\n break;\n }\n }\n }\n\n return originalOff.apply(this, args as Parameters<typeof originalOff>);\n };\n}\n\n/**\n * @deprecated use `enablejQueryOverrides()` instead.\n * This alias will be removed in the future.\n */\nexport const enablejQueryBatching = enablejQueryOverrides;\n","/**\n * atom-effect-jquery\n *\n * Brings reactivity to jQuery.\n *\n * Features:\n * - Full CJK IME Support (Input Method Editor).\n * - Auto-cleanup via MutationObserver (No memory leaks).\n * - Debug Mode: Console logging + Visual Highlighting.\n */\n\nimport $ from 'jquery';\n\n// Register plugins\nimport './namespace';\nimport './chainable';\nimport './unified';\nimport './list';\nimport './mount';\n\nimport { enablejQueryOverrides } from './jquery-patch';\n// Auto-cleanup (Crucial!)\nimport { disableAutoCleanup, enableAutoCleanup, registry } from './registry';\n\n// Auto-enable on DOM ready\nenablejQueryOverrides();\n$(() => {\n enableAutoCleanup(document.body);\n});\n\n// Explicit import support\nexport {\n atom,\n batch,\n computed,\n effect,\n untracked,\n} from '@but212/atom-effect';\n// Optional: Auto-batching for jQuery events\nexport { enablejQueryBatching, enablejQueryOverrides } from './jquery-patch';\n// Export types\nexport type {\n BindingOptions,\n ComponentFn,\n ComputedAtom,\n ListOptions,\n ReadonlyAtom,\n WritableAtom,\n} from './types';\n\nexport { registry, enableAutoCleanup, disableAutoCleanup };\nexport default $;\n"],"names":["ue","G","b","I","o","C","m","K","v","M","_e","F","T","P","k","f","i","X","ae","Y","q","le","se","n","r","N","fe","Ee","ie","ne","h","de","pe","J","g","U","S","x","L","y","R","Se","a","E","H","re","ge","Q","$","z","W","Z","De","Ie","B","be","d","Ce","Ne","Ae","w","Oe","Re","oe","ce","j","ee","te","he","s","D","O","u","l","t","c","Ue","Te","_","p","A","V","xe","Fe","isReactive","value","getSelector","el","dom","id","tagName","classes","res","len","cls","getLIS","arr","predecessors","result","resultLen","val","lastIdx","left","right","mid","midIdx","leftIdx","lis","curr","getInitialDebugState","flag","debugEnabled","debug","type","args","name","oldVal","newVal","$el","highlightElement","selector","highlightStateMap","state","style","org","atomMetadata","atom","initialValue","options","instance","createAtom","nextTick","resolve","computed","effect","batch","untracked","isAtom","isComputed","AES_BOUND","BindingRegistry","node","fx","record","fn","effects","e","cleanups","children","child","registry","observer","enableAutoCleanup","root","mutations","removedNodes","rLen","disableAutoCleanup","registerReactiveEffect","source","updater","debugType","BindingFlags","createInputBindingState","applyInputBinding","debounceMs","event","parse","format","equal","syncAtomFromDom","currentRaw","parsed","onBlur","formatted","onInput","handlers","currentVal","start","end","formatter","className","condition","prop","unit","fxFn","cleanup","element","handler","checked","camelCache","getCamelCase","cached","bindText","ctx","bindHtml","bindClass","classMap","bindCss","cssMap","camel","bindAttr","attrMap","bindProp","propMap","bindShow","bindHide","bindVal","cfg","isArr","bindChecked","current","bindEvents","eventMap","listener","_$el","key","render","bind","update","onAdd","onRemove","empty","getKey","item","_index","$container","containerSelector","itemMap","removingKeys","oldKeys","$emptyEl","items","itemCount","oldIndexMap","oldLen","newKeys","newKeySet","newIndices","entry","cleanupItem","lisArr","lisIdx","nextNode","oldItem","isChanged","countA","objA","objB","countB","_prop","$newEl","needsNextNodeUpdate","currentEl","rendered","mountedComponents","component","props","isDebug","existingUnmount","userCleanup","fullCleanup","unmount","handlerMap","isjQueryOverridesEnabled","getWrappedHandler","wrapped","enablejQueryOverrides","originalOn","originalOff","originalRemove","originalEmpty","originalDetach","targets","types","map","newMap","enablejQueryBatching"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../core/dist/index.mjs","../src/utils.ts","../src/debug.ts","../src/namespace.ts","../src/registry.ts","../src/effect-factory.ts","../src/types.ts","../src/input-binding.ts","../src/chainable.ts","../src/unified.ts","../src/list.ts","../src/mount.ts","../src/jquery-patch.ts","../src/index.ts"],"sourcesContent":["const et = {\n ONE_SECOND_MS: 1e3\n}, m = {\n IDLE: \"idle\",\n PENDING: \"pending\",\n RESOLVED: \"resolved\",\n REJECTED: \"rejected\"\n}, d = {\n DISPOSED: 1,\n HAS_FN_SUBS: 2,\n HAS_OBJ_SUBS: 4\n}, a = {\n ...d,\n EXECUTING: 8\n}, o = {\n ...d,\n DIRTY: 8,\n IDLE: 16,\n PENDING: 32,\n RESOLVED: 64,\n REJECTED: 128,\n RECOMPUTING: 256,\n HAS_ERROR: 512\n}, E = {\n ...d,\n SYNC: 8,\n NOTIFICATION_SCHEDULED: 16\n}, St = {\n MAX_SIZE: 1e3,\n WARMUP_SIZE: 100\n}, p = {\n // Infinite loop protection\n MAX_EXECUTIONS_PER_SECOND: 1e3,\n MAX_EXECUTIONS_PER_EFFECT: 100,\n // Batch processing limits to prevent blocking the main thread for too long\n MAX_EXECUTIONS_PER_FLUSH: 1e4,\n MAX_FLUSH_ITERATIONS: 1e3,\n MIN_FLUSH_ITERATIONS: 10,\n // Memory management\n CLEANUP_THRESHOLD: 1e3,\n BATCH_QUEUE_SHRINK_THRESHOLD: 1e3\n}, H = {\n MAX_DEPENDENCIES: 1e3,\n WARN_INFINITE_LOOP: !0\n}, C = 1073741823, u = typeof process < \"u\" && process.env && process.env.NODE_ENV !== \"production\" || typeof __DEV__ < \"u\" && !!__DEV__, st = Object.freeze([]);\nclass N extends Error {\n constructor(t, e = null, s = !0) {\n super(t), this.cause = e, this.recoverable = s, this.timestamp = /* @__PURE__ */ new Date(), this.name = \"AtomError\";\n }\n}\nclass S extends N {\n constructor(t, e = null) {\n super(t, e, !0), this.name = \"ComputedError\";\n }\n}\nclass D extends N {\n constructor(t, e = null) {\n super(t, e, !1), this.name = \"EffectError\";\n }\n}\nclass A extends N {\n constructor(t, e = null) {\n super(t, e, !1), this.name = \"SchedulerError\";\n }\n}\nconst V = /* @__PURE__ */ Symbol(\"AtomEffect.DebugName\"), it = /* @__PURE__ */ Symbol(\"AtomEffect.Id\"), z = /* @__PURE__ */ Symbol(\"AtomEffect.Type\"), L = /* @__PURE__ */ Symbol(\"AtomEffect.NoDefaultValue\"), nt = (i) => \"dependencies\" in i && Array.isArray(i.dependencies);\nfunction Q(i, t, e) {\n if (i === t)\n throw new S(\n \"Circular dependency detected: The computation refers to itself explicitly or implicitly.\"\n );\n if (!e.has(i.id) && (e.add(i.id), nt(i))) {\n const s = i.dependencies;\n for (let n = 0; n < s.length; n++) {\n const r = s[n];\n r && Q(r, t, e);\n }\n }\n}\nconst g = {\n // Dev mode flag\n enabled: u,\n maxDependencies: H.MAX_DEPENDENCIES,\n warnInfiniteLoop: H.WARN_INFINITE_LOOP,\n warn(i, t) {\n u && this.enabled && i && console.warn(`[Atom Effect] ${t}`);\n },\n checkCircular(i, t) {\n if (i === t)\n throw new S(\"Direct circular dependency detected\");\n u && this.enabled && Q(i, t, /* @__PURE__ */ new Set());\n },\n attachDebugInfo(i, t, e) {\n if (!u || !this.enabled) return;\n const s = i;\n s[V] = `${t}_${e}`, s[it] = e, s[z] = t;\n },\n getDebugName: (i) => i?.[V],\n getDebugType: (i) => i?.[z]\n};\nlet rt = 1;\nconst ot = () => rt++;\nfunction q(i, t, e) {\n if (typeof t == \"function\") {\n const n = t;\n for (let r = 0, h = e.length; r < h; r++) {\n const c = e[r];\n if (c && c.fn === n) return;\n }\n e.push(new k(n, void 0)), i.flags |= d.HAS_FN_SUBS, \"_fnSubCount\" in i && i._fnSubCount++;\n return;\n }\n if (\"addDependency\" in t) {\n t.addDependency(i);\n return;\n }\n const s = t;\n for (let n = 0, r = e.length; n < r; n++) {\n const h = e[n];\n if (h && h.sub === s) return;\n }\n e.push(new k(void 0, s)), i.flags |= d.HAS_OBJ_SUBS, \"_objSubCount\" in i && i._objSubCount++;\n}\nfunction ht(i, t, e) {\n for (let s = 0, n = t.length; s < n; s++) {\n const r = t[s];\n r && (r.node._tempUnsub = r.unsub);\n }\n for (let s = 0, n = i.length; s < n; s++) {\n const r = i[s];\n if (!r) continue;\n const h = r.node;\n h._tempUnsub !== void 0 ? (r.unsub = h._tempUnsub, h._tempUnsub = void 0) : (g.checkCircular(h, e), r.unsub = h.subscribe(e));\n }\n for (let s = 0, n = t.length; s < n; s++) {\n const r = t[s];\n if (r) {\n const h = r.node;\n h._tempUnsub !== void 0 && (h._tempUnsub(), h._tempUnsub = void 0), r.unsub = void 0;\n }\n }\n}\nclass x {\n constructor(t, e, s = void 0) {\n this.node = t, this.version = e, this.unsub = s;\n }\n}\nclass k {\n constructor(t, e) {\n this.fn = t, this.sub = e;\n }\n}\nconst _ = {\n // Computed Errors\n COMPUTED_MUST_BE_FUNCTION: \"Computed target must be a function\",\n COMPUTED_ASYNC_PENDING_NO_DEFAULT: \"Async computation pending with no default value\",\n COMPUTED_COMPUTATION_FAILED: \"Computation execution failed\",\n COMPUTED_ASYNC_COMPUTATION_FAILED: \"Async computation execution failed\",\n COMPUTED_CIRCULAR_DEPENDENCY: \"Circular dependency detected\",\n COMPUTED_DISPOSED: \"Attempted to access disposed computed\",\n // Atom Errors\n ATOM_SUBSCRIBER_MUST_BE_FUNCTION: \"Subscriber must be a function or Subscriber object\",\n ATOM_INDIVIDUAL_SUBSCRIBER_FAILED: \"Subscriber execution failed\",\n // Effect Errors\n EFFECT_MUST_BE_FUNCTION: \"Effect target must be a function\",\n EFFECT_EXECUTION_FAILED: \"Effect execution failed\",\n EFFECT_CLEANUP_FAILED: \"Effect cleanup failed\",\n EFFECT_DISPOSED: \"Attempted to run disposed effect\",\n CALLBACK_ERROR_IN_ERROR_HANDLER: \"Exception encountered in onError handler\"\n};\nfunction T(i, t, e) {\n if (i instanceof N)\n return i;\n const s = i instanceof Error, n = s ? i.message : String(i), r = s ? i : void 0;\n let h = \"Unexpected error\";\n i instanceof TypeError ? h = \"Type error\" : i instanceof ReferenceError && (h = \"Reference error\");\n const c = `${h} (${e}): ${n}`;\n return new t(c, r);\n}\nclass J {\n constructor() {\n this.flags = 0, this.version = 0, this._lastSeenEpoch = -1, this._modifiedAtEpoch = -1, this.id = ot() & C, this._tempUnsub = void 0;\n }\n}\nclass $ extends J {\n constructor() {\n super(...arguments), this._fnSubCount = 0, this._objSubCount = 0;\n }\n /**\n * Adds subscriber.\n */\n subscribe(t) {\n const e = typeof t == \"function\";\n if (!e && (!t || typeof t.execute != \"function\"))\n throw T(\n new TypeError(\"Invalid subscriber\"),\n N,\n _.ATOM_SUBSCRIBER_MUST_BE_FUNCTION\n );\n const s = this._subscribers;\n for (let r = 0, h = s.length; r < h; r++) {\n const c = s[r];\n if (c && (e ? c.fn === t : c.sub === t))\n return u && console.warn(\"Duplicate subscription ignored.\"), () => {\n };\n }\n const n = new k(\n e ? t : void 0,\n e ? void 0 : t\n );\n return s.push(n), e ? (this._fnSubCount++, this.flags |= d.HAS_FN_SUBS) : (this._objSubCount++, this.flags |= d.HAS_OBJ_SUBS), () => this._unsubscribe(n);\n }\n _unsubscribe(t) {\n const e = this._subscribers, s = e.indexOf(t);\n if (s === -1) return;\n const n = e.pop();\n s < e.length && n && (e[s] = n), t.fn ? this._fnSubCount-- : this._objSubCount--, e.length === 0 ? (this.flags &= -7, this._fnSubCount = 0, this._objSubCount = 0) : t.fn && this._fnSubCount <= 0 ? (this.flags &= -3, this._fnSubCount = 0) : !t.fn && this._objSubCount <= 0 && (this.flags &= -5, this._objSubCount = 0);\n }\n subscriberCount() {\n return this._subscribers.length;\n }\n _notifySubscribers(t, e) {\n if (!(this.flags & (d.HAS_FN_SUBS | d.HAS_OBJ_SUBS))) return;\n const s = this._subscribers, n = s.length;\n for (let r = 0; r < n; r++) {\n const h = s[r];\n if (h)\n try {\n h.fn ? h.fn(t, e) : h.sub && h.sub.execute();\n } catch (c) {\n this._handleNotifyError(c);\n }\n }\n }\n _handleNotifyError(t) {\n console.error(T(t, N, _.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED));\n }\n}\nlet y = 0;\nconst K = () => (y = y + 1 & C || 1, y), ct = () => y;\nlet P = 0, M = 0, R = !1;\nfunction G() {\n return R ? (u && console.warn(\"startFlush() called during flush - ignored\"), !1) : (R = !0, P = P + 1 & C || 1, M = 0, !0);\n}\nconst X = () => {\n R = !1;\n}, ut = () => R ? ++M : 0, f = {\n /** Queue buffer */\n _queueBuffer: [[], []],\n _bufferIndex: 0,\n _size: 0,\n /** Epoch counter */\n _epoch: 0,\n /** State flags */\n _isProcessing: !1,\n _isBatching: !1,\n _isFlushingSync: !1,\n /** Batching state */\n _batchDepth: 0,\n _batchQueue: [],\n _batchQueueSize: 0,\n /** Config */\n _maxFlushIterations: p.MAX_FLUSH_ITERATIONS,\n get phase() {\n return this._isProcessing || this._isFlushingSync ? 2 : this._isBatching ? 1 : 0;\n },\n get queueSize() {\n return this._size;\n },\n get isBatching() {\n return this._isBatching;\n },\n /**\n * Schedules job.\n */\n schedule(i) {\n if (u && typeof i != \"function\")\n throw new A(\"Scheduler callback must be a function\");\n if (i._nextEpoch !== this._epoch) {\n if (i._nextEpoch = this._epoch, this._isBatching || this._isFlushingSync) {\n this._batchQueue[this._batchQueueSize++] = i;\n return;\n }\n this._queueBuffer[this._bufferIndex][this._size++] = i, this._isProcessing || this._flush();\n }\n },\n /**\n * Triggers flush.\n */\n _flush() {\n this._isProcessing || this._size === 0 || (this._isProcessing = !0, queueMicrotask(this._runLoop));\n },\n /**\n * Scheduler loop.\n */\n _runLoop: () => {\n try {\n if (f._size === 0) return;\n const i = G();\n f._drainQueue(), i && X();\n } finally {\n f._isProcessing = !1, f._size > 0 && !f._isBatching && f._flush();\n }\n },\n _flushSync() {\n this._isFlushingSync = !0;\n const i = G();\n try {\n this._mergeBatchQueue(), this._drainQueue();\n } finally {\n this._isFlushingSync = !1, i && X();\n }\n },\n _mergeBatchQueue() {\n if (this._batchQueueSize === 0) return;\n const i = ++this._epoch, t = this._batchQueue, e = this._queueBuffer[this._bufferIndex];\n let s = this._size;\n for (let n = 0; n < this._batchQueueSize; n++) {\n const r = t[n];\n r._nextEpoch !== i && (r._nextEpoch = i, e[s++] = r);\n }\n this._size = s, this._batchQueueSize = 0, t.length > p.BATCH_QUEUE_SHRINK_THRESHOLD && (t.length = 0);\n },\n _drainQueue() {\n let i = 0;\n for (; this._size > 0; ) {\n if (++i > this._maxFlushIterations) {\n this._handleFlushOverflow();\n return;\n }\n this._processQueue(), this._mergeBatchQueue();\n }\n },\n _processQueue() {\n const i = this._bufferIndex, t = this._queueBuffer[i], e = this._size;\n this._bufferIndex = i ^ 1, this._size = 0, this._epoch++;\n for (let s = 0; s < e; s++)\n try {\n t[s]();\n } catch (n) {\n console.error(new A(\"Error occurred during scheduler execution\", n));\n }\n t.length = 0;\n },\n _handleFlushOverflow() {\n console.error(\n new A(\n `Maximum flush iterations (${this._maxFlushIterations}) exceeded. Possible infinite loop.`\n )\n ), this._size = 0, this._queueBuffer[this._bufferIndex].length = 0, this._batchQueueSize = 0;\n },\n startBatch() {\n this._batchDepth++, this._isBatching = !0;\n },\n endBatch() {\n if (this._batchDepth === 0) {\n u && console.warn(\"endBatch() called without matching startBatch(). Ignoring.\");\n return;\n }\n --this._batchDepth === 0 && (this._flushSync(), this._isBatching = !1);\n },\n setMaxFlushIterations(i) {\n if (i < p.MIN_FLUSH_ITERATIONS)\n throw new A(\n `Max flush iterations must be at least ${p.MIN_FLUSH_ITERATIONS}`\n );\n this._maxFlushIterations = i;\n }\n}, b = {\n /** Active listener. */\n current: null,\n /**\n * Executes in context.\n *\n * @param listener - The subscriber.\n * @param fn - The logic to execute.\n * @returns The result of `fn`.\n */\n run(i, t) {\n const e = this.current;\n this.current = i;\n try {\n return t();\n } finally {\n this.current = e;\n }\n }\n};\nfunction _t(i) {\n const t = b.current;\n if (t === null) return i();\n b.current = null;\n try {\n return i();\n } finally {\n b.current = t;\n }\n}\nconst lt = E.HAS_FN_SUBS | E.HAS_OBJ_SUBS;\nclass at extends $ {\n constructor(t, e) {\n super(), this._pendingOldValue = void 0, this._notifyTask = void 0, this._subscribers = [], this._value = t, e && (this.flags |= E.SYNC), g.attachDebugInfo(this, \"atom\", this.id);\n }\n get value() {\n const t = b.current;\n return t && q(this, t, this._subscribers), this._value;\n }\n set value(t) {\n const e = this._value;\n if (Object.is(e, t)) return;\n this._value = t, this.version = this.version + 1 & C;\n const s = this.flags;\n if (!((s & lt) === 0 || s & E.NOTIFICATION_SCHEDULED)) {\n if (this._pendingOldValue = e, this.flags = s | E.NOTIFICATION_SCHEDULED, s & E.SYNC && !f.isBatching) {\n this._flushNotifications();\n return;\n }\n this._notifyTask || (this._notifyTask = () => this._flushNotifications()), f.schedule(this._notifyTask);\n }\n }\n /**\n * Triggers subscribers.\n */\n _flushNotifications() {\n const t = this.flags;\n if (!(t & E.NOTIFICATION_SCHEDULED) || t & E.DISPOSED)\n return;\n const e = this._pendingOldValue;\n this._pendingOldValue = void 0, this.flags &= -17, this._notifySubscribers(this._value, e);\n }\n peek() {\n return this._value;\n }\n dispose() {\n this.flags & E.DISPOSED || (this._subscribers.length = 0, this.flags |= E.DISPOSED, this._value = void 0, this._pendingOldValue = void 0, this._notifyTask = void 0);\n }\n}\nfunction pt(i, t = {}) {\n return new at(i, t.sync ?? !1);\n}\nclass ft {\n /**\n * @param limit - Max unique arrays to hold (default: 50). Prevents the pool itself from consuming too much memory.\n * @param capacity - Max length of an array to accept (default: 256).\n */\n constructor(t = 50, e = 256) {\n this.limit = t, this.capacity = e, this.pool = [], this.stats = u ? {\n acquired: 0,\n released: 0,\n rejected: { frozen: 0, tooLarge: 0, poolFull: 0 }\n } : null;\n }\n /**\n * Acquires array.\n */\n acquire() {\n return u && this.stats && this.stats.acquired++, this.pool.pop() ?? [];\n }\n /**\n * Releases array.\n *\n * @param arr - Array to release.\n * @param emptyConst - Optional empty constant.\n */\n release(t, e) {\n if (!(e && t === e)) {\n if (t.length > this.capacity) {\n u && this.stats && this.stats.rejected.tooLarge++;\n return;\n }\n if (this.pool.length >= this.limit) {\n u && this.stats && this.stats.rejected.poolFull++;\n return;\n }\n if (Object.isFrozen(t)) {\n u && this.stats && this.stats.rejected.frozen++;\n return;\n }\n t.length = 0, this.pool.push(t), u && this.stats && this.stats.released++;\n }\n }\n /**\n * Pool stats.\n */\n getStats() {\n if (!u || !this.stats) return null;\n const { acquired: t, released: e, rejected: s } = this.stats, n = t - e - (s.frozen + s.tooLarge + s.poolFull);\n return {\n acquired: t,\n released: e,\n rejected: { ...s },\n leaked: n,\n poolSize: this.pool.length\n };\n }\n /**\n * Resets pool.\n */\n reset() {\n this.pool.length = 0, u && this.stats && (this.stats = {\n acquired: 0,\n released: 0,\n rejected: { frozen: 0, tooLarge: 0, poolFull: 0 }\n });\n }\n}\nconst O = (i) => Object.freeze(i);\nO([]);\nO([]);\nO([]);\nO([]);\nconst l = O([]);\nO([]);\nconst I = new ft();\nfunction Et(i) {\n return i !== null && typeof i == \"object\" && \"value\" in i && typeof i.subscribe == \"function\";\n}\nfunction It(i) {\n return Et(i) && typeof i.invalidate == \"function\";\n}\nfunction Dt(i) {\n return i !== null && typeof i == \"object\" && typeof i.dispose == \"function\" && typeof i.run == \"function\";\n}\nfunction W(i) {\n return i !== null && typeof i == \"object\" && typeof i.then == \"function\";\n}\nconst Z = o.RESOLVED | o.PENDING | o.REJECTED, U = Array(Z + 1).fill(m.IDLE);\nU[o.RESOLVED] = m.RESOLVED;\nU[o.PENDING] = m.PENDING;\nU[o.REJECTED] = m.REJECTED;\nconst j = 3, Y = Number.MAX_SAFE_INTEGER - 1;\nclass tt extends $ {\n constructor(t, e = {}) {\n if (typeof t != \"function\") throw new S(_.COMPUTED_MUST_BE_FUNCTION);\n if (super(), this._error = null, this._promiseId = 0, this._subscribers = [], this._links = l, this._cachedErrors = null, this._errorCacheEpoch = -1, this._asyncStartAggregateVersion = 0, this._asyncRetryCount = 0, this._trackEpoch = -1, this._trackLinks = l, this._trackCount = 0, this._value = void 0, this.flags = o.DIRTY | o.IDLE, this._equal = e.equal ?? Object.is, this._fn = t, this._defaultValue = \"defaultValue\" in e ? e.defaultValue : L, this._onError = e.onError ?? null, g.attachDebugInfo(this, \"computed\", this.id), e.lazy === !1)\n try {\n this._recompute();\n } catch {\n }\n }\n _track() {\n const t = b.current;\n t && q(this, t, this._subscribers);\n }\n get value() {\n this._track();\n const t = this.flags;\n if ((t & (o.RESOLVED | o.DIRTY | o.IDLE)) === o.RESOLVED)\n return this._value;\n if (t & o.DISPOSED)\n throw new S(_.COMPUTED_DISPOSED);\n if (t & o.RECOMPUTING) {\n if (this._defaultValue !== L) return this._defaultValue;\n throw new S(_.COMPUTED_CIRCULAR_DEPENDENCY);\n }\n if (t & (o.DIRTY | o.IDLE) && (this._recompute(), this.flags & o.RESOLVED))\n return this._value;\n const e = this._defaultValue, s = e !== L;\n if (this.flags & o.PENDING) {\n if (s) return e;\n throw new S(_.COMPUTED_ASYNC_PENDING_NO_DEFAULT);\n }\n if (this.flags & o.REJECTED) {\n if (this._error?.recoverable && s) return e;\n throw this._error;\n }\n return this._value;\n }\n peek() {\n return this._value;\n }\n get state() {\n return this._track(), U[this.flags & Z];\n }\n get hasError() {\n if (this._track(), this.flags & (o.REJECTED | o.HAS_ERROR)) return !0;\n const t = this._links;\n for (let e = 0, s = t.length; e < s; e++) {\n const n = t[e]?.node;\n if (n && n.flags & o.HAS_ERROR) return !0;\n }\n return !1;\n }\n // ... (isValid, errors, lastError getters remain structurally similar, omitted for brevity if mostly unchanged) ...\n get isValid() {\n return !this.hasError;\n }\n get errors() {\n if (this._track(), !this.hasError) return st;\n const t = ct();\n if (this._errorCacheEpoch === t && this._cachedErrors) return this._cachedErrors;\n const e = /* @__PURE__ */ new Set();\n this._error && e.add(this._error);\n const s = this._links;\n for (let r = 0, h = s.length; r < h; r++) {\n const c = s[r].node;\n if (c.flags & o.HAS_ERROR) {\n const v = c;\n if (v.errors) {\n const w = v.errors;\n for (let F = 0; F < w.length; F++) {\n const B = w[F];\n B && e.add(B);\n }\n }\n }\n }\n const n = Object.freeze(Array.from(e));\n return this._errorCacheEpoch = t, this._cachedErrors = n, n;\n }\n get lastError() {\n return this._track(), this._error;\n }\n get isPending() {\n return this._track(), (this.flags & o.PENDING) !== 0;\n }\n get isResolved() {\n return this._track(), (this.flags & o.RESOLVED) !== 0;\n }\n invalidate() {\n this._markDirty(), this._errorCacheEpoch = -1, this._cachedErrors = null;\n }\n dispose() {\n if (this.flags & o.DISPOSED) return;\n const t = this._links;\n if (t !== l) {\n for (let e = 0, s = t.length; e < s; e++)\n t[e].unsub?.();\n I.release(t), this._links = l;\n }\n this._subscribers.length = 0, this.flags = o.DISPOSED | o.DIRTY | o.IDLE, this._error = null, this._value = void 0, this._promiseId = (this._promiseId + 1) % Y, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n addDependency(t) {\n if (t._lastSeenEpoch !== this._trackEpoch) {\n if (t._lastSeenEpoch = this._trackEpoch, this._trackCount < this._trackLinks.length) {\n const e = this._trackLinks[this._trackCount];\n e.node = t, e.version = t.version;\n } else\n this._trackLinks.push(new x(t, t.version));\n this._trackCount++;\n }\n }\n _commitDeps(t) {\n this._trackLinks.length = this._trackCount, ht(this._trackLinks, t, this), this._links = this._trackLinks;\n }\n _recompute() {\n if (this.flags & o.RECOMPUTING) return;\n this.flags |= o.RECOMPUTING;\n const t = this._links;\n this._trackEpoch = K(), this._trackLinks = I.acquire(), this._trackCount = 0;\n let e = !1;\n try {\n const s = b.run(this, this._fn);\n this._commitDeps(t), e = !0, W(s) ? this._handleAsyncComputation(s) : this._finalizeResolution(s);\n } catch (s) {\n if (!e)\n try {\n this._commitDeps(t), e = !0;\n } catch {\n }\n this._handleError(s, _.COMPUTED_COMPUTATION_FAILED, !0);\n } finally {\n e && t !== l ? I.release(t) : e || I.release(this._trackLinks), this._trackEpoch = -1, this._trackLinks = l, this._trackCount = 0, this.flags &= -257;\n }\n }\n _handleAsyncComputation(t) {\n this.flags = (this.flags | o.PENDING) & -217, this._notifySubscribers(void 0, void 0), this._asyncStartAggregateVersion = this._captureVersionSnapshot(), this._asyncRetryCount = 0, this._promiseId = (this._promiseId + 1) % Y;\n const e = this._promiseId;\n t.then(\n (s) => {\n if (e === this._promiseId) {\n if (this._captureVersionSnapshot() !== this._asyncStartAggregateVersion)\n return this._asyncRetryCount++ < j ? this._markDirty() : this._handleError(\n new S(`Async drift threshold exceeded after ${j} retries.`),\n _.COMPUTED_ASYNC_COMPUTATION_FAILED\n );\n this._finalizeResolution(s), this._notifySubscribers(s, void 0);\n }\n },\n (s) => e === this._promiseId && this._handleError(s, _.COMPUTED_ASYNC_COMPUTATION_FAILED)\n );\n }\n _captureVersionSnapshot() {\n let t = 0;\n const e = this._links;\n for (let s = 0, n = e.length; s < n; s++)\n t = ((t << 5) - t | 0) + e[s].node.version & C;\n return t;\n }\n _handleError(t, e, s = !1) {\n const n = T(t, S, e);\n if (!s && !(this.flags & o.REJECTED) && (this.version = this.version + 1 & C), this._error = n, this.flags = this.flags & -121 | (o.REJECTED | o.HAS_ERROR), this._onError)\n try {\n this._onError(n);\n } catch (r) {\n console.error(_.CALLBACK_ERROR_IN_ERROR_HANDLER, r);\n }\n if (s) throw n;\n this._notifySubscribers(void 0, void 0);\n }\n _finalizeResolution(t) {\n (!(this.flags & o.RESOLVED) || !this._equal(this._value, t)) && (this.version = this.version + 1 & C), this._value = t, this._error = null, this.flags = (this.flags | o.RESOLVED) & -697, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n execute() {\n this._markDirty();\n }\n /** @internal */\n _markDirty() {\n this.flags & (o.RECOMPUTING | o.DIRTY) || (this.flags |= o.DIRTY, this._notifySubscribers(void 0, void 0));\n }\n}\nObject.freeze(tt.prototype);\nfunction gt(i, t = {}) {\n return new tt(i, t);\n}\nclass dt extends J {\n constructor(t, e = {}) {\n super(), this._cleanup = null, this._links = l, this._nextLinks = null, this._currentEpoch = -1, this._lastFlushEpoch = -1, this._executionsInEpoch = 0, this._executionCount = 0, this._historyPtr = 0, this._execId = 0, this._fn = t, this._onError = e.onError ?? null, this._sync = e.sync ?? !1, this._maxExecutions = e.maxExecutionsPerSecond ?? p.MAX_EXECUTIONS_PER_SECOND, this._maxExecutionsPerFlush = e.maxExecutionsPerFlush ?? p.MAX_EXECUTIONS_PER_EFFECT, this._trackModifications = e.trackModifications ?? !1;\n const s = Number.isFinite(this._maxExecutions), n = s ? Math.min(this._maxExecutions + 1, p.MAX_EXECUTIONS_PER_SECOND + 1) : 0;\n this._historyCapacity = n, this._history = u && s && n > 0 ? new Array(n).fill(0) : null, g.attachDebugInfo(this, \"effect\", this.id);\n }\n run() {\n if (this.flags & a.DISPOSED)\n throw new D(_.EFFECT_DISPOSED);\n this.execute(!0);\n }\n dispose() {\n this.flags & a.DISPOSED || (this.flags |= a.DISPOSED, this._execCleanup(), this._releaseLinks(this._links), this._links = l, this._executeTask = void 0);\n }\n addDependency(t) {\n if (!(this.flags & a.EXECUTING) || t._lastSeenEpoch === this._currentEpoch) return;\n t._lastSeenEpoch = this._currentEpoch;\n const e = this._nextLinks;\n if (t._tempUnsub) {\n e.push(new x(t, t.version, t._tempUnsub)), t._tempUnsub = void 0;\n return;\n }\n try {\n const s = t.subscribe(() => {\n if (this._trackModifications && this.flags & a.EXECUTING && (t._modifiedAtEpoch = this._currentEpoch), this._sync) return this.execute();\n this._executeTask || (this._executeTask = () => this.execute()), f.schedule(this._executeTask);\n });\n e.push(new x(t, t.version, s));\n } catch (s) {\n console.error(T(s, D, _.EFFECT_EXECUTION_FAILED));\n }\n }\n /**\n * Executes effect with tracking.\n */\n execute(t = !1) {\n if (this.flags & (a.DISPOSED | a.EXECUTING) || !t && this._links.length > 0 && !this._isDirty()) return;\n this._checkInfiniteLoops(), this.flags |= a.EXECUTING, this._execCleanup();\n const e = this._links;\n if (e !== l)\n for (let r = 0, h = e.length; r < h; r++) {\n const c = e[r];\n c && (c.node._tempUnsub = c.unsub);\n }\n const s = I.acquire();\n this._nextLinks = s, this._currentEpoch = K();\n let n = !1;\n try {\n const r = b.run(this, this._fn);\n this._links = s, n = !0, this._checkLoopWarnings(), W(r) ? this._handleAsyncResult(r) : this._cleanup = typeof r == \"function\" ? r : null;\n } catch (r) {\n n = !0, this._handleExecutionError(r), this._cleanup = null;\n } finally {\n this._finalizeDependencies(n, e, s), this.flags &= -9;\n }\n }\n _handleAsyncResult(t) {\n const e = ++this._execId;\n t.then(\n (s) => {\n if (e !== this._execId || this.flags & a.DISPOSED) {\n if (typeof s == \"function\")\n try {\n s();\n } catch (n) {\n this._handleExecutionError(n, _.EFFECT_CLEANUP_FAILED);\n }\n return;\n }\n typeof s == \"function\" && (this._cleanup = s);\n },\n (s) => e === this._execId && this._handleExecutionError(s)\n );\n }\n _finalizeDependencies(t, e, s) {\n if (this._nextLinks = null, t) {\n if (e !== l) {\n for (let n = 0, r = e.length; n < r; n++) {\n const h = e[n], c = h?.node._tempUnsub;\n c && (c(), h && (h.node._tempUnsub = void 0));\n }\n I.release(e);\n }\n } else if (this._releaseLinks(s), I.release(s), e !== l)\n for (let n = 0, r = e.length; n < r; n++)\n e[n] && (e[n].node._tempUnsub = void 0);\n }\n _releaseLinks(t) {\n if (t !== l) {\n for (let e = 0, s = t.length; e < s; e++)\n t[e]?.unsub?.();\n I.release(t);\n }\n }\n _isDirty() {\n const t = this._links;\n for (let e = 0, s = t.length; e < s; e++) {\n const n = t[e], r = n.node;\n if (r.version !== n.version) return !0;\n if (\"value\" in r) {\n try {\n _t(() => r.value);\n } catch {\n return !0;\n }\n if (r.version !== n.version) return !0;\n }\n }\n return !1;\n }\n _execCleanup() {\n if (this._cleanup) {\n try {\n this._cleanup();\n } catch (t) {\n this._handleExecutionError(t, _.EFFECT_CLEANUP_FAILED);\n }\n this._cleanup = null;\n }\n }\n _checkInfiniteLoops() {\n const t = P;\n if (this._lastFlushEpoch !== t && (this._lastFlushEpoch = t, this._executionsInEpoch = 0), ++this._executionsInEpoch > this._maxExecutionsPerFlush && this._throwInfiniteLoopError(\"per-effect\"), ut() > p.MAX_EXECUTIONS_PER_FLUSH && this._throwInfiniteLoopError(\"global\"), this._executionCount++, this._history) {\n const e = Date.now();\n this._history[this._historyPtr] = e, this._historyPtr = (this._historyPtr + 1) % this._historyCapacity;\n const s = this._history[this._historyPtr] || 0;\n if (s > 0 && e - s < et.ONE_SECOND_MS) {\n const n = new D(\n \"Effect executed too frequently within 1 second. Suspected infinite loop.\"\n );\n if (this.dispose(), this._handleExecutionError(n), u) throw n;\n }\n }\n }\n get isDisposed() {\n return (this.flags & a.DISPOSED) !== 0;\n }\n get executionCount() {\n return this._executionCount;\n }\n get isExecuting() {\n return (this.flags & a.EXECUTING) !== 0;\n }\n _throwInfiniteLoopError(t) {\n const e = new D(\n `Infinite loop detected (${t}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${M}`\n );\n throw this.dispose(), console.error(e), e;\n }\n _handleExecutionError(t, e = _.EFFECT_EXECUTION_FAILED) {\n const s = T(t, D, e);\n if (console.error(s), this._onError)\n try {\n this._onError(s);\n } catch (n) {\n console.error(T(n, D, _.CALLBACK_ERROR_IN_ERROR_HANDLER));\n }\n }\n _checkLoopWarnings() {\n if (this._trackModifications && g.enabled) {\n const t = this._currentEpoch, e = this._links;\n for (let s = 0, n = e.length; s < n; s++) {\n const r = e[s].node;\n r._modifiedAtEpoch === t && g.warn(\n !0,\n `Effect is reading a dependency (${g.getDebugName(r) || \"unknown\"}) that it just modified. Infinite loop may occur`\n );\n }\n }\n }\n}\nfunction Ct(i, t = {}) {\n if (typeof i != \"function\")\n throw new D(_.EFFECT_MUST_BE_FUNCTION);\n const e = new dt(i, t);\n return e.execute(), e;\n}\nfunction bt(i) {\n if (typeof i != \"function\")\n throw new TypeError(\"Batch callback must be a function\");\n f.startBatch();\n try {\n return i();\n } finally {\n f.endBatch();\n }\n}\nexport {\n m as AsyncState,\n N as AtomError,\n S as ComputedError,\n H as DEBUG_CONFIG,\n g as DEBUG_RUNTIME,\n D as EffectError,\n St as POOL_CONFIG,\n p as SCHEDULER_CONFIG,\n A as SchedulerError,\n pt as atom,\n bt as batch,\n gt as computed,\n Ct as effect,\n Et as isAtom,\n It as isComputed,\n Dt as isEffect,\n f as scheduler,\n _t as untracked\n};\n//# sourceMappingURL=index.mjs.map\n","import type { ComputedAtom, ReactiveValue, ReadonlyAtom } from './types';\n\n/**\n * Checks if a given value is a reactive object (Atom or Computed).\n * Robust check for correctness: must have both 'value' property and 'subscribe' method.\n */\nexport function isReactive(value: unknown): value is ReadonlyAtom<unknown> | ComputedAtom<unknown> {\n return value !== null && typeof value === 'object' && 'value' in value && 'subscribe' in value;\n}\n\n/**\n * Extracts the underlying raw value from a ReactiveValue.\n * Optimized for hot path by inlining the reactive check with high correctness.\n */\nexport function getValue<T>(source: ReactiveValue<T>): T {\n if (source !== null && typeof source === 'object' && 'value' in source && 'subscribe' in source) {\n return (source as ReadonlyAtom<T>).value;\n }\n return source as T;\n}\n\n/**\n * Generates a CSS selector string for a DOM element.\n * Optimized for zero-allocation parsing using native classList.\n */\nexport function getSelector(el: Element | JQuery): string {\n if (!el) return 'unknown';\n const dom = 'jquery' in el ? (el as JQuery)[0] : (el as Element);\n if (!dom) return 'unknown';\n\n const id = dom.id;\n if (id && typeof id === 'string') return `#${id}`;\n\n const tagName = dom.tagName.toLowerCase();\n const classes = dom.classList;\n\n if (classes && classes.length > 0) {\n let res = tagName;\n for (let i = 0, len = classes.length; i < len; i++) {\n const cls = classes[i];\n if (cls) res += `.${cls}`;\n }\n return res;\n }\n return tagName;\n}\n\n/**\n * Longest Increasing Subsequence (LIS)\n * Optimized for hardware and TypeScript strict null checks.\n * Time Complexity: O(N log N), Space Complexity: $O(N)$.\n */\nexport function getLIS(arr: Int32Array | number[]): Int32Array {\n const len = arr.length;\n if (len === 0) return new Int32Array(0);\n\n const predecessors = new Int32Array(len);\n const result = new Int32Array(len);\n let resultLen = 0;\n\n for (let i = 0; i < len; i++) {\n const val = arr[i];\n if (val === undefined || val === -1) continue;\n\n const lastIdx = resultLen > 0 ? result[resultLen - 1] : undefined;\n if (resultLen === 0 || (lastIdx !== undefined && (arr[lastIdx] ?? -1) < val)) {\n predecessors[i] = lastIdx ?? -1;\n result[resultLen++] = i;\n continue;\n }\n\n // Binary search for insertion point\n let left = 0;\n let right = resultLen - 1;\n while (left < right) {\n const mid = (left + right) >>> 1;\n const midIdx = result[mid];\n if (midIdx !== undefined && (arr[midIdx] ?? -1) < val) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n\n const leftIdx = result[left];\n if (leftIdx !== undefined && val < (arr[leftIdx] ?? Number.MAX_SAFE_INTEGER)) {\n if (left > 0) {\n predecessors[i] = result[left - 1] ?? -1;\n }\n result[left] = i;\n }\n }\n\n const lis = new Int32Array(resultLen);\n if (resultLen > 0) {\n let curr: number | undefined = result[resultLen - 1];\n for (let i = resultLen - 1; i >= 0 && curr !== undefined && curr !== -1; i--) {\n lis[i] = curr;\n curr = predecessors[curr];\n }\n }\n\n return lis;\n}\n","/**\n * Debug Mode\n *\n * When $.atom.debug = true is enabled:\n * 1. Logs state changes to the console.\n * 2. Visually highlights DOM updates (red border flash).\n *\n * Debug mode can be enabled in two ways:\n * 1. Environment variable (build-time): NODE_ENV=development\n * 2. Runtime: $.atom.debug = true or window.__ATOM_DEBUG__ = true\n */\n\nimport { getSelector } from './utils';\n\n/**\n * Determines the initial debug state based on environment.\n * Priority: window.__ATOM_DEBUG__ > NODE_ENV === 'development'\n */\nfunction getInitialDebugState(): boolean {\n if (typeof window !== 'undefined') {\n const flag = (window as Window & { __ATOM_DEBUG__?: boolean }).__ATOM_DEBUG__;\n if (typeof flag === 'boolean') return flag;\n }\n\n if (import.meta.env?.DEV && import.meta.env.MODE !== 'test') return true;\n\n try {\n // @ts-expect-error\n if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'development') return true;\n } catch {\n // ignore\n }\n\n return false;\n}\n\nlet debugEnabled = getInitialDebugState();\n\nexport const debug = {\n get enabled() {\n return debugEnabled;\n },\n set enabled(value: boolean) {\n debugEnabled = value;\n },\n\n log<T>(type: string, ...args: T[]) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] ${type}:`, ...args);\n }\n },\n\n atomChanged<T>(name: string | undefined, oldVal: T, newVal: T) {\n if (debugEnabled) {\n console.log(\n `[atom-effect-jquery] Atom \"${name ?? 'anonymous'}\" changed:`,\n oldVal,\n '→',\n newVal\n );\n }\n },\n\n /**\n * Logs DOM updates and triggers visual highlight.\n */\n domUpdated<T>($el: JQuery | Element, type: string, value: T) {\n if (!debugEnabled) return;\n console.log(`[atom-effect-jquery] DOM updated: ${getSelector($el)}.${type} =`, value);\n highlightElement($el);\n },\n\n cleanup(selector: string) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] Cleanup: ${selector}`);\n }\n },\n\n warn<T>(...args: T[]) {\n if (debugEnabled) {\n console.warn('[atom-effect-jquery]', ...args);\n }\n },\n};\n\n/**\n * Visual highlight - flashes a red border.\n * Optimized with WeakMap and direct style access to minimize GC and reflows in debug mode.\n */\ninterface HighlightState {\n timer?: ReturnType<typeof setTimeout>;\n cleanupTimer?: ReturnType<typeof setTimeout>;\n orgStyle?: {\n outline: string;\n outlineOffset: string;\n transition: string;\n };\n}\n\nconst highlightStateMap = new WeakMap<HTMLElement, HighlightState>();\n\nfunction highlightElement($el: JQuery | Element): void {\n const el = ('jquery' in $el ? $el[0] : $el) as HTMLElement | undefined;\n if (!el || !el.isConnected) return; // O(1) check instead of O(N) document.contains\n\n let state = highlightStateMap.get(el);\n if (!state) {\n state = {};\n highlightStateMap.set(el, state);\n }\n\n // 1. Clear existing timers\n if (state.timer) clearTimeout(state.timer);\n if (state.cleanupTimer) clearTimeout(state.cleanupTimer);\n\n // 2. Save original style (inline only for performance & correctness)\n if (!state.orgStyle) {\n const style = el.style;\n state.orgStyle = {\n outline: style.outline,\n outlineOffset: style.outlineOffset,\n transition: style.transition,\n };\n }\n\n // 3. Apply highlight style via direct DOM properties\n const style = el.style;\n style.outline = '2px solid rgba(255, 68, 68, 0.8)';\n style.outlineOffset = '1px';\n style.transition = 'none';\n\n // 4. Set timer to restore\n state.timer = setTimeout(() => {\n if (!el.isConnected) return;\n\n // We add a transition for the fade out\n style.transition = 'outline 0.5s ease-out';\n\n // Defer the actual style restoration to allow transition to take effect\n requestAnimationFrame(() => {\n if (!el.isConnected) return;\n\n const org = state?.orgStyle;\n if (org) {\n style.outline = org.outline;\n style.outlineOffset = org.outlineOffset;\n }\n\n // 5. Cleanup data after fade out\n state!.cleanupTimer = setTimeout(() => {\n if (el.isConnected && state?.orgStyle) {\n style.transition = state.orgStyle.transition;\n }\n highlightStateMap.delete(el);\n }, 500);\n });\n }, 100);\n}\n","import {\n batch,\n computed,\n atom as createAtom,\n effect,\n isAtom,\n isComputed,\n untracked,\n} from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport type { AtomOptions, WritableAtom } from './types';\n\n/**\n * Stores Atom metadata (for debugging).\n */\nconst atomMetadata = new WeakMap<WritableAtom<unknown>, { name?: string }>();\n\n/**\n * Creates an atom with optional metadata.\n */\nfunction atom<T>(initialValue: T, options: AtomOptions = {}): WritableAtom<T> {\n const instance = createAtom(initialValue, options);\n\n // Store metadata\n if (options.name) {\n atomMetadata.set(instance, { name: options.name });\n }\n\n return instance;\n}\n\n// Add debug property\nObject.defineProperty(atom, 'debug', {\n get() {\n return debug.enabled;\n },\n set(value: boolean) {\n debug.enabled = value;\n },\n});\n\n/**\n * Waits for the next microtask (tick).\n * Useful for waiting for batched updates to complete in tests or async logic.\n * logic: Uses setTimeout to ensure it runs after all microtasks (where effects are processed).\n */\nfunction nextTick(): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, 0));\n}\n\n/**\n * Extend jQuery static methods.\n */\n$.extend({\n atom,\n computed,\n effect,\n batch,\n untracked,\n isAtom,\n isComputed,\n isReactive: (v: unknown) => isAtom(v) || isComputed(v),\n nextTick,\n});\n","import { debug } from './debug';\nimport type { EffectObject } from './types';\nimport { getSelector } from './utils';\n\n/**\n * Marker class for bound elements to optimize selector engines.\n */\nconst AES_BOUND = '_aes-bound';\n\ninterface BindingRecord {\n effects?: EffectObject[];\n cleanups?: Array<() => void>;\n}\n\n/**\n * Binding Registry\n *\n * Highly optimized for performance:\n * - Uses WeakMap for zero-leak DOM associations.\n * - Minimal allocations in the tracking path.\n * - Efficient tree traversal for cleanup.\n */\nclass BindingRegistry {\n private records = new WeakMap<Element, BindingRecord>();\n private boundElements = new WeakSet<Element>();\n private preservedNodes = new WeakSet<Node>();\n private ignoredNodes = new WeakSet<Node>(); // Prevent redundant cleanup\n\n keep(node: Node): void {\n this.preservedNodes.add(node);\n }\n\n isKept(node: Node): boolean {\n return this.preservedNodes.has(node);\n }\n\n markIgnored(node: Node): void {\n this.ignoredNodes.add(node);\n }\n\n isIgnored(node: Node): boolean {\n return this.ignoredNodes.has(node);\n }\n\n private _getOrCreateRecord(el: Element): BindingRecord {\n let res = this.records.get(el);\n if (!res) {\n res = {};\n this.records.set(el, res);\n // Mark as bound and add class for faster querySelector lookup\n if (!this.boundElements.has(el)) {\n this.boundElements.add(el);\n el.classList.add(AES_BOUND);\n }\n }\n return res;\n }\n\n trackEffect(el: Element, fx: EffectObject): void {\n const record = this._getOrCreateRecord(el);\n if (!record.effects) record.effects = [];\n record.effects.push(fx);\n }\n\n trackCleanup(el: Element, fn: () => void): void {\n const record = this._getOrCreateRecord(el);\n if (!record.cleanups) record.cleanups = [];\n record.cleanups.push(fn);\n }\n\n hasBind(el: Element): boolean {\n return this.boundElements.has(el);\n }\n\n cleanup(el: Element): void {\n // Atomic delete return value used as a high-performance guard\n if (!this.boundElements.delete(el)) return;\n\n const record = this.records.get(el);\n if (!record) return;\n\n // Fast cleanup of metadata\n this.records.delete(el);\n this.preservedNodes.delete(el);\n this.ignoredNodes.delete(el);\n el.classList.remove(AES_BOUND);\n\n // Hoist costly selector string generation to debug-only block\n if (debug.enabled) {\n debug.cleanup(getSelector(el));\n }\n\n // 1. Dispose Effects (Atom -> Subscription severed)\n const effects = record.effects;\n if (effects) {\n for (let i = 0, len = effects.length; i < len; i++) {\n try {\n effects[i]?.dispose();\n } catch (e) {\n debug.warn('Effect dispose error:', e);\n }\n }\n }\n\n // 2. Execute custom cleanups\n const cleanups = record.cleanups;\n if (cleanups) {\n for (let i = 0, len = cleanups.length; i < len; i++) {\n try {\n cleanups[i]?.();\n } catch (e) {\n debug.warn('Cleanup error:', e);\n }\n }\n }\n }\n\n cleanupDescendants(el: Element): void {\n const children = el.querySelectorAll(`.${AES_BOUND}`);\n for (let i = 0, len = children.length; i < len; i++) {\n const child = children[i] as Element;\n // Double check because querySelectorAll might return disconnected leftovers\n if (child && this.boundElements.has(child)) {\n this.cleanup(child);\n } else if (child) {\n child.classList.remove(AES_BOUND);\n }\n }\n }\n\n cleanupTree(el: Element): void {\n this.cleanupDescendants(el);\n this.cleanup(el);\n }\n}\n\nexport const registry = new BindingRegistry();\n\nlet observer: MutationObserver | null = null;\n\nexport function enableAutoCleanup(root: Element = document.body): void {\n if (observer) return;\n\n observer = new MutationObserver((mutations) => {\n for (let i = 0, len = mutations.length; i < len; i++) {\n const removedNodes = mutations[i]?.removedNodes;\n if (!removedNodes) continue;\n const rLen = removedNodes.length;\n if (rLen === 0) continue;\n\n for (let j = 0; j < rLen; j++) {\n const node = removedNodes[j]!;\n // Early exit: only elements can have AES_BOUND bindings\n if (node.nodeType !== 1) continue;\n\n // Skip if kept (detached for moves), explicitly ignored, or still connected\n if (node.isConnected || registry.isKept(node) || registry.isIgnored(node)) {\n continue;\n }\n\n registry.cleanupTree(node as Element);\n }\n }\n });\n\n observer.observe(root, { childList: true, subtree: true });\n}\n\nexport function disableAutoCleanup(): void {\n observer?.disconnect();\n observer = null;\n}\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ReactiveValue } from './types';\nimport { isReactive } from './utils';\n\n/**\n * Utility to register a reactive effect or apply a static update.\n * Centralizes the boilerplate for atomic bindings.\n *\n * @param el - The DOM element to associate with the effect.\n * @param source - The reactive or static value source.\n * @param updater - Function to apply the value to the DOM.\n * @param debugType - Type label for debug logging.\n */\nexport function registerReactiveEffect<T>(\n el: HTMLElement,\n source: ReactiveValue<T>,\n updater: (value: T) => void,\n debugType: string\n): void {\n if (isReactive(source)) {\n registry.trackEffect(\n el,\n effect(() => {\n const value = source.value;\n updater(value);\n debug.domUpdated($(el), debugType, value);\n })\n );\n } else {\n updater(source);\n debug.domUpdated($(el), debugType, source);\n }\n}\n","import type {\n AtomOptions as BaseAtomOptions,\n ComputedAtom,\n ComputedOptions,\n EffectObject,\n ReadonlyAtom,\n WritableAtom,\n} from '@but212/atom-effect';\n\n/**\n * Extended options for Atom creation.\n */\nexport interface AtomOptions extends BaseAtomOptions {\n /** Name for debugging purposes */\n name?: string;\n}\n\n/**\n * Represents a value that can be either dynamic (Atom/Computed) or static.\n */\nexport type ReactiveValue<T> = T | ReadonlyAtom<T> | ComputedAtom<T>;\n\n/**\n * CSS value: either a direct reactive value or a tuple of [source, unit].\n * Named type provides clear bone structure for CSS binding configurations.\n */\nexport type CssValue =\n | ReactiveValue<string | number>\n | [source: ReactiveValue<number>, unit: string];\n\n/**\n * CSS bindings map property names to CSS values.\n */\nexport type CssBindings = Record<string, CssValue>;\n\n/**\n * Configuration options for `atomBind`.\n */\nexport interface BindingOptions<T> {\n text?: ReactiveValue<T>;\n html?: ReactiveValue<string>;\n class?: Record<string, ReactiveValue<boolean>>;\n css?: CssBindings;\n attr?: Record<string, ReactiveValue<string | boolean | null>>;\n prop?: Record<string, ReactiveValue<T>>;\n show?: ReactiveValue<boolean>;\n hide?: ReactiveValue<boolean>;\n val?: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>];\n checked?: WritableAtom<boolean>;\n on?: Record<string, (e: JQuery.Event) => void>;\n}\n\n/**\n * Configuration options for `atomList`.\n */\nexport interface ListOptions<T> {\n key: keyof T | ((item: T, index: number) => string | number);\n render: (item: T, index: number) => string | Element | DocumentFragment | JQuery;\n bind?: ($el: JQuery, item: T, index: number) => void;\n update?: ($el: JQuery, item: T, index: number) => void;\n onAdd?: ($el: JQuery) => void;\n onRemove?: ($el: JQuery) => Promise<void> | void;\n empty?: string | Element | DocumentFragment | JQuery;\n}\n\n/**\n * Configuration options for `atomVal`.\n */\nexport interface ValOptions<T> {\n debounce?: number;\n event?: string;\n parse?: (v: string) => T;\n format?: (v: T) => string;\n /** Custom equality check for comparing parsed values. Defaults to Object.is. */\n equal?: (a: T, b: T) => boolean;\n}\n\n/**\n * State context for two-way input bindings.\n * Consolidates scattered state flags into a single, traceable object.\n * This is the \"bone structure\" for input binding lifecycle management.\n */\n/**\n * Bit flags for input binding state management.\n * Consolidates mutually exclusive phases and orthogonal states (focus) into a single integer.\n */\nexport enum BindingFlags {\n None = 0,\n Focused = 1 << 0,\n Composing = 1 << 1,\n SyncingToAtom = 1 << 2,\n SyncingToDom = 1 << 3,\n // Mask for any active processing phase (excluding simple focus)\n Busy = Composing | SyncingToAtom | SyncingToDom,\n}\n\n/**\n * State context for two-way input bindings.\n * Consolidates scattered state flags into a single, traceable object.\n * This is the \"bone structure\" for input binding lifecycle management.\n */\nexport interface InputBindingState {\n /** Timeout ID for debounced updates */\n timeoutId: number | null;\n /** Bitmask of current state flags */\n flags: number;\n}\n\n/**\n * Creates a fresh InputBindingState with default values.\n */\nexport function createInputBindingState(): InputBindingState {\n return { timeoutId: null, flags: BindingFlags.None };\n}\n\n/**\n * Functional Component type.\n */\nexport type ComponentFn<P = {}> = ($el: JQuery, props: P) => undefined | (() => void);\n\ndeclare global {\n interface JQueryStatic {\n atom: {\n <T>(initialValue: T, options?: AtomOptions): WritableAtom<T>;\n debug: boolean;\n };\n computed<T>(fn: () => T, options?: ComputedOptions<T>): ComputedAtom<T>;\n computed<T>(\n fn: () => Promise<T>,\n options: ComputedOptions<T> & { defaultValue: T }\n ): ComputedAtom<T>;\n effect(fn: () => undefined | (() => void)): EffectObject;\n batch(fn: () => void): void;\n untracked<T>(fn: () => T): T;\n isAtom(v: unknown): boolean;\n isComputed(v: unknown): boolean;\n isReactive(v: unknown): boolean;\n nextTick(): Promise<void>;\n }\n\n interface JQuery {\n // Chainable methods\n atomText<T>(source: ReactiveValue<T>, formatter?: (v: T) => string): this;\n atomHtml(source: ReactiveValue<string>): this;\n atomClass(className: string, condition: ReactiveValue<boolean>): this;\n atomCss(prop: string, source: ReactiveValue<string | number>, unit?: string): this;\n atomAttr(name: string, source: ReactiveValue<string | boolean | null>): this;\n atomProp<T extends string | number | boolean | null | undefined>(\n name: string,\n source: ReactiveValue<T>\n ): this;\n atomShow(condition: ReactiveValue<boolean>): this;\n atomHide(condition: ReactiveValue<boolean>): this;\n atomVal<T>(atom: WritableAtom<T>, options?: ValOptions<T>): this;\n atomChecked(atom: WritableAtom<boolean>): this;\n atomOn(event: string, handler: (e: JQuery.Event) => void): this;\n\n // Integrated binding\n atomBind<T extends string | number | boolean | null | undefined>(\n options: BindingOptions<T>\n ): this;\n\n // List rendering\n atomList<T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): this;\n\n // Component mounting\n atomMount<P>(component: ComponentFn<P>, props?: P): this;\n atomUnmount(): this;\n\n // Cleanup\n atomUnbind(): this;\n }\n}\n\n/**\n * Context passed to binding handlers for cleanup and effect registration.\n */\nexport interface BindingContext {\n readonly $el: JQuery;\n readonly el: HTMLElement;\n readonly trackCleanup: (fn: () => void) => void;\n}\n\nexport type { WritableAtom, ReadonlyAtom, ComputedAtom, EffectObject, ComputedOptions };\n","import { debug } from './debug';\nimport type { InputBindingState, ValOptions, WritableAtom } from './types';\nimport { BindingFlags, createInputBindingState } from './types';\n\n/**\n * Applies two-way data binding configuration to an input element.\n * Shared logic used by both implicit (atomBind) and explicit (atomVal) bindings.\n *\n * @param $el - The jQuery element to bind.\n * @param atom - The target atom for two-way binding.\n * @param options - Binding options (parse, format, debounce, events).\n * @returns Object containing the effect function (for Atom -> DOM) and cleanup function.\n */\nexport function applyInputBinding<T>(\n $el: JQuery,\n atom: WritableAtom<T>,\n options: ValOptions<T> = {}\n): { effect: () => void; cleanup: () => void } {\n const {\n debounce: debounceMs,\n event = 'input',\n parse = (v: string) => v as unknown as T,\n format = (v: T) => String(v ?? ''),\n equal = Object.is,\n } = options;\n\n const state: InputBindingState = createInputBindingState();\n const el = $el[0] as HTMLInputElement | HTMLTextAreaElement;\n\n // Core sync: DOM → Atom\n const syncAtomFromDom = () => {\n if (state.flags & BindingFlags.Busy) return;\n\n state.flags |= BindingFlags.SyncingToAtom;\n try {\n const currentRaw = el.value;\n const parsed = parse(currentRaw);\n // Avoid redundant atom updates to prevent unnecessary propagation\n if (!equal(atom.value, parsed)) {\n atom.value = parsed;\n }\n } finally {\n state.flags &= ~BindingFlags.SyncingToAtom;\n }\n };\n\n const onBlur = () => {\n // Flush pending debounce\n if (state.timeoutId) {\n clearTimeout(state.timeoutId);\n state.timeoutId = null;\n syncAtomFromDom();\n }\n\n state.flags &= ~BindingFlags.Focused;\n\n // Force formatting on blur\n const formatted = format(atom.value);\n if (el.value !== formatted) {\n el.value = formatted;\n }\n };\n\n // Input handler with optional debounce\n const onInput = () => {\n if (state.flags & BindingFlags.Busy) return;\n\n if (debounceMs) {\n if (state.timeoutId) clearTimeout(state.timeoutId);\n state.timeoutId = setTimeout(syncAtomFromDom, debounceMs);\n } else {\n syncAtomFromDom();\n }\n };\n\n const handlers = {\n compositionstart: () => {\n state.flags |= BindingFlags.Composing;\n },\n compositionend: () => {\n state.flags &= ~BindingFlags.Composing;\n syncAtomFromDom();\n },\n focus: () => {\n state.flags |= BindingFlags.Focused;\n },\n blur: onBlur,\n [event]: onInput,\n change: onInput,\n };\n\n $el.on(handlers);\n\n const cleanup = () => {\n $el.off(handlers);\n if (state.timeoutId) clearTimeout(state.timeoutId);\n };\n\n // Core sync: Atom → DOM (Effect body)\n const effect = () => {\n const val = atom.value;\n const formatted = format(val);\n const currentVal = el.value;\n\n // 1. Skip if already synchronized\n if (currentVal === formatted) return;\n\n // 2. Skip if focused and current input parses to same value (don't interrupt user)\n if (state.flags & BindingFlags.Focused && equal(parse(currentVal), val)) {\n return;\n }\n\n state.flags |= BindingFlags.SyncingToDom;\n try {\n if (state.flags & BindingFlags.Focused) {\n // [Fix] Preserve cursor position when focused\n const { selectionStart: start, selectionEnd: end } = el;\n el.value = formatted;\n const len = formatted.length;\n el.setSelectionRange(Math.min(start ?? len, len), Math.min(end ?? len, len));\n } else {\n el.value = formatted;\n }\n\n debug.domUpdated($el, 'val', formatted);\n } finally {\n state.flags &= ~BindingFlags.SyncingToDom;\n }\n };\n\n return { effect, cleanup };\n}\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registerReactiveEffect } from './effect-factory';\nimport { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type { ReactiveValue, ValOptions, WritableAtom } from './types';\nimport { BindingFlags, createInputBindingState } from './types';\n\n/**\n * Updates element text content.\n */\n$.fn.atomText = function <T>(source: ReactiveValue<T>, formatter?: (v: T) => string): JQuery {\n return this.each(function () {\n const $el = $(this);\n const update = formatter\n ? (val: T) => $el.text(formatter(val))\n : (val: T) => $el.text(String(val ?? ''));\n\n registerReactiveEffect(this, source, update, 'text');\n });\n};\n\n/**\n * Updates element inner HTML.\n */\n$.fn.atomHtml = function (source: ReactiveValue<string>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, source, (val) => $el.html(String(val ?? '')), 'html');\n });\n};\n\n/**\n * Toggles a CSS class based on boolean value.\n */\n$.fn.atomClass = function (className: string, condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(\n this,\n condition,\n (val) => $el.toggleClass(className, Boolean(val)),\n `class.${className}`\n );\n });\n};\n\n/**\n * Updates a CSS style property.\n */\n$.fn.atomCss = function (\n prop: string,\n source: ReactiveValue<string | number>,\n unit?: string\n): JQuery {\n return this.each(function () {\n const $el = $(this);\n const update = unit\n ? (val: string | number) => $el.css(prop, `${val}${unit}`)\n : (val: string | number) => $el.css(prop, val);\n\n registerReactiveEffect(this, source, update, `css.${prop}`);\n });\n};\n\n/**\n * Updates an HTML attribute.\n */\n$.fn.atomAttr = function (name: string, source: ReactiveValue<string | boolean | null>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(\n this,\n source,\n (val) => {\n if (val == null || val === false) {\n $el.removeAttr(name);\n return;\n }\n $el.attr(name, val === true ? name : String(val));\n },\n `attr.${name}`\n );\n });\n};\n\n/**\n * Updates a DOM property (e.g., checked, selected, value).\n */\n$.fn.atomProp = function <T extends string | number | boolean | null | undefined>(\n name: string,\n source: ReactiveValue<T>\n): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, source, (val) => $el.prop(name, val), `prop.${name}`);\n });\n};\n\n/**\n * Shows element when condition is true.\n */\n$.fn.atomShow = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, condition, (val) => $el.toggle(Boolean(val)), 'show');\n });\n};\n\n/**\n * Hides element when condition is true.\n */\n$.fn.atomHide = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n registerReactiveEffect(this, condition, (val) => $el.toggle(!val), 'hide');\n });\n};\n\n/**\n * Two-way binding for input values.\n */\n$.fn.atomVal = function <T>(atom: WritableAtom<T>, options: ValOptions<T> = {}): JQuery {\n return this.each(function () {\n const { effect: fxFn, cleanup } = applyInputBinding($(this), atom, options);\n registry.trackEffect(this, effect(fxFn));\n registry.trackCleanup(this, cleanup);\n });\n};\n\n/**\n * Two-way binding for checkbox/radio checked state.\n */\n$.fn.atomChecked = function (atom: WritableAtom<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n const element = this as HTMLInputElement;\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.flags & BindingFlags.Busy) return;\n const checked = element.checked;\n if (atom.value !== checked) {\n atom.value = checked;\n }\n };\n\n $el.on('change', handler);\n registry.trackCleanup(this, () => $el.off('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n state.flags |= BindingFlags.SyncingToDom;\n const val = !!atom.value;\n if (element.checked !== val) {\n element.checked = val;\n debug.domUpdated($el, 'checked', val);\n }\n state.flags &= ~BindingFlags.SyncingToDom;\n });\n registry.trackEffect(this, fx);\n });\n};\n\n/**\n * Binds an event handler with automatic cleanup.\n */\n$.fn.atomOn = function (event: string, handler: (e: JQuery.Event) => void): JQuery {\n return this.each(function () {\n const $el = $(this);\n $el.on(event, handler);\n registry.trackCleanup(this, () => $el.off(event, handler));\n });\n};\n\n/**\n * Removes all atom bindings.\n */\n$.fn.atomUnbind = function (): JQuery {\n return this.each(function () {\n registry.cleanupTree(this);\n });\n};\n","import { batch, effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registerReactiveEffect } from './effect-factory';\nimport { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type {\n BindingContext,\n BindingOptions,\n CssValue,\n ReactiveValue,\n ValOptions,\n WritableAtom,\n} from './types';\nimport { BindingFlags, createInputBindingState } from './types';\n\n// Cache for CSS property camelization to avoid repeated regex and check overhead\nconst camelCache: Record<string, string> = Object.create(null);\nfunction getCamelCase(prop: string): string {\n let cached = camelCache[prop];\n if (cached) return cached;\n\n cached = prop.includes('-') ? prop.replace(/-./g, (m) => m[1]!.toUpperCase()) : prop;\n camelCache[prop] = cached;\n return cached;\n}\n\n// ============================================================================\n// One-Way Binding Handlers (Atom → DOM)\n// ============================================================================\n\nfunction bindText<T>(ctx: BindingContext, value: ReactiveValue<T>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n value,\n (val) => {\n const newVal = typeof val === 'string' ? val : String(val ?? '');\n // Guard against redundant DOM writes\n if (el.textContent !== newVal) {\n el.textContent = newVal;\n }\n },\n 'text'\n );\n}\n\nfunction bindHtml(ctx: BindingContext, value: ReactiveValue<string>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n value,\n (val) => {\n const newVal = String(val ?? '');\n // Guard against redundant DOM writes which destroy/recreate subtrees\n if (el.innerHTML !== newVal) {\n el.innerHTML = newVal;\n }\n },\n 'html'\n );\n}\n\nfunction bindClass(ctx: BindingContext, classMap: Record<string, ReactiveValue<boolean>>): void {\n for (const className in classMap) {\n registerReactiveEffect(\n ctx.el,\n classMap[className],\n (val) => {\n ctx.el.classList.toggle(className, !!val);\n },\n `class.${className}`\n );\n }\n}\n\nfunction bindCss(ctx: BindingContext, cssMap: Record<string, CssValue>): void {\n const el = ctx.el;\n const style = el.style as unknown as Record<string, string>;\n for (const prop in cssMap) {\n const val = cssMap[prop];\n if (val === undefined) continue;\n\n const camel = getCamelCase(prop);\n\n if (Array.isArray(val)) {\n registerReactiveEffect(\n el,\n val[0],\n (v) => {\n style[camel] = `${v}${val[1]}`;\n },\n `css.${prop}`\n );\n } else {\n registerReactiveEffect(\n el,\n val,\n (v) => {\n style[camel] = v as string;\n },\n `css.${prop}`\n );\n }\n }\n}\n\nfunction bindAttr(\n ctx: BindingContext,\n attrMap: Record<string, ReactiveValue<string | boolean | null>>\n): void {\n const el = ctx.el;\n for (const name in attrMap) {\n registerReactiveEffect(\n el,\n attrMap[name],\n (v) => {\n if (v === null || v === undefined || v === false) {\n el.removeAttribute(name);\n return;\n }\n const newVal = v === true ? name : String(v);\n // Attribute write guard\n if (el.getAttribute(name) !== newVal) {\n el.setAttribute(name, newVal);\n }\n },\n `attr.${name}`\n );\n }\n}\n\nfunction bindProp(ctx: BindingContext, propMap: Record<string, ReactiveValue<unknown>>): void {\n const el = ctx.el as unknown as Record<string, unknown>;\n for (const name in propMap) {\n registerReactiveEffect(\n ctx.el,\n propMap[name],\n (val) => {\n // Redundancy check for DOM properties (e.g. className, title)\n if (el[name] !== val) {\n el[name] = val;\n }\n },\n `prop.${name}`\n );\n }\n}\n\nfunction bindShow(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n condition,\n (val) => {\n // Direct style access is faster than $el.toggle()\n el.style.display = val ? '' : 'none';\n if (debug.enabled) debug.domUpdated(el, 'show', val);\n },\n 'show'\n );\n}\n\nfunction bindHide(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n const el = ctx.el;\n registerReactiveEffect(\n el,\n condition,\n (val) => {\n // Direct style access is faster than $el.toggle()\n el.style.display = val ? 'none' : '';\n if (debug.enabled) debug.domUpdated(el, 'hide', val);\n },\n 'hide'\n );\n}\n\n/**\n * Two-way value binding with full feature parity to $.fn.atomVal.\n * Supports parse/format options, debouncing, IME composition, and focus-aware updates.\n */\nfunction bindVal<T>(\n ctx: BindingContext,\n cfg: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>]\n): void {\n const isArr = Array.isArray(cfg);\n const { effect: fxFn, cleanup } = applyInputBinding(\n ctx.$el,\n isArr ? cfg[0] : cfg,\n isArr ? cfg[1] : {}\n );\n\n registry.trackEffect(ctx.el, effect(fxFn));\n ctx.trackCleanup(cleanup);\n}\n\nfunction bindChecked(ctx: BindingContext, atom: WritableAtom<boolean>): void {\n const el = ctx.el as HTMLInputElement;\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.flags & BindingFlags.Busy) return;\n const current = el.checked;\n if (atom.value !== current) {\n atom.value = current;\n }\n };\n\n el.addEventListener('change', handler);\n ctx.trackCleanup(() => el.removeEventListener('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n state.flags |= BindingFlags.SyncingToDom;\n const val = !!atom.value;\n if (el.checked !== val) {\n el.checked = val;\n if (debug.enabled) debug.domUpdated(el, 'checked', val);\n }\n state.flags &= ~BindingFlags.SyncingToDom;\n });\n registry.trackEffect(el, fx);\n}\n\n// ============================================================================\n// Event Binding Handler\n// ============================================================================\n\n/** Event handler map type for atomBind({ on: ... }) using jQuery's event handler signature */\ntype EventBindingMap = {\n [K in keyof JQuery.TypeToTriggeredEventMap<HTMLElement, undefined, HTMLElement, HTMLElement>]?:\n | JQuery.TypeEventHandler<HTMLElement, undefined, HTMLElement, HTMLElement, K>\n | false;\n} & {\n [eventName: string]: JQuery.EventHandler<HTMLElement, undefined> | false | undefined;\n};\n\nfunction bindEvents(ctx: BindingContext, eventMap: EventBindingMap): void {\n for (const name in eventMap) {\n const handler = eventMap[name];\n if (typeof handler !== 'function') continue;\n const listener = (e: Event) => {\n batch(() =>\n (handler as JQuery.EventHandler<HTMLElement, undefined>).call(\n ctx.el,\n $.Event(e.type, { originalEvent: e }) as JQuery.TriggeredEvent<HTMLElement>\n )\n );\n };\n ctx.el.addEventListener(name, listener);\n ctx.trackCleanup(() => ctx.el.removeEventListener(name, listener));\n }\n}\n\n// ============================================================================\n// Main Entry Point\n// ============================================================================\n\n/**\n * Extends jQuery with atom-based data binding capabilities.\n *\n * This plugin synchronizes DOM element states (text, html, classes, styles, etc.)\n * with reactive atoms. Handlers are modular and focused for maintainability.\n */\n$.fn.atomBind = function <T extends string | number | boolean | null | undefined>(\n options: BindingOptions<T>\n): JQuery {\n return this.each(function () {\n const el = this;\n let _$el: JQuery | null = null;\n\n // Build binding context with a lazy JQuery wrapper\n const ctx: BindingContext = {\n get $el() {\n if (!_$el) {\n _$el = $(el);\n }\n return _$el;\n },\n el,\n trackCleanup: (fn) => registry.trackCleanup(el, fn),\n };\n\n // Apply bindings through focused handlers\n if (options.text !== undefined) bindText(ctx, options.text);\n if (options.html !== undefined) bindHtml(ctx, options.html);\n if (options.class) bindClass(ctx, options.class);\n if (options.css) bindCss(ctx, options.css);\n if (options.attr) bindAttr(ctx, options.attr);\n if (options.prop) bindProp(ctx, options.prop);\n if (options.show !== undefined) bindShow(ctx, options.show);\n if (options.hide !== undefined) bindHide(ctx, options.hide);\n if (options.val !== undefined) bindVal(ctx, options.val);\n if (options.checked !== undefined) bindChecked(ctx, options.checked);\n if (options.on) bindEvents(ctx, options.on);\n });\n};\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ListOptions, ReadonlyAtom } from './types';\nimport { getLIS, getSelector } from './utils';\n\n/**\n * atomList with Smart Reconciliation\n * Optimized for performance and data locality.\n */\n$.fn.atomList = function <T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): JQuery {\n const { key, render, bind, update, onAdd, onRemove, empty } = options;\n\n // Resolve getKey once to avoid repeated typeof checks in the Hot Path\n const getKey =\n typeof key === 'function'\n ? key\n : (item: T, _index: number) => item[key as keyof T] as unknown as string | number;\n\n return this.each(function () {\n const $container = $(this);\n const containerSelector = getSelector(this);\n\n const itemMap = new Map<string | number, { $el: JQuery; item: T }>();\n const removingKeys = new Set<string | number>();\n let oldKeys: (string | number)[] = [];\n let $emptyEl: JQuery | null = null;\n\n const fx = effect(() => {\n const items = source.value;\n const itemCount = items.length;\n\n // 1. Handle Empty Template Logic\n if (itemCount === 0) {\n if (empty && !$emptyEl) {\n // Use type assertion to avoid overload ambiguity while maintaining JQuery return type\n $emptyEl = ($(empty as string) as JQuery).appendTo($container);\n }\n } else if ($emptyEl) {\n $emptyEl.remove();\n $emptyEl = null;\n }\n\n // Hot Path: If both new and old are empty, skip processing\n if (itemCount === 0 && itemMap.size === 0) {\n oldKeys = [];\n return;\n }\n\n debug.log('list', `${containerSelector} updating with ${itemCount} items`);\n\n // 2. Build Old Index Map (O(M))\n const oldIndexMap = new Map<string | number, number>();\n const oldLen = oldKeys.length;\n for (let i = 0; i < oldLen; i++) {\n oldIndexMap.set(oldKeys[i]!, i);\n }\n\n // 3. Prepare keys and LIS indices in a single pass (O(N))\n const newKeys: (string | number)[] = new Array(itemCount);\n const newKeySet = new Set<string | number>();\n const newIndices = new Int32Array(itemCount);\n\n for (let i = 0; i < itemCount; i++) {\n const item = items[i] as T;\n const k = getKey(item, i);\n\n if (debug.enabled && newKeySet.has(k)) {\n console.warn(`[atomList] Duplicate key \"${k}\" at index ${i}.`);\n }\n\n newKeys[i] = k;\n newKeySet.add(k);\n newIndices[i] = oldIndexMap.get(k) ?? -1;\n }\n\n // 4. Remove vanished items (O(M))\n if (itemMap.size > 0) {\n for (const [k, entry] of itemMap) {\n if (newKeySet.has(k) || removingKeys.has(k)) continue;\n\n const cleanupItem = () => {\n entry.$el.remove();\n if (entry.$el[0]) registry.cleanup(entry.$el[0]);\n removingKeys.delete(k);\n debug.log('list', `${containerSelector} removed item:`, k);\n };\n\n itemMap.delete(k);\n removingKeys.add(k);\n\n if (onRemove) {\n const result = onRemove(entry.$el);\n if (result instanceof Promise) result.then(cleanupItem);\n else cleanupItem();\n } else {\n cleanupItem();\n }\n }\n }\n\n // After removals, check if we can skip the rest\n if (itemCount === 0) {\n oldKeys = [];\n return;\n }\n\n // 5. Get LIS (O(N log N))\n const lisArr = getLIS(newIndices);\n let lisIdx = lisArr.length - 1;\n\n // 6. Update and Reorder (Backwards iteration for insertBefore efficiency)\n let nextNode: Node | null = null;\n for (let i = itemCount - 1; i >= 0; i--) {\n const k = newKeys[i]!;\n const item = items[i]!;\n const entry = itemMap.get(k);\n\n if (entry) {\n // Existing Item Path\n const oldItem = entry.item;\n entry.item = item;\n const el = entry.$el[0];\n if (!el) continue;\n\n if (update) {\n update(entry.$el, item, i);\n debug.domUpdated(entry.$el, 'list.update', item);\n } else if (oldItem !== item) {\n // Optimized shallow equal (O(K) without Object.keys allocations)\n let isChanged = true;\n if (\n typeof oldItem === 'object' &&\n oldItem !== null &&\n typeof item === 'object' &&\n item !== null\n ) {\n isChanged = false;\n let countA = 0;\n const objA = oldItem as Record<string, unknown>;\n const objB = item as Record<string, unknown>;\n for (const prop in objA) {\n if (objA[prop] !== objB[prop]) {\n isChanged = true;\n break;\n }\n countA++;\n }\n if (!isChanged) {\n let countB = 0;\n for (const _prop in objB) {\n countB++;\n if (countB > countA) {\n isChanged = true;\n break;\n }\n }\n if (countA !== countB) isChanged = true;\n }\n }\n\n if (isChanged) {\n const $newEl = $(render(item, i) as string) as JQuery;\n const needsNextNodeUpdate = nextNode === el;\n entry.$el.replaceWith($newEl);\n entry.$el = $newEl;\n if (bind) bind($newEl, item, i);\n debug.domUpdated($newEl, 'list.render', item);\n if (needsNextNodeUpdate) nextNode = $newEl[0] || null;\n }\n }\n\n // Move if not in LIS\n if (lisIdx >= 0 && lisArr[lisIdx] === i) {\n lisIdx--;\n } else {\n const currentEl = entry.$el[0]!;\n if (nextNode?.isConnected) {\n if (nextNode !== currentEl) entry.$el.insertBefore(nextNode);\n } else {\n entry.$el.appendTo($container);\n }\n }\n nextNode = entry.$el[0] || null;\n } else {\n // New Item Path\n const rendered = render(item, i);\n const $el = $(rendered as string) as JQuery;\n itemMap.set(k, { $el, item });\n\n if (nextNode?.isConnected) $el.insertBefore(nextNode);\n else $el.appendTo($container);\n\n if (bind) bind($el, item, i);\n if (onAdd) onAdd($el);\n\n debug.domUpdated($el, 'list.add', item);\n nextNode = $el[0] || null;\n }\n }\n\n oldKeys = newKeys;\n });\n\n registry.trackEffect(this, fx);\n registry.trackCleanup(this, () => {\n itemMap.clear();\n removingKeys.clear();\n oldKeys = [];\n $emptyEl?.remove();\n });\n });\n};\n","import $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ComponentFn } from './types';\nimport { getSelector } from './utils';\n\nconst mountedComponents = new WeakMap<Element, () => void>();\n\n/**\n * Mounts a functional component to the element.\n * Automatically cleans up existing components on the same element.\n */\n$.fn.atomMount = function <P>(component: ComponentFn<P>, props: P = {} as P): JQuery {\n return this.each(function () {\n const isDebug = debug.enabled;\n const selector = isDebug ? getSelector(this) : '';\n\n // 1. Unmount existing component (Consolidated O(1) lookup)\n const existingUnmount = mountedComponents.get(this);\n if (existingUnmount) {\n if (isDebug) debug.log('mount', `${selector} unmounting existing component`);\n existingUnmount();\n }\n\n if (isDebug) debug.log('mount', `${selector} mounting component`);\n\n // 2. Mount\n let userCleanup: undefined | (() => void);\n try {\n userCleanup = component($(this), props);\n } catch (e) {\n console.error('[atom-effect-jquery] Mount error:', e);\n return;\n }\n\n // 3. Optimized cleanup\n const fullCleanup = () => {\n // Atomic delete() acts as a high-performance guard against double-cleanup\n if (!mountedComponents.delete(this)) return;\n\n if (isDebug) debug.log('mount', `${selector} full cleanup`);\n\n if (typeof userCleanup === 'function') {\n try {\n userCleanup();\n } catch (e) {\n console.error('[atom-effect-jquery] Cleanup error:', e);\n }\n }\n registry.cleanupTree(this);\n };\n\n mountedComponents.set(this, fullCleanup);\n registry.trackCleanup(this, fullCleanup);\n });\n};\n\n/**\n * Manually unmounts a component from the element.\n */\n$.fn.atomUnmount = function (): JQuery {\n return this.each(function () {\n const unmount = mountedComponents.get(this);\n if (unmount) unmount();\n });\n};\n","import { batch } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { registry } from './registry';\n\n/** Generic event handler type matching jQuery's internal handler signature */\ntype EventHandler = JQuery.EventHandlerBase<unknown, JQuery.TriggeredEvent>;\n\n/**\n * WeakMap to store strict association between original handlers and batched wrappers.\n * This ensures that .off() works correctly when passing the original handler.\n */\nconst handlerMap = new WeakMap<EventHandler, EventHandler>();\n\nlet isjQueryOverridesEnabled = false;\n\nconst getWrappedHandler = (fn: EventHandler): EventHandler => {\n let wrapped = handlerMap.get(fn);\n if (!wrapped) {\n wrapped = function (this: unknown, ...args: unknown[]) {\n return batch(() => fn.apply(this, args as Parameters<EventHandler>));\n } as unknown as EventHandler;\n handlerMap.set(fn, wrapped);\n }\n return wrapped;\n};\n\n/**\n * Patches jQuery methods to integrate with the reactive system.\n */\nexport function enablejQueryOverrides() {\n if (isjQueryOverridesEnabled) return;\n isjQueryOverridesEnabled = true;\n\n const originalOn = $.fn.on;\n const originalOff = $.fn.off;\n const originalRemove = $.fn.remove;\n const originalEmpty = $.fn.empty;\n const originalDetach = $.fn.detach;\n\n // ========== Lifecycle Overrides ==========\n\n // .remove() - Delete element + Unsubscribe\n $.fn.remove = function (this: JQuery, selector?: string) {\n const targets = selector ? this.filter(selector) : this;\n for (let i = 0, len = targets.length; i < len; i++) {\n const el = targets[i];\n if (el) {\n registry.cleanupTree(el);\n registry.markIgnored(el);\n }\n }\n return originalRemove.call(this, selector);\n };\n\n // .empty() - Delete children + Recursive Unsubscribe\n $.fn.empty = function (this: JQuery) {\n for (let i = 0, len = this.length; i < len; i++) {\n const el = this[i];\n if (el) registry.cleanupDescendants(el);\n }\n return originalEmpty.call(this);\n };\n\n // .detach() - Remove from DOM + Keep Subscription\n $.fn.detach = function (this: JQuery, selector?: string) {\n const targets = selector ? this.filter(selector) : this;\n for (let i = 0, len = targets.length; i < len; i++) {\n const el = targets[i];\n if (el) registry.keep(el);\n }\n return originalDetach.call(this, selector);\n };\n\n // ========== Event Overrides ==========\n\n // Patch .on()\n $.fn.on = function (this: JQuery, ...args: unknown[]) {\n const types = args[0];\n\n if (types && typeof types === 'object') {\n const map = types as Record<string, EventHandler>;\n const newMap: Record<string, EventHandler> = {};\n for (const key in map) {\n const handler = map[key];\n if (handler) {\n newMap[key] = getWrappedHandler(handler);\n }\n }\n args[0] = newMap;\n } else {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = getWrappedHandler(args[i] as EventHandler);\n break;\n }\n }\n }\n\n return originalOn.apply(this, args as Parameters<typeof originalOn>);\n };\n\n // Patch .off()\n $.fn.off = function (this: JQuery, ...args: unknown[]) {\n const types = args[0];\n\n if (types && typeof types === 'object') {\n const map = types as Record<string, EventHandler>;\n const newMap: Record<string, EventHandler> = {};\n for (const key in map) {\n const handler = map[key];\n if (handler) {\n newMap[key] = handlerMap.get(handler) || handler;\n }\n }\n args[0] = newMap;\n } else {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = handlerMap.get(args[i] as EventHandler) || args[i];\n break;\n }\n }\n }\n\n return originalOff.apply(this, args as Parameters<typeof originalOff>);\n };\n}\n\n/**\n * @deprecated use `enablejQueryOverrides()` instead.\n * This alias will be removed in the future.\n */\nexport const enablejQueryBatching = enablejQueryOverrides;\n","/**\n * atom-effect-jquery\n *\n * Brings reactivity to jQuery.\n *\n * Features:\n * - Full CJK IME Support (Input Method Editor).\n * - Auto-cleanup via MutationObserver (No memory leaks).\n * - Debug Mode: Console logging + Visual Highlighting.\n */\n\nimport $ from 'jquery';\n\n// Register plugins\nimport './namespace';\nimport './chainable';\nimport './unified';\nimport './list';\nimport './mount';\n\nimport { enablejQueryOverrides } from './jquery-patch';\n// Auto-cleanup (Crucial!)\nimport { disableAutoCleanup, enableAutoCleanup, registry } from './registry';\n\n// Auto-enable on DOM ready\nenablejQueryOverrides();\n$(() => {\n enableAutoCleanup(document.body);\n});\n\n// Explicit import support\nexport {\n atom,\n batch,\n computed,\n effect,\n untracked,\n} from '@but212/atom-effect';\n// Optional: Auto-batching for jQuery events\nexport { enablejQueryBatching, enablejQueryOverrides } from './jquery-patch';\n// Export types\nexport type {\n BindingOptions,\n ComponentFn,\n ComputedAtom,\n ListOptions,\n ReadonlyAtom,\n WritableAtom,\n} from './types';\n\nexport { registry, enableAutoCleanup, disableAutoCleanup };\nexport default $;\n"],"names":["et","m","d","a","o","E","p","H","C","u","st","N","S","D","A","V","it","z","L","nt","i","Q","n","r","g","rt","ot","q","h","k","ht","x","_","T","J","$","y","K","ct","P","M","R","G","X","ut","f","b","_t","lt","at","pt","ft","O","l","I","Et","It","W","Z","U","j","Y","tt","v","w","F","B","gt","dt","Ct","bt","isReactive","value","getSelector","el","dom","id","tagName","classes","res","len","cls","getLIS","arr","predecessors","result","resultLen","val","lastIdx","left","right","mid","midIdx","leftIdx","lis","curr","getInitialDebugState","flag","debugEnabled","debug","type","args","name","oldVal","newVal","$el","highlightElement","selector","highlightStateMap","state","style","org","atomMetadata","atom","initialValue","options","instance","createAtom","nextTick","resolve","computed","effect","batch","untracked","isAtom","isComputed","AES_BOUND","BindingRegistry","node","fx","record","fn","effects","e","cleanups","children","child","registry","observer","enableAutoCleanup","root","mutations","removedNodes","rLen","disableAutoCleanup","registerReactiveEffect","source","updater","debugType","BindingFlags","createInputBindingState","applyInputBinding","debounceMs","event","parse","format","equal","syncAtomFromDom","currentRaw","parsed","onBlur","formatted","onInput","handlers","currentVal","start","end","formatter","className","condition","prop","unit","fxFn","cleanup","element","handler","checked","camelCache","getCamelCase","cached","bindText","ctx","bindHtml","bindClass","classMap","bindCss","cssMap","camel","bindAttr","attrMap","bindProp","propMap","bindShow","bindHide","bindVal","cfg","isArr","bindChecked","current","bindEvents","eventMap","listener","_$el","key","render","bind","update","onAdd","onRemove","empty","getKey","item","_index","$container","containerSelector","itemMap","removingKeys","oldKeys","$emptyEl","items","itemCount","oldIndexMap","oldLen","newKeys","newKeySet","newIndices","entry","cleanupItem","lisArr","lisIdx","nextNode","oldItem","isChanged","countA","objA","objB","countB","_prop","$newEl","needsNextNodeUpdate","currentEl","rendered","mountedComponents","component","props","isDebug","existingUnmount","userCleanup","fullCleanup","unmount","handlerMap","isjQueryOverridesEnabled","getWrappedHandler","wrapped","enablejQueryOverrides","originalOn","originalOff","originalRemove","originalEmpty","originalDetach","targets","types","map","newMap","enablejQueryBatching"],"mappings":"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"}
|