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