@but212/atom-effect-jquery 0.12.0 → 0.13.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.
@@ -1 +1 @@
1
- {"version":3,"file":"atom-effect-jquery.min.js","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 ee = {\n /** One second in milliseconds */\n ONE_SECOND_MS: 1e3\n}, v = {\n IDLE: \"idle\",\n PENDING: \"pending\",\n RESOLVED: \"resolved\",\n REJECTED: \"rejected\"\n}, O = {\n DISPOSED: 1,\n // 0001 - Effect has been disposed\n EXECUTING: 2\n // 0010 - Effect is currently executing\n}, h = {\n DIRTY: 1,\n // 0001 - Needs recomputation\n IDLE: 2,\n // 0010 - Initial state, not computed yet\n PENDING: 4,\n // 0100 - Async computation in progress\n RESOLVED: 8,\n // 1000 - Successfully computed\n REJECTED: 16,\n // 10000 - Computation failed\n RECOMPUTING: 32,\n // 100000 - Currently recomputing\n HAS_ERROR: 64\n // 1000000 - Has error state\n}, T = {\n SYNC: 1,\n NOTIFICATION_SCHEDULED: 2\n}, be = {\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}, I = {\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}, B = {\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}, b = 1073741823, w = 1 << 19, l = typeof process < \"u\" && process.env && process.env.NODE_ENV !== \"production\", te = Object.freeze([]);\nclass g 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, i = !0) {\n super(e), this.name = \"AtomError\", this.cause = t, this.recoverable = i, this.timestamp = /* @__PURE__ */ new Date();\n }\n}\nclass D extends g {\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 y extends g {\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 U extends g {\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 u = {\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 // 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 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}, M = /* @__PURE__ */ Symbol(\"debugName\"), se = /* @__PURE__ */ Symbol(\"id\"), V = /* @__PURE__ */ Symbol(\"type\"), k = /* @__PURE__ */ Symbol(\"noDefaultValue\");\nfunction ie(s) {\n return \"dependencies\" in s && Array.isArray(s.dependencies);\n}\nlet Q = 0;\nfunction G(s, e, t) {\n if (s._visitedEpoch !== t) {\n if (s._visitedEpoch = t, s === e)\n throw new D(\"Indirect circular dependency detected\");\n if (ie(s)) {\n const i = s.dependencies;\n for (let n = 0; n < i.length; n++) {\n const r = i[n];\n r && G(r, e, t);\n }\n }\n }\n}\nconst p = {\n enabled: typeof process < \"u\" && process.env?.NODE_ENV === \"development\",\n maxDependencies: B.MAX_DEPENDENCIES,\n warnInfiniteLoop: B.WARN_INFINITE_LOOP,\n warn(s, e) {\n this.enabled && s && 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(s, e) {\n if (s === e)\n throw new D(\"Direct circular dependency detected\");\n this.enabled && (Q++, G(s, e, Q));\n },\n attachDebugInfo(s, e, t) {\n if (!this.enabled)\n return;\n const i = s;\n i[M] = `${e}_${t}`, i[se] = t, i[V] = e;\n },\n getDebugName(s) {\n if (s != null && M in s)\n return s[M];\n },\n getDebugType(s) {\n if (s != null && V in s)\n return s[V];\n }\n};\nlet ne = 1;\nconst re = () => ne++;\nclass Y {\n constructor() {\n this.flags = 0, this.version = 0, this._lastSeenEpoch = -1, this.id = re() & b;\n }\n /**\n * Rotates the phase by 1, automatically incrementing cycle on overflow.\n *\n * Performance Benefits:\n * - Branchless: No conditional statements\n * - O(1): Single bitwise AND operation\n * - Smi-safe: Result always within 30-bit range (0x3fffffff)\n *\n * When Phase reaches 0xfffff (1,048,575), the next increment:\n * - Overflows into Cycle bits\n * - Phase resets to 0\n * - Cycle increments by 1\n *\n * @returns The new version after phase rotation\n */\n rotatePhase() {\n return this.version = this.version + 1 & b, this.version;\n }\n /**\n * Calculates the logical distance (shift) between current and cached version.\n *\n * Uses modular arithmetic to handle cycle wraparound correctly.\n * The result represents how many phase rotations have occurred since\n * the cached version was recorded.\n *\n * Performance Benefits:\n * - Branchless: Single subtraction with mask\n * - Handles wraparound: Works correctly even when version overflows\n *\n * Use Cases:\n * - Scheduler priority: Large shifts indicate stale updates\n * - Dependency staleness: Detect how outdated a cached value is\n *\n * @param cachedVersion - The previously cached version to compare against\n * @returns Non-negative shift distance (0 to 0x3fffffff)\n */\n getShift(e) {\n return this.version - e & b;\n }\n}\nclass H extends Y {\n /**\n * Subscribes a listener function or Subscriber object to value changes.\n *\n * @param listener - Function or Subscriber object to call when the value changes\n * @returns An unsubscribe function\n * @throws {AtomError} If listener is not a function or Subscriber\n */\n subscribe(e) {\n if (typeof e == \"object\" && e !== null && \"execute\" in e)\n return this._addSubscriber(this._getObjSubs(), e);\n if (typeof e != \"function\")\n throw new g(u.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);\n return this._addSubscriber(this._getFnSubs(), e);\n }\n /**\n * Gets the total number of active subscribers.\n */\n subscriberCount() {\n return (this._fnSubs?.length ?? 0) + (this._objSubs?.length ?? 0);\n }\n _addSubscriber(e, t) {\n if (e.indexOf(t) !== -1) return () => {\n };\n e.push(t);\n let i = !1;\n return () => {\n if (i) return;\n i = !0;\n const n = e.indexOf(t);\n if (n !== -1) {\n const r = e.length - 1;\n n !== r && (e[n] = e[r]), e.pop();\n }\n };\n }\n /**\n * Notifies all subscribers of a change.\n *\n * @param newValue - The new value\n * @param oldValue - The old value\n */\n _notifySubscribers(e, t) {\n const i = this._fnSubs;\n if (i)\n for (let r = i.length - 1; r >= 0; r--)\n try {\n const o = i[r];\n o && o(e, t);\n } catch (o) {\n console.error(\n new g(u.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, o)\n );\n }\n const n = this._objSubs;\n if (n)\n for (let r = n.length - 1; r >= 0; r--)\n try {\n const o = n[r];\n o && o.execute();\n } catch (o) {\n console.error(\n new g(u.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, o)\n );\n }\n }\n}\nlet x = 0;\nfunction $() {\n return x = x + 1 & b || 1, x;\n}\nfunction oe() {\n return x;\n}\nlet F = 0, z = 0, P = !1;\nfunction q() {\n return P ? (l && console.warn(\n \"Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass\"\n ), !1) : (P = !0, F = F + 1 & b, z = 0, !0);\n}\nfunction X() {\n P = !1;\n}\nfunction he() {\n return P ? ++z : 0;\n}\nclass ue {\n constructor() {\n this.queueA = [], this.queueB = [], this.queue = this.queueA, this.queueSize = 0, this.urgentQueueA = [], this.urgentQueueB = [], this.urgentQueue = this.urgentQueueA, this.urgentQueueSize = 0, this._epoch = 0, this.isProcessing = !1, this.isBatching = !1, this.batchDepth = 0, this.batchQueue = [], this.batchQueueSize = 0, this.isFlushingSync = !1, this.maxFlushIterations = I.MAX_FLUSH_ITERATIONS;\n }\n get phase() {\n return this.isProcessing || this.isFlushingSync ? 2 : this.isBatching ? 1 : 0;\n }\n /**\n * Schedules a task for execution with optional priority based on phase shift.\n *\n * Priority Calculation (Branchless):\n * - If sourceNode and cachedVersion are provided, calculates shift\n * - Jobs with shift >= PHASE_THRESHOLD go to urgentQueue\n * - Uses branchless bit manipulation: ((shift - THRESHOLD) >>> 31) ^ 1\n *\n * @param callback - The function to execute\n * @param sourceNode - Optional reactive node for shift calculation\n * @throws {SchedulerError} If the callback is not a function\n */\n schedule(e, t) {\n if (typeof e != \"function\")\n throw new U(\"Scheduler callback must be a function\");\n if (e._nextEpoch !== this._epoch)\n if (e._nextEpoch = this._epoch, this.isBatching || this.isFlushingSync)\n this.batchQueue[this.batchQueueSize++] = e;\n else {\n const i = this._calculateUrgency(e, t);\n this.urgentQueue[this.urgentQueueSize] = e, this.queue[this.queueSize] = e, this.urgentQueueSize += i, this.queueSize += i ^ 1, this.isProcessing || this.flush();\n }\n }\n /**\n * Calculates urgency flag using branchless bit manipulation.\n *\n * Formula: ((shift - PHASE_THRESHOLD) >>> 31) ^ 1\n * - If shift >= THRESHOLD: (negative >>> 31) = 0, XOR 1 = 1 (urgent)\n * - If shift < THRESHOLD: (positive >>> 31) = 0... wait, that's wrong\n *\n * Correct formula: (shift >= THRESHOLD) ? 1 : 0\n * Branchless: ((PHASE_THRESHOLD - 1 - shift) >>> 31)\n *\n * @returns 1 if urgent, 0 if normal\n */\n _calculateUrgency(e, t) {\n if (!t || e._cachedVersion === void 0)\n return 0;\n const i = t.getShift(e._cachedVersion);\n return w - 1 - i >>> 31 & 1;\n }\n flush() {\n this.isProcessing || this.queueSize === 0 && this.urgentQueueSize === 0 || (this.isProcessing = !0, queueMicrotask(() => {\n try {\n if (this.queueSize === 0 && this.urgentQueueSize === 0) return;\n const e = q();\n this._drainQueue(), e && X();\n } finally {\n this.isProcessing = !1, (this.queueSize > 0 || this.urgentQueueSize > 0) && !this.isBatching && this.flush();\n }\n }));\n }\n flushSync() {\n this.isFlushingSync = !0;\n const e = q();\n try {\n this._mergeBatchQueue(), this._drainQueue();\n } finally {\n this.isFlushingSync = !1, e && X();\n }\n }\n _mergeBatchQueue() {\n if (this._epoch++, this.batchQueueSize > 0) {\n for (let e = 0; e < this.batchQueueSize; e++) {\n const t = this.batchQueue[e];\n t && t._nextEpoch !== this._epoch && (t._nextEpoch = this._epoch, this.queue[this.queueSize++] = t);\n }\n this.batchQueueSize = 0;\n }\n }\n /**\n * Drains all queues, processing urgent queue completely first.\n *\n * Processing Order:\n * 1. Process all urgent jobs (high phase shift = stale updates)\n * 2. Process normal jobs\n * 3. Repeat until both queues are empty\n *\n * This ordering reduces glitches by ensuring that the most\n * impactful state changes are propagated first.\n */\n _drainQueue() {\n let e = 0;\n for (; this.urgentQueueSize > 0 || this.queueSize > 0; ) {\n if (++e > this.maxFlushIterations) {\n this._handleFlushOverflow();\n return;\n }\n this.urgentQueueSize > 0 && this._processUrgentQueue(), this.queueSize > 0 && this._processCurrentQueue(), this._mergeBatchQueue();\n }\n }\n /**\n * Processes the urgent queue using double-buffering.\n */\n _processUrgentQueue() {\n const e = this.urgentQueue, t = this.urgentQueueSize;\n this.urgentQueue = this.urgentQueue === this.urgentQueueA ? this.urgentQueueB : this.urgentQueueA, this.urgentQueueSize = 0, this._epoch++, this._processJobs(e, t);\n }\n _processCurrentQueue() {\n const e = this.queue, t = this.queueSize;\n this.queue = this.queue === this.queueA ? this.queueB : this.queueA, this.queueSize = 0, this._epoch++, this._processJobs(e, t);\n }\n _handleFlushOverflow() {\n console.error(\n new U(\n `Maximum flush iterations (${this.maxFlushIterations}) exceeded. Possible infinite loop.`\n )\n ), this.queueSize = 0, this.queue.length = 0, this.urgentQueueSize = 0, this.urgentQueue.length = 0, this.batchQueueSize = 0;\n }\n _processJobs(e, t) {\n for (let i = 0; i < t; i++) {\n const n = e[i];\n if (n)\n try {\n n();\n } catch (r) {\n console.error(\n new U(\"Error occurred during scheduler execution\", r)\n );\n }\n }\n e.length = 0;\n }\n /** Starts a new batch of updates. Updates will be deferred until endBatch is called. */\n startBatch() {\n this.batchDepth++, this.isBatching = !0;\n }\n /**\n * Ends the current batch. If the batch depth reaches zero, all pending updates are flushed synchronously.\n */\n endBatch() {\n this.batchDepth = Math.max(0, this.batchDepth - 1), this.batchDepth === 0 && (this.flushSync(), this.isBatching = !1);\n }\n /**\n * Configures the maximum number of iterations allowed during a synchronous flush.\n * Used to prevent infinite loops.\n * @param max - Maximum iterations count.\n */\n setMaxFlushIterations(e) {\n if (e < I.MIN_FLUSH_ITERATIONS)\n throw new U(\n `Max flush iterations must be at least ${I.MIN_FLUSH_ITERATIONS}`\n );\n this.maxFlushIterations = e;\n }\n}\nconst N = new ue();\nfunction ye(s) {\n if (typeof s != \"function\")\n throw new g(\"Batch callback must be a function\");\n N.startBatch();\n try {\n return s();\n } finally {\n N.endBatch();\n }\n}\nclass ce {\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 i = this.current;\n this.current = e;\n try {\n return t();\n } finally {\n this.current = i;\n }\n }\n /**\n * Retrieves the listener currently associated with the tracking context.\n */\n getCurrent() {\n return this.current;\n }\n}\nconst m = new ce();\nfunction _e(s) {\n if (typeof s != \"function\")\n throw new g(\"Untracked callback must be a function\");\n const e = m.current;\n m.current = null;\n try {\n return s();\n } finally {\n m.current = e;\n }\n}\nclass j {\n constructor() {\n this.pool = [], this.maxPoolSize = 50, this.maxReusableCapacity = 256, this.stats = l ? {\n acquired: 0,\n released: 0,\n rejected: { frozen: 0, tooLarge: 0, poolFull: 0 }\n } : null;\n }\n /** Acquires an array from the pool or creates a new one if the pool is empty. */\n acquire() {\n return l && this.stats && this.stats.acquired++, this.pool.pop() ?? [];\n }\n /**\n * Releases an array back to the pool.\n * Clears the array before storing it.\n * @param arr - The array to release.\n * @param emptyConst - Optional reference to a constant empty array to skip.\n */\n release(e, t) {\n if (!(t && e === t)) {\n if (Object.isFrozen(e)) {\n l && this.stats && this.stats.rejected.frozen++;\n return;\n }\n if (e.length > this.maxReusableCapacity) {\n l && this.stats && this.stats.rejected.tooLarge++;\n return;\n }\n if (this.pool.length >= this.maxPoolSize) {\n l && this.stats && this.stats.rejected.poolFull++;\n return;\n }\n e.length = 0, this.pool.push(e), l && this.stats && this.stats.released++;\n }\n }\n /** Returns current stats for the pool (dev mode only). */\n getStats() {\n if (!l || !this.stats) return null;\n const { acquired: e, released: t, rejected: i } = this.stats, n = i.frozen + i.tooLarge + i.poolFull;\n return {\n acquired: e,\n released: t,\n rejected: i,\n leaked: e - t - n,\n poolSize: this.pool.length\n };\n }\n /** Resets the pool and its stats. */\n reset() {\n this.pool.length = 0, l && this.stats && (this.stats.acquired = 0, this.stats.released = 0, this.stats.rejected = { frozen: 0, tooLarge: 0, poolFull: 0 });\n }\n}\nconst _ = Object.freeze([]), f = Object.freeze([]), a = Object.freeze([]), S = new j(), C = new j(), d = new j();\nfunction ae(s) {\n return s !== null && typeof s == \"object\" && \"value\" in s && \"subscribe\" in s && typeof s.subscribe == \"function\";\n}\nfunction De(s) {\n if (p.enabled && (s == null || typeof s == \"object\")) {\n const e = p.getDebugType(s);\n if (e)\n return e === \"computed\";\n }\n return ae(s) && \"invalidate\" in s && typeof s.invalidate == \"function\";\n}\nfunction Ie(s) {\n return s !== null && typeof s == \"object\" && \"dispose\" in s && \"run\" in s && typeof s.dispose == \"function\" && typeof s.run == \"function\";\n}\nfunction J(s) {\n return s != null && typeof s.then == \"function\";\n}\nfunction le(s) {\n return typeof s == \"object\" && s !== null;\n}\nfunction fe(s) {\n return (typeof s == \"object\" || typeof s == \"function\") && s !== null && typeof s.addDependency == \"function\";\n}\nfunction de(s) {\n return typeof s == \"function\" && typeof s.addDependency != \"function\";\n}\nfunction pe(s) {\n return le(s) && typeof s.execute == \"function\";\n}\nfunction W(s, e, t, i) {\n if (e) {\n if (fe(e)) {\n e.addDependency(s);\n return;\n }\n if (de(e)) {\n const n = e;\n t.indexOf(n) === -1 && t.push(n);\n return;\n }\n pe(e) && i.indexOf(e) === -1 && i.push(e);\n }\n}\nfunction Ee(s, e, t, i) {\n if (e !== _ && t !== f)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o && (o._tempUnsub = t[r]);\n }\n const n = C.acquire();\n n.length = s.length;\n for (let r = 0; r < s.length; r++) {\n const o = s[r];\n o && (o._tempUnsub ? (n[r] = o._tempUnsub, o._tempUnsub = void 0) : (p.checkCircular(o, i), n[r] = o.subscribe(i)));\n }\n if (e !== _)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o?._tempUnsub && (o._tempUnsub(), o._tempUnsub = void 0);\n }\n return t !== f && C.release(t), n;\n}\nclass ge extends H {\n constructor(e, t) {\n super(), this._fnSubs = null, this._objSubs = null, this._value = e, t && (this.flags |= T.SYNC), p.attachDebugInfo(this, \"atom\", this.id);\n }\n _getFnSubs() {\n return this._fnSubs ??= [], this._fnSubs;\n }\n _getObjSubs() {\n return this._objSubs ??= [], this._objSubs;\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 = m.current;\n return e && W(this, e, this._getFnSubs(), this._getObjSubs()), this._value;\n }\n /**\n * Sets a new value and schedules notifications if the value has changed.\n */\n set value(e) {\n if (Object.is(this._value, e)) return;\n const t = this._value;\n this._value = e, this.rotatePhase(), ((this._fnSubs?.length ?? 0) > 0 || (this._objSubs?.length ?? 0) > 0) && this._scheduleNotification(t);\n }\n /**\n * Schedules or flushes notifications based on sync mode and batching state.\n */\n _scheduleNotification(e) {\n if (this.flags & T.NOTIFICATION_SCHEDULED || (this._pendingOldValue = e, this.flags |= T.NOTIFICATION_SCHEDULED), this.flags & T.SYNC && !N.isBatching) {\n this._flushNotifications();\n return;\n }\n this._notifyTask || (this._notifyTask = () => this._flushNotifications()), N.schedule(this._notifyTask);\n }\n _flushNotifications() {\n if (!(this.flags & T.NOTIFICATION_SCHEDULED)) return;\n const e = this._pendingOldValue, t = this._value;\n this._pendingOldValue = void 0, this.flags &= -3, this._notifySubscribers(t, e);\n }\n peek() {\n return this._value;\n }\n dispose() {\n this._fnSubs = null, this._objSubs = null, this._value = void 0, this._notifyTask = void 0;\n }\n}\nfunction Ce(s, e = {}) {\n return new ge(s, e.sync ?? !1);\n}\nfunction A(s, e, t) {\n if (s instanceof TypeError)\n return new e(`Type error (${t}): ${s.message}`, s);\n if (s instanceof ReferenceError)\n return new e(`Reference error (${t}): ${s.message}`, s);\n if (s instanceof g)\n return s;\n const i = s instanceof Error ? s.message : String(s), n = s instanceof Error ? s : null;\n return new e(`Unexpected error (${t}): ${i}`, n);\n}\nconst K = h.RESOLVED | h.PENDING | h.REJECTED, L = Array(K + 1).fill(v.IDLE);\nL[h.RESOLVED] = v.RESOLVED;\nL[h.PENDING] = v.PENDING;\nL[h.REJECTED] = v.REJECTED;\nclass Z extends H {\n constructor(e, t = {}) {\n if (typeof e != \"function\")\n throw new D(u.COMPUTED_MUST_BE_FUNCTION);\n if (super(), this._fnSubs = null, this._objSubs = null, this._cachedErrors = null, this._errorCacheEpoch = -1, this._asyncStartAggregateVersion = 0, this._asyncRetryCount = 0, this.MAX_ASYNC_RETRIES = 3, this._value = void 0, this.flags = h.DIRTY | h.IDLE, this._error = null, this._promiseId = 0, this._equal = t.equal ?? Object.is, this._fn = e, this._defaultValue = \"defaultValue\" in t ? t.defaultValue : k, this._hasDefaultValue = this._defaultValue !== k, this._onError = t.onError ?? null, this.MAX_PROMISE_ID = Number.MAX_SAFE_INTEGER - 1, this._dependencies = _, this._dependencyVersions = a, this._unsubscribes = f, this._notifyJob = () => {\n const i = this._fnSubs;\n if (i)\n for (let r = i.length - 1; r >= 0; r--)\n try {\n const o = i[r];\n o && o(void 0, void 0);\n } catch (o) {\n console.error(o);\n }\n const n = this._objSubs;\n if (n)\n for (let r = n.length - 1; r >= 0; r--)\n try {\n const o = n[r];\n o && o.execute();\n } catch (o) {\n console.error(o);\n }\n }, this._trackable = Object.assign(() => this._markDirty(), {\n addDependency: (i) => {\n }\n }), p.attachDebugInfo(this, \"computed\", this.id), p.enabled) {\n const i = this;\n i.subscriberCount = this.subscriberCount.bind(this), i.isDirty = () => this._isDirty(), i.dependencies = this._dependencies, i.stateFlags = this._getFlagsAsString();\n }\n if (t.lazy === !1)\n try {\n this._recompute();\n } catch {\n }\n }\n _getFnSubs() {\n return this._fnSubs ??= [], this._fnSubs;\n }\n _getObjSubs() {\n return this._objSubs ??= [], this._objSubs;\n }\n get value() {\n return this._registerTracking(), this._computeValue();\n }\n peek() {\n return this._value;\n }\n get state() {\n return this._registerTracking(), this._getAsyncState();\n }\n get hasError() {\n if (this._registerTracking(), this._isRejected())\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t && \"hasError\" in t && t.hasError)\n return !0;\n }\n return !1;\n }\n get isValid() {\n return !this.hasError;\n }\n get errors() {\n if (this._registerTracking(), !this.hasError)\n return te;\n const e = oe();\n if (this._errorCacheEpoch === e && this._cachedErrors !== null)\n return this._cachedErrors;\n const t = /* @__PURE__ */ new Set();\n this._error && t.add(this._error);\n for (let i = 0; i < this._dependencies.length; i++) {\n const n = this._dependencies[i];\n if (n && \"errors\" in n) {\n const r = n.errors;\n for (let o = 0; o < r.length; o++) {\n const c = r[o];\n c && t.add(c);\n }\n }\n }\n return this._cachedErrors = Object.freeze([...t]), this._errorCacheEpoch = e, this._cachedErrors;\n }\n get lastError() {\n return this._registerTracking(), this._error;\n }\n get isPending() {\n return this._registerTracking(), this._isPending();\n }\n get isResolved() {\n return this._registerTracking(), this._isResolved();\n }\n invalidate() {\n this._markDirty(), this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a), this._errorCacheEpoch = -1, this._cachedErrors = null;\n }\n dispose() {\n if (this._unsubscribes !== f) {\n for (let e = 0; e < this._unsubscribes.length; e++) {\n const t = this._unsubscribes[e];\n t && t();\n }\n C.release(this._unsubscribes), this._unsubscribes = f;\n }\n this._dependencies !== _ && (S.release(this._dependencies), this._dependencies = _), this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a), this._fnSubs = null, this._objSubs = null, this.flags = h.DIRTY | h.IDLE, this._error = null, this._value = void 0, this._promiseId = (this._promiseId + 1) % this.MAX_PROMISE_ID, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n // State flag operations\n _isDirty() {\n return (this.flags & h.DIRTY) !== 0;\n }\n _setDirty() {\n this.flags |= h.DIRTY;\n }\n _clearDirty() {\n this.flags &= -2;\n }\n _isIdle() {\n return (this.flags & h.IDLE) !== 0;\n }\n _setIdle() {\n this.flags |= h.IDLE, this.flags &= -29;\n }\n _isPending() {\n return (this.flags & h.PENDING) !== 0;\n }\n _setPending() {\n this.flags |= h.PENDING, this.flags &= -27;\n }\n _isResolved() {\n return (this.flags & h.RESOLVED) !== 0;\n }\n _setResolved() {\n this.flags |= h.RESOLVED, this.flags &= -87;\n }\n _isRejected() {\n return (this.flags & h.REJECTED) !== 0;\n }\n _setRejected() {\n this.flags |= h.REJECTED | h.HAS_ERROR, this.flags &= -15;\n }\n _isRecomputing() {\n return (this.flags & h.RECOMPUTING) !== 0;\n }\n _setRecomputing(e) {\n const t = h.RECOMPUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n _getAsyncState() {\n return L[this.flags & K];\n }\n _getFlagsAsString() {\n const e = [];\n return this._isDirty() && e.push(\"DIRTY\"), this._isIdle() && e.push(\"IDLE\"), this._isPending() && e.push(\"PENDING\"), this._isResolved() && e.push(\"RESOLVED\"), this._isRejected() && e.push(\"REJECTED\"), this._isRecomputing() && e.push(\"RECOMPUTING\"), e.join(\" | \");\n }\n _computeValue() {\n return this._isRecomputing() ? this._value : ((this._isDirty() || this._isIdle()) && this._recompute(), this._isPending() ? this._handlePending() : this._isRejected() ? this._handleRejected() : this._value);\n }\n _recompute() {\n if (this._isRecomputing()) return;\n this._setRecomputing(!0);\n const e = this._prepareComputationContext();\n let t = !1;\n try {\n const i = m.run(this._trackable, this._fn);\n this._commitDependencies(e), t = !0, J(i) ? this._handleAsyncComputation(i) : this._handleSyncResult(i);\n } catch (i) {\n if (!t)\n try {\n this._commitDependencies(e), t = !0;\n } catch (n) {\n this._handleComputationError(n);\n }\n this._handleComputationError(i);\n } finally {\n this._cleanupContext(e, t), this._setRecomputing(!1);\n }\n }\n _prepareComputationContext() {\n const e = this._dependencies, t = this._dependencyVersions, i = S.acquire(), n = d.acquire(), r = $(), o = { depCount: 0 }, c = (E) => {\n E._lastSeenEpoch !== r && (E._lastSeenEpoch = r, o.depCount < i.length ? (i[o.depCount] = E, n[o.depCount] = E.version) : (i.push(E), n.push(E.version)), o.depCount++);\n }, R = this._trackable.addDependency;\n return this._trackable.addDependency = c, { prevDeps: e, prevVersions: t, nextDeps: i, nextVersions: n, originalAdd: R, state: o };\n }\n _commitDependencies(e) {\n const { nextDeps: t, nextVersions: i, state: n, prevDeps: r } = e;\n t.length = n.depCount, i.length = n.depCount, this._unsubscribes = Ee(t, r, this._unsubscribes, this), this._dependencies = t, this._dependencyVersions = i;\n }\n _cleanupContext(e, t) {\n this._trackable.addDependency = e.originalAdd, t ? (e.prevDeps !== _ && S.release(e.prevDeps), e.prevVersions !== a && d.release(e.prevVersions)) : (S.release(e.nextDeps), d.release(e.nextVersions));\n }\n /**\n * Calculates aggregate shift from all dependencies.\n * Used for scheduling priority in computed chains.\n *\n * Performance: O(N) where N = dependency count\n * Branchless: Each dep.getShift uses modular arithmetic\n *\n * @returns Sum of all dependency shifts (capped at SMI_MAX)\n */\n _getAggregateShift() {\n let e = 0;\n const t = this._dependencies, i = this._dependencyVersions;\n for (let n = 0; n < t.length; n++) {\n const r = t[n], o = i[n];\n r && o !== void 0 && (e = e + r.getShift(o) & b);\n }\n return e;\n }\n /**\n * Checks if this computed should be scheduled with urgent priority.\n * Based on aggregate shift from all dependencies.\n *\n * @returns true if aggregate shift exceeds PHASE_THRESHOLD\n */\n isUrgent() {\n return this._getAggregateShift() >= w;\n }\n _handleSyncResult(e) {\n this._finalizeResolution(e);\n }\n _handleAsyncComputation(e) {\n this._setPending(), this._clearDirty(), this._notifyJob(), this._asyncStartAggregateVersion = this._captureVersionSnapshot(), this._asyncRetryCount = 0, this._promiseId = this._promiseId >= this.MAX_PROMISE_ID ? 1 : this._promiseId + 1;\n const t = this._promiseId;\n e.then((i) => {\n if (t !== this._promiseId) return;\n const r = this._captureVersionSnapshot() - this._asyncStartAggregateVersion & b;\n if (w - 1 - r >>> 31 & 1) {\n if (this._asyncRetryCount < this.MAX_ASYNC_RETRIES) {\n this._asyncRetryCount++, this._markDirty();\n return;\n }\n const c = new D(\n `Async drift exceeded threshold after ${this.MAX_ASYNC_RETRIES} retries. Dependencies changed too rapidly for stable computation.`\n );\n this._handleAsyncRejection(c);\n return;\n }\n this._handleAsyncResolution(i);\n }).catch((i) => {\n t === this._promiseId && this._handleAsyncRejection(i);\n });\n }\n /**\n * Captures the aggregate version of all dependencies.\n * Used for phase drift validation in async computations.\n *\n * @returns Sum of all dependency versions (capped at SMI_MAX)\n */\n _captureVersionSnapshot() {\n let e = 0;\n const t = this._dependencies;\n for (let i = 0; i < t.length; i++) {\n const n = t[i];\n n && (e = e + n.version & b);\n }\n return e;\n }\n _handleAsyncResolution(e) {\n this._finalizeResolution(e), this._notifyJob();\n }\n /**\n * Unified success finalization for sync and async results.\n * Handles phase rotation, state transition, and error cache clearing.\n */\n _finalizeResolution(e) {\n (!this._isResolved() || !this._equal(this._value, e)) && this.rotatePhase(), this._value = e, this._clearDirty(), this._setResolved(), this._error = null, this._setRecomputing(!1), this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n _handleAsyncRejection(e) {\n const t = A(e, D, u.COMPUTED_ASYNC_COMPUTATION_FAILED);\n if (!this._isRejected() && this.rotatePhase(), this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (n) {\n console.error(u.CALLBACK_ERROR_IN_ERROR_HANDLER, n);\n }\n this._notifyJob();\n }\n _handleComputationError(e) {\n const t = A(e, D, u.COMPUTED_COMPUTATION_FAILED);\n if (this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (i) {\n console.error(u.CALLBACK_ERROR_IN_ERROR_HANDLER, i);\n }\n throw t;\n }\n _handlePending() {\n if (this._hasDefaultValue)\n return this._defaultValue;\n throw new D(u.COMPUTED_ASYNC_PENDING_NO_DEFAULT);\n }\n _handleRejected() {\n if (this._error?.recoverable && this._hasDefaultValue)\n return this._defaultValue;\n throw this._error;\n }\n /** Subscriber interface - marks dirty on dependency change */\n execute() {\n this._markDirty();\n }\n _markDirty() {\n this._isRecomputing() || this._isDirty() || (this._setDirty(), this._notifyJob());\n }\n _registerTracking() {\n W(this, m.getCurrent(), this._getFnSubs(), this._getObjSubs());\n }\n}\nObject.freeze(Z.prototype);\nfunction me(s, e = {}) {\n return new Z(s, e);\n}\nclass Se extends Y {\n /**\n * Creates a new EffectImpl instance.\n * @param fn - The effect function to run.\n * @param options - Configuration options for the effect.\n */\n constructor(e, t = {}) {\n super(), this.run = () => {\n if (this.isDisposed)\n throw new y(u.EFFECT_MUST_BE_FUNCTION);\n this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a), this.execute();\n }, this.dispose = () => {\n if (!this.isDisposed) {\n if (this._setDisposed(), this._safeCleanup(), this._unsubscribes !== f) {\n for (let n = 0; n < this._unsubscribes.length; n++) {\n const r = this._unsubscribes[n];\n r && r();\n }\n C.release(this._unsubscribes), this._unsubscribes = f;\n }\n this._dependencies !== _ && (S.release(this._dependencies), this._dependencies = _), this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a);\n }\n }, this.addDependency = (n) => {\n if (this.isExecuting && this._nextDeps && this._nextUnsubs && this._nextVersions) {\n const r = this._currentEpoch;\n if (n._lastSeenEpoch === r) return;\n n._lastSeenEpoch = r, this._nextDeps.push(n), this._nextVersions.push(n.version), n._tempUnsub ? (this._nextUnsubs.push(n._tempUnsub), n._tempUnsub = void 0) : this._subscribeTo(n);\n }\n }, this.execute = () => {\n if (this.isDisposed || this.isExecuting || !this._shouldExecute()) return;\n this._checkInfiniteLoop(), this._setExecuting(!0), this._safeCleanup();\n const n = this._prepareEffectExecutionContext();\n let r = !1;\n try {\n const o = m.run(this, this._fn);\n this._commitEffect(n), r = !0, this._checkLoopWarnings(), J(o) ? o.then((c) => {\n !this.isDisposed && typeof c == \"function\" && (this._cleanup = c);\n }).catch((c) => {\n this._handleExecutionError(c);\n }) : this._cleanup = typeof o == \"function\" ? o : null;\n } catch (o) {\n r = !0, this._handleExecutionError(o), this._cleanup = null;\n } finally {\n this._cleanupEffect(n, r), this._setExecuting(!1);\n }\n }, this._cleanup = null, this._dependencies = _, this._dependencyVersions = a, this._unsubscribes = f, this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, 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 ?? I.MAX_EXECUTIONS_PER_SECOND, this._maxExecutionsPerFlush = t.maxExecutionsPerFlush ?? I.MAX_EXECUTIONS_PER_EFFECT, this._trackModifications = t.trackModifications ?? !1, this._historyPtr = 0;\n const i = Number.isFinite(this._maxExecutions);\n this._historyCapacity = i ? Math.min(this._maxExecutions + 1, I.MAX_EXECUTIONS_PER_SECOND + 1) : 0, this._history = l && i && this._historyCapacity > 0 ? new Array(this._historyCapacity).fill(0) : null, this._executionCount = 0, p.attachDebugInfo(this, \"effect\", this.id);\n }\n /**\n * Prepares the execution context by acquiring pools and setting up epoch.\n * @returns The prepared EffectExecutionContext.\n */\n _prepareEffectExecutionContext() {\n const e = this._dependencies, t = this._dependencyVersions, i = this._unsubscribes, n = S.acquire(), r = d.acquire(), o = C.acquire(), c = $();\n if (e !== _ && i !== f)\n for (let R = 0; R < e.length; R++) {\n const E = e[R];\n E && (E._tempUnsub = i[R]);\n }\n return this._nextDeps = n, this._nextVersions = r, this._nextUnsubs = o, this._currentEpoch = c, { prevDeps: e, prevVersions: t, prevUnsubs: i, nextDeps: n, nextVersions: r, nextUnsubs: o };\n }\n /**\n * Commits the tracked dependencies as the current active dependencies.\n * @param ctx - The current effect context.\n */\n _commitEffect(e) {\n const t = e.nextDeps.length;\n e.nextDeps.length = t, e.nextVersions.length = t, this._dependencies = e.nextDeps, this._dependencyVersions = e.nextVersions, this._unsubscribes = e.nextUnsubs;\n }\n /**\n * Cleans up the effect execution context, releasing resources back to pools.\n * @param ctx - The effect context to clean up.\n * @param committed - Whether the changes were committed to the effect.\n */\n _cleanupEffect(e, t) {\n if (this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, t) {\n if (e.prevDeps !== _) {\n for (let i = 0; i < e.prevDeps.length; i++) {\n const n = e.prevDeps[i];\n n?._tempUnsub && (n._tempUnsub(), n._tempUnsub = void 0);\n }\n S.release(e.prevDeps);\n }\n e.prevUnsubs !== f && C.release(e.prevUnsubs), e.prevVersions !== a && d.release(e.prevVersions);\n } else {\n S.release(e.nextDeps), d.release(e.nextVersions);\n for (let i = 0; i < e.nextUnsubs.length; i++)\n e.nextUnsubs[i]?.();\n if (C.release(e.nextUnsubs), e.prevDeps !== _)\n for (let i = 0; i < e.prevDeps.length; i++) {\n const n = e.prevDeps[i];\n n && (n._tempUnsub = void 0);\n }\n }\n }\n /**\n * Subscribes to a dependency's changes.\n * @param dep - The dependency to subscribe to.\n */\n _subscribeTo(e) {\n try {\n const t = e.subscribe(() => {\n this._trackModifications && this.isExecuting && (e._modifiedAtEpoch = this._currentEpoch), this._sync ? this.execute() : N.schedule(this.execute);\n });\n this._nextUnsubs && this._nextUnsubs.push(t);\n } catch (t) {\n console.error(A(t, y, u.EFFECT_EXECUTION_FAILED)), this._nextUnsubs && this._nextUnsubs.push(() => {\n });\n }\n }\n /**\n * Whether the effect has been disposed.\n */\n get isDisposed() {\n return (this.flags & O.DISPOSED) !== 0;\n }\n /**\n * Total number of times this effect has executed.\n */\n get executionCount() {\n return this._executionCount;\n }\n /**\n * Whether the effect is currently executing.\n */\n get isExecuting() {\n return (this.flags & O.EXECUTING) !== 0;\n }\n _setDisposed() {\n this.flags |= O.DISPOSED;\n }\n _setExecuting(e) {\n const t = O.EXECUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n /**\n * Executes the cleanup function if it exists.\n */\n _safeCleanup() {\n if (this._cleanup) {\n try {\n this._cleanup();\n } catch (e) {\n console.error(A(e, y, u.EFFECT_CLEANUP_FAILED));\n }\n this._cleanup = null;\n }\n }\n /**\n * Checks for infinite loops by tracking execution counts within a flush and time period.\n * @throws {EffectError} If an infinite loop is detected.\n */\n _checkInfiniteLoop() {\n if (this._lastFlushEpoch !== F && (this._lastFlushEpoch = F, this._executionsInEpoch = 0), this._executionsInEpoch++, this._executionsInEpoch > this._maxExecutionsPerFlush && this._throwInfiniteLoopError(\"per-effect\"), he() > I.MAX_EXECUTIONS_PER_FLUSH && this._throwInfiniteLoopError(\"global\"), this._executionCount++, this._history && this._maxExecutions > 0) {\n const e = Date.now(), t = this._historyPtr, i = this._historyCapacity;\n this._history[t] = e;\n const n = (t + 1) % i, r = this._history[n] ?? 0;\n if (this._historyPtr = n, r > 0 && e - r < ee.ONE_SECOND_MS) {\n const o = new y(\n `Effect executed ${i} times within 1 second. Infinite loop suspected`\n );\n if (this.dispose(), console.error(o), this._onError && this._onError(o), l)\n throw o;\n }\n }\n }\n _throwInfiniteLoopError(e) {\n const t = new y(\n `Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${z}`\n );\n throw this.dispose(), console.error(t), t;\n }\n /**\n * Determines if the effect should execute based on dependency versions.\n * @returns true if any dependency has changed or if it's the first run.\n */\n _shouldExecute() {\n if (this._dependencies === _ || this._dependencyVersions === a)\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t) {\n if (\"value\" in t)\n try {\n _e(() => t.value);\n } catch {\n return !0;\n }\n if (t.version !== this._dependencyVersions[e])\n return !0;\n }\n }\n return !1;\n }\n /**\n * Handles errors occurring during effect execution.\n * Wraps the error, logs it to console, and calls onError callback if provided.\n */\n _handleExecutionError(e) {\n const t = A(e, y, u.EFFECT_EXECUTION_FAILED);\n console.error(t), this._onError && this._onError(t);\n }\n /**\n * Checks for potential infinite loops where an effect modifies its own dependencies.\n * Only active if trackModifications is enabled and debug is on.\n */\n _checkLoopWarnings() {\n if (this._trackModifications && p.enabled) {\n const e = this._dependencies;\n for (let t = 0; t < e.length; t++) {\n const i = e[t];\n i && i._modifiedAtEpoch === this._currentEpoch && p.warn(\n !0,\n `Effect is reading a dependency (${p.getDebugName(i) || \"unknown\"}) that it just modified. Infinite loop may occur`\n );\n }\n }\n }\n}\nfunction Re(s, e = {}) {\n if (typeof s != \"function\")\n throw new y(u.EFFECT_MUST_BE_FUNCTION);\n const t = new Se(s, e);\n return t.execute(), t;\n}\nexport {\n v as AsyncState,\n g as AtomError,\n D as ComputedError,\n B as DEBUG_CONFIG,\n p as DEBUG_RUNTIME,\n y as EffectError,\n be as POOL_CONFIG,\n I as SCHEDULER_CONFIG,\n U as SchedulerError,\n Ce as atom,\n ye as batch,\n me as computed,\n Re as effect,\n ae as isAtom,\n De as isComputed,\n Ie as isEffect,\n N as scheduler,\n _e 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 * A reactive object is expected to have a 'value' property and a 'subscribe' method.\n *\n * @param value - The value to check.\n * @returns True if the value is reactive, false otherwise.\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 * If the source is reactive, it returns its current value; otherwise, it returns the source itself.\n *\n * @template T - The type of the value.\n * @param source - The reactive value or raw value to extract from.\n * @returns The extracted raw value.\n */\nexport function getValue<T>(source: ReactiveValue<T>): T {\n if (isReactive(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 * Accepts both raw Element and JQuery objects for flexibility.\n * This is primarily used for debugging and logging purposes to identify elements.\n *\n * @param el - The DOM element or JQuery object to generate a selector for.\n * @returns A string representing the element's ID, classes, or tag name.\n */\nexport function getSelector(el: Element | JQuery): string {\n if (!el) return 'unknown';\n // Handle JQuery objects by extracting the first DOM element\n const domEl = 'jquery' in el ? (el as JQuery)[0] : (el as Element);\n if (!domEl) return 'unknown';\n\n if (domEl.id) return `#${domEl.id}`;\n if (domEl.className) {\n const classes = String(domEl.className).split(/\\s+/).filter(Boolean).join('.');\n return classes ? `${domEl.tagName.toLowerCase()}.${classes}` : domEl.tagName.toLowerCase();\n }\n return domEl.tagName.toLowerCase();\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 // Browser: check global flag\n if (typeof window !== 'undefined') {\n const globalFlag = (window as Window & { __ATOM_DEBUG__?: boolean }).__ATOM_DEBUG__;\n if (typeof globalFlag === 'boolean') {\n return globalFlag;\n }\n }\n\n // Vite support\n if (import.meta.env?.DEV && import.meta.env.MODE !== 'test') {\n return true;\n }\n\n // Node/Bundler check\n try {\n // @ts-expect-error\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') {\n return true;\n }\n } catch (_e) {\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 const label = name || 'anonymous';\n console.log(`[atom-effect-jquery] Atom \"${label}\" changed:`, oldVal, '→', newVal);\n }\n },\n\n /**\n * Logs DOM updates and triggers visual highlight.\n */\n domUpdated<T>($el: JQuery, type: string, value: T) {\n if (!debugEnabled) return;\n\n // Console logging\n const selector = getSelector($el);\n console.log(`[atom-effect-jquery] DOM updated: ${selector}.${type} =`, value);\n\n // Visual highlight (red border flash)\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 * Inspired by React DevTools \"Highlight updates\".\n *\n * Uses data attributes to manage state and prevent style pollution\n * when updates happen rapidly.\n */\nfunction highlightElement($el: JQuery): void {\n const el = $el[0];\n if (!el || !document.contains(el)) return;\n\n const TIMER_KEY = 'atom_debug_timer';\n const CLEANUP_TIMER_KEY = 'atom_debug_cleanup_timer';\n const ORG_STYLE_KEY = 'atom_debug_org_style';\n\n // 1. Clear existing timers for both restoration and cleanup\n clearTimeout($el.data(TIMER_KEY));\n clearTimeout($el.data(CLEANUP_TIMER_KEY));\n\n // 2. Save original style only if not already actively highlighting\n // (meaning this is the start of a highlight sequence)\n if (!$el.data(ORG_STYLE_KEY)) {\n $el.data(ORG_STYLE_KEY, {\n outline: $el.css('outline'),\n outlineOffset: $el.css('outline-offset'),\n transition: $el.css('transition'),\n });\n }\n\n // 3. Apply highlight style\n $el.css({\n outline: '2px solid rgba(255, 68, 68, 0.8)',\n 'outline-offset': '1px',\n transition: 'none', // Remove transition for instant feedback on update\n });\n\n // 4. Set timer to restore\n const timerId = setTimeout(() => {\n // Restore original styles\n const originalStyles = $el.data(ORG_STYLE_KEY);\n\n // We add a transition for the fade out\n $el.css('transition', 'outline 0.5s ease-out');\n\n // Defer the actual style restoration to allow transition to take effect\n requestAnimationFrame(() => {\n $el.css({\n outline: originalStyles?.outline || '',\n 'outline-offset': originalStyles?.outlineOffset || '',\n });\n\n // 5. Cleanup data after fade out\n // Wait for transition to finish (500ms)\n const cleanupTimerId = setTimeout(() => {\n $el.css('transition', originalStyles?.transition || '');\n $el.removeData(TIMER_KEY);\n $el.removeData(CLEANUP_TIMER_KEY);\n $el.removeData(ORG_STYLE_KEY);\n }, 500);\n $el.data(CLEANUP_TIMER_KEY, cleanupTimerId);\n });\n }, 100); // Flash duration\n\n $el.data(TIMER_KEY, timerId);\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 // Debug mode: Value change detection\n // Note: Wrapper logic removed due to interference with atom-effect internals (computed reactivity)\n // Revisit if safer interception method is found.\n /*\n if (debug.enabled || options.name) {\n // ... removed ...\n }\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 * 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 effects = new WeakMap<Element, EffectObject[]>();\n private cleanups = new WeakMap<Element, Array<() => void>>();\n private boundElements = new WeakSet<Element>();\n private preservedNodes = new WeakSet<Node>();\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 trackEffect(el: Element, fx: EffectObject): void {\n let list = this.effects.get(el);\n if (!list) {\n list = [];\n this.effects.set(el, list);\n this.boundElements.add(el);\n }\n list.push(fx);\n }\n\n trackCleanup(el: Element, fn: () => void): void {\n let list = this.cleanups.get(el);\n if (!list) {\n list = [];\n this.cleanups.set(el, list);\n this.boundElements.add(el);\n }\n list.push(fn);\n }\n\n hasBind(el: Element): boolean {\n return this.boundElements.has(el);\n }\n\n cleanup(el: Element): void {\n if (!this.boundElements.delete(el)) return;\n\n debug.cleanup(getSelector(el));\n\n // 1. Dispose Effects (Atom -> Subscription severed)\n const effects = this.effects.get(el);\n if (effects) {\n this.effects.delete(el);\n for (let i = 0, len = effects.length; i < len; i++) {\n const fx = effects[i];\n if (fx) {\n try {\n fx.dispose();\n } catch (e) {\n debug.warn('Effect dispose error:', e);\n }\n }\n }\n }\n\n // 2. Execute custom cleanups\n const cleanups = this.cleanups.get(el);\n if (cleanups) {\n this.cleanups.delete(el);\n for (let i = 0, len = cleanups.length; i < len; i++) {\n const fn = cleanups[i];\n if (fn) {\n try {\n fn();\n } catch (e) {\n debug.warn('Cleanup error:', e);\n }\n }\n }\n }\n }\n\n cleanupTree(el: Element): void {\n // Traverse descendants (Hot Path for removal)\n const children = el.querySelectorAll('*');\n for (let i = 0, len = children.length; i < len; i++) {\n const child = children[i] as Element;\n if (child && this.boundElements.has(child)) {\n this.cleanup(child);\n }\n }\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 mutation = mutations[i];\n if (!mutation) continue;\n const removed = mutation.removedNodes;\n for (let j = 0, rLen = removed.length; j < rLen; j++) {\n const node = removed[j];\n if (!node) continue;\n\n // Skip if kept (detached) or still connected\n if (registry.isKept(node) || node.isConnected) continue;\n\n if (node.nodeType === 1) {\n // Node.ELEMENT_NODE\n registry.cleanupTree(node as Element);\n }\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 const $el = $(el);\n const domEl = el;\n\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = source.value;\n updater(value);\n debug.domUpdated($el, debugType, value);\n });\n registry.trackEffect(domEl, fx);\n } else {\n updater(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;\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;\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}\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 /** Current binding phase - makes state transitions explicit and traceable */\n phase: 'idle' | 'composing' | 'syncing-to-atom' | 'syncing-to-dom';\n /** Whether the input currently has focus */\n hasFocus: boolean;\n}\n\n/**\n * Creates a fresh InputBindingState with default values.\n */\nexport function createInputBindingState(): InputBindingState {\n return { timeoutId: null, phase: 'idle', hasFocus: false };\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 effects: Array<() => void>;\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 { 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 } = options;\n\n const state: InputBindingState = createInputBindingState();\n\n // IME composition support (CJK input)\n const onCompositionStart = () => {\n state.phase = 'composing';\n };\n\n const onCompositionEnd = () => {\n state.phase = 'idle';\n syncAtomFromDom();\n };\n\n $el.on('compositionstart', onCompositionStart);\n $el.on('compositionend', onCompositionEnd);\n\n // Focus tracking for smart formatting\n const onFocus = () => {\n state.hasFocus = true;\n };\n\n const onBlur = () => {\n state.hasFocus = false;\n // Force formatting on blur to ensure clean display\n const formatted = format(atom.value);\n if ($el.val() !== formatted) {\n $el.val(formatted);\n }\n };\n\n $el.on('focus', onFocus);\n $el.on('blur', onBlur);\n\n // Core sync: DOM → Atom\n const syncAtomFromDom = () => {\n if (state.phase !== 'idle') return;\n\n state.phase = 'syncing-to-atom';\n atom.value = parse($el.val() as string);\n state.phase = 'idle';\n };\n\n // Input handler with optional debounce\n const onInput = () => {\n if (state.phase !== 'idle') return;\n\n if (debounceMs) {\n if (state.timeoutId) clearTimeout(state.timeoutId);\n state.timeoutId = window.setTimeout(syncAtomFromDom, debounceMs);\n } else {\n syncAtomFromDom();\n }\n };\n\n $el.on(event, onInput);\n $el.on('change', onInput);\n\n // Cleanup handler\n const cleanup = () => {\n $el.off(event, onInput);\n $el.off('change', onInput);\n $el.off('compositionstart', onCompositionStart);\n $el.off('compositionend', onCompositionEnd);\n $el.off('focus', onFocus);\n $el.off('blur', onBlur);\n if (state.timeoutId) clearTimeout(state.timeoutId);\n };\n\n // Core sync: Atom → DOM (Effect body)\n const effect = () => {\n const formatted = format(atom.value);\n const currentVal = $el.val() as string;\n\n // Update only if value differs\n if (currentVal !== formatted) {\n // Don't interrupt user input if parsed value matches\n if (state.hasFocus && parse(currentVal) === atom.value) {\n return;\n }\n\n state.phase = 'syncing-to-dom';\n $el.val(formatted);\n debug.domUpdated($el, 'val', formatted);\n state.phase = 'idle';\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';\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 registerReactiveEffect(\n this,\n source,\n (val) => {\n const text = formatter ? formatter(val) : String(val ?? '');\n $(this).text(text);\n },\n 'text'\n );\n });\n};\n\n/**\n * Updates element inner HTML.\n */\n$.fn.atomHtml = function (source: ReactiveValue<string>): JQuery {\n return this.each(function () {\n registerReactiveEffect(this, source, (val) => $(this).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 registerReactiveEffect(\n this,\n condition,\n (val) => $(this).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 registerReactiveEffect(\n this,\n source,\n (val) => {\n const cssValue = unit ? `${val}${unit}` : val;\n $(this).css(prop, cssValue as string | number);\n },\n `css.${prop}`\n );\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 registerReactiveEffect(\n this,\n source,\n (val) => {\n const $el = $(this);\n if (val === null || val === undefined || val === false) {\n $el.removeAttr(name);\n } else if (val === true) {\n $el.attr(name, name);\n } else {\n $el.attr(name, String(val));\n }\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 registerReactiveEffect(this, source, (val) => $(this).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 registerReactiveEffect(this, condition, (val) => $(this).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 registerReactiveEffect(this, condition, (val) => $(this).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 $el = $(this);\n const { effect: fxFn, cleanup } = applyInputBinding($el, atom, options);\n const fx = effect(fxFn);\n registry.trackEffect(this, fx);\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 let isUpdatingFromAtom = false;\n\n // DOM → Atom\n const handler = () => {\n if (!isUpdatingFromAtom) {\n atom.value = !!$el.prop('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 isUpdatingFromAtom = true;\n const val = !!atom.value;\n $el.prop('checked', val);\n debug.domUpdated($el, 'checked', val);\n isUpdatingFromAtom = false;\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 { 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 { createInputBindingState } from './types';\n\n// ============================================================================\n// One-Way Binding Handlers (Atom → DOM)\n// ============================================================================\n\nfunction bindText<T>(ctx: BindingContext, value: ReactiveValue<T>): void {\n registerReactiveEffect(\n ctx.el,\n value,\n (val) => {\n ctx.el.textContent = String(val ?? '');\n },\n 'text'\n );\n}\n\nfunction bindHtml(ctx: BindingContext, value: ReactiveValue<string>): void {\n registerReactiveEffect(\n ctx.el,\n value,\n (val) => {\n ctx.el.innerHTML = String(val ?? '');\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 style = ctx.el.style as unknown as Record<string, string>;\n for (const prop in cssMap) {\n const value = cssMap[prop];\n if (value === undefined) continue;\n const camelProp = prop.includes('-')\n ? prop.replace(/-./g, (match) => match.charAt(1).toUpperCase())\n : prop;\n if (Array.isArray(value)) {\n const [source, unit] = value;\n registerReactiveEffect(\n ctx.el,\n source,\n (val) => {\n style[camelProp] = `${val}${unit}`;\n },\n `css.${prop}`\n );\n } else {\n registerReactiveEffect(\n ctx.el,\n value,\n (val) => {\n style[camelProp] = val 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 const value = attrMap[name];\n registerReactiveEffect(\n el,\n value,\n (v) => {\n if (v === null || v === undefined || v === false) {\n el.removeAttribute(name);\n return;\n }\n el.setAttribute(name, v === true ? name : String(v));\n },\n `attr.${name}`\n );\n }\n}\n\nfunction bindProp(ctx: BindingContext, propMap: Record<string, ReactiveValue<unknown>>): void {\n const el = ctx.el;\n for (const name in propMap) {\n registerReactiveEffect(\n el,\n propMap[name],\n (val) => {\n (el as unknown as Record<string, unknown>)[name] = val;\n },\n `prop.${name}`\n );\n }\n}\n\nfunction bindShow(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n registerReactiveEffect(\n ctx.el,\n condition,\n (val) => {\n ctx.$el.toggle(!!val);\n },\n 'show'\n );\n}\n\nfunction bindHide(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n registerReactiveEffect(\n ctx.el,\n condition,\n (val) => {\n ctx.$el.toggle(!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 valConfig: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>]\n): void {\n const atom = Array.isArray(valConfig) ? valConfig[0] : valConfig;\n const options = Array.isArray(valConfig) ? valConfig[1] : {};\n\n const { effect: fxFn, cleanup } = applyInputBinding(ctx.$el, atom, options);\n const fx = effect(fxFn);\n\n registry.trackEffect(ctx.el, fx);\n ctx.trackCleanup(cleanup);\n}\n\nfunction bindChecked(ctx: BindingContext, atom: WritableAtom<boolean>): void {\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.phase !== 'idle') return;\n atom.value = ctx.$el.prop('checked');\n };\n\n ctx.$el.on('change', handler);\n ctx.trackCleanup(() => ctx.$el.off('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n state.phase = 'syncing-to-dom';\n const val = !!atom.value;\n ctx.$el.prop('checked', val);\n debug.domUpdated(ctx.$el, 'checked', val);\n state.phase = 'idle';\n });\n registry.trackEffect(ctx.el, fx);\n}\n\n// ============================================================================\n// Event Binding Handler\n// ============================================================================\n\nfunction bindEvents(\n ctx: BindingContext,\n eventMap: Record<string, (e: JQuery.Event) => void>\n): void {\n const el = ctx.el;\n for (const eventName in eventMap) {\n const handler = eventMap[eventName];\n if (typeof handler !== 'function') continue;\n // biome-ignore lint/suspicious/noExplicitAny: JQuery.Event constructor overload requires any or complex cast to wrap native Event correctly\n const listener = (e: Event) => handler.call(el, $.Event(e as any));\n el.addEventListener(eventName, listener);\n ctx.trackCleanup(() => el.removeEventListener(eventName, 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 // Lazy element wrapping: only wrap if needed by legacy handlers (like bindVal/applyInputBinding)\n const $el = $(this);\n\n // Build binding context\n const ctx: BindingContext = {\n $el,\n el: this,\n effects: [],\n trackCleanup: (fn) => registry.trackCleanup(this, 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 { getSelector } from './utils';\n\n/**\n * Longest Increasing Subsequence (LIS)\n * Optimized for hardware: Uses Int32Array for memory locality and cache hits.\n * Time Complexity: O(N log N), Space Complexity: O(N) but contiguous.\n */\nfunction getLIS(arr: Int32Array | number[]): Int32Array {\n const len = arr.length;\n if (len === 0) return new Int32Array(0);\n\n // predecessors: pointer to previous index in LIS for backtracking (N indices)\n const predecessors = new Int32Array(len);\n // result: indices of the currently found longest increasing subsequence\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 === -1) continue;\n\n if (resultLen === 0 || arr[result[resultLen - 1]!]! < val) {\n predecessors[i] = resultLen > 0 ? result[resultLen - 1]! : -1;\n result[resultLen++] = i;\n continue;\n }\n\n // Binary search for insertion point\n let left = 0,\n right = resultLen - 1;\n while (left < right) {\n const mid = (left + right) >>> 1;\n if (arr[result[mid]!]! < val) left = mid + 1;\n else right = mid;\n }\n\n if (val < arr[result[left]!]!) {\n if (left > 0) predecessors[i] = result[left - 1]!;\n result[left] = i;\n }\n }\n\n // Backtracking to reconstruct the LIS in the correct order\n const lis = new Int32Array(resultLen);\n for (let i = resultLen - 1, v = result[resultLen - 1]!; i >= 0; i--) {\n lis[i] = v;\n v = predecessors[v]!;\n }\n\n return lis;\n}\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) => 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 $emptyEl = $(empty).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. Prepare keys and identify removals (O(N) with cache-friendly loop)\n const newKeys: (string | number)[] = new Array(itemCount);\n const newKeySet = new Set<string | number>();\n\n for (let i = 0; i < itemCount; i++) {\n const item = items[i] as T; // Type assertion for generic T\n const k = getKey(item, i);\n newKeys[i] = k;\n newKeySet.add(k);\n }\n\n // 3. Remove vanished items (O(M)) - Respects onRemove callback\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 const el = entry.$el[0];\n if (el) registry.cleanup(el);\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 // If we adjusted from non-empty to empty, we can stop here after removal\n if (itemCount === 0) {\n oldKeys = [];\n return;\n }\n\n // 4. LIS Reconciliation (O(N log N))\n // Map keys to their OLD index for LIS input\n const oldIndexMap = new Map<string | number, number>();\n for (let i = 0; i < oldKeys.length; i++) {\n const k = oldKeys[i];\n if (k !== undefined) oldIndexMap.set(k, i);\n }\n\n // Input for LIS: where each new item came from in the old list\n const newIndices = new Int32Array(itemCount);\n for (let i = 0; i < itemCount; i++) {\n const k = newKeys[i];\n newIndices[i] = k !== undefined ? (oldIndexMap.get(k) ?? -1) : -1;\n }\n\n const lisArr = getLIS(newIndices);\n let lisIdx = lisArr.length - 1;\n\n // 5. 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: Update then potentially MOVE\n entry.item = item;\n const el = entry.$el[0];\n if (!el) continue;\n\n if (update) update(entry.$el, item, i);\n\n const isStable = lisIdx >= 0 && lisArr[lisIdx] === i;\n if (isStable) {\n lisIdx--;\n // Even if stable in LIS, check if the relative order with nextNode is correct\n const currentNext = el.nextSibling;\n if (currentNext !== nextNode) {\n if (nextNode) entry.$el.insertBefore(nextNode);\n else entry.$el.appendTo($container);\n }\n } else if (nextNode) {\n entry.$el.insertBefore(nextNode);\n } else {\n entry.$el.appendTo($container);\n }\n nextNode = el;\n } else {\n // New Item: Render and INSERT\n const rendered = render(item, i);\n const $el: JQuery = (\n rendered instanceof Element ? $(rendered) : $(rendered as string)\n ) as JQuery;\n itemMap.set(k, { $el, item });\n\n if (nextNode) $el.insertBefore(nextNode);\n else $el.appendTo($container);\n\n if (bind) bind($el, item, i);\n if (onAdd) onAdd($el);\n\n debug.log('list', `${containerSelector} added item:`, k);\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 $el = $(this);\n const selector = getSelector(this);\n\n // Unmount existing component\n const existing = mountedComponents.get(this);\n if (existing) {\n debug.log('mount', `${selector} unmounting existing component`);\n existing();\n }\n\n debug.log('mount', `${selector} mounting component`);\n\n // Mount\n let userCleanup: undefined | (() => void);\n try {\n userCleanup = component($el, props);\n } catch (e) {\n console.error('[atom-effect-jquery] Mount error:', e);\n return;\n }\n\n // cleanup\n let isUnmounted = false;\n const fullCleanup = () => {\n if (isUnmounted) return;\n isUnmounted = true;\n\n debug.log('mount', `${selector} full cleanup`);\n\n if (typeof userCleanup === 'function') {\n try {\n userCleanup();\n } catch {}\n }\n registry.cleanupTree(this);\n mountedComponents.delete(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 mountedComponents.get(this)?.();\n });\n};\n","import $ from 'jquery';\nimport { registry } from './registry';\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<Function, Function>();\n\nlet isjQueryOverridesEnabled = false;\n\n/**\n * Patches jQuery methods to integrate with the reactive system.\n *\n * 1. Lifecycle Overrides (.remove, .empty, .detach):\n * - Automatically cleans up effects/bindings when elements are removed.\n * - Preserves bindings when elements are detached.\n *\n * 2. Event Batching (.on, .off):\n * - Wraps event handlers in batch() to optimize rendering.\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 (selector?: string) {\n // Filter elements if selector is provided, as per jQuery docs\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.cleanupTree(this);\n });\n\n return originalRemove.call(this, selector);\n };\n\n // .empty() - Delete children + Recursive Unsubscribe\n $.fn.empty = function () {\n this.each(function () {\n const children = this.querySelectorAll('*');\n children.forEach((child) => registry.cleanup(child));\n // Note: cleanupTree(this) would unsubscribe the element itself, which is incorrect for .empty().\n // We must clean up all descendants. `querySelectorAll('*')` achieves this.\n });\n\n return originalEmpty.call(this);\n };\n\n // .detach() - Remove from DOM + Keep Subscription (Marking)\n $.fn.detach = function (selector?: string) {\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.keep(this);\n });\n\n return originalDetach.call(this, selector);\n };\n\n // ========== Event Overrides ==========\n\n // Patch .on()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.on = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n\n let wrappedFn: Function | undefined;\n if (handlerMap.has(originalFn)) {\n wrappedFn = handlerMap.get(originalFn);\n } else {\n // biome-ignore lint/suspicious/noExplicitAny: internal this\n wrappedFn = function (this: any, ...eventArgs: any[]) {\n return originalFn.apply(this, eventArgs);\n };\n handlerMap.set(originalFn, wrappedFn);\n }\n\n args[fnIndex] = wrappedFn;\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOn.apply(this, args as any);\n };\n\n // Patch .off()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.off = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n if (handlerMap.has(originalFn)) {\n args[fnIndex] = handlerMap.get(originalFn);\n }\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOff.apply(this, args as any);\n };\n}\n\n// Alias for backward compatibility if needed, though we are refactoring.\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":["ee","v","O","h","T","I","B","b","w","l","te","g","t","i","D","y","U","u","M","se","V","k","ie","s","Q","G","n","p","ne","re","Y","H","x","$","oe","F","z","P","q","X","he","ue","N","ye","ce","m","j","_","f","a","S","C","d","ae","De","J","le","fe","de","pe","W","Ee","ge","Ce","A","K","L","Z","E","R","r","c","me","Se","Re","isReactive","value","getSelector","el","domEl","classes","getInitialDebugState","globalFlag","debugEnabled","debug","type","args","name","oldVal","newVal","$el","selector","highlightElement","TIMER_KEY","CLEANUP_TIMER_KEY","ORG_STYLE_KEY","timerId","originalStyles","cleanupTimerId","atomMetadata","atom","initialValue","options","instance","createAtom","nextTick","resolve","computed","effect","batch","untracked","isAtom","isComputed","BindingRegistry","node","fx","list","fn","effects","len","e","cleanups","children","child","registry","observer","enableAutoCleanup","root","mutations","mutation","removed","rLen","disableAutoCleanup","registerReactiveEffect","source","updater","debugType","createInputBindingState","applyInputBinding","debounceMs","event","parse","format","state","onCompositionStart","onCompositionEnd","syncAtomFromDom","onFocus","onBlur","formatted","onInput","currentVal","formatter","val","text","className","condition","prop","unit","cssValue","fxFn","cleanup","isUpdatingFromAtom","handler","bindText","ctx","bindHtml","bindClass","classMap","bindCss","cssMap","style","camelProp","match","bindAttr","attrMap","bindProp","propMap","bindShow","bindHide","bindVal","valConfig","bindChecked","bindEvents","eventMap","eventName","listener","getLIS","arr","predecessors","result","resultLen","left","right","mid","lis","key","render","bind","update","onAdd","onRemove","empty","getKey","item","$container","containerSelector","itemMap","removingKeys","oldKeys","$emptyEl","items","itemCount","newKeys","newKeySet","entry","cleanupItem","oldIndexMap","newIndices","lisArr","lisIdx","nextNode","rendered","mountedComponents","component","props","existing","userCleanup","isUnmounted","fullCleanup","handlerMap","isjQueryOverridesEnabled","enablejQueryOverrides","originalOn","originalOff","originalRemove","originalEmpty","originalDetach","fnIndex","originalFn","wrappedFn","eventArgs","enablejQueryBatching"],"mappings":"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"}
1
+ {"version":3,"file":"atom-effect-jquery.min.js","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 ee = {\n /** One second in milliseconds */\n ONE_SECOND_MS: 1e3\n}, v = {\n IDLE: \"idle\",\n PENDING: \"pending\",\n RESOLVED: \"resolved\",\n REJECTED: \"rejected\"\n}, O = {\n DISPOSED: 1,\n // 0001 - Effect has been disposed\n EXECUTING: 2\n // 0010 - Effect is currently executing\n}, h = {\n DIRTY: 1,\n // 0001 - Needs recomputation\n IDLE: 2,\n // 0010 - Initial state, not computed yet\n PENDING: 4,\n // 0100 - Async computation in progress\n RESOLVED: 8,\n // 1000 - Successfully computed\n REJECTED: 16,\n // 10000 - Computation failed\n RECOMPUTING: 32,\n // 100000 - Currently recomputing\n HAS_ERROR: 64\n // 1000000 - Has error state\n}, T = {\n SYNC: 1,\n NOTIFICATION_SCHEDULED: 2\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}, I = {\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}, j = {\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}, b = 1073741823, te = 20, w = 1 << te - 1, l = typeof process < \"u\" && process.env && process.env.NODE_ENV !== \"production\", se = Object.freeze([]);\nclass g 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, i = !0) {\n super(e), this.name = \"AtomError\", this.cause = t, this.recoverable = i, this.timestamp = /* @__PURE__ */ new Date();\n }\n}\nclass D extends g {\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 y extends g {\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 U extends g {\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 u = {\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 // 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 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}, M = /* @__PURE__ */ Symbol(\"debugName\"), ie = /* @__PURE__ */ Symbol(\"id\"), V = /* @__PURE__ */ Symbol(\"type\"), k = /* @__PURE__ */ Symbol(\"noDefaultValue\");\nfunction ne(s) {\n return \"dependencies\" in s && Array.isArray(s.dependencies);\n}\nlet Q = 0;\nfunction G(s, e, t) {\n if (s._visitedEpoch !== t) {\n if (s._visitedEpoch = t, s === e)\n throw new D(\"Indirect circular dependency detected\");\n if (ne(s)) {\n const i = s.dependencies;\n for (let n = 0; n < i.length; n++) {\n const r = i[n];\n r && G(r, e, t);\n }\n }\n }\n}\nconst p = {\n enabled: typeof process < \"u\" && process.env?.NODE_ENV === \"development\",\n maxDependencies: j.MAX_DEPENDENCIES,\n warnInfiniteLoop: j.WARN_INFINITE_LOOP,\n warn(s, e) {\n this.enabled && s && 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(s, e) {\n if (s === e)\n throw new D(\"Direct circular dependency detected\");\n this.enabled && (Q++, G(s, e, Q));\n },\n attachDebugInfo(s, e, t) {\n if (!this.enabled)\n return;\n const i = s;\n i[M] = `${e}_${t}`, i[ie] = t, i[V] = e;\n },\n getDebugName(s) {\n if (s != null && M in s)\n return s[M];\n },\n getDebugType(s) {\n if (s != null && V in s)\n return s[V];\n }\n};\nlet re = 1;\nconst oe = () => re++;\nclass Y {\n constructor() {\n this.flags = 0, this.version = 0, this._lastSeenEpoch = -1, this.id = oe() & b;\n }\n /**\n * Rotates the phase by 1, automatically incrementing cycle on overflow.\n *\n * Performance Benefits:\n * - Branchless: No conditional statements\n * - O(1): Single bitwise AND operation\n * - Smi-safe: Result always within 30-bit range (0x3fffffff)\n *\n * When Phase reaches 0xfffff (1,048,575), the next increment:\n * - Overflows into Cycle bits\n * - Phase resets to 0\n * - Cycle increments by 1\n *\n * @returns The new version after phase rotation\n */\n rotatePhase() {\n return this.version = this.version + 1 & b, this.version;\n }\n /**\n * Calculates the logical distance (shift) between current and cached version.\n *\n * Uses modular arithmetic to handle cycle wraparound correctly.\n * The result represents how many phase rotations have occurred since\n * the cached version was recorded.\n *\n * Performance Benefits:\n * - Branchless: Single subtraction with mask\n * - Handles wraparound: Works correctly even when version overflows\n *\n * Use Cases:\n * - Scheduler priority: Large shifts indicate stale updates\n * - Dependency staleness: Detect how outdated a cached value is\n *\n * @param cachedVersion - The previously cached version to compare against\n * @returns Non-negative shift distance (0 to 0x3fffffff)\n */\n getShift(e) {\n return this.version - e & b;\n }\n}\nclass H extends Y {\n /**\n * Subscribes a listener function or Subscriber object to value changes.\n *\n * @param listener - Function or Subscriber object to call when the value changes\n * @returns An unsubscribe function\n * @throws {AtomError} If listener is not a function or Subscriber\n */\n subscribe(e) {\n if (typeof e == \"object\" && e !== null && \"execute\" in e)\n return this._addSubscriber(this._getObjSubs(), e);\n if (typeof e != \"function\")\n throw new g(u.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);\n return this._addSubscriber(this._getFnSubs(), e);\n }\n /**\n * Gets the total number of active subscribers.\n */\n subscriberCount() {\n return (this._fnSubs?.length ?? 0) + (this._objSubs?.length ?? 0);\n }\n _addSubscriber(e, t) {\n if (e.indexOf(t) !== -1) return () => {\n };\n e.push(t);\n let i = !1;\n return () => {\n if (i) return;\n i = !0;\n const n = e.indexOf(t);\n if (n !== -1) {\n const r = e.length - 1;\n n !== r && (e[n] = e[r]), e.pop();\n }\n };\n }\n /**\n * Notifies all subscribers of a change.\n *\n * @param newValue - The new value\n * @param oldValue - The old value\n */\n _notifySubscribers(e, t) {\n const i = this._fnSubs;\n if (i)\n for (let r = i.length - 1; r >= 0; r--)\n try {\n const o = i[r];\n o && o(e, t);\n } catch (o) {\n console.error(\n new g(u.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, o)\n );\n }\n const n = this._objSubs;\n if (n)\n for (let r = n.length - 1; r >= 0; r--)\n try {\n const o = n[r];\n o && o.execute();\n } catch (o) {\n console.error(\n new g(u.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, o)\n );\n }\n }\n}\nclass z {\n constructor() {\n this.pool = [], this.maxPoolSize = 50, this.maxReusableCapacity = 256, this.stats = l ? {\n acquired: 0,\n released: 0,\n rejected: { frozen: 0, tooLarge: 0, poolFull: 0 }\n } : null;\n }\n /** Acquires an array from the pool or creates a new one if the pool is empty. */\n acquire() {\n return l && this.stats && this.stats.acquired++, this.pool.pop() ?? [];\n }\n /**\n * Releases an array back to the pool.\n * Clears the array before storing it.\n * @param arr - The array to release.\n * @param emptyConst - Optional reference to a constant empty array to skip.\n */\n release(e, t) {\n if (!(t && e === t)) {\n if (Object.isFrozen(e)) {\n l && this.stats && this.stats.rejected.frozen++;\n return;\n }\n if (e.length > this.maxReusableCapacity) {\n l && this.stats && this.stats.rejected.tooLarge++;\n return;\n }\n if (this.pool.length >= this.maxPoolSize) {\n l && this.stats && this.stats.rejected.poolFull++;\n return;\n }\n e.length = 0, this.pool.push(e), l && this.stats && this.stats.released++;\n }\n }\n /** Returns current stats for the pool (dev mode only). */\n getStats() {\n if (!l || !this.stats) return null;\n const { acquired: e, released: t, rejected: i } = this.stats, n = i.frozen + i.tooLarge + i.poolFull;\n return {\n acquired: e,\n released: t,\n rejected: i,\n leaked: e - t - n,\n poolSize: this.pool.length\n };\n }\n /** Resets the pool and its stats. */\n reset() {\n this.pool.length = 0, l && this.stats && (this.stats.acquired = 0, this.stats.released = 0, this.stats.rejected = { frozen: 0, tooLarge: 0, poolFull: 0 });\n }\n}\nconst _ = Object.freeze([]), f = Object.freeze([]), a = Object.freeze([]), S = new z(), C = new z(), d = new z();\nfunction he(s) {\n return s !== null && typeof s == \"object\" && \"value\" in s && \"subscribe\" in s && typeof s.subscribe == \"function\";\n}\nfunction De(s) {\n if (p.enabled && (s == null || typeof s == \"object\")) {\n const e = p.getDebugType(s);\n if (e)\n return e === \"computed\";\n }\n return he(s) && \"invalidate\" in s && typeof s.invalidate == \"function\";\n}\nfunction Ie(s) {\n return s !== null && typeof s == \"object\" && \"dispose\" in s && \"run\" in s && typeof s.dispose == \"function\" && typeof s.run == \"function\";\n}\nfunction $(s) {\n return s != null && typeof s.then == \"function\";\n}\nfunction ue(s) {\n return typeof s == \"object\" && s !== null;\n}\nfunction ce(s) {\n return (typeof s == \"object\" || typeof s == \"function\") && s !== null && typeof s.addDependency == \"function\";\n}\nfunction _e(s) {\n return typeof s == \"function\" && typeof s.addDependency != \"function\";\n}\nfunction ae(s) {\n return ue(s) && typeof s.execute == \"function\";\n}\nfunction J(s, e, t, i) {\n if (e) {\n if (ce(e)) {\n e.addDependency(s);\n return;\n }\n if (_e(e)) {\n const n = e;\n t.indexOf(n) === -1 && t.push(n);\n return;\n }\n ae(e) && i.indexOf(e) === -1 && i.push(e);\n }\n}\nfunction le(s, e, t, i) {\n if (e !== _ && t !== f)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o && (o._tempUnsub = t[r]);\n }\n const n = C.acquire();\n n.length = s.length;\n for (let r = 0; r < s.length; r++) {\n const o = s[r];\n o && (o._tempUnsub ? (n[r] = o._tempUnsub, o._tempUnsub = void 0) : (p.checkCircular(o, i), n[r] = o.subscribe(i)));\n }\n if (e !== _)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o?._tempUnsub && (o._tempUnsub(), o._tempUnsub = void 0);\n }\n return t !== f && C.release(t), n;\n}\nlet x = 0;\nfunction W() {\n return x = x + 1 & b || 1, x;\n}\nfunction fe() {\n return x;\n}\nlet F = 0, B = 0, P = !1;\nfunction q() {\n return P ? (l && console.warn(\n \"Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass\"\n ), !1) : (P = !0, F = F + 1 & b, B = 0, !0);\n}\nfunction X() {\n P = !1;\n}\nfunction de() {\n return P ? ++B : 0;\n}\nclass pe {\n constructor() {\n this.queueA = [], this.queueB = [], this.queue = this.queueA, this.queueSize = 0, this.urgentQueueA = [], this.urgentQueueB = [], this.urgentQueue = this.urgentQueueA, this.urgentQueueSize = 0, this._epoch = 0, this.isProcessing = !1, this.isBatching = !1, this.batchDepth = 0, this.batchQueue = [], this.batchQueueSize = 0, this.isFlushingSync = !1, this.maxFlushIterations = I.MAX_FLUSH_ITERATIONS;\n }\n get phase() {\n return this.isProcessing || this.isFlushingSync ? 2 : this.isBatching ? 1 : 0;\n }\n /**\n * Schedules a task for execution with optional priority based on phase shift.\n *\n * Priority Calculation (Branchless):\n * - If sourceNode and cachedVersion are provided, calculates shift\n * - Jobs with shift >= PHASE_THRESHOLD go to urgentQueue\n * - Uses branchless bit manipulation: ((shift - THRESHOLD) >>> 31) ^ 1\n *\n * @param callback - The function to execute\n * @param sourceNode - Optional reactive node for shift calculation\n * @throws {SchedulerError} If the callback is not a function\n */\n schedule(e, t) {\n if (typeof e != \"function\")\n throw new U(\"Scheduler callback must be a function\");\n if (e._nextEpoch !== this._epoch)\n if (e._nextEpoch = this._epoch, this.isBatching || this.isFlushingSync)\n this.batchQueue[this.batchQueueSize++] = e;\n else {\n const i = this._calculateUrgency(e, t);\n this.urgentQueue[this.urgentQueueSize] = e, this.queue[this.queueSize] = e, this.urgentQueueSize += i, this.queueSize += i ^ 1, this.isProcessing || this.flush();\n }\n }\n /**\n * Calculates urgency flag using branchless bit manipulation.\n *\n * Formula: ((shift - PHASE_THRESHOLD) >>> 31) ^ 1\n * - If shift >= THRESHOLD: (negative >>> 31) = 0, XOR 1 = 1 (urgent)\n * - If shift < THRESHOLD: (positive >>> 31) = 0... wait, that's wrong\n *\n * Correct formula: (shift >= THRESHOLD) ? 1 : 0\n * Branchless: ((PHASE_THRESHOLD - 1 - shift) >>> 31)\n *\n * @returns 1 if urgent, 0 if normal\n */\n _calculateUrgency(e, t) {\n if (!t || e._cachedVersion === void 0)\n return 0;\n const i = t.getShift(e._cachedVersion);\n return w - 1 - i >>> 31 & 1;\n }\n flush() {\n this.isProcessing || this.queueSize === 0 && this.urgentQueueSize === 0 || (this.isProcessing = !0, queueMicrotask(() => {\n try {\n if (this.queueSize === 0 && this.urgentQueueSize === 0) return;\n const e = q();\n this._drainQueue(), e && X();\n } finally {\n this.isProcessing = !1, (this.queueSize > 0 || this.urgentQueueSize > 0) && !this.isBatching && this.flush();\n }\n }));\n }\n flushSync() {\n this.isFlushingSync = !0;\n const e = q();\n try {\n this._mergeBatchQueue(), this._drainQueue();\n } finally {\n this.isFlushingSync = !1, e && X();\n }\n }\n _mergeBatchQueue() {\n if (this._epoch++, this.batchQueueSize > 0) {\n for (let e = 0; e < this.batchQueueSize; e++) {\n const t = this.batchQueue[e];\n t && t._nextEpoch !== this._epoch && (t._nextEpoch = this._epoch, this.queue[this.queueSize++] = t);\n }\n this.batchQueueSize = 0;\n }\n }\n /**\n * Drains all queues, processing urgent queue completely first.\n *\n * Processing Order:\n * 1. Process all urgent jobs (high phase shift = stale updates)\n * 2. Process normal jobs\n * 3. Repeat until both queues are empty\n *\n * This ordering reduces glitches by ensuring that the most\n * impactful state changes are propagated first.\n */\n _drainQueue() {\n let e = 0;\n for (; this.urgentQueueSize > 0 || this.queueSize > 0; ) {\n if (++e > this.maxFlushIterations) {\n this._handleFlushOverflow();\n return;\n }\n this.urgentQueueSize > 0 && this._processUrgentQueue(), this.queueSize > 0 && this._processCurrentQueue(), this._mergeBatchQueue();\n }\n }\n /**\n * Processes the urgent queue using double-buffering.\n */\n _processUrgentQueue() {\n const e = this.urgentQueue, t = this.urgentQueueSize;\n this.urgentQueue = this.urgentQueue === this.urgentQueueA ? this.urgentQueueB : this.urgentQueueA, this.urgentQueueSize = 0, this._epoch++, this._processJobs(e, t);\n }\n _processCurrentQueue() {\n const e = this.queue, t = this.queueSize;\n this.queue = this.queue === this.queueA ? this.queueB : this.queueA, this.queueSize = 0, this._epoch++, this._processJobs(e, t);\n }\n _handleFlushOverflow() {\n console.error(\n new U(\n `Maximum flush iterations (${this.maxFlushIterations}) exceeded. Possible infinite loop.`\n )\n ), this.queueSize = 0, this.queue.length = 0, this.urgentQueueSize = 0, this.urgentQueue.length = 0, this.batchQueueSize = 0;\n }\n _processJobs(e, t) {\n for (let i = 0; i < t; i++) {\n const n = e[i];\n if (n)\n try {\n n();\n } catch (r) {\n console.error(\n new U(\"Error occurred during scheduler execution\", r)\n );\n }\n }\n e.length = 0;\n }\n /** Starts a new batch of updates. Updates will be deferred until endBatch is called. */\n startBatch() {\n this.batchDepth++, this.isBatching = !0;\n }\n /**\n * Ends the current batch. If the batch depth reaches zero, all pending updates are flushed synchronously.\n */\n endBatch() {\n this.batchDepth = Math.max(0, this.batchDepth - 1), this.batchDepth === 0 && (this.flushSync(), this.isBatching = !1);\n }\n /**\n * Configures the maximum number of iterations allowed during a synchronous flush.\n * Used to prevent infinite loops.\n * @param max - Maximum iterations count.\n */\n setMaxFlushIterations(e) {\n if (e < I.MIN_FLUSH_ITERATIONS)\n throw new U(\n `Max flush iterations must be at least ${I.MIN_FLUSH_ITERATIONS}`\n );\n this.maxFlushIterations = e;\n }\n}\nconst N = new pe();\nclass Ee {\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 i = this.current;\n this.current = e;\n try {\n return t();\n } finally {\n this.current = i;\n }\n }\n /**\n * Retrieves the listener currently associated with the tracking context.\n */\n getCurrent() {\n return this.current;\n }\n}\nconst m = new Ee();\nfunction ge(s) {\n if (typeof s != \"function\")\n throw new g(\"Untracked callback must be a function\");\n const e = m.current;\n m.current = null;\n try {\n return s();\n } finally {\n m.current = e;\n }\n}\nclass Se extends H {\n constructor(e, t) {\n super(), this._fnSubs = null, this._objSubs = null, this._value = e, t && (this.flags |= T.SYNC), p.attachDebugInfo(this, \"atom\", this.id);\n }\n _getFnSubs() {\n return this._fnSubs ??= [], this._fnSubs;\n }\n _getObjSubs() {\n return this._objSubs ??= [], this._objSubs;\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 = m.current;\n return e && J(this, e, this._getFnSubs(), this._getObjSubs()), this._value;\n }\n /**\n * Sets a new value and schedules notifications if the value has changed.\n */\n set value(e) {\n if (Object.is(this._value, e)) return;\n const t = this._value;\n this._value = e, this.rotatePhase(), ((this._fnSubs?.length ?? 0) > 0 || (this._objSubs?.length ?? 0) > 0) && this._scheduleNotification(t);\n }\n /**\n * Schedules or flushes notifications based on sync mode and batching state.\n */\n _scheduleNotification(e) {\n if (this.flags & T.NOTIFICATION_SCHEDULED || (this._pendingOldValue = e, this.flags |= T.NOTIFICATION_SCHEDULED), this.flags & T.SYNC && !N.isBatching) {\n this._flushNotifications();\n return;\n }\n this._notifyTask || (this._notifyTask = () => this._flushNotifications()), N.schedule(this._notifyTask);\n }\n _flushNotifications() {\n if (!(this.flags & T.NOTIFICATION_SCHEDULED)) return;\n const e = this._pendingOldValue, t = this._value;\n this._pendingOldValue = void 0, this.flags &= -3, this._notifySubscribers(t, e);\n }\n peek() {\n return this._value;\n }\n dispose() {\n this._fnSubs = null, this._objSubs = null, this._value = void 0, this._notifyTask = void 0;\n }\n}\nfunction Ce(s, e = {}) {\n return new Se(s, e.sync ?? !1);\n}\nfunction A(s, e, t) {\n if (s instanceof TypeError)\n return new e(`Type error (${t}): ${s.message}`, s);\n if (s instanceof ReferenceError)\n return new e(`Reference error (${t}): ${s.message}`, s);\n if (s instanceof g)\n return s;\n const i = s instanceof Error ? s.message : String(s), n = s instanceof Error ? s : null;\n return new e(`Unexpected error (${t}): ${i}`, n);\n}\nconst K = h.RESOLVED | h.PENDING | h.REJECTED, L = Array(K + 1).fill(v.IDLE);\nL[h.RESOLVED] = v.RESOLVED;\nL[h.PENDING] = v.PENDING;\nL[h.REJECTED] = v.REJECTED;\nclass Z extends H {\n constructor(e, t = {}) {\n if (typeof e != \"function\")\n throw new D(u.COMPUTED_MUST_BE_FUNCTION);\n if (super(), this._fnSubs = null, this._objSubs = null, this._cachedErrors = null, this._errorCacheEpoch = -1, this._asyncStartAggregateVersion = 0, this._asyncRetryCount = 0, this.MAX_ASYNC_RETRIES = 3, this._value = void 0, this.flags = h.DIRTY | h.IDLE, this._error = null, this._promiseId = 0, this._equal = t.equal ?? Object.is, this._fn = e, this._defaultValue = \"defaultValue\" in t ? t.defaultValue : k, this._hasDefaultValue = this._defaultValue !== k, this._onError = t.onError ?? null, this.MAX_PROMISE_ID = Number.MAX_SAFE_INTEGER - 1, this._dependencies = _, this._dependencyVersions = a, this._unsubscribes = f, this._notifyJob = () => {\n const i = this._fnSubs;\n if (i)\n for (let r = i.length - 1; r >= 0; r--)\n try {\n const o = i[r];\n o && o(void 0, void 0);\n } catch (o) {\n console.error(o);\n }\n const n = this._objSubs;\n if (n)\n for (let r = n.length - 1; r >= 0; r--)\n try {\n const o = n[r];\n o && o.execute();\n } catch (o) {\n console.error(o);\n }\n }, this._trackable = Object.assign(() => this._markDirty(), {\n addDependency: (i) => {\n }\n }), p.attachDebugInfo(this, \"computed\", this.id), p.enabled) {\n const i = this;\n i.subscriberCount = this.subscriberCount.bind(this), i.isDirty = () => this._isDirty(), i.dependencies = this._dependencies, i.stateFlags = this._getFlagsAsString();\n }\n if (t.lazy === !1)\n try {\n this._recompute();\n } catch {\n }\n }\n _getFnSubs() {\n return this._fnSubs ??= [], this._fnSubs;\n }\n _getObjSubs() {\n return this._objSubs ??= [], this._objSubs;\n }\n get value() {\n return this._registerTracking(), this._computeValue();\n }\n peek() {\n return this._value;\n }\n get state() {\n return this._registerTracking(), this._getAsyncState();\n }\n get hasError() {\n if (this._registerTracking(), this._isRejected())\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t && \"hasError\" in t && t.hasError)\n return !0;\n }\n return !1;\n }\n get isValid() {\n return !this.hasError;\n }\n get errors() {\n if (this._registerTracking(), !this.hasError)\n return se;\n const e = fe();\n if (this._errorCacheEpoch === e && this._cachedErrors !== null)\n return this._cachedErrors;\n const t = /* @__PURE__ */ new Set();\n this._error && t.add(this._error);\n for (let i = 0; i < this._dependencies.length; i++) {\n const n = this._dependencies[i];\n if (n && \"errors\" in n) {\n const r = n.errors;\n for (let o = 0; o < r.length; o++) {\n const c = r[o];\n c && t.add(c);\n }\n }\n }\n return this._cachedErrors = Object.freeze([...t]), this._errorCacheEpoch = e, this._cachedErrors;\n }\n get lastError() {\n return this._registerTracking(), this._error;\n }\n get isPending() {\n return this._registerTracking(), this._isPending();\n }\n get isResolved() {\n return this._registerTracking(), this._isResolved();\n }\n invalidate() {\n this._markDirty(), this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a), this._errorCacheEpoch = -1, this._cachedErrors = null;\n }\n dispose() {\n if (this._unsubscribes !== f) {\n for (let e = 0; e < this._unsubscribes.length; e++) {\n const t = this._unsubscribes[e];\n t && t();\n }\n C.release(this._unsubscribes), this._unsubscribes = f;\n }\n this._dependencies !== _ && (S.release(this._dependencies), this._dependencies = _), this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a), this._fnSubs = null, this._objSubs = null, this.flags = h.DIRTY | h.IDLE, this._error = null, this._value = void 0, this._promiseId = (this._promiseId + 1) % this.MAX_PROMISE_ID, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n // State flag operations\n _isDirty() {\n return (this.flags & h.DIRTY) !== 0;\n }\n _setDirty() {\n this.flags |= h.DIRTY;\n }\n _clearDirty() {\n this.flags &= -2;\n }\n _isIdle() {\n return (this.flags & h.IDLE) !== 0;\n }\n _setIdle() {\n this.flags |= h.IDLE, this.flags &= -29;\n }\n _isPending() {\n return (this.flags & h.PENDING) !== 0;\n }\n _setPending() {\n this.flags |= h.PENDING, this.flags &= -27;\n }\n _isResolved() {\n return (this.flags & h.RESOLVED) !== 0;\n }\n _setResolved() {\n this.flags |= h.RESOLVED, this.flags &= -87;\n }\n _isRejected() {\n return (this.flags & h.REJECTED) !== 0;\n }\n _setRejected() {\n this.flags |= h.REJECTED | h.HAS_ERROR, this.flags &= -15;\n }\n _isRecomputing() {\n return (this.flags & h.RECOMPUTING) !== 0;\n }\n _setRecomputing(e) {\n const t = h.RECOMPUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n _getAsyncState() {\n return L[this.flags & K];\n }\n _getFlagsAsString() {\n const e = [];\n return this._isDirty() && e.push(\"DIRTY\"), this._isIdle() && e.push(\"IDLE\"), this._isPending() && e.push(\"PENDING\"), this._isResolved() && e.push(\"RESOLVED\"), this._isRejected() && e.push(\"REJECTED\"), this._isRecomputing() && e.push(\"RECOMPUTING\"), e.join(\" | \");\n }\n _computeValue() {\n return this._isRecomputing() ? this._value : ((this._isDirty() || this._isIdle()) && this._recompute(), this._isPending() ? this._handlePending() : this._isRejected() ? this._handleRejected() : this._value);\n }\n _recompute() {\n if (this._isRecomputing()) return;\n this._setRecomputing(!0);\n const e = this._prepareComputationContext();\n let t = !1;\n try {\n const i = m.run(this._trackable, this._fn);\n this._commitDependencies(e), t = !0, $(i) ? this._handleAsyncComputation(i) : this._handleSyncResult(i);\n } catch (i) {\n if (!t)\n try {\n this._commitDependencies(e), t = !0;\n } catch (n) {\n this._handleComputationError(n);\n }\n this._handleComputationError(i);\n } finally {\n this._cleanupContext(e, t), this._setRecomputing(!1);\n }\n }\n _prepareComputationContext() {\n const e = this._dependencies, t = this._dependencyVersions, i = S.acquire(), n = d.acquire(), r = W(), o = { depCount: 0 }, c = (E) => {\n E._lastSeenEpoch !== r && (E._lastSeenEpoch = r, o.depCount < i.length ? (i[o.depCount] = E, n[o.depCount] = E.version) : (i.push(E), n.push(E.version)), o.depCount++);\n }, R = this._trackable.addDependency;\n return this._trackable.addDependency = c, { prevDeps: e, prevVersions: t, nextDeps: i, nextVersions: n, originalAdd: R, state: o };\n }\n _commitDependencies(e) {\n const { nextDeps: t, nextVersions: i, state: n, prevDeps: r } = e;\n t.length = n.depCount, i.length = n.depCount, this._unsubscribes = le(t, r, this._unsubscribes, this), this._dependencies = t, this._dependencyVersions = i;\n }\n _cleanupContext(e, t) {\n this._trackable.addDependency = e.originalAdd, t ? (e.prevDeps !== _ && S.release(e.prevDeps), e.prevVersions !== a && d.release(e.prevVersions)) : (S.release(e.nextDeps), d.release(e.nextVersions));\n }\n /**\n * Calculates aggregate shift from all dependencies.\n * Used for scheduling priority in computed chains.\n *\n * Performance: O(N) where N = dependency count\n * Branchless: Each dep.getShift uses modular arithmetic\n *\n * @returns Sum of all dependency shifts (capped at SMI_MAX)\n */\n _getAggregateShift() {\n let e = 0;\n const t = this._dependencies, i = this._dependencyVersions;\n for (let n = 0; n < t.length; n++) {\n const r = t[n], o = i[n];\n r && o !== void 0 && (e = e + r.getShift(o) & b);\n }\n return e;\n }\n /**\n * Checks if this computed should be scheduled with urgent priority.\n * Based on aggregate shift from all dependencies.\n *\n * @returns true if aggregate shift exceeds PHASE_THRESHOLD\n */\n isUrgent() {\n return this._getAggregateShift() >= w;\n }\n _handleSyncResult(e) {\n this._finalizeResolution(e);\n }\n _handleAsyncComputation(e) {\n this._setPending(), this._clearDirty(), this._notifyJob(), this._asyncStartAggregateVersion = this._captureVersionSnapshot(), this._asyncRetryCount = 0, this._promiseId = this._promiseId >= this.MAX_PROMISE_ID ? 1 : this._promiseId + 1;\n const t = this._promiseId;\n e.then((i) => {\n if (t !== this._promiseId) return;\n const r = this._captureVersionSnapshot() - this._asyncStartAggregateVersion & b;\n if (w - 1 - r >>> 31 & 1) {\n if (this._asyncRetryCount < this.MAX_ASYNC_RETRIES) {\n this._asyncRetryCount++, this._markDirty();\n return;\n }\n const c = new D(\n `Async drift exceeded threshold after ${this.MAX_ASYNC_RETRIES} retries. Dependencies changed too rapidly for stable computation.`\n );\n this._handleAsyncRejection(c);\n return;\n }\n this._handleAsyncResolution(i);\n }).catch((i) => {\n t === this._promiseId && this._handleAsyncRejection(i);\n });\n }\n /**\n * Captures the aggregate version of all dependencies.\n * Used for phase drift validation in async computations.\n *\n * @returns Sum of all dependency versions (capped at SMI_MAX)\n */\n _captureVersionSnapshot() {\n let e = 0;\n const t = this._dependencies;\n for (let i = 0; i < t.length; i++) {\n const n = t[i];\n n && (e = e + n.version & b);\n }\n return e;\n }\n _handleAsyncResolution(e) {\n this._finalizeResolution(e), this._notifyJob();\n }\n /**\n * Unified success finalization for sync and async results.\n * Handles phase rotation, state transition, and error cache clearing.\n */\n _finalizeResolution(e) {\n (!this._isResolved() || !this._equal(this._value, e)) && this.rotatePhase(), this._value = e, this._clearDirty(), this._setResolved(), this._error = null, this._setRecomputing(!1), this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n _handleAsyncRejection(e) {\n const t = A(e, D, u.COMPUTED_ASYNC_COMPUTATION_FAILED);\n if (!this._isRejected() && this.rotatePhase(), this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (n) {\n console.error(u.CALLBACK_ERROR_IN_ERROR_HANDLER, n);\n }\n this._notifyJob();\n }\n _handleComputationError(e) {\n const t = A(e, D, u.COMPUTED_COMPUTATION_FAILED);\n if (this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (i) {\n console.error(u.CALLBACK_ERROR_IN_ERROR_HANDLER, i);\n }\n throw t;\n }\n _handlePending() {\n if (this._hasDefaultValue)\n return this._defaultValue;\n throw new D(u.COMPUTED_ASYNC_PENDING_NO_DEFAULT);\n }\n _handleRejected() {\n if (this._error?.recoverable && this._hasDefaultValue)\n return this._defaultValue;\n throw this._error;\n }\n /** Subscriber interface - marks dirty on dependency change */\n execute() {\n this._markDirty();\n }\n _markDirty() {\n this._isRecomputing() || this._isDirty() || (this._setDirty(), this._notifyJob());\n }\n _registerTracking() {\n J(this, m.getCurrent(), this._getFnSubs(), this._getObjSubs());\n }\n}\nObject.freeze(Z.prototype);\nfunction me(s, e = {}) {\n return new Z(s, e);\n}\nclass be extends Y {\n /**\n * Creates a new EffectImpl instance.\n * @param fn - The effect function to run.\n * @param options - Configuration options for the effect.\n */\n constructor(e, t = {}) {\n super(), this.run = () => {\n if (this.isDisposed)\n throw new y(u.EFFECT_MUST_BE_FUNCTION);\n this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a), this.execute();\n }, this.dispose = () => {\n if (!this.isDisposed) {\n if (this._setDisposed(), this._safeCleanup(), this._unsubscribes !== f) {\n for (let n = 0; n < this._unsubscribes.length; n++) {\n const r = this._unsubscribes[n];\n r && r();\n }\n C.release(this._unsubscribes), this._unsubscribes = f;\n }\n this._dependencies !== _ && (S.release(this._dependencies), this._dependencies = _), this._dependencyVersions !== a && (d.release(this._dependencyVersions), this._dependencyVersions = a);\n }\n }, this.addDependency = (n) => {\n if (this.isExecuting && this._nextDeps && this._nextUnsubs && this._nextVersions) {\n const r = this._currentEpoch;\n if (n._lastSeenEpoch === r) return;\n n._lastSeenEpoch = r, this._nextDeps.push(n), this._nextVersions.push(n.version), n._tempUnsub ? (this._nextUnsubs.push(n._tempUnsub), n._tempUnsub = void 0) : this._subscribeTo(n);\n }\n }, this.execute = () => {\n if (this.isDisposed || this.isExecuting || !this._shouldExecute()) return;\n this._checkInfiniteLoop(), this._setExecuting(!0), this._safeCleanup();\n const n = this._prepareEffectExecutionContext();\n let r = !1;\n try {\n const o = m.run(this, this._fn);\n this._commitEffect(n), r = !0, this._checkLoopWarnings(), $(o) ? o.then((c) => {\n !this.isDisposed && typeof c == \"function\" && (this._cleanup = c);\n }).catch((c) => {\n this._handleExecutionError(c);\n }) : this._cleanup = typeof o == \"function\" ? o : null;\n } catch (o) {\n r = !0, this._handleExecutionError(o), this._cleanup = null;\n } finally {\n this._cleanupEffect(n, r), this._setExecuting(!1);\n }\n }, this._cleanup = null, this._dependencies = _, this._dependencyVersions = a, this._unsubscribes = f, this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, 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 ?? I.MAX_EXECUTIONS_PER_SECOND, this._maxExecutionsPerFlush = t.maxExecutionsPerFlush ?? I.MAX_EXECUTIONS_PER_EFFECT, this._trackModifications = t.trackModifications ?? !1, this._historyPtr = 0;\n const i = Number.isFinite(this._maxExecutions);\n this._historyCapacity = i ? Math.min(this._maxExecutions + 1, I.MAX_EXECUTIONS_PER_SECOND + 1) : 0, this._history = l && i && this._historyCapacity > 0 ? new Array(this._historyCapacity).fill(0) : null, this._executionCount = 0, p.attachDebugInfo(this, \"effect\", this.id);\n }\n /**\n * Prepares the execution context by acquiring pools and setting up epoch.\n * @returns The prepared EffectExecutionContext.\n */\n _prepareEffectExecutionContext() {\n const e = this._dependencies, t = this._dependencyVersions, i = this._unsubscribes, n = S.acquire(), r = d.acquire(), o = C.acquire(), c = W();\n if (e !== _ && i !== f)\n for (let R = 0; R < e.length; R++) {\n const E = e[R];\n E && (E._tempUnsub = i[R]);\n }\n return this._nextDeps = n, this._nextVersions = r, this._nextUnsubs = o, this._currentEpoch = c, { prevDeps: e, prevVersions: t, prevUnsubs: i, nextDeps: n, nextVersions: r, nextUnsubs: o };\n }\n /**\n * Commits the tracked dependencies as the current active dependencies.\n * @param ctx - The current effect context.\n */\n _commitEffect(e) {\n const t = e.nextDeps.length;\n e.nextDeps.length = t, e.nextVersions.length = t, this._dependencies = e.nextDeps, this._dependencyVersions = e.nextVersions, this._unsubscribes = e.nextUnsubs;\n }\n /**\n * Cleans up the effect execution context, releasing resources back to pools.\n * @param ctx - The effect context to clean up.\n * @param committed - Whether the changes were committed to the effect.\n */\n _cleanupEffect(e, t) {\n if (this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, t) {\n if (e.prevDeps !== _) {\n for (let i = 0; i < e.prevDeps.length; i++) {\n const n = e.prevDeps[i];\n n?._tempUnsub && (n._tempUnsub(), n._tempUnsub = void 0);\n }\n S.release(e.prevDeps);\n }\n e.prevUnsubs !== f && C.release(e.prevUnsubs), e.prevVersions !== a && d.release(e.prevVersions);\n } else {\n S.release(e.nextDeps), d.release(e.nextVersions);\n for (let i = 0; i < e.nextUnsubs.length; i++)\n e.nextUnsubs[i]?.();\n if (C.release(e.nextUnsubs), e.prevDeps !== _)\n for (let i = 0; i < e.prevDeps.length; i++) {\n const n = e.prevDeps[i];\n n && (n._tempUnsub = void 0);\n }\n }\n }\n /**\n * Subscribes to a dependency's changes.\n * @param dep - The dependency to subscribe to.\n */\n _subscribeTo(e) {\n try {\n const t = e.subscribe(() => {\n this._trackModifications && this.isExecuting && (e._modifiedAtEpoch = this._currentEpoch), this._sync ? this.execute() : N.schedule(this.execute);\n });\n this._nextUnsubs && this._nextUnsubs.push(t);\n } catch (t) {\n console.error(A(t, y, u.EFFECT_EXECUTION_FAILED)), this._nextUnsubs && this._nextUnsubs.push(() => {\n });\n }\n }\n /**\n * Whether the effect has been disposed.\n */\n get isDisposed() {\n return (this.flags & O.DISPOSED) !== 0;\n }\n /**\n * Total number of times this effect has executed.\n */\n get executionCount() {\n return this._executionCount;\n }\n /**\n * Whether the effect is currently executing.\n */\n get isExecuting() {\n return (this.flags & O.EXECUTING) !== 0;\n }\n _setDisposed() {\n this.flags |= O.DISPOSED;\n }\n _setExecuting(e) {\n const t = O.EXECUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n /**\n * Executes the cleanup function if it exists.\n */\n _safeCleanup() {\n if (this._cleanup) {\n try {\n this._cleanup();\n } catch (e) {\n console.error(A(e, y, u.EFFECT_CLEANUP_FAILED));\n }\n this._cleanup = null;\n }\n }\n /**\n * Checks for infinite loops by tracking execution counts within a flush and time period.\n * @throws {EffectError} If an infinite loop is detected.\n */\n _checkInfiniteLoop() {\n if (this._lastFlushEpoch !== F && (this._lastFlushEpoch = F, this._executionsInEpoch = 0), this._executionsInEpoch++, this._executionsInEpoch > this._maxExecutionsPerFlush && this._throwInfiniteLoopError(\"per-effect\"), de() > I.MAX_EXECUTIONS_PER_FLUSH && this._throwInfiniteLoopError(\"global\"), this._executionCount++, this._history && this._maxExecutions > 0) {\n const e = Date.now(), t = this._historyPtr, i = this._historyCapacity;\n this._history[t] = e;\n const n = (t + 1) % i, r = this._history[n] ?? 0;\n if (this._historyPtr = n, r > 0 && e - r < ee.ONE_SECOND_MS) {\n const o = new y(\n `Effect executed ${i} times within 1 second. Infinite loop suspected`\n );\n if (this.dispose(), console.error(o), this._onError && this._onError(o), l)\n throw o;\n }\n }\n }\n _throwInfiniteLoopError(e) {\n const t = new y(\n `Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${B}`\n );\n throw this.dispose(), console.error(t), t;\n }\n /**\n * Determines if the effect should execute based on dependency versions.\n * @returns true if any dependency has changed or if it's the first run.\n */\n _shouldExecute() {\n if (this._dependencies === _ || this._dependencyVersions === a)\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t) {\n if (\"value\" in t)\n try {\n ge(() => t.value);\n } catch {\n return !0;\n }\n if (t.version !== this._dependencyVersions[e])\n return !0;\n }\n }\n return !1;\n }\n /**\n * Handles errors occurring during effect execution.\n * Wraps the error, logs it to console, and calls onError callback if provided.\n */\n _handleExecutionError(e) {\n const t = A(e, y, u.EFFECT_EXECUTION_FAILED);\n console.error(t), this._onError && this._onError(t);\n }\n /**\n * Checks for potential infinite loops where an effect modifies its own dependencies.\n * Only active if trackModifications is enabled and debug is on.\n */\n _checkLoopWarnings() {\n if (this._trackModifications && p.enabled) {\n const e = this._dependencies;\n for (let t = 0; t < e.length; t++) {\n const i = e[t];\n i && i._modifiedAtEpoch === this._currentEpoch && p.warn(\n !0,\n `Effect is reading a dependency (${p.getDebugName(i) || \"unknown\"}) that it just modified. Infinite loop may occur`\n );\n }\n }\n }\n}\nfunction Re(s, e = {}) {\n if (typeof s != \"function\")\n throw new y(u.EFFECT_MUST_BE_FUNCTION);\n const t = new be(s, e);\n return t.execute(), t;\n}\nfunction Te(s) {\n if (typeof s != \"function\")\n throw new g(\"Batch callback must be a function\");\n N.startBatch();\n try {\n return s();\n } finally {\n N.endBatch();\n }\n}\nexport {\n v as AsyncState,\n g as AtomError,\n D as ComputedError,\n j as DEBUG_CONFIG,\n p as DEBUG_RUNTIME,\n y as EffectError,\n ye as POOL_CONFIG,\n I as SCHEDULER_CONFIG,\n U as SchedulerError,\n Ce as atom,\n Te as batch,\n me as computed,\n Re as effect,\n he as isAtom,\n De as isComputed,\n Ie as isEffect,\n N as scheduler,\n ge 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 * A reactive object is expected to have a 'value' property and a 'subscribe' method.\n *\n * @param value - The value to check.\n * @returns True if the value is reactive, false otherwise.\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 * If the source is reactive, it returns its current value; otherwise, it returns the source itself.\n *\n * @template T - The type of the value.\n * @param source - The reactive value or raw value to extract from.\n * @returns The extracted raw value.\n */\nexport function getValue<T>(source: ReactiveValue<T>): T {\n if (isReactive(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 * Accepts both raw Element and JQuery objects for flexibility.\n * This is primarily used for debugging and logging purposes to identify elements.\n *\n * @param el - The DOM element or JQuery object to generate a selector for.\n * @returns A string representing the element's ID, classes, or tag name.\n */\nexport function getSelector(el: Element | JQuery): string {\n if (!el) return 'unknown';\n // Handle JQuery objects by extracting the first DOM element\n const domEl = 'jquery' in el ? (el as JQuery)[0] : (el as Element);\n if (!domEl) return 'unknown';\n\n if (domEl.id) return `#${domEl.id}`;\n if (domEl.className) {\n const classes = String(domEl.className).split(/\\s+/).filter(Boolean).join('.');\n return classes ? `${domEl.tagName.toLowerCase()}.${classes}` : domEl.tagName.toLowerCase();\n }\n return domEl.tagName.toLowerCase();\n}\n\n/**\n * Longest Increasing Subsequence (LIS)\n * Optimized for hardware: Uses Int32Array for memory locality and cache hits.\n * Time Complexity: O(N log N), Space Complexity: O(N) but contiguous.\n */\nexport function getLIS(arr: Int32Array | number[]): Int32Array {\n const len = arr.length;\n if (len === 0) return new Int32Array(0);\n\n // predecessors: pointer to previous index in LIS for backtracking (N indices)\n const predecessors = new Int32Array(len);\n // result: indices of the currently found longest increasing subsequence\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 === -1) continue;\n\n if (resultLen === 0 || arr[result[resultLen - 1]!]! < val) {\n predecessors[i] = resultLen > 0 ? result[resultLen - 1]! : -1;\n result[resultLen++] = i;\n continue;\n }\n\n // Binary search for insertion point\n let left = 0,\n right = resultLen - 1;\n while (left < right) {\n const mid = (left + right) >>> 1;\n if (arr[result[mid]!]! < val) left = mid + 1;\n else right = mid;\n }\n\n if (val < arr[result[left]!]!) {\n if (left > 0) predecessors[i] = result[left - 1]!;\n result[left] = i;\n }\n }\n\n // Backtracking to reconstruct the LIS in the correct order\n const lis = new Int32Array(resultLen);\n for (let i = resultLen - 1, v = result[resultLen - 1]!; i >= 0; i--) {\n lis[i] = v;\n v = predecessors[v]!;\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 // Browser: check global flag\n if (typeof window !== 'undefined') {\n const globalFlag = (window as Window & { __ATOM_DEBUG__?: boolean }).__ATOM_DEBUG__;\n if (typeof globalFlag === 'boolean') {\n return globalFlag;\n }\n }\n\n // Vite support\n if (import.meta.env?.DEV && import.meta.env.MODE !== 'test') {\n return true;\n }\n\n // Node/Bundler check\n try {\n // @ts-expect-error\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') {\n return true;\n }\n } catch (_e) {\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 const label = name || 'anonymous';\n console.log(`[atom-effect-jquery] Atom \"${label}\" changed:`, oldVal, '→', newVal);\n }\n },\n\n /**\n * Logs DOM updates and triggers visual highlight.\n */\n domUpdated<T>($el: JQuery, type: string, value: T) {\n if (!debugEnabled) return;\n\n // Console logging\n const selector = getSelector($el);\n console.log(`[atom-effect-jquery] DOM updated: ${selector}.${type} =`, value);\n\n // Visual highlight (red border flash)\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 * Inspired by React DevTools \"Highlight updates\".\n *\n * Uses data attributes to manage state and prevent style pollution\n * when updates happen rapidly.\n */\nfunction highlightElement($el: JQuery): void {\n const el = $el[0];\n if (!el || !document.contains(el)) return;\n\n const TIMER_KEY = 'atom_debug_timer';\n const CLEANUP_TIMER_KEY = 'atom_debug_cleanup_timer';\n const ORG_STYLE_KEY = 'atom_debug_org_style';\n\n // 1. Clear existing timers for both restoration and cleanup\n clearTimeout($el.data(TIMER_KEY));\n clearTimeout($el.data(CLEANUP_TIMER_KEY));\n\n // 2. Save original style only if not already actively highlighting\n // (meaning this is the start of a highlight sequence)\n if (!$el.data(ORG_STYLE_KEY)) {\n $el.data(ORG_STYLE_KEY, {\n outline: $el.css('outline'),\n outlineOffset: $el.css('outline-offset'),\n transition: $el.css('transition'),\n });\n }\n\n // 3. Apply highlight style\n $el.css({\n outline: '2px solid rgba(255, 68, 68, 0.8)',\n 'outline-offset': '1px',\n transition: 'none', // Remove transition for instant feedback on update\n });\n\n // 4. Set timer to restore\n const timerId = setTimeout(() => {\n // Restore original styles\n const originalStyles = $el.data(ORG_STYLE_KEY);\n\n // We add a transition for the fade out\n $el.css('transition', 'outline 0.5s ease-out');\n\n // Defer the actual style restoration to allow transition to take effect\n requestAnimationFrame(() => {\n $el.css({\n outline: originalStyles?.outline || '',\n 'outline-offset': originalStyles?.outlineOffset || '',\n });\n\n // 5. Cleanup data after fade out\n // Wait for transition to finish (500ms)\n const cleanupTimerId = setTimeout(() => {\n $el.css('transition', originalStyles?.transition || '');\n $el.removeData(TIMER_KEY);\n $el.removeData(CLEANUP_TIMER_KEY);\n $el.removeData(ORG_STYLE_KEY);\n }, 500);\n $el.data(CLEANUP_TIMER_KEY, cleanupTimerId);\n });\n }, 100); // Flash duration\n\n $el.data(TIMER_KEY, timerId);\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 // Debug mode: Value change detection\n // Note: Wrapper logic removed due to interference with atom-effect internals (computed reactivity)\n // Revisit if safer interception method is found.\n /*\n if (debug.enabled || options.name) {\n // ... removed ...\n }\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\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 effects = new WeakMap<Element, EffectObject[]>();\n private cleanups = new WeakMap<Element, Array<() => void>>();\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 trackEffect(el: Element, fx: EffectObject): void {\n let list = this.effects.get(el);\n if (!list) {\n list = [];\n this.effects.set(el, list);\n if (!this.boundElements.has(el)) {\n this.boundElements.add(el);\n el.classList.add(AES_BOUND);\n }\n }\n list.push(fx);\n }\n\n trackCleanup(el: Element, fn: () => void): void {\n let list = this.cleanups.get(el);\n if (!list) {\n list = [];\n this.cleanups.set(el, list);\n if (!this.boundElements.has(el)) {\n this.boundElements.add(el);\n el.classList.add(AES_BOUND);\n }\n }\n list.push(fn);\n }\n\n hasBind(el: Element): boolean {\n return this.boundElements.has(el);\n }\n\n cleanup(el: Element): void {\n if (!this.boundElements.delete(el)) return;\n el.classList.remove(AES_BOUND);\n\n debug.cleanup(getSelector(el));\n\n // 1. Dispose Effects (Atom -> Subscription severed)\n const effects = this.effects.get(el);\n if (effects) {\n this.effects.delete(el);\n for (let i = 0, len = effects.length; i < len; i++) {\n const fx = effects[i];\n if (fx) {\n try {\n fx.dispose();\n } catch (e) {\n debug.warn('Effect dispose error:', e);\n }\n }\n }\n }\n\n // 2. Execute custom cleanups\n const cleanups = this.cleanups.get(el);\n if (cleanups) {\n this.cleanups.delete(el);\n for (let i = 0, len = cleanups.length; i < len; i++) {\n const fn = cleanups[i];\n if (fn) {\n try {\n fn();\n } catch (e) {\n debug.warn('Cleanup error:', e);\n }\n }\n }\n }\n }\n\n cleanupDescendants(el: Element): void {\n // Traverse descendants (Hot Path: only visit bound nodes)\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 bound reference\n if (child && this.boundElements.has(child)) {\n this.cleanup(child);\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 mutation = mutations[i];\n if (!mutation) continue;\n const removed = mutation.removedNodes;\n for (let j = 0, rLen = removed.length; j < rLen; j++) {\n const node = removed[j];\n if (!node) continue;\n\n // Skip if kept (detached), explicitly ignored, or still connected\n if (registry.isKept(node) || registry.isIgnored(node) || node.isConnected) continue;\n\n if (node.nodeType === 1) {\n // Node.ELEMENT_NODE\n registry.cleanupTree(node as Element);\n }\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 const $el = $(el);\n const domEl = el;\n\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = source.value;\n updater(value);\n debug.domUpdated($el, debugType, value);\n });\n registry.trackEffect(domEl, fx);\n } else {\n updater(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;\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;\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}\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 /** Current binding phase - makes state transitions explicit and traceable */\n phase: 'idle' | 'composing' | 'syncing-to-atom' | 'syncing-to-dom';\n /** Whether the input currently has focus */\n hasFocus: boolean;\n}\n\n/**\n * Creates a fresh InputBindingState with default values.\n */\nexport function createInputBindingState(): InputBindingState {\n return { timeoutId: null, phase: 'idle', hasFocus: false };\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 effects: Array<() => void>;\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 { 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 } = options;\n\n const state: InputBindingState = createInputBindingState();\n\n // IME composition support (CJK input)\n const onCompositionStart = () => {\n state.phase = 'composing';\n };\n\n const onCompositionEnd = () => {\n state.phase = 'idle';\n syncAtomFromDom();\n };\n\n $el.on('compositionstart', onCompositionStart);\n $el.on('compositionend', onCompositionEnd);\n\n // Focus tracking for smart formatting\n const onFocus = () => {\n state.hasFocus = true;\n };\n\n const onBlur = () => {\n state.hasFocus = false;\n // Force formatting on blur to ensure clean display\n const formatted = format(atom.value);\n if ($el.val() !== formatted) {\n $el.val(formatted);\n }\n };\n\n $el.on('focus', onFocus);\n $el.on('blur', onBlur);\n\n // Core sync: DOM → Atom\n const syncAtomFromDom = () => {\n if (state.phase !== 'idle') return;\n\n state.phase = 'syncing-to-atom';\n atom.value = parse($el.val() as string);\n state.phase = 'idle';\n };\n\n // Input handler with optional debounce\n const onInput = () => {\n if (state.phase !== 'idle') return;\n\n if (debounceMs) {\n if (state.timeoutId) clearTimeout(state.timeoutId);\n state.timeoutId = window.setTimeout(syncAtomFromDom, debounceMs);\n } else {\n syncAtomFromDom();\n }\n };\n\n $el.on(event, onInput);\n $el.on('change', onInput);\n\n // Cleanup handler\n const cleanup = () => {\n $el.off(event, onInput);\n $el.off('change', onInput);\n $el.off('compositionstart', onCompositionStart);\n $el.off('compositionend', onCompositionEnd);\n $el.off('focus', onFocus);\n $el.off('blur', onBlur);\n if (state.timeoutId) clearTimeout(state.timeoutId);\n };\n\n // Core sync: Atom → DOM (Effect body)\n const effect = () => {\n const formatted = format(atom.value);\n const currentVal = $el.val() as string;\n\n // Update only if value differs\n if (currentVal !== formatted) {\n // Don't interrupt user input if parsed value matches\n if (state.hasFocus && parse(currentVal) === atom.value) {\n return;\n }\n\n state.phase = 'syncing-to-dom';\n $el.val(formatted);\n debug.domUpdated($el, 'val', formatted);\n state.phase = 'idle';\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';\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 registerReactiveEffect(\n this,\n source,\n (val) => {\n const text = formatter ? formatter(val) : String(val ?? '');\n $(this).text(text);\n },\n 'text'\n );\n });\n};\n\n/**\n * Updates element inner HTML.\n */\n$.fn.atomHtml = function (source: ReactiveValue<string>): JQuery {\n return this.each(function () {\n registerReactiveEffect(this, source, (val) => $(this).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 registerReactiveEffect(\n this,\n condition,\n (val) => $(this).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 registerReactiveEffect(\n this,\n source,\n (val) => {\n const cssValue = unit ? `${val}${unit}` : val;\n $(this).css(prop, cssValue as string | number);\n },\n `css.${prop}`\n );\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 registerReactiveEffect(\n this,\n source,\n (val) => {\n const $el = $(this);\n if (val === null || val === undefined || val === false) {\n $el.removeAttr(name);\n } else if (val === true) {\n $el.attr(name, name);\n } else {\n $el.attr(name, String(val));\n }\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 registerReactiveEffect(this, source, (val) => $(this).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 registerReactiveEffect(this, condition, (val) => $(this).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 registerReactiveEffect(this, condition, (val) => $(this).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 $el = $(this);\n const { effect: fxFn, cleanup } = applyInputBinding($el, atom, options);\n const fx = effect(fxFn);\n registry.trackEffect(this, fx);\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 let isUpdatingFromAtom = false;\n\n // DOM → Atom\n const handler = () => {\n if (!isUpdatingFromAtom) {\n atom.value = !!$el.prop('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 isUpdatingFromAtom = true;\n const val = !!atom.value;\n $el.prop('checked', val);\n debug.domUpdated($el, 'checked', val);\n isUpdatingFromAtom = false;\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 { 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 { createInputBindingState } from './types';\n\n// ============================================================================\n// One-Way Binding Handlers (Atom → DOM)\n// ============================================================================\n\nfunction bindText<T>(ctx: BindingContext, value: ReactiveValue<T>): void {\n registerReactiveEffect(\n ctx.el,\n value,\n (val) => {\n ctx.el.textContent = String(val ?? '');\n },\n 'text'\n );\n}\n\nfunction bindHtml(ctx: BindingContext, value: ReactiveValue<string>): void {\n registerReactiveEffect(\n ctx.el,\n value,\n (val) => {\n ctx.el.innerHTML = String(val ?? '');\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 style = ctx.el.style as unknown as Record<string, string>;\n for (const prop in cssMap) {\n const value = cssMap[prop];\n if (value === undefined) continue;\n const camelProp = prop.includes('-')\n ? prop.replace(/-./g, (match) => match.charAt(1).toUpperCase())\n : prop;\n if (Array.isArray(value)) {\n const [source, unit] = value;\n registerReactiveEffect(\n ctx.el,\n source,\n (val) => {\n style[camelProp] = `${val}${unit}`;\n },\n `css.${prop}`\n );\n } else {\n registerReactiveEffect(\n ctx.el,\n value,\n (val) => {\n style[camelProp] = val 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 const value = attrMap[name];\n registerReactiveEffect(\n el,\n value,\n (v) => {\n if (v === null || v === undefined || v === false) {\n el.removeAttribute(name);\n return;\n }\n el.setAttribute(name, v === true ? name : String(v));\n },\n `attr.${name}`\n );\n }\n}\n\nfunction bindProp(ctx: BindingContext, propMap: Record<string, ReactiveValue<unknown>>): void {\n const el = ctx.el;\n for (const name in propMap) {\n registerReactiveEffect(\n el,\n propMap[name],\n (val) => {\n (el as unknown as Record<string, unknown>)[name] = val;\n },\n `prop.${name}`\n );\n }\n}\n\nfunction bindShow(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n registerReactiveEffect(\n ctx.el,\n condition,\n (val) => {\n ctx.$el.toggle(!!val);\n },\n 'show'\n );\n}\n\nfunction bindHide(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n registerReactiveEffect(\n ctx.el,\n condition,\n (val) => {\n ctx.$el.toggle(!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 valConfig: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>]\n): void {\n const atom = Array.isArray(valConfig) ? valConfig[0] : valConfig;\n const options = Array.isArray(valConfig) ? valConfig[1] : {};\n\n const { effect: fxFn, cleanup } = applyInputBinding(ctx.$el, atom, options);\n const fx = effect(fxFn);\n\n registry.trackEffect(ctx.el, fx);\n ctx.trackCleanup(cleanup);\n}\n\nfunction bindChecked(ctx: BindingContext, atom: WritableAtom<boolean>): void {\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.phase !== 'idle') return;\n atom.value = ctx.$el.prop('checked');\n };\n\n ctx.$el.on('change', handler);\n ctx.trackCleanup(() => ctx.$el.off('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n state.phase = 'syncing-to-dom';\n const val = !!atom.value;\n ctx.$el.prop('checked', val);\n debug.domUpdated(ctx.$el, 'checked', val);\n state.phase = 'idle';\n });\n registry.trackEffect(ctx.el, fx);\n}\n\n// ============================================================================\n// Event Binding Handler\n// ============================================================================\n\nfunction bindEvents(\n ctx: BindingContext,\n eventMap: Record<string, (e: JQuery.Event) => void>\n): void {\n const el = ctx.el;\n for (const eventName in eventMap) {\n const handler = eventMap[eventName];\n if (typeof handler !== 'function') continue;\n // biome-ignore lint/suspicious/noExplicitAny: JQuery.Event constructor overload requires any or complex cast to wrap native Event correctly\n const listener = (e: Event) => handler.call(el, $.Event(e as any));\n el.addEventListener(eventName, listener);\n ctx.trackCleanup(() => el.removeEventListener(eventName, 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 // Lazy element wrapping: only wrap if needed by legacy handlers (like bindVal/applyInputBinding)\n const $el = $(this);\n\n // Build binding context\n const ctx: BindingContext = {\n $el,\n el: this,\n effects: [],\n trackCleanup: (fn) => registry.trackCleanup(this, 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) => 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 $emptyEl = $(empty).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. Prepare keys and identify removals (O(N) with cache-friendly loop)\n const newKeys: (string | number)[] = new Array(itemCount);\n const newKeySet = new Set<string | number>();\n\n for (let i = 0; i < itemCount; i++) {\n const item = items[i] as T; // Type assertion for generic T\n const k = getKey(item, i);\n newKeys[i] = k;\n newKeySet.add(k);\n }\n\n // 3. Remove vanished items (O(M)) - Respects onRemove callback\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 const el = entry.$el[0];\n if (el) registry.cleanup(el);\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 // If we adjusted from non-empty to empty, we can stop here after removal\n if (itemCount === 0) {\n oldKeys = [];\n return;\n }\n\n // 4. LIS Reconciliation (O(N log N))\n // Map keys to their OLD index for LIS input\n const oldIndexMap = new Map<string | number, number>();\n for (let i = 0; i < oldKeys.length; i++) {\n const k = oldKeys[i];\n if (k !== undefined) oldIndexMap.set(k, i);\n }\n\n // Input for LIS: where each new item came from in the old list\n const newIndices = new Int32Array(itemCount);\n for (let i = 0; i < itemCount; i++) {\n const k = newKeys[i];\n newIndices[i] = k !== undefined ? (oldIndexMap.get(k) ?? -1) : -1;\n }\n\n const lisArr = getLIS(newIndices);\n let lisIdx = lisArr.length - 1;\n\n // 5. 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: Update then potentially MOVE\n entry.item = item;\n const el = entry.$el[0];\n if (!el) continue;\n\n if (update) update(entry.$el, item, i);\n\n const isStable = lisIdx >= 0 && lisArr[lisIdx] === i;\n if (isStable) {\n lisIdx--;\n // Even if stable in LIS, check if the relative order with nextNode is correct\n const currentNext = el.nextSibling;\n if (currentNext !== nextNode) {\n if (nextNode) entry.$el.insertBefore(nextNode);\n else entry.$el.appendTo($container);\n }\n } else if (nextNode) {\n entry.$el.insertBefore(nextNode);\n } else {\n entry.$el.appendTo($container);\n }\n nextNode = el;\n } else {\n // New Item: Render and INSERT\n const rendered = render(item, i);\n const $el: JQuery = (\n rendered instanceof Element ? $(rendered) : $(rendered as string)\n ) as JQuery;\n itemMap.set(k, { $el, item });\n\n if (nextNode) $el.insertBefore(nextNode);\n else $el.appendTo($container);\n\n if (bind) bind($el, item, i);\n if (onAdd) onAdd($el);\n\n debug.log('list', `${containerSelector} added item:`, k);\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 $el = $(this);\n const selector = getSelector(this);\n\n // Unmount existing component\n const existing = mountedComponents.get(this);\n if (existing) {\n debug.log('mount', `${selector} unmounting existing component`);\n existing();\n }\n\n debug.log('mount', `${selector} mounting component`);\n\n // Mount\n let userCleanup: undefined | (() => void);\n try {\n userCleanup = component($el, props);\n } catch (e) {\n console.error('[atom-effect-jquery] Mount error:', e);\n return;\n }\n\n // cleanup\n let isUnmounted = false;\n const fullCleanup = () => {\n if (isUnmounted) return;\n isUnmounted = true;\n\n debug.log('mount', `${selector} full cleanup`);\n\n if (typeof userCleanup === 'function') {\n try {\n userCleanup();\n } catch {}\n }\n registry.cleanupTree(this);\n mountedComponents.delete(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 mountedComponents.get(this)?.();\n });\n};\n","import $ from 'jquery';\nimport { registry } from './registry';\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<Function, Function>();\n\nlet isjQueryOverridesEnabled = false;\n\n/**\n * Patches jQuery methods to integrate with the reactive system.\n *\n * 1. Lifecycle Overrides (.remove, .empty, .detach):\n * - Automatically cleans up effects/bindings when elements are removed.\n * - Preserves bindings when elements are detached.\n *\n * 2. Event Batching (.on, .off):\n * - Wraps event handlers in batch() to optimize rendering.\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 (selector?: string) {\n // Filter elements if selector is provided, as per jQuery docs\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.cleanupTree(this);\n registry.markIgnored(this); // Prevent double-cleanup by observer\n });\n\n return originalRemove.call(this, selector);\n };\n\n // .empty() - Delete children + Recursive Unsubscribe\n $.fn.empty = function () {\n this.each(function () {\n // Use optimized cleanupDescendants instead of expensive querySelectorAll('*')\n registry.cleanupDescendants(this);\n });\n\n return originalEmpty.call(this);\n };\n\n // .detach() - Remove from DOM + Keep Subscription (Marking)\n $.fn.detach = function (selector?: string) {\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.keep(this);\n });\n\n return originalDetach.call(this, selector);\n };\n\n // ========== Event Overrides ==========\n\n // Patch .on()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.on = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n\n let wrappedFn: Function | undefined;\n if (handlerMap.has(originalFn)) {\n wrappedFn = handlerMap.get(originalFn);\n } else {\n // biome-ignore lint/suspicious/noExplicitAny: internal this\n wrappedFn = function (this: any, ...eventArgs: any[]) {\n return originalFn.apply(this, eventArgs);\n };\n handlerMap.set(originalFn, wrappedFn);\n }\n\n args[fnIndex] = wrappedFn;\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOn.apply(this, args as any);\n };\n\n // Patch .off()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.off = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n if (handlerMap.has(originalFn)) {\n args[fnIndex] = handlerMap.get(originalFn);\n }\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOff.apply(this, args as any);\n };\n}\n\n// Alias for backward compatibility if needed, though we are refactoring.\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":["ee","v","O","h","T","I","j","b","te","w","l","se","g","t","i","D","y","U","u","M","ie","V","k","ne","s","Q","G","n","p","re","oe","Y","H","z","_","f","a","S","C","d","he","De","$","ue","ce","_e","ae","J","le","x","W","fe","F","B","P","q","X","de","pe","N","Ee","m","ge","Se","Ce","A","K","L","Z","E","R","r","c","me","be","Re","Te","isReactive","value","getSelector","el","domEl","classes","getLIS","arr","len","predecessors","result","resultLen","val","left","right","mid","lis","getInitialDebugState","globalFlag","debugEnabled","debug","type","args","name","oldVal","newVal","$el","selector","highlightElement","TIMER_KEY","CLEANUP_TIMER_KEY","ORG_STYLE_KEY","timerId","originalStyles","cleanupTimerId","atomMetadata","atom","initialValue","options","instance","createAtom","nextTick","resolve","computed","effect","batch","untracked","isAtom","isComputed","AES_BOUND","BindingRegistry","node","fx","list","fn","effects","e","cleanups","children","child","registry","observer","enableAutoCleanup","root","mutations","mutation","removed","rLen","disableAutoCleanup","registerReactiveEffect","source","updater","debugType","createInputBindingState","applyInputBinding","debounceMs","event","parse","format","state","onCompositionStart","onCompositionEnd","syncAtomFromDom","onFocus","onBlur","formatted","onInput","currentVal","formatter","text","className","condition","prop","unit","cssValue","fxFn","cleanup","isUpdatingFromAtom","handler","bindText","ctx","bindHtml","bindClass","classMap","bindCss","cssMap","style","camelProp","match","bindAttr","attrMap","bindProp","propMap","bindShow","bindHide","bindVal","valConfig","bindChecked","bindEvents","eventMap","eventName","listener","key","render","bind","update","onAdd","onRemove","empty","getKey","item","$container","containerSelector","itemMap","removingKeys","oldKeys","$emptyEl","items","itemCount","newKeys","newKeySet","entry","cleanupItem","oldIndexMap","newIndices","lisArr","lisIdx","nextNode","rendered","mountedComponents","component","props","existing","userCleanup","isUnmounted","fullCleanup","handlerMap","isjQueryOverridesEnabled","enablejQueryOverrides","originalOn","originalOff","originalRemove","originalEmpty","originalDetach","fnIndex","originalFn","wrappedFn","eventArgs","enablejQueryBatching"],"mappings":"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"}