@but212/atom-effect-jquery 0.8.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -7
- package/dist/atom-effect-jquery.min.js +1 -1
- package/dist/atom-effect-jquery.min.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +176 -177
- 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/types.ts","../src/input-binding.ts","../src/registry.ts","../src/chainable.ts","../src/unified.ts","../src/list.ts","../src/mount.ts","../src/jquery-patch.ts","../src/index.ts"],"sourcesContent":["const te = {\n /** One second in milliseconds */\n ONE_SECOND_MS: 1e3\n}, v = {\n IDLE: \"idle\",\n PENDING: \"pending\",\n RESOLVED: \"resolved\",\n REJECTED: \"rejected\"\n}, A = {\n DISPOSED: 1,\n // 0001 - Effect has been disposed\n EXECUTING: 2\n // 0010 - Effect is currently executing\n}, c = {\n DIRTY: 1,\n // 0001 - Needs recomputation\n IDLE: 2,\n // 0010 - Initial state, not computed yet\n PENDING: 4,\n // 0100 - Async computation in progress\n RESOLVED: 8,\n // 1000 - Successfully computed\n REJECTED: 16,\n // 10000 - Computation failed\n RECOMPUTING: 32,\n // 100000 - Currently recomputing\n HAS_ERROR: 64\n // 1000000 - Has error state\n}, pe = {\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}, g = {\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}, 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}, I = 1073741823, a = typeof process < \"u\" && process.env && process.env.NODE_ENV !== \"production\", se = Object.freeze([]);\nclass p 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 N extends p {\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 b extends p {\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 O extends p {\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 h = {\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 subscribing to a dependency fails.\n */\n COMPUTED_DEPENDENCY_SUBSCRIPTION_FAILED: \"Failed to subscribe to dependency\",\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 // 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}, L = /* @__PURE__ */ Symbol(\"debugName\"), ie = /* @__PURE__ */ Symbol(\"id\"), V = /* @__PURE__ */ Symbol(\"type\"), q = /* @__PURE__ */ Symbol(\"noDefaultValue\");\nfunction ne(i) {\n return \"dependencies\" in i && Array.isArray(i.dependencies);\n}\nlet j = 0;\nfunction G(i, e, t) {\n if (i._visitedEpoch !== t) {\n if (i._visitedEpoch = t, i === e)\n throw new N(\"Indirect circular dependency detected\");\n if (ne(i)) {\n const s = i.dependencies;\n for (let n = 0; n < s.length; n++) {\n const r = s[n];\n r && G(r, e, t);\n }\n }\n }\n}\nconst d = {\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 N(\"Direct circular dependency detected\");\n this.enabled && (j++, G(i, e, j));\n },\n attachDebugInfo(i, e, t) {\n if (!this.enabled)\n return;\n const s = i;\n s[L] = `${e}_${t}`, s[ie] = t, s[V] = e;\n },\n getDebugName(i) {\n if (i != null && L in i)\n return i[L];\n },\n getDebugType(i) {\n if (i != null && V in i)\n return i[V];\n }\n};\nlet re = 1;\nconst oe = () => re++;\nclass Y {\n constructor() {\n this.id = oe() & I, this.flags = 0;\n }\n}\nclass $ extends Y {\n constructor() {\n super(), this.version = 0, this._lastSeenEpoch = -1;\n }\n /**\n * Subscribes a listener function or Subscriber object to value changes.\n *\n * @param listener - Function or Subscriber object to call when the value changes\n * @returns An unsubscribe function\n * @throws {AtomError} If listener is not a function or Subscriber\n */\n subscribe(e) {\n if (typeof e == \"object\" && e !== null && \"execute\" in e)\n return this._objectSubscribers.add(e);\n if (typeof e != \"function\")\n throw new p(h.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);\n return this._functionSubscribers.add(e);\n }\n /**\n * Gets the total number of active subscribers.\n */\n subscriberCount() {\n return this._functionSubscribers.size + this._objectSubscribers.size;\n }\n /**\n * Notifies all subscribers of a change.\n *\n * @param newValue - The new value\n * @param oldValue - The old value\n */\n _notifySubscribers(e, t) {\n this._functionSubscribers.forEachSafe(\n (s) => s(e, t),\n (s) => console.error(new p(h.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, s))\n ), this._objectSubscribers.forEachSafe(\n (s) => s.execute(),\n (s) => console.error(new p(h.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, s))\n );\n }\n}\nlet U = 0;\nfunction H() {\n return U = (U + 1 | 0) & I, U;\n}\nfunction ce() {\n return U;\n}\nlet x = 0, w = 0, F = !1;\nfunction z() {\n return F ? (a && console.warn(\n \"Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass\"\n ), !1) : (F = !0, x = x + 1 & I, w = 0, !0);\n}\nfunction X() {\n F = !1;\n}\nfunction he() {\n return F ? ++w : 0;\n}\nclass ue {\n constructor() {\n this.queueA = [], this.queueB = [], this.queue = this.queueA, this.queueSize = 0, this._epoch = 0, this.isProcessing = !1, this.isBatching = !1, this.batchDepth = 0, this.batchQueue = [], this.batchQueueSize = 0, this.isFlushingSync = !1, this.maxFlushIterations = g.MAX_FLUSH_ITERATIONS;\n }\n get phase() {\n return this.isProcessing || this.isFlushingSync ? 2 : this.isBatching ? 1 : 0;\n }\n /**\n * Schedules a task for execution.\n * Tasks are deduplicated within the same flush cycle using epoch tracking.\n * @param callback - The function to execute.\n * @throws {SchedulerError} If the callback is not a function.\n */\n schedule(e) {\n if (typeof e != \"function\")\n throw new O(\"Scheduler callback must be a function\");\n e._nextEpoch !== this._epoch && (e._nextEpoch = this._epoch, this.isBatching || this.isFlushingSync ? this.batchQueue[this.batchQueueSize++] = e : (this.queue[this.queueSize++] = e, this.isProcessing || this.flush()));\n }\n flush() {\n if (this.isProcessing || this.queueSize === 0) return;\n this.isProcessing = !0;\n const e = this.queue, t = this.queueSize;\n this.queue = this.queue === this.queueA ? this.queueB : this.queueA, this.queueSize = 0, this._epoch++, queueMicrotask(() => {\n const s = z();\n this._processJobs(e, t), this.isProcessing = !1, s && X(), this.queueSize > 0 && !this.isBatching && this.flush();\n });\n }\n flushSync() {\n this.isFlushingSync = !0;\n const e = z();\n try {\n this._mergeBatchQueue(), this._drainQueue();\n } finally {\n this.isFlushingSync = !1, e && X();\n }\n }\n _mergeBatchQueue() {\n if (this._epoch++, this.batchQueueSize > 0) {\n for (let e = 0; e < this.batchQueueSize; e++) {\n const t = this.batchQueue[e];\n t && t._nextEpoch !== this._epoch && (t._nextEpoch = this._epoch, this.queue[this.queueSize++] = t);\n }\n this.batchQueueSize = 0;\n }\n }\n _drainQueue() {\n let e = 0;\n for (; this.queueSize > 0; ) {\n if (++e > this.maxFlushIterations) {\n this._handleFlushOverflow();\n break;\n }\n this._processCurrentQueue(), this._mergeBatchQueue();\n }\n }\n _processCurrentQueue() {\n const e = this.queue, t = this.queueSize;\n this.queue = this.queue === this.queueA ? this.queueB : this.queueA, this.queueSize = 0, this._epoch++, this._processJobs(e, t);\n }\n _handleFlushOverflow() {\n console.error(\n new O(\n `Maximum flush iterations (${this.maxFlushIterations}) exceeded. Possible infinite loop.`\n )\n ), this.queueSize = 0, this.queue.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 O(\"Error occurred during scheduler execution\", n)\n );\n }\n e.length = 0;\n }\n /** Starts a new batch of updates. Updates will be deferred until endBatch is called. */\n startBatch() {\n this.batchDepth++, this.isBatching = !0;\n }\n /**\n * Ends the current batch. If the batch depth reaches zero, all pending updates are flushed synchronously.\n */\n endBatch() {\n this.batchDepth = Math.max(0, this.batchDepth - 1), this.batchDepth === 0 && (this.flushSync(), this.isBatching = !1);\n }\n /**\n * Configures the maximum number of iterations allowed during a synchronous flush.\n * Used to prevent infinite loops.\n * @param max - Maximum iterations count.\n */\n setMaxFlushIterations(e) {\n if (e < g.MIN_FLUSH_ITERATIONS)\n throw new O(\n `Max flush iterations must be at least ${g.MIN_FLUSH_ITERATIONS}`\n );\n this.maxFlushIterations = e;\n }\n}\nconst T = new ue();\nfunction be(i) {\n if (typeof i != \"function\")\n throw new p(\"Batch callback must be a function\");\n T.startBatch();\n try {\n return i();\n } finally {\n T.endBatch();\n }\n}\nconst y = {\n current: null,\n run(i, e) {\n const t = this.current;\n this.current = i;\n try {\n return e();\n } finally {\n this.current = t;\n }\n },\n getCurrent() {\n return this.current;\n }\n};\nfunction _e(i) {\n if (typeof i != \"function\")\n throw new p(\"Untracked callback must be a function\");\n const e = y.current;\n y.current = null;\n try {\n return i();\n } finally {\n y.current = e;\n }\n}\nclass P {\n constructor() {\n this.subscribers = null;\n }\n /** Adds subscriber and returns unsubscribe function (idempotent) */\n add(e) {\n if (this.subscribers || (this.subscribers = []), this.subscribers.indexOf(e) !== -1)\n return () => {\n };\n this.subscribers.push(e);\n let t = !1;\n return () => {\n t || (t = !0, this.remove(e));\n };\n }\n /** Removes subscriber using swap-and-pop */\n remove(e) {\n if (!this.subscribers)\n return !1;\n const t = this.subscribers.indexOf(e);\n if (t === -1)\n return !1;\n const s = this.subscribers.length - 1;\n return t !== s && (this.subscribers[t] = this.subscribers[s]), this.subscribers.pop(), !0;\n }\n has(e) {\n return this.subscribers ? this.subscribers.indexOf(e) !== -1 : !1;\n }\n forEach(e) {\n if (this.subscribers)\n for (let t = 0; t < this.subscribers.length; t++)\n e(this.subscribers[t], t);\n }\n /** Iterates with error handling to prevent one failure from breaking the chain */\n forEachSafe(e, t) {\n if (this.subscribers)\n for (let s = 0; s < this.subscribers.length; s++)\n try {\n e(this.subscribers[s], s);\n } catch (n) {\n t ? t(n) : console.error(\"[SubscriberManager] Error in subscriber callback:\", n);\n }\n }\n get size() {\n return this.subscribers?.length ?? 0;\n }\n get hasSubscribers() {\n return this.subscribers !== null && this.subscribers.length > 0;\n }\n clear() {\n this.subscribers = null;\n }\n toArray() {\n return this.subscribers ? [...this.subscribers] : [];\n }\n}\nfunction ae(i) {\n return i !== null && typeof i == \"object\" && \"value\" in i && \"subscribe\" in i && typeof i.subscribe == \"function\";\n}\nfunction Se(i) {\n if (d.enabled && (i == null || typeof i == \"object\")) {\n const e = d.getDebugType(i);\n if (e)\n return e === \"computed\";\n }\n return ae(i) && \"invalidate\" in i && typeof i.invalidate == \"function\";\n}\nfunction ge(i) {\n return i !== null && typeof i == \"object\" && \"dispose\" in i && \"run\" in i && typeof i.dispose == \"function\" && typeof i.run == \"function\";\n}\nfunction J(i) {\n return i != null && typeof i.then == \"function\";\n}\nfunction le(i) {\n return typeof i == \"object\" && i !== null;\n}\nfunction Q(i) {\n return (typeof i == \"object\" || typeof i == \"function\") && i !== null && typeof i.addDependency == \"function\";\n}\nfunction W(i) {\n return typeof i == \"function\" && typeof i.addDependency != \"function\";\n}\nfunction K(i) {\n return le(i) && typeof i.execute == \"function\";\n}\nclass fe extends $ {\n constructor(e, t) {\n super(), this._isNotificationScheduled = !1, this._value = e, this._functionSubscribersStore = new P(), this._objectSubscribersStore = new P(), this._sync = t, this._notifyTask = this._flushNotifications.bind(this), d.attachDebugInfo(this, \"atom\", this.id);\n }\n /** Gets the manager for function-based subscribers. */\n get _functionSubscribers() {\n return this._functionSubscribersStore;\n }\n /** Gets the manager for object-based subscribers. */\n get _objectSubscribers() {\n return this._objectSubscribersStore;\n }\n /**\n * Returns the current value and registers the atom as a dependency in the current tracking context.\n */\n get value() {\n const e = y.getCurrent();\n return e && this._track(e), this._value;\n }\n /**\n * Sets a new value and schedules notifications if the value has changed.\n * Uses `Object.is` for comparison.\n */\n set value(e) {\n if (Object.is(this._value, e)) return;\n const t = this._value;\n this.version = this.version + 1 & I, this._value = e, !(!this._functionSubscribersStore.hasSubscribers && !this._objectSubscribersStore.hasSubscribers) && this._scheduleNotification(t);\n }\n _track(e) {\n if (Q(e)) {\n e.addDependency(this);\n return;\n }\n if (W(e)) {\n this._functionSubscribersStore.add(e);\n return;\n }\n K(e) && this._objectSubscribersStore.add(e);\n }\n _scheduleNotification(e) {\n this._isNotificationScheduled || (this._pendingOldValue = e, this._isNotificationScheduled = !0), this._sync && !T.isBatching ? this._flushNotifications() : T.schedule(this._notifyTask);\n }\n _flushNotifications() {\n if (!this._isNotificationScheduled) return;\n const e = this._pendingOldValue, t = this._value;\n this._pendingOldValue = void 0, this._isNotificationScheduled = !1, this._notifySubscribers(t, e);\n }\n /**\n * Returns the current value without registering as a dependency in the tracking context.\n */\n peek() {\n return this._value;\n }\n /**\n * Disposes of the atom, clearing all subscribers and resetting the value.\n */\n dispose() {\n this._functionSubscribersStore.clear(), this._objectSubscribersStore.clear(), this._value = void 0;\n }\n}\nfunction De(i, e = {}) {\n return new fe(i, e.sync ?? !1);\n}\nclass B {\n constructor() {\n this.pool = [], this.maxPoolSize = 50, this.maxReusableCapacity = 256, this.stats = a ? {\n acquired: 0,\n released: 0,\n rejected: { frozen: 0, tooLarge: 0, poolFull: 0 }\n } : null;\n }\n /** Acquires an array from the pool or creates a new one if the pool is empty. */\n acquire() {\n return a && this.stats && this.stats.acquired++, this.pool.pop() ?? [];\n }\n /**\n * Releases an array back to the pool.\n * Clears the array before storing it.\n * @param arr - The array to release.\n * @param emptyConst - Optional reference to a constant empty array to skip.\n */\n release(e, t) {\n if (!(t && e === t)) {\n if (Object.isFrozen(e)) {\n a && this.stats && this.stats.rejected.frozen++;\n return;\n }\n if (e.length > this.maxReusableCapacity) {\n a && this.stats && this.stats.rejected.tooLarge++;\n return;\n }\n if (this.pool.length >= this.maxPoolSize) {\n a && this.stats && this.stats.rejected.poolFull++;\n return;\n }\n e.length = 0, this.pool.push(e), a && this.stats && this.stats.released++;\n }\n }\n /** Returns current stats for the pool (dev mode only). */\n getStats() {\n if (!a || !this.stats) return null;\n const { acquired: e, released: t, rejected: s } = this.stats, n = s.frozen + s.tooLarge + s.poolFull;\n return {\n acquired: e,\n released: t,\n rejected: s,\n leaked: e - t - n,\n poolSize: this.pool.length\n };\n }\n /** Resets the pool and its stats. */\n reset() {\n this.pool.length = 0, a && this.stats && (this.stats.acquired = 0, this.stats.released = 0, this.stats.rejected = { frozen: 0, tooLarge: 0, poolFull: 0 });\n }\n}\nconst u = Object.freeze([]), l = Object.freeze([]), _ = Object.freeze([]), S = new B(), D = new B(), f = new B();\nfunction de(i, e, t, s) {\n if (e !== u && t !== l)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o && (o._tempUnsub = t[r]);\n }\n const n = D.acquire();\n n.length = i.length;\n for (let r = 0; r < i.length; r++) {\n const o = i[r];\n o && (o._tempUnsub ? (n[r] = o._tempUnsub, o._tempUnsub = void 0) : (d.checkCircular(o, s), n[r] = o.subscribe(s)));\n }\n if (e !== u)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o?._tempUnsub && (o._tempUnsub(), o._tempUnsub = void 0);\n }\n return t !== l && D.release(t), n;\n}\nfunction R(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 p)\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}\nconst Z = c.RESOLVED | c.PENDING | c.REJECTED, M = Array(Z + 1).fill(v.IDLE);\nM[c.RESOLVED] = v.RESOLVED;\nM[c.PENDING] = v.PENDING;\nM[c.REJECTED] = v.REJECTED;\nclass ee extends $ {\n constructor(e, t = {}) {\n if (typeof e != \"function\")\n throw new N(h.COMPUTED_MUST_BE_FUNCTION);\n if (super(), this._cachedErrors = null, this._errorCacheEpoch = -1, this._value = void 0, this.flags = c.DIRTY | c.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._hasDefaultValue = this._defaultValue !== q, this._onError = t.onError ?? null, this.MAX_PROMISE_ID = Number.MAX_SAFE_INTEGER - 1, this._functionSubscribersStore = new P(), this._objectSubscribersStore = new P(), this._dependencies = u, this._dependencyVersions = _, this._unsubscribes = l, this._notifyJob = () => {\n this._functionSubscribersStore.forEachSafe(\n (s) => s(),\n (s) => console.error(s)\n ), this._objectSubscribersStore.forEachSafe(\n (s) => s.execute(),\n (s) => console.error(s)\n );\n }, this._trackable = Object.assign(() => this._markDirty(), {\n addDependency: (s) => {\n }\n }), d.attachDebugInfo(this, \"computed\", this.id), d.enabled) {\n const s = this;\n s.subscriberCount = () => this._functionSubscribersStore.size + this._objectSubscribersStore.size, s.isDirty = () => this._isDirty(), s.dependencies = this._dependencies, s.stateFlags = this._getFlagsAsString();\n }\n if (t.lazy === !1)\n try {\n this._recompute();\n } catch {\n }\n }\n get _functionSubscribers() {\n return this._functionSubscribersStore;\n }\n get _objectSubscribers() {\n return this._objectSubscribersStore;\n }\n get value() {\n return this._registerTracking(), this._computeValue();\n }\n peek() {\n return this._value;\n }\n get state() {\n return this._registerTracking(), this._getAsyncState();\n }\n get hasError() {\n if (this._registerTracking(), this._isRejected())\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t && \"hasError\" in t && t.hasError)\n return !0;\n }\n return !1;\n }\n get isValid() {\n return !this.hasError;\n }\n get errors() {\n if (this._registerTracking(), !this.hasError)\n return se;\n const e = ce();\n if (this._errorCacheEpoch === e && this._cachedErrors !== null)\n return this._cachedErrors;\n const t = /* @__PURE__ */ new Set();\n this._error && t.add(this._error);\n for (let s = 0; s < this._dependencies.length; s++) {\n const n = this._dependencies[s];\n if (n && \"errors\" in n) {\n const r = n.errors;\n for (let o = 0; o < r.length; o++) {\n const m = r[o];\n m && t.add(m);\n }\n }\n }\n return this._cachedErrors = Object.freeze([...t]), this._errorCacheEpoch = e, this._cachedErrors;\n }\n get lastError() {\n return this._registerTracking(), this._error;\n }\n get isPending() {\n return this._registerTracking(), this._isPending();\n }\n get isResolved() {\n return this._registerTracking(), this._isResolved();\n }\n invalidate() {\n this._markDirty(), this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _), this._errorCacheEpoch = -1, this._cachedErrors = null;\n }\n dispose() {\n if (this._unsubscribes !== l) {\n for (let e = 0; e < this._unsubscribes.length; e++) {\n const t = this._unsubscribes[e];\n t && t();\n }\n D.release(this._unsubscribes), this._unsubscribes = l;\n }\n this._dependencies !== u && (S.release(this._dependencies), this._dependencies = u), this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _), this._functionSubscribersStore.clear(), this._objectSubscribersStore.clear(), this.flags = c.DIRTY | c.IDLE, this._error = null, this._value = void 0, this._promiseId = (this._promiseId + 1) % this.MAX_PROMISE_ID, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n // State flag operations\n _isDirty() {\n return (this.flags & c.DIRTY) !== 0;\n }\n _setDirty() {\n this.flags |= c.DIRTY;\n }\n _clearDirty() {\n this.flags &= -2;\n }\n _isIdle() {\n return (this.flags & c.IDLE) !== 0;\n }\n _setIdle() {\n this.flags |= c.IDLE, this.flags &= -29;\n }\n _isPending() {\n return (this.flags & c.PENDING) !== 0;\n }\n _setPending() {\n this.flags |= c.PENDING, this.flags &= -27;\n }\n _isResolved() {\n return (this.flags & c.RESOLVED) !== 0;\n }\n _setResolved() {\n this.flags |= c.RESOLVED, this.flags &= -87;\n }\n _isRejected() {\n return (this.flags & c.REJECTED) !== 0;\n }\n _setRejected() {\n this.flags |= c.REJECTED | c.HAS_ERROR, this.flags &= -15;\n }\n _isRecomputing() {\n return (this.flags & c.RECOMPUTING) !== 0;\n }\n _setRecomputing(e) {\n const t = c.RECOMPUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n _getAsyncState() {\n return M[this.flags & Z];\n }\n _getFlagsAsString() {\n const e = [];\n return this._isDirty() && e.push(\"DIRTY\"), this._isIdle() && e.push(\"IDLE\"), this._isPending() && e.push(\"PENDING\"), this._isResolved() && e.push(\"RESOLVED\"), this._isRejected() && e.push(\"REJECTED\"), this._isRecomputing() && e.push(\"RECOMPUTING\"), e.join(\" | \");\n }\n _computeValue() {\n return this._isRecomputing() ? this._value : ((this._isDirty() || this._isIdle()) && this._recompute(), this._isPending() ? this._handlePending() : this._isRejected() ? this._handleRejected() : this._value);\n }\n _recompute() {\n if (this._isRecomputing()) return;\n this._setRecomputing(!0);\n const e = this._prepareComputationContext();\n let t = !1;\n try {\n const s = y.run(this._trackable, this._fn);\n this._commitDependencies(e), t = !0, J(s) ? this._handleAsyncComputation(s) : this._handleSyncResult(s);\n } catch (s) {\n if (!t)\n try {\n this._commitDependencies(e), t = !0;\n } catch (n) {\n this._handleComputationError(n);\n }\n this._handleComputationError(s);\n } finally {\n this._cleanupContext(e, t), this._setRecomputing(!1);\n }\n }\n _prepareComputationContext() {\n const e = this._dependencies, t = this._dependencyVersions, s = S.acquire(), n = f.acquire(), r = H(), o = { depCount: 0 }, m = (E) => {\n E._lastSeenEpoch !== r && (E._lastSeenEpoch = r, o.depCount < s.length ? (s[o.depCount] = E, n[o.depCount] = E.version) : (s.push(E), n.push(E.version)), o.depCount++);\n }, C = this._trackable.addDependency;\n return this._trackable.addDependency = m, { prevDeps: e, prevVersions: t, nextDeps: s, nextVersions: n, originalAdd: C, state: o };\n }\n _commitDependencies(e) {\n const { nextDeps: t, nextVersions: s, state: n, prevDeps: r } = e;\n t.length = n.depCount, s.length = n.depCount, this._unsubscribes = de(t, r, this._unsubscribes, this), this._dependencies = t, this._dependencyVersions = s;\n }\n _cleanupContext(e, t) {\n this._trackable.addDependency = e.originalAdd, t ? (e.prevDeps !== u && S.release(e.prevDeps), e.prevVersions !== _ && f.release(e.prevVersions)) : (S.release(e.nextDeps), f.release(e.nextVersions));\n }\n _handleSyncResult(e) {\n const t = !this._isResolved() || !this._equal(this._value, e);\n this.version = this.version + Number(t) & I, this._value = e, this._clearDirty(), this._setResolved(), this._error = null, this._setRecomputing(!1), this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n _handleAsyncComputation(e) {\n this._setPending(), this._clearDirty(), this._notifyJob(), this._promiseId = this._promiseId >= this.MAX_PROMISE_ID ? 1 : this._promiseId + 1;\n const t = this._promiseId;\n e.then((s) => {\n t === this._promiseId && this._handleAsyncResolution(s);\n }).catch((s) => {\n t === this._promiseId && this._handleAsyncRejection(s);\n });\n }\n _handleAsyncResolution(e) {\n const t = !this._isResolved() || !this._equal(this._value, e);\n this.version = this.version + Number(t) & I, this._value = e, this._clearDirty(), this._setResolved(), this._error = null, this._setRecomputing(!1), this._cachedErrors = null, this._errorCacheEpoch = -1, this._notifyJob();\n }\n _handleAsyncRejection(e) {\n const t = R(e, N, h.COMPUTED_ASYNC_COMPUTATION_FAILED), s = !this._isRejected();\n if (this.version = this.version + Number(s) & I, this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (n) {\n console.error(h.CALLBACK_ERROR_IN_ERROR_HANDLER, n);\n }\n this._notifyJob();\n }\n _handleComputationError(e) {\n const t = R(e, N, h.COMPUTED_COMPUTATION_FAILED);\n if (this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (s) {\n console.error(h.CALLBACK_ERROR_IN_ERROR_HANDLER, s);\n }\n throw t;\n }\n _handlePending() {\n if (this._hasDefaultValue)\n return this._defaultValue;\n throw new N(h.COMPUTED_ASYNC_PENDING_NO_DEFAULT);\n }\n _handleRejected() {\n if (this._error?.recoverable && this._hasDefaultValue)\n return this._defaultValue;\n throw this._error;\n }\n /** Subscriber interface - marks dirty on dependency change */\n execute() {\n this._markDirty();\n }\n _markDirty() {\n this._isRecomputing() || this._isDirty() || (this._setDirty(), this._notifyJob());\n }\n _registerTracking() {\n const e = y.getCurrent();\n if (e) {\n if (Q(e)) {\n e.addDependency(this);\n return;\n }\n if (W(e)) {\n this._functionSubscribersStore.add(e);\n return;\n }\n K(e) && this._objectSubscribersStore.add(e);\n }\n }\n}\nObject.freeze(ee.prototype);\nfunction Ie(i, e = {}) {\n return new ee(i, e);\n}\nclass Ee extends Y {\n /**\n * Creates a new EffectImpl instance.\n * @param fn - The effect function to run.\n * @param options - Configuration options for the effect.\n */\n constructor(e, t = {}) {\n super(), this.run = () => {\n if (this.isDisposed)\n throw new b(h.EFFECT_MUST_BE_FUNCTION);\n this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _), this.execute();\n }, this.dispose = () => {\n if (!this.isDisposed) {\n if (this._setDisposed(), this._safeCleanup(), this._unsubscribes !== l) {\n for (let s = 0; s < this._unsubscribes.length; s++) {\n const n = this._unsubscribes[s];\n n && n();\n }\n D.release(this._unsubscribes), this._unsubscribes = l;\n }\n this._dependencies !== u && (S.release(this._dependencies), this._dependencies = u), this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _);\n }\n }, this.addDependency = (s) => {\n if (this.isExecuting && this._nextDeps && this._nextUnsubs && this._nextVersions) {\n const n = this._currentEpoch;\n if (s._lastSeenEpoch === n) return;\n s._lastSeenEpoch = n, this._nextDeps.push(s), this._nextVersions.push(s.version), s._tempUnsub ? (this._nextUnsubs.push(s._tempUnsub), s._tempUnsub = void 0) : this._subscribeTo(s);\n }\n }, this.execute = () => {\n if (this.isDisposed || this.isExecuting || !this._shouldExecute()) return;\n this._checkInfiniteLoop(), this._setExecuting(!0), this._safeCleanup();\n const s = this._prepareEffectContext();\n let n = !1;\n try {\n const r = y.run(this, this._fn);\n this._commitEffect(s), n = !0, this._checkLoopWarnings(), J(r) ? r.then((o) => {\n !this.isDisposed && typeof o == \"function\" && (this._cleanup = o);\n }).catch((o) => {\n console.error(R(o, b, h.EFFECT_EXECUTION_FAILED));\n }) : this._cleanup = typeof r == \"function\" ? r : null;\n } catch (r) {\n n = !0, console.error(R(r, b, h.EFFECT_EXECUTION_FAILED)), this._cleanup = null;\n } finally {\n this._cleanupEffect(s, n), this._setExecuting(!1);\n }\n }, this._currentEpoch = -1, this._lastFlushEpoch = -1, this._executionsInEpoch = 0, this._fn = e, this._sync = t.sync ?? !1, this._maxExecutions = t.maxExecutionsPerSecond ?? g.MAX_EXECUTIONS_PER_SECOND, this._maxExecutionsPerFlush = t.maxExecutionsPerFlush ?? g.MAX_EXECUTIONS_PER_EFFECT, this._trackModifications = t.trackModifications ?? !1, this._cleanup = null, this._dependencies = u, this._dependencyVersions = _, this._unsubscribes = l, this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, this._history = a ? [] : null, this._executionCount = 0, d.attachDebugInfo(this, \"effect\", this.id);\n }\n /**\n * Prepares the execution context by acquiring pools and setting up epoch.\n * @returns The prepared EffectContext.\n */\n _prepareEffectContext() {\n const e = this._dependencies, t = this._dependencyVersions, s = this._unsubscribes, n = S.acquire(), r = f.acquire(), o = D.acquire(), m = H();\n if (e !== u && s !== l)\n for (let C = 0; C < e.length; C++) {\n const E = e[C];\n E && (E._tempUnsub = s[C]);\n }\n return this._nextDeps = n, this._nextVersions = r, this._nextUnsubs = o, this._currentEpoch = m, { prevDeps: e, prevVersions: t, prevUnsubs: s, nextDeps: n, nextVersions: r, nextUnsubs: o };\n }\n /**\n * Commits the tracked dependencies as the current active dependencies.\n * @param ctx - The current effect context.\n */\n _commitEffect(e) {\n const t = e.nextDeps.length;\n e.nextDeps.length = t, e.nextVersions.length = t, this._dependencies = e.nextDeps, this._dependencyVersions = e.nextVersions, this._unsubscribes = e.nextUnsubs;\n }\n /**\n * Cleans up the effect execution context, releasing resources back to pools.\n * @param ctx - The effect context to clean up.\n * @param committed - Whether the changes were committed to the effect.\n */\n _cleanupEffect(e, t) {\n if (this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, t) {\n if (e.prevDeps !== u) {\n for (let s = 0; s < e.prevDeps.length; s++) {\n const n = e.prevDeps[s];\n n?._tempUnsub && (n._tempUnsub(), n._tempUnsub = void 0);\n }\n S.release(e.prevDeps);\n }\n e.prevUnsubs !== l && D.release(e.prevUnsubs), e.prevVersions !== _ && f.release(e.prevVersions);\n } else {\n S.release(e.nextDeps), f.release(e.nextVersions);\n for (let s = 0; s < e.nextUnsubs.length; s++)\n e.nextUnsubs[s]?.();\n if (D.release(e.nextUnsubs), e.prevDeps !== u)\n for (let s = 0; s < e.prevDeps.length; s++) {\n const n = e.prevDeps[s];\n n && (n._tempUnsub = void 0);\n }\n }\n }\n /**\n * Subscribes to a dependency's changes.\n * @param dep - The dependency to subscribe to.\n */\n _subscribeTo(e) {\n try {\n const t = e.subscribe(() => {\n this._trackModifications && this.isExecuting && (e._modifiedAtEpoch = this._currentEpoch), this._sync ? this.execute() : T.schedule(this.execute);\n });\n this._nextUnsubs && this._nextUnsubs.push(t);\n } catch (t) {\n console.error(R(t, b, h.EFFECT_EXECUTION_FAILED)), this._nextUnsubs && this._nextUnsubs.push(() => {\n });\n }\n }\n /**\n * Whether the effect has been disposed.\n */\n get isDisposed() {\n return (this.flags & A.DISPOSED) !== 0;\n }\n /**\n * Total number of times this effect has executed.\n */\n get executionCount() {\n return this._executionCount;\n }\n /**\n * Whether the effect is currently executing.\n */\n get isExecuting() {\n return (this.flags & A.EXECUTING) !== 0;\n }\n _setDisposed() {\n this.flags |= A.DISPOSED;\n }\n _setExecuting(e) {\n const t = A.EXECUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n /**\n * Executes the cleanup function if it exists.\n */\n _safeCleanup() {\n if (this._cleanup) {\n try {\n this._cleanup();\n } catch (e) {\n console.error(R(e, b, h.EFFECT_CLEANUP_FAILED));\n }\n this._cleanup = null;\n }\n }\n /**\n * Checks for infinite loops by tracking execution counts within a flush and time period.\n * @throws {EffectError} If an infinite loop is detected.\n */\n _checkInfiniteLoop() {\n if (this._lastFlushEpoch !== x && (this._lastFlushEpoch = x, this._executionsInEpoch = 0), this._executionsInEpoch++, this._executionsInEpoch > this._maxExecutionsPerFlush && this._throwInfiniteLoopError(\"per-effect\"), he() > g.MAX_EXECUTIONS_PER_FLUSH && this._throwInfiniteLoopError(\"global\"), this._executionCount++, this._history) {\n const e = Date.now();\n this._history.push(e), this._history.length > g.MAX_EXECUTIONS_PER_SECOND + 10 && this._history.shift(), this._checkTimestampLoop(e);\n }\n }\n _checkTimestampLoop(e) {\n const t = this._history;\n if (!t || this._maxExecutions <= 0) return;\n const s = e - te.ONE_SECOND_MS;\n let n = 0;\n for (let r = t.length - 1; r >= 0 && !(t[r] < s); r--)\n n++;\n if (n > this._maxExecutions) {\n const r = new b(\n `Effect executed ${n} times within 1 second. Infinite loop suspected`\n );\n if (this.dispose(), console.error(r), a)\n throw r;\n }\n }\n _throwInfiniteLoopError(e) {\n const t = new b(\n `Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${w}`\n );\n throw this.dispose(), console.error(t), t;\n }\n /**\n * Determines if the effect should execute based on dependency versions.\n * @returns true if any dependency has changed or if it's the first run.\n */\n _shouldExecute() {\n if (this._dependencies === u || this._dependencyVersions === _)\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t) {\n if (\"value\" in t)\n try {\n _e(() => t.value);\n } catch {\n return !0;\n }\n if (t.version !== this._dependencyVersions[e])\n return !0;\n }\n }\n return !1;\n }\n /**\n * Checks for potential infinite loops where an effect modifies its own dependencies.\n * Only active if trackModifications is enabled and debug is on.\n */\n _checkLoopWarnings() {\n if (this._trackModifications && d.enabled) {\n const e = this._dependencies;\n for (let t = 0; t < e.length; t++) {\n const s = e[t];\n s && s._modifiedAtEpoch === this._currentEpoch && d.warn(\n !0,\n `Effect is reading a dependency (${d.getDebugName(s) || \"unknown\"}) that it just modified. Infinite loop may occur`\n );\n }\n }\n }\n}\nfunction ye(i, e = {}) {\n if (typeof i != \"function\")\n throw new b(h.EFFECT_MUST_BE_FUNCTION);\n const t = new Ee(i, e);\n return t.execute(), t;\n}\nexport {\n v as AsyncState,\n p as AtomError,\n N as ComputedError,\n k as DEBUG_CONFIG,\n d as DEBUG_RUNTIME,\n b as EffectError,\n pe as POOL_CONFIG,\n g as SCHEDULER_CONFIG,\n O as SchedulerError,\n De as atom,\n be as batch,\n Ie as computed,\n ye as effect,\n ae as isAtom,\n Se as isComputed,\n ge as isEffect,\n T as scheduler,\n _e as untracked\n};\n//# sourceMappingURL=index.mjs.map\n","import type { ComputedAtom, ReactiveValue, ReadonlyAtom } from './types';\n\n/**\n * Checks if a given value is a reactive object (Atom or Computed).\n * A reactive object is expected to have a 'value' property and a 'subscribe' method.\n *\n * @param value - The value to check.\n * @returns True if the value is reactive, false otherwise.\n */\nexport function isReactive(value: unknown): value is ReadonlyAtom<unknown> | ComputedAtom<unknown> {\n return value !== null && typeof value === 'object' && 'value' in value && 'subscribe' in value;\n}\n\n/**\n * Extracts the underlying raw value from a ReactiveValue.\n * If the source is reactive, it returns its current value; otherwise, it returns the source itself.\n *\n * @template T - The type of the value.\n * @param source - The reactive value or raw value to extract from.\n * @returns The extracted raw value.\n */\nexport function getValue<T>(source: ReactiveValue<T>): T {\n if (isReactive(source)) {\n return (source as ReadonlyAtom<T>).value;\n }\n return source as T;\n}\n\n/**\n * Generates a CSS selector string for a DOM element.\n * Accepts both raw Element and JQuery objects for flexibility.\n * This is primarily used for debugging and logging purposes to identify elements.\n *\n * @param el - The DOM element or JQuery object to generate a selector for.\n * @returns A string representing the element's ID, classes, or tag name.\n */\nexport function getSelector(el: Element | JQuery): string {\n // Handle JQuery objects by extracting the first DOM element\n const domEl = (el as JQuery).jquery ? (el as JQuery)[0] : (el as Element);\n if (!domEl) return 'unknown';\n\n if (domEl.id) return `#${domEl.id}`;\n if (domEl.className) {\n const classes = String(domEl.className).split(/\\s+/).filter(Boolean).join('.');\n return classes ? `${domEl.tagName.toLowerCase()}.${classes}` : domEl.tagName.toLowerCase();\n }\n return domEl.tagName.toLowerCase();\n}\n","/**\n * Debug Mode\n *\n * When $.atom.debug = true is enabled:\n * 1. Logs state changes to the console.\n * 2. Visually highlights DOM updates (red border flash).\n *\n * Debug mode can be enabled in two ways:\n * 1. Environment variable (build-time): NODE_ENV=development\n * 2. Runtime: $.atom.debug = true or window.__ATOM_DEBUG__ = true\n */\n\nimport { getSelector } from './utils';\n\n/**\n * Determines the initial debug state based on environment.\n * Priority: window.__ATOM_DEBUG__ > NODE_ENV === 'development'\n */\nfunction getInitialDebugState(): boolean {\n // Browser: check global flag\n if (typeof window !== 'undefined') {\n const globalFlag = (window as Window & { __ATOM_DEBUG__?: boolean }).__ATOM_DEBUG__;\n if (typeof globalFlag === 'boolean') {\n return globalFlag;\n }\n }\n\n // Vite support\n if (import.meta.env?.DEV && import.meta.env.MODE !== 'test') {\n return true;\n }\n\n // Node/Bundler check\n try {\n // @ts-expect-error\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') {\n return true;\n }\n } catch (_e) {\n // ignore\n }\n\n return false;\n}\n\nlet debugEnabled = getInitialDebugState();\n\nexport const debug = {\n get enabled() {\n return debugEnabled;\n },\n set enabled(value: boolean) {\n debugEnabled = value;\n },\n\n log<T>(type: string, ...args: T[]) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] ${type}:`, ...args);\n }\n },\n\n atomChanged<T>(name: string | undefined, oldVal: T, newVal: T) {\n if (debugEnabled) {\n const label = name || 'anonymous';\n console.log(`[atom-effect-jquery] Atom \"${label}\" changed:`, oldVal, '→', newVal);\n }\n },\n\n /**\n * Logs DOM updates and triggers visual highlight.\n */\n domUpdated<T>($el: JQuery, type: string, value: T) {\n if (!debugEnabled) return;\n\n // Console logging\n const selector = getSelector($el);\n console.log(`[atom-effect-jquery] DOM updated: ${selector}.${type} =`, value);\n\n // Visual highlight (red border flash)\n highlightElement($el);\n },\n\n cleanup(selector: string) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] Cleanup: ${selector}`);\n }\n },\n\n warn<T>(...args: T[]) {\n if (debugEnabled) {\n console.warn('[atom-effect-jquery]', ...args);\n }\n },\n};\n\n/**\n * Visual highlight - flashes a red border.\n * Inspired by React DevTools \"Highlight updates\".\n *\n * Uses data attributes to manage state and prevent style pollution\n * when updates happen rapidly.\n */\nfunction highlightElement($el: JQuery): void {\n const el = $el[0];\n if (!el || !document.contains(el)) return;\n\n const TIMER_KEY = 'atom_debug_timer';\n const CLEANUP_TIMER_KEY = 'atom_debug_cleanup_timer';\n const ORG_STYLE_KEY = 'atom_debug_org_style';\n\n // 1. Clear existing timers for both restoration and cleanup\n clearTimeout($el.data(TIMER_KEY));\n clearTimeout($el.data(CLEANUP_TIMER_KEY));\n\n // 2. Save original style only if not already actively highlighting\n // (meaning this is the start of a highlight sequence)\n if (!$el.data(ORG_STYLE_KEY)) {\n $el.data(ORG_STYLE_KEY, {\n outline: $el.css('outline'),\n outlineOffset: $el.css('outline-offset'),\n transition: $el.css('transition'),\n });\n }\n\n // 3. Apply highlight style\n $el.css({\n outline: '2px solid rgba(255, 68, 68, 0.8)',\n 'outline-offset': '1px',\n transition: 'none', // Remove transition for instant feedback on update\n });\n\n // 4. Set timer to restore\n const timerId = setTimeout(() => {\n // Restore original styles\n const originalStyles = $el.data(ORG_STYLE_KEY);\n\n // We add a transition for the fade out\n $el.css('transition', 'outline 0.5s ease-out');\n\n // Defer the actual style restoration to allow transition to take effect\n requestAnimationFrame(() => {\n $el.css({\n outline: originalStyles?.outline || '',\n 'outline-offset': originalStyles?.outlineOffset || '',\n });\n\n // 5. Cleanup data after fade out\n // Wait for transition to finish (500ms)\n const cleanupTimerId = setTimeout(() => {\n $el.css('transition', originalStyles?.transition || '');\n $el.removeData(TIMER_KEY);\n $el.removeData(CLEANUP_TIMER_KEY);\n $el.removeData(ORG_STYLE_KEY);\n }, 500);\n $el.data(CLEANUP_TIMER_KEY, cleanupTimerId);\n });\n }, 100); // Flash duration\n\n $el.data(TIMER_KEY, timerId);\n}\n","import {\n batch,\n computed,\n atom as createAtom,\n effect,\n isAtom,\n isComputed,\n untracked,\n} from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport type { AtomOptions, WritableAtom } from './types';\n\n/**\n * Stores Atom metadata (for debugging).\n */\nconst atomMetadata = new WeakMap<WritableAtom<unknown>, { name?: string }>();\n\n/**\n * Creates an atom with optional metadata.\n */\nfunction atom<T>(initialValue: T, options: AtomOptions = {}): WritableAtom<T> {\n const instance = createAtom(initialValue, options);\n\n // Store metadata\n if (options.name) {\n atomMetadata.set(instance, { name: options.name });\n }\n\n // Debug mode: Value change detection\n // Note: Wrapper logic removed due to interference with atom-effect internals (computed reactivity)\n // Revisit if safer interception method is found.\n /*\n if (debug.enabled || options.name) {\n // ... removed ...\n }\n */\n\n return instance;\n}\n\n// Add debug property\nObject.defineProperty(atom, 'debug', {\n get() {\n return debug.enabled;\n },\n set(value: boolean) {\n debug.enabled = value;\n },\n});\n\n/**\n * Waits for the next microtask (tick).\n * Useful for waiting for batched updates to complete in tests or async logic.\n * logic: Uses setTimeout to ensure it runs after all microtasks (where effects are processed).\n */\nfunction nextTick(): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, 0));\n}\n\n/**\n * Extend jQuery static methods.\n */\n$.extend({\n atom,\n computed,\n effect,\n batch,\n untracked,\n isAtom,\n isComputed,\n isReactive: (v: unknown) => isAtom(v) || isComputed(v),\n nextTick,\n});\n","import type {\n AtomOptions as BaseAtomOptions,\n ComputedAtom,\n ComputedOptions,\n EffectObject,\n ReadonlyAtom,\n WritableAtom,\n} from '@but212/atom-effect';\n\n/**\n * Extended options for Atom creation.\n */\nexport interface AtomOptions extends BaseAtomOptions {\n /** Name for debugging purposes */\n name?: string;\n}\n\n/**\n * Represents a value that can be either dynamic (Atom/Computed) or static.\n */\nexport type ReactiveValue<T> = T | ReadonlyAtom<T> | ComputedAtom<T>;\n\n/**\n * CSS value: either a direct reactive value or a tuple of [source, unit].\n * Named type provides clear bone structure for CSS binding configurations.\n */\nexport type CssValue =\n | ReactiveValue<string | number>\n | [source: ReactiveValue<number>, unit: string];\n\n/**\n * CSS bindings map property names to CSS values.\n */\nexport type CssBindings = Record<string, CssValue>;\n\n/**\n * Configuration options for `atomBind`.\n */\nexport interface BindingOptions<T> {\n text?: ReactiveValue<T>;\n html?: ReactiveValue<string>;\n class?: Record<string, ReactiveValue<boolean>>;\n css?: CssBindings;\n attr?: Record<string, ReactiveValue<string | boolean | null>>;\n prop?: Record<string, ReactiveValue<T>>;\n show?: ReactiveValue<boolean>;\n hide?: ReactiveValue<boolean>;\n val?: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>];\n checked?: WritableAtom<boolean>;\n on?: Record<string, (e: JQuery.Event) => void>;\n}\n\n/**\n * Configuration options for `atomList`.\n */\nexport interface ListOptions<T> {\n key: keyof T | ((item: T, index: number) => string | number);\n render: (item: T, index: number) => string | Element;\n bind?: ($el: JQuery, item: T, index: number) => void;\n update?: ($el: JQuery, item: T, index: number) => void;\n onAdd?: ($el: JQuery) => void;\n onRemove?: ($el: JQuery) => Promise<void> | void;\n empty?: string;\n}\n\n/**\n * Configuration options for `atomVal`.\n */\nexport interface ValOptions<T> {\n debounce?: number;\n event?: string;\n parse?: (v: string) => T;\n format?: (v: T) => string;\n}\n\n/**\n * State context for two-way input bindings.\n * Consolidates scattered state flags into a single, traceable object.\n * This is the \"bone structure\" for input binding lifecycle management.\n */\nexport interface InputBindingState {\n /** Timeout ID for debounced updates */\n timeoutId: number | null;\n /** Current binding phase - makes state transitions explicit and traceable */\n phase: 'idle' | 'composing' | 'syncing-to-atom' | 'syncing-to-dom';\n /** Whether the input currently has focus */\n hasFocus: boolean;\n}\n\n/**\n * Creates a fresh InputBindingState with default values.\n */\nexport function createInputBindingState(): InputBindingState {\n return { timeoutId: null, phase: 'idle', hasFocus: false };\n}\n\n/**\n * Functional Component type.\n */\nexport type ComponentFn<P = {}> = ($el: JQuery, props: P) => undefined | (() => void);\n\ndeclare global {\n interface JQueryStatic {\n atom: {\n <T>(initialValue: T, options?: AtomOptions): WritableAtom<T>;\n debug: boolean;\n };\n computed<T>(fn: () => T, options?: ComputedOptions<T>): ComputedAtom<T>;\n computed<T>(\n fn: () => Promise<T>,\n options: ComputedOptions<T> & { defaultValue: T }\n ): ComputedAtom<T>;\n effect(fn: () => undefined | (() => void)): EffectObject;\n batch(fn: () => void): void;\n untracked<T>(fn: () => T): T;\n isAtom(v: unknown): boolean;\n isComputed(v: unknown): boolean;\n isReactive(v: unknown): boolean;\n nextTick(): Promise<void>;\n }\n\n interface JQuery {\n // Chainable methods\n atomText<T>(source: ReactiveValue<T>, formatter?: (v: T) => string): this;\n atomHtml(source: ReactiveValue<string>): this;\n atomClass(className: string, condition: ReactiveValue<boolean>): this;\n atomCss(prop: string, source: ReactiveValue<string | number>, unit?: string): this;\n atomAttr(name: string, source: ReactiveValue<string | boolean | null>): this;\n atomProp<T extends string | number | boolean | null | undefined>(\n name: string,\n source: ReactiveValue<T>\n ): this;\n atomShow(condition: ReactiveValue<boolean>): this;\n atomHide(condition: ReactiveValue<boolean>): this;\n atomVal<T>(atom: WritableAtom<T>, options?: ValOptions<T>): this;\n atomChecked(atom: WritableAtom<boolean>): this;\n atomOn(event: string, handler: (e: JQuery.Event) => void): this;\n\n // Integrated binding\n atomBind<T extends string | number | boolean | null | undefined>(\n options: BindingOptions<T>\n ): this;\n\n // List rendering\n atomList<T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): this;\n\n // Component mounting\n atomMount<P>(component: ComponentFn<P>, props?: P): this;\n atomUnmount(): this;\n\n // Cleanup\n atomUnbind(): this;\n }\n}\n\nexport type { WritableAtom, ReadonlyAtom, ComputedAtom, EffectObject, ComputedOptions };\n","import { batch } from '@but212/atom-effect';\nimport { debug } from './debug';\nimport type { InputBindingState, ValOptions, WritableAtom } from './types';\nimport { createInputBindingState } from './types';\n\n/**\n * Applies two-way data binding configuration to an input element.\n * Shared logic used by both implicit (atomBind) and explicit (atomVal) bindings.\n *\n * @param $el - The jQuery element to bind.\n * @param atom - The target atom for two-way binding.\n * @param options - Binding options (parse, format, debounce, events).\n * @returns Object containing the effect function (for Atom -> DOM) and cleanup function.\n */\nexport function applyInputBinding<T>(\n $el: JQuery,\n atom: WritableAtom<T>,\n options: ValOptions<T> = {}\n): { effect: () => void; cleanup: () => void } {\n const {\n debounce: debounceMs,\n event = 'input',\n parse = (v: string) => v as unknown as T,\n format = (v: T) => String(v ?? ''),\n } = options;\n\n const state: InputBindingState = createInputBindingState();\n\n // IME composition support (CJK input)\n const onCompositionStart = () => {\n state.phase = 'composing';\n };\n\n const onCompositionEnd = () => {\n state.phase = 'idle';\n syncAtomFromDom();\n };\n\n $el.on('compositionstart', onCompositionStart);\n $el.on('compositionend', onCompositionEnd);\n\n // Focus tracking for smart formatting\n const onFocus = () => {\n state.hasFocus = true;\n };\n\n const onBlur = () => {\n state.hasFocus = false;\n // Force formatting on blur to ensure clean display\n const formatted = format(atom.value);\n if ($el.val() !== formatted) {\n $el.val(formatted);\n }\n };\n\n $el.on('focus', onFocus);\n $el.on('blur', onBlur);\n\n // Core sync: DOM → Atom\n const syncAtomFromDom = () => {\n if (state.phase !== 'idle') return;\n\n state.phase = 'syncing-to-atom';\n batch(() => {\n atom.value = parse($el.val() as string);\n });\n state.phase = 'idle';\n };\n\n // Input handler with optional debounce\n const onInput = () => {\n if (state.phase !== 'idle') return;\n\n if (debounceMs) {\n if (state.timeoutId) clearTimeout(state.timeoutId);\n state.timeoutId = window.setTimeout(syncAtomFromDom, debounceMs);\n } else {\n syncAtomFromDom();\n }\n };\n\n $el.on(event, onInput);\n $el.on('change', onInput);\n\n // Cleanup handler\n const cleanup = () => {\n $el.off(event, onInput);\n $el.off('change', onInput);\n $el.off('compositionstart', onCompositionStart);\n $el.off('compositionend', onCompositionEnd);\n $el.off('focus', onFocus);\n $el.off('blur', onBlur);\n if (state.timeoutId) clearTimeout(state.timeoutId);\n };\n\n // Core sync: Atom → DOM (Effect body)\n const effect = () => {\n const formatted = format(atom.value);\n const currentVal = $el.val() as string;\n\n // Update only if value differs\n if (currentVal !== formatted) {\n // Don't interrupt user input if parsed value matches\n if (state.hasFocus && parse(currentVal) === atom.value) {\n return;\n }\n\n state.phase = 'syncing-to-dom';\n $el.val(formatted);\n debug.domUpdated($el, 'val', formatted);\n state.phase = 'idle';\n }\n };\n\n return { effect, cleanup };\n}\n","import { debug } from './debug';\nimport type { EffectObject } from './types';\nimport { getSelector } from './utils';\n\n/**\n * Binding Registry\n *\n * Solving Circular Reference Issues:\n * - Prevents Atom -> Subscription -> Callback -> DOM Element cycle.\n * - Uses WeakMap to track effects and cleanup functions per DOM element.\n * - Automatically unsubscribes when DOM elements are removed via MutationObserver.\n *\n * Preventing Memory Leaks:\n * - Must call unsubscribe() when DOM is removed.\n * - Recursively cleans up child nodes.\n */\nclass BindingRegistry {\n // DOM Element -> Effect Array (for disposal)\n private effects = new WeakMap<Element, EffectObject[]>();\n\n // DOM Element -> Custom Cleanup Function Array\n private cleanups = new WeakMap<Element, Array<() => void>>();\n\n // Track bound elements (Performance optimization)\n private boundElements = new WeakSet<Element>();\n\n /**\n * Tracks elements that are temporarily detached (e.g. via .detach())\n * so they are NOT cleaned up by the MutationObserver.\n */\n private preservedNodes = new WeakSet<Node>();\n\n keep(node: Node): void {\n this.preservedNodes.add(node);\n }\n\n isKept(node: Node): boolean {\n return this.preservedNodes.has(node);\n }\n\n /**\n * Registers an Effect to be disposed later.\n */\n trackEffect(el: Element, fx: EffectObject): void {\n const list = this.effects.get(el) || [];\n list.push(fx);\n this.effects.set(el, list);\n this.boundElements.add(el);\n }\n\n /**\n * Registers a custom cleanup function (e.g., event listener removal).\n */\n trackCleanup(el: Element, fn: () => void): void {\n const list = this.cleanups.get(el) || [];\n list.push(fn);\n this.cleanups.set(el, list);\n this.boundElements.add(el);\n }\n\n /**\n * Checks if an element has bindings (Fast check).\n */\n hasBind(el: Element): boolean {\n return this.boundElements.has(el);\n }\n\n /**\n * Cleans up a single element.\n * - Disposes all Effects (severs connection with Atom).\n * - Executes all custom cleanups.\n */\n cleanup(el: Element): void {\n if (!this.boundElements.has(el)) return;\n\n debug.cleanup(getSelector(el));\n\n // 1. Dispose Effects - Unsubscribe from Atoms (Break circular reference!)\n const effects = this.effects.get(el);\n if (effects) {\n this.effects.delete(el); // Delete first to prevent re-entry\n effects.forEach((fx) => {\n try {\n fx.dispose();\n } catch (e) {\n debug.warn('Effect dispose error:', e);\n }\n });\n }\n\n // 2. Execute custom cleanups (e.g., remove event listeners)\n const cleanups = this.cleanups.get(el);\n if (cleanups) {\n this.cleanups.delete(el); // Delete first to prevent re-entry\n cleanups.forEach((fn) => {\n try {\n fn();\n } catch (e) {\n debug.warn('Cleanup error:', e);\n }\n });\n }\n\n this.boundElements.delete(el);\n }\n\n /**\n * Cleans up the element and all its descendants (Recursive).\n * - Essential for deep removal (empty(), remove(), etc.).\n */\n cleanupTree(el: Element): void {\n // Descendants first (Depth-First)\n const children = el.querySelectorAll('*');\n children.forEach((child) => {\n if (this.boundElements.has(child)) {\n this.cleanup(child);\n }\n });\n\n // Then the element itself\n this.cleanup(el);\n }\n}\n\nexport const registry = new BindingRegistry();\n\n/**\n * MutationObserver for Auto-Cleanup\n *\n * jQuery's .remove() or .empty() cannot clean up external library (Atom) subscriptions.\n * MutationObserver is essential to detect DOM removals and trigger cleanup.\n */\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 (const mutation of mutations) {\n mutation.removedNodes.forEach((node) => {\n // If the node is marked as \"kept\" (e.g. .detach()), skip cleanup\n if (registry.isKept(node)) {\n return;\n }\n\n if (node.isConnected) {\n return;\n }\n\n // Use nodeType === 1 check instead of instanceof Element to avoid\n // ReferenceError during test teardown where Element might be undefined\n if (node.nodeType === 1) {\n // Cleanup removed node and all its descendants recursively\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 { batch, effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type { ReactiveValue, ValOptions, WritableAtom } from './types';\nimport { getValue, isReactive } from './utils';\n\n/**\n * Updates element text content.\n * @param source - Atom or static value.\n * @param formatter - Optional function to format the value.\n */\n$.fn.atomText = function <T>(source: ReactiveValue<T>, formatter?: (v: T) => string): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = getValue(source);\n const text = formatter ? formatter(value) : String(value ?? '');\n $el.text(text);\n debug.domUpdated($el, 'text', text);\n });\n registry.trackEffect(this, fx);\n } else {\n const text = formatter ? formatter(source) : String(source ?? '');\n $el.text(text);\n }\n });\n};\n\n/**\n * Updates element inner HTML.\n * @param source - Atom or static value.\n */\n$.fn.atomHtml = function (source: ReactiveValue<string>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(source)) {\n const fx = effect(() => {\n const html = String(getValue(source) ?? '');\n $el.html(html);\n debug.domUpdated($el, 'html', html);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.html(String(source ?? ''));\n }\n });\n};\n\n/**\n * Toggles a CSS class based on boolean value.\n * @param className - The class to toggle.\n * @param condition - Boolean source value.\n */\n$.fn.atomClass = function (className: string, condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(condition)) {\n const fx = effect(() => {\n const value = Boolean(getValue(condition));\n $el.toggleClass(className, value);\n debug.domUpdated($el, `class.${className}`, value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.toggleClass(className, Boolean(condition));\n }\n });\n};\n\n/**\n * Updates a CSS style property.\n * @param prop - CSS property name.\n * @param source - Value source.\n * @param unit - Optional unit (e.g., 'px', 'em').\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\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = getValue(source);\n const cssValue = unit ? `${value}${unit}` : value;\n $el.css(prop, cssValue);\n debug.domUpdated($el, `css.${prop}`, cssValue);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.css(prop, unit ? `${source}${unit}` : source);\n }\n });\n};\n\n/**\n * Updates an HTML attribute.\n * @param name - Attribute name.\n * @param source - Attribute value.\n */\n$.fn.atomAttr = function (name: string, source: ReactiveValue<string | boolean | null>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n const applyAttr = (value: string | boolean | null) => {\n if (value === null || value === undefined || value === false) {\n $el.removeAttr(name);\n } else if (value === true) {\n $el.attr(name, name);\n } else {\n $el.attr(name, String(value));\n }\n debug.domUpdated($el, `attr.${name}`, value);\n };\n\n if (isReactive(source)) {\n const fx = effect(() => applyAttr(getValue(source)));\n registry.trackEffect(this, fx);\n } else {\n applyAttr(source);\n }\n });\n};\n\n/**\n * Updates a DOM property (e.g., checked, selected, value).\n * @param name - Property name.\n * @param source - Property 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\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = getValue(source);\n $el.prop(name, value);\n debug.domUpdated($el, `prop.${name}`, value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.prop(name, source);\n }\n });\n};\n\n/**\n * Shows element when condition is true.\n * @param condition - Boolean source value.\n */\n$.fn.atomShow = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(condition)) {\n const fx = effect(() => {\n const value = Boolean(getValue(condition));\n $el.toggle(value);\n debug.domUpdated($el, 'show', value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.toggle(Boolean(condition));\n }\n });\n};\n\n/**\n * Hides element when condition is true.\n * @param condition - Boolean source value.\n */\n$.fn.atomHide = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(condition)) {\n const fx = effect(() => {\n const value = !getValue(condition);\n $el.toggle(value);\n debug.domUpdated($el, 'hide', !value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.toggle(!condition);\n }\n });\n};\n\n/**\n * Two-way binding for input values.\n * Uses InputBindingState for explicit lifecycle management.\n * Supports IME (Input Method Editor) for CJK languages.\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\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\n let isUpdatingFromAtom = false;\n\n // DOM → Atom\n const handler = () => {\n if (isUpdatingFromAtom) return;\n\n batch(() => {\n atom.value = $el.prop('checked');\n });\n };\n\n $el.on('change', handler);\n registry.trackCleanup(this, () => $el.off('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n isUpdatingFromAtom = true;\n $el.prop('checked', atom.value);\n debug.domUpdated($el, 'checked', atom.value);\n isUpdatingFromAtom = false;\n });\n registry.trackEffect(this, fx);\n });\n};\n\n/**\n * Binds an event handler that automatically runs within a batch.\n */\n$.fn.atomOn = function (event: string, handler: (e: JQuery.Event) => void): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n const wrappedHandler = function (this: HTMLElement, e: JQuery.Event) {\n batch(() => handler.call(this, e));\n };\n\n $el.on(event, wrappedHandler);\n registry.trackCleanup(this, () => $el.off(event, wrappedHandler));\n });\n};\n\n/**\n * Removes all atom bindings and cleanup effects from the elements.\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 { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type { BindingOptions, CssValue, ReactiveValue, ValOptions, WritableAtom } from './types';\nimport { createInputBindingState } from './types';\nimport { getValue, isReactive } from './utils';\n\n// ============================================================================\n// Binding Handler Types\n// ============================================================================\n\n/**\n * Effect factory function - returns effects to register, or empty array for static bindings.\n */\ntype EffectFactory = () => void;\n\n/**\n * Context passed to binding handlers for cleanup registration.\n */\ninterface BindingContext {\n readonly $el: JQuery;\n readonly el: HTMLElement;\n readonly effects: EffectFactory[];\n readonly trackCleanup: (fn: () => void) => void;\n}\n\n// ============================================================================\n// One-Way Binding Handlers (Atom → DOM)\n// ============================================================================\n\nfunction bindText<T>(ctx: BindingContext, value: ReactiveValue<T>): void {\n if (isReactive(value)) {\n ctx.effects.push(() => {\n const text = String(getValue(value) ?? '');\n ctx.$el.text(text);\n debug.domUpdated(ctx.$el, 'text', text);\n });\n } else {\n ctx.$el.text(String(value ?? ''));\n }\n}\n\nfunction bindHtml(ctx: BindingContext, value: ReactiveValue<string>): void {\n if (isReactive(value)) {\n ctx.effects.push(() => {\n const html = String(getValue(value) ?? '');\n ctx.$el.html(html);\n debug.domUpdated(ctx.$el, 'html', html);\n });\n } else {\n ctx.$el.html(String(value ?? ''));\n }\n}\n\nfunction bindClass(ctx: BindingContext, classMap: Record<string, ReactiveValue<boolean>>): void {\n for (const [className, condition] of Object.entries(classMap)) {\n if (isReactive(condition)) {\n ctx.effects.push(() => {\n const value = Boolean(getValue(condition));\n ctx.$el.toggleClass(className, value);\n debug.domUpdated(ctx.$el, `class.${className}`, value);\n });\n } else {\n ctx.$el.toggleClass(className, Boolean(condition));\n }\n }\n}\n\nfunction bindCss(ctx: BindingContext, cssMap: Record<string, CssValue>): void {\n for (const [prop, value] of Object.entries(cssMap)) {\n if (Array.isArray(value)) {\n const [source, unit] = value;\n if (isReactive(source)) {\n ctx.effects.push(() => {\n const cssValue = `${getValue(source)}${unit}`;\n ctx.$el.css(prop, cssValue);\n debug.domUpdated(ctx.$el, `css.${prop}`, cssValue);\n });\n } else {\n ctx.$el.css(prop, `${source}${unit}`);\n }\n } else if (isReactive(value)) {\n ctx.effects.push(() => {\n const cssValue = getValue(value) as string | number;\n ctx.$el.css(prop, cssValue);\n debug.domUpdated(ctx.$el, `css.${prop}`, cssValue);\n });\n } else {\n ctx.$el.css(prop, value as string | number);\n }\n }\n}\n\nfunction bindAttr(\n ctx: BindingContext,\n attrMap: Record<string, ReactiveValue<string | boolean | null>>\n): void {\n for (const [name, value] of Object.entries(attrMap)) {\n const applyAttr = (v: string | boolean | null | undefined) => {\n if (v === null || v === undefined || v === false) {\n ctx.$el.removeAttr(name);\n } else if (v === true) {\n ctx.$el.attr(name, name);\n } else {\n ctx.$el.attr(name, String(v));\n }\n debug.domUpdated(ctx.$el, `attr.${name}`, v);\n };\n\n if (isReactive(value)) {\n ctx.effects.push(() => applyAttr(getValue(value)));\n } else {\n applyAttr(value);\n }\n }\n}\n\nfunction bindProp(ctx: BindingContext, propMap: Record<string, ReactiveValue<unknown>>): void {\n for (const [name, value] of Object.entries(propMap)) {\n if (isReactive(value)) {\n ctx.effects.push(() => {\n const propValue = getValue(value);\n ctx.$el.prop(name, propValue as string | number | boolean | null | undefined);\n debug.domUpdated(ctx.$el, `prop.${name}`, propValue);\n });\n } else {\n ctx.$el.prop(name, value as string | number | boolean | null | undefined);\n }\n }\n}\n\nfunction bindShow(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n if (isReactive(condition)) {\n ctx.effects.push(() => {\n const value = Boolean(getValue(condition));\n ctx.$el.toggle(value);\n debug.domUpdated(ctx.$el, 'show', value);\n });\n } else {\n ctx.$el.toggle(Boolean(condition));\n }\n}\n\nfunction bindHide(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n if (isReactive(condition)) {\n ctx.effects.push(() => {\n const value = !getValue(condition);\n ctx.$el.toggle(value);\n debug.domUpdated(ctx.$el, 'hide', !value);\n });\n } else {\n ctx.$el.toggle(!condition);\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 // Parse config - can be just an atom or [atom, options] tuple\n const atom = Array.isArray(valConfig) ? valConfig[0] : valConfig;\n const options = Array.isArray(valConfig) ? valConfig[1] : {};\n\n const { effect, cleanup } = applyInputBinding(ctx.$el, atom, options);\n\n ctx.effects.push(effect);\n ctx.trackCleanup(cleanup);\n}\n\nfunction bindChecked(ctx: BindingContext, atom: WritableAtom<boolean>): void {\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.phase !== 'idle') return;\n batch(() => {\n atom.value = ctx.$el.prop('checked');\n });\n };\n\n ctx.$el.on('change', handler);\n ctx.trackCleanup(() => ctx.$el.off('change', handler));\n\n // Atom → DOM\n ctx.effects.push(() => {\n state.phase = 'syncing-to-dom';\n ctx.$el.prop('checked', atom.value);\n debug.domUpdated(ctx.$el, 'checked', atom.value);\n state.phase = 'idle';\n });\n}\n\n// ============================================================================\n// Event Binding Handler\n// ============================================================================\n\nfunction bindEvents(\n ctx: BindingContext,\n eventMap: Record<string, (e: JQuery.Event) => void>\n): void {\n for (const [eventName, handler] of Object.entries(eventMap)) {\n const wrapped = function (this: HTMLElement, e: JQuery.Event) {\n batch(() => handler.call(this, e));\n };\n ctx.$el.on(eventName, wrapped);\n ctx.trackCleanup(() => ctx.$el.off(eventName, wrapped));\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 const effects: EffectFactory[] = [];\n\n // Build binding context\n const ctx: BindingContext = {\n $el,\n el: this,\n effects,\n trackCleanup: (fn) => registry.trackCleanup(this, fn),\n };\n\n // Apply bindings through focused handlers\n if (options.text !== undefined) bindText(ctx, options.text);\n if (options.html !== undefined) bindHtml(ctx, options.html);\n if (options.class) bindClass(ctx, options.class);\n if (options.css) bindCss(ctx, options.css);\n if (options.attr) bindAttr(ctx, options.attr);\n if (options.prop) bindProp(ctx, options.prop);\n if (options.show !== undefined) bindShow(ctx, options.show);\n if (options.hide !== undefined) bindHide(ctx, options.hide);\n if (options.val !== undefined) bindVal(ctx, options.val);\n if (options.checked !== undefined) bindChecked(ctx, options.checked);\n if (options.on) bindEvents(ctx, options.on);\n\n // Register all collected effects\n effects.forEach((fn) => {\n const fx = effect(fn);\n registry.trackEffect(this, fx);\n });\n });\n};\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ListOptions, ReadonlyAtom } from './types';\nimport { getSelector } from './utils';\n\n/**\n * Helper: Longest Increasing Subsequence (LIS)\n * O(N log N) algorithm used to minimize DOM moves in the diffing algorithm.\n */\nfunction getLIS(arr: number[]): number[] {\n if (arr.length === 0) return [];\n\n // predecessors: stores the index of the previous element for backtracking\n const predecessors = arr.slice();\n\n // result: stores the indices of the longest increasing subsequence found so far\n // result[k] is the index of the last element of an increasing subsequence of length k+1\n const result: number[] = [0];\n\n let i: number, left: number, right: number, mid: number;\n const len = arr.length;\n\n for (i = 0; i < len; i++) {\n const arrI = arr[i]!; // Safe: i is within bounds [0, len)\n\n // -1 is treated as \"not present\" or \"ignored\" (specific to the diff algorithm)\n if (arrI !== -1) {\n const lastResultIndex = result[result.length - 1]!; // Safe: result always has at least 1 element\n\n // Case A: If current value is greater than the last value in result -> append (Greedy)\n if (arr[lastResultIndex]! < arrI) {\n predecessors[i] = lastResultIndex;\n result.push(i);\n continue;\n }\n\n // Case B: If current value is smaller or equal -> find the insertion point (Binary Search)\n // Updates with a smaller value to increase future possibilities without breaking the sequence\n left = 0;\n right = result.length - 1;\n\n while (left < right) {\n mid = ((left + right) / 2) | 0;\n if (arr[result[mid]!]! < arrI) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n\n // Replace if the current value is smaller than the value at the found position\n if (arrI < arr[result[left]!]!) {\n if (left > 0) {\n // Link the predecessor\n predecessors[i] = result[left - 1]!; // Safe: left > 0 means left-1 >= 0\n }\n result[left] = i;\n }\n }\n }\n\n // Backtracking: reconstruct the actual LIS path using predecessors\n let u = result.length;\n let v = result[u - 1]!; // Safe: result has at least 1 element\n\n while (u-- > 0) {\n result[u] = v;\n v = predecessors[v]!; // Safe: v is always a valid index from previous iteration\n }\n\n return result;\n}\n\n/**\n * Implementation of atomList with Smart Reconciliation (Keyed Diffing)\n * Uses LIS (Longest Increasing Subsequence) to minimize DOM moves.\n */\n$.fn.atomList = function <T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): JQuery {\n return this.each(function () {\n const $container = $(this);\n const containerSelector = getSelector(this);\n\n const { key, render, bind, onAdd, onRemove, empty } = options;\n\n const getKey =\n typeof key === 'function'\n ? key\n : (item: T) => item[key as keyof T] as unknown as string | number;\n\n const itemMap = new Map<string | number, { $el: JQuery; item: T }>();\n let oldKeys: (string | number)[] = [];\n let $emptyEl: JQuery | null = null;\n\n // Track keys currently being removed (async animation etc.)\n // This prevents duplicate items when the same key is re-added during removal\n const removingKeys = new Set<string | number>();\n\n const fx = effect(() => {\n const items = source.value;\n const newKeys: (string | number)[] = [];\n const newKeySet = new Set<string | number>();\n\n // 1. Prepare keys\n for (let i = 0; i < items.length; i++) {\n const item = items[i]!; // Safe: i is within bounds\n const k = getKey(item, i);\n newKeys.push(k);\n newKeySet.add(k);\n }\n\n debug.log('list', `${containerSelector} updating with ${items.length} items`);\n\n // 2. Handle Empty State\n if (items.length === 0 && empty) {\n if (!$emptyEl) {\n $emptyEl = $(empty);\n $container.append($emptyEl);\n }\n for (const [, entry] of itemMap) {\n entry.$el.remove();\n const el = entry.$el[0];\n if (el) registry.cleanup(el);\n }\n itemMap.clear();\n oldKeys = [];\n return;\n } else if ($emptyEl) {\n $emptyEl.remove();\n $emptyEl = null;\n }\n\n // 3. Remove vanished items\n for (const [k, entry] of itemMap) {\n if (!newKeySet.has(k)) {\n // Skip if already being removed (prevents duplicate removal attempts)\n if (removingKeys.has(k)) continue;\n\n const doRemove = () => {\n entry.$el.remove();\n const el = entry.$el[0];\n if (el) registry.cleanup(el);\n removingKeys.delete(k); // Clear from tracking when removal completes\n debug.log('list', `${containerSelector} removed item:`, k);\n };\n\n itemMap.delete(k); // Remove from map immediately to avoid interference\n removingKeys.add(k); // Mark as being removed\n\n if (onRemove) {\n Promise.resolve(onRemove(entry.$el)).then(doRemove);\n } else {\n doRemove();\n }\n }\n }\n\n // 4. LIS algorithm for minimizing moves\n // Map keys to their index in the OLD list\n const oldIndexMap = new Map<string | number, number>();\n oldKeys.forEach((k, i) => oldIndexMap.set(k, i));\n\n // Construct array of old indices for the new items\n const newIndices = newKeys.map((k) => oldIndexMap.get(k) ?? -1);\n\n // Get indices of items in the new list that form the LIS (stable candidates)\n const lis = getLIS(newIndices);\n const lisSet = new Set(lis); // fast lookup\n\n // 5. Reconciliation (Backwards)\n let nextNode: Node | null = null;\n\n for (let i = items.length - 1; i >= 0; i--) {\n const key = newKeys[i]!; // Safe: i is within bounds\n const item = items[i]!; // Safe: i is within bounds\n const isStable = lisSet.has(i);\n\n if (itemMap.has(key)) {\n // Update Existing\n const entry = itemMap.get(key);\n if (!entry) continue; // Type guard\n\n entry.item = item;\n const el = entry.$el[0];\n if (!el) continue; // Type guard\n\n if (options.update) {\n options.update(entry.$el, item, i);\n }\n\n if (!isStable) {\n // MOVED (Not in LIS)\n if (nextNode) {\n entry.$el.insertBefore(nextNode);\n } else {\n entry.$el.appendTo($container);\n }\n } else {\n // STABLE (In LIS) - But check for gaps/interleaving\n // If the stable item isn't strictly before the next one, fix it.\n // (e.g., if a new item was inserted, or a neighbor moved away)\n const nextSib = el.nextSibling;\n if (nextNode && nextSib !== nextNode) {\n entry.$el.insertBefore(nextNode);\n } else if (!nextNode && nextSib) {\n entry.$el.appendTo($container);\n }\n }\n nextNode = el; // This node is now the anchor\n } else {\n // item and key are guaranteed non-undefined from the loop invariant\n const rendered = render(item, i);\n const $el: JQuery = (\n rendered instanceof Element ? $(rendered) : $(rendered as string)\n ) as JQuery;\n itemMap.set(key, { $el, item });\n\n if (nextNode) {\n $el.insertBefore(nextNode);\n } else {\n $el.appendTo($container);\n }\n\n if (bind) bind($el, item, i);\n if (onAdd) onAdd($el);\n\n debug.log('list', `${containerSelector} added item:`, key);\n\n // Use first element of new set as anchor\n const newEl = $el[0];\n if (newEl) nextNode = newEl;\n }\n }\n\n oldKeys = newKeys;\n });\n\n registry.trackEffect(this, fx);\n registry.trackCleanup(this, () => {\n itemMap.clear();\n oldKeys = [];\n $emptyEl?.remove();\n });\n });\n};\n","import $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ComponentFn } from './types';\nimport { getSelector } from './utils';\n\nconst mountedComponents = new WeakMap<Element, () => void>();\n\n/**\n * Mounts a functional component to the element.\n * Automatically cleans up existing components on the same element.\n */\n$.fn.atomMount = function <P>(component: ComponentFn<P>, props: P = {} as P): JQuery {\n return this.each(function () {\n const $el = $(this);\n const selector = getSelector(this);\n\n // Unmount existing component\n const existing = mountedComponents.get(this);\n if (existing) {\n debug.log('mount', `${selector} unmounting existing component`);\n existing();\n }\n\n debug.log('mount', `${selector} mounting component`);\n\n // Mount\n let userCleanup: undefined | (() => void);\n try {\n userCleanup = component($el, props);\n } catch (e) {\n console.error('[atom-effect-jquery] Mount error:', e);\n return;\n }\n\n // cleanup\n let isUnmounted = false;\n const fullCleanup = () => {\n if (isUnmounted) return;\n isUnmounted = true;\n\n debug.log('mount', `${selector} full cleanup`);\n\n if (typeof userCleanup === 'function') {\n try {\n userCleanup();\n } catch {}\n }\n registry.cleanupTree(this);\n mountedComponents.delete(this);\n };\n\n mountedComponents.set(this, fullCleanup);\n registry.trackCleanup(this, fullCleanup);\n });\n};\n\n/**\n * Manually unmounts a component from the element.\n */\n$.fn.atomUnmount = function (): JQuery {\n return this.each(function () {\n mountedComponents.get(this)?.();\n });\n};\n","import { batch } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { registry } from './registry';\n\n/**\n * WeakMap to store strict association between original handlers and batched wrappers.\n * This ensures that .off() works correctly when passing the original handler.\n */\nconst handlerMap = new WeakMap<Function, Function>();\n\nlet isjQueryOverridesEnabled = false;\n\n/**\n * Patches jQuery methods to integrate with the reactive system.\n *\n * 1. Lifecycle Overrides (.remove, .empty, .detach):\n * - Automatically cleans up effects/bindings when elements are removed.\n * - Preserves bindings when elements are detached.\n *\n * 2. Event Batching (.on, .off):\n * - Wraps event handlers in batch() to optimize rendering.\n */\nexport function enablejQueryOverrides() {\n if (isjQueryOverridesEnabled) return;\n isjQueryOverridesEnabled = true;\n\n const originalOn = $.fn.on;\n const originalOff = $.fn.off;\n const originalRemove = $.fn.remove;\n const originalEmpty = $.fn.empty;\n const originalDetach = $.fn.detach;\n\n // ========== Lifecycle Overrides ==========\n\n // .remove() - Delete element + Unsubscribe\n $.fn.remove = function (selector?: string) {\n // Filter elements if selector is provided, as per jQuery docs\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.cleanupTree(this);\n });\n\n return originalRemove.call(this, selector);\n };\n\n // .empty() - Delete children + Recursive Unsubscribe\n $.fn.empty = function () {\n this.each(function () {\n const children = this.querySelectorAll('*');\n children.forEach((child) => registry.cleanup(child));\n // Note: cleanupTree(this) would unsubscribe the element itself, which is incorrect for .empty().\n // We must clean up all descendants. `querySelectorAll('*')` achieves this.\n });\n\n return originalEmpty.call(this);\n };\n\n // .detach() - Remove from DOM + Keep Subscription (Marking)\n $.fn.detach = function (selector?: string) {\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.keep(this);\n });\n\n return originalDetach.call(this, selector);\n };\n\n // ========== Event Overrides ==========\n\n // Patch .on()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.on = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n\n let wrappedFn: Function | undefined;\n if (handlerMap.has(originalFn)) {\n wrappedFn = handlerMap.get(originalFn);\n } else {\n // biome-ignore lint/suspicious/noExplicitAny: internal this\n wrappedFn = function (this: any, ...eventArgs: any[]) {\n // biome-ignore lint/suspicious/noExplicitAny: return value\n let result: any;\n batch(() => {\n result = originalFn.apply(this, eventArgs);\n });\n return result;\n };\n handlerMap.set(originalFn, wrappedFn);\n }\n\n args[fnIndex] = wrappedFn;\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOn.apply(this, args as any);\n };\n\n // Patch .off()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.off = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n if (handlerMap.has(originalFn)) {\n args[fnIndex] = handlerMap.get(originalFn);\n }\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOff.apply(this, args as any);\n };\n}\n\n// Alias for backward compatibility if needed, though we are refactoring.\nexport const enablejQueryBatching = enablejQueryOverrides;\n","/**\n * atom-effect-jquery\n *\n * Brings reactivity to jQuery.\n *\n * Features:\n * - Full CJK IME Support (Input Method Editor).\n * - Auto-cleanup via MutationObserver (No memory leaks).\n * - Debug Mode: Console logging + Visual Highlighting.\n */\n\nimport $ from 'jquery';\n\n// Register plugins\nimport './namespace';\nimport './chainable';\nimport './unified';\nimport './list';\nimport './mount';\n\nimport { enablejQueryOverrides } from './jquery-patch';\n// Auto-cleanup (Crucial!)\nimport { disableAutoCleanup, enableAutoCleanup, registry } from './registry';\n\n// Auto-enable on DOM ready\nenablejQueryOverrides();\n$(() => {\n enableAutoCleanup(document.body);\n});\n\n// Explicit import support\nexport {\n atom,\n batch,\n computed,\n effect,\n untracked,\n} from '@but212/atom-effect';\n// Optional: Auto-batching for jQuery events\nexport { enablejQueryBatching, enablejQueryOverrides } from './jquery-patch';\n// Export types\nexport type {\n BindingOptions,\n ComponentFn,\n ComputedAtom,\n ListOptions,\n ReadonlyAtom,\n WritableAtom,\n} from './types';\n\nexport { registry, enableAutoCleanup, disableAutoCleanup };\nexport default $;\n"],"names":["te","v","A","c","g","k","I","a","se","p","t","s","N","b","O","h","i","L","ie","V","q","ne","j","G","n","d","re","oe","Y","$","U","H","ce","x","w","F","z","X","he","ue","T","be","y","_e","P","ae","Se","J","le","Q","W","K","fe","De","B","u","l","_","S","D","f","de","R","Z","M","ee","m","E","C","Ie","Ee","ye","isReactive","value","getValue","source","getSelector","el","domEl","classes","getInitialDebugState","globalFlag","debugEnabled","debug","type","args","name","oldVal","newVal","$el","selector","highlightElement","TIMER_KEY","CLEANUP_TIMER_KEY","ORG_STYLE_KEY","timerId","originalStyles","cleanupTimerId","atomMetadata","atom","initialValue","options","instance","createAtom","nextTick","resolve","computed","effect","batch","untracked","isAtom","isComputed","createInputBindingState","applyInputBinding","debounceMs","event","parse","format","state","onCompositionStart","onCompositionEnd","syncAtomFromDom","onFocus","onBlur","formatted","onInput","currentVal","BindingRegistry","node","fx","list","fn","effects","e","cleanups","child","registry","observer","enableAutoCleanup","root","mutations","mutation","disableAutoCleanup","formatter","text","html","className","condition","prop","unit","cssValue","applyAttr","fxFn","cleanup","isUpdatingFromAtom","handler","wrappedHandler","bindText","ctx","bindHtml","bindClass","classMap","bindCss","cssMap","bindAttr","attrMap","bindProp","propMap","propValue","bindShow","bindHide","bindVal","valConfig","bindChecked","bindEvents","eventMap","eventName","wrapped","getLIS","arr","predecessors","result","left","right","mid","len","arrI","lastResultIndex","$container","containerSelector","key","render","bind","onAdd","onRemove","empty","getKey","item","itemMap","oldKeys","$emptyEl","removingKeys","items","newKeys","newKeySet","entry","doRemove","oldIndexMap","newIndices","lis","lisSet","nextNode","isStable","nextSib","rendered","newEl","mountedComponents","component","props","existing","userCleanup","isUnmounted","fullCleanup","handlerMap","isjQueryOverridesEnabled","enablejQueryOverrides","originalOn","originalOff","originalRemove","originalEmpty","originalDetach","fnIndex","originalFn","wrappedFn","eventArgs","enablejQueryBatching"],"mappings":"+QAAK,MAACA,GAAK,CAET,cAAe,GACjB,EAAGC,EAAI,CACL,KAAM,OACN,QAAS,UACT,SAAU,WACV,SAAU,UACZ,EAAGC,EAAI,CACL,SAAU,EAEV,UAAW,CAEb,EAAGC,EAAI,CACL,MAAO,EAEP,KAAM,EAEN,QAAS,EAET,SAAU,EAEV,SAAU,GAEV,YAAa,GAEb,UAAW,EAEb,EAKGC,EAAI,CAEL,0BAA2B,IAO3B,0BAA2B,IAK3B,yBAA0B,IAE1B,qBAAsB,IAEtB,qBAAsB,EACxB,EAAGC,GAAI,CAEL,iBAAkB,IAElB,mBAAoB,EACtB,EAAGC,EAAI,WAAYC,EAAI,OAAO,QAAU,KAAO,QAAQ,KAAO,QAAQ,IAAI,WAAa,aAAcC,GAAK,OAAO,OAAO,CAAA,CAAE,EAC1H,MAAMC,UAAU,KAAM,CAOpB,YAAY,EAAGC,EAAI,KAAMC,EAAI,GAAI,CAC/B,MAAM,CAAC,EAAG,KAAK,KAAO,YAAa,KAAK,MAAQD,EAAG,KAAK,YAAcC,EAAG,KAAK,UAA4B,IAAI,IAChH,CACF,CACA,MAAMC,UAAUH,CAAE,CAMhB,YAAY,EAAGC,EAAI,KAAM,CACvB,MAAM,EAAGA,EAAG,EAAE,EAAG,KAAK,KAAO,eAC/B,CACF,CACA,MAAMG,UAAUJ,CAAE,CAMhB,YAAY,EAAGC,EAAI,KAAM,CACvB,MAAM,EAAGA,EAAG,EAAE,EAAG,KAAK,KAAO,aAC/B,CACF,CACA,MAAMI,WAAUL,CAAE,CAMhB,YAAY,EAAGC,EAAI,KAAM,CACvB,MAAM,EAAGA,EAAG,EAAE,EAAG,KAAK,KAAO,gBAC/B,CACF,CACA,MAAMK,EAAI,CAOR,0BAA2B,uCAI3B,qCAAsC,8DAItC,kCAAmC,0DAInC,4BAA6B,8BAI7B,kCAAmC,oCAInC,wCAAyC,oCAOzC,iCAAkC,gEAIlC,iCAAkC,kDAKlC,kCAAmC,oDAOnC,wBAAyB,qCAIzB,wBAAyB,0BAIzB,sBAAuB,2CAgBvB,uBAAyBC,GAAM,oCAAoCA,CAAC,gBAIpE,yBAA0B,mDAK1B,gCAAiC,kDACnC,EAAGC,GAAoB,OAAO,WAAW,EAAGC,GAAqB,OAAO,IAAI,EAAGC,GAAoB,OAAO,MAAM,EAAGC,GAAoB,OAAO,gBAAgB,EAC9J,SAASC,GAAGL,EAAG,CACb,MAAO,iBAAkBA,GAAK,MAAM,QAAQA,EAAE,YAAY,CAC5D,CACA,IAAIM,GAAI,EACR,SAASC,GAAEP,EAAG,EAAGN,EAAG,CAClB,GAAIM,EAAE,gBAAkBN,EAAG,CACzB,GAAIM,EAAE,cAAgBN,EAAGM,IAAM,EAC7B,MAAM,IAAIJ,EAAE,uCAAuC,EACrD,GAAIS,GAAGL,CAAC,EAAG,CACT,MAAML,EAAIK,EAAE,aACZ,QAASQ,EAAI,EAAGA,EAAIb,EAAE,OAAQa,IAAK,CACjC,MAAM,EAAIb,EAAEa,CAAC,EACb,GAAKD,GAAE,EAAG,EAAGb,CAAC,CAChB,CACF,CACF,CACF,CACA,MAAMe,EAAI,CACR,QAAS,OAAO,QAAU,KAAO,QAAQ,KAAK,WAAa,cAC3D,gBAAiBpB,GAAE,iBACnB,iBAAkBA,GAAE,mBACpB,KAAKW,EAAG,EAAG,CACT,KAAK,SAAWA,GAAK,QAAQ,KAAK,iBAAiB,CAAC,EAAE,CACxD,EAMA,cAAcA,EAAG,EAAG,CAClB,GAAIA,IAAM,EACR,MAAM,IAAIJ,EAAE,qCAAqC,EACnD,KAAK,UAAYU,KAAKC,GAAEP,EAAG,EAAGM,EAAC,EACjC,EACA,gBAAgBN,EAAG,EAAGN,EAAG,CACvB,GAAI,CAAC,KAAK,QACR,OACF,MAAMC,EAAIK,EACVL,EAAEM,EAAC,EAAI,GAAG,CAAC,IAAIP,CAAC,GAAIC,EAAEO,EAAE,EAAIR,EAAGC,EAAEQ,EAAC,EAAI,CACxC,EACA,aAAaH,EAAG,CACd,GAAIA,GAAK,MAAQC,MAAKD,EACpB,OAAOA,EAAEC,EAAC,CACd,EACA,aAAaD,EAAG,CACd,GAAIA,GAAK,MAAQG,MAAKH,EACpB,OAAOA,EAAEG,EAAC,CACd,CACF,EACA,IAAIO,GAAK,EACT,MAAMC,GAAK,IAAMD,KACjB,MAAME,EAAE,CACN,aAAc,CACZ,KAAK,GAAKD,GAAE,EAAKrB,EAAG,KAAK,MAAQ,CACnC,CACF,CACA,MAAMuB,WAAUD,EAAE,CAChB,aAAc,CACZ,MAAK,EAAI,KAAK,QAAU,EAAG,KAAK,eAAiB,EACnD,CAQA,UAAU,EAAG,CACX,GAAI,OAAO,GAAK,UAAY,IAAM,MAAQ,YAAa,EACrD,OAAO,KAAK,mBAAmB,IAAI,CAAC,EACtC,GAAI,OAAO,GAAK,WACd,MAAM,IAAInB,EAAEM,EAAE,gCAAgC,EAChD,OAAO,KAAK,qBAAqB,IAAI,CAAC,CACxC,CAIA,iBAAkB,CAChB,OAAO,KAAK,qBAAqB,KAAO,KAAK,mBAAmB,IAClE,CAOA,mBAAmB,EAAGL,EAAG,CACvB,KAAK,qBAAqB,YACvBC,GAAMA,EAAE,EAAGD,CAAC,EACZC,GAAM,QAAQ,MAAM,IAAIF,EAAEM,EAAE,kCAAmCJ,CAAC,CAAC,CACxE,EAAO,KAAK,mBAAmB,YACxBA,GAAMA,EAAE,QAAO,EACfA,GAAM,QAAQ,MAAM,IAAIF,EAAEM,EAAE,kCAAmCJ,CAAC,CAAC,CACxE,CACE,CACF,CACA,IAAImB,GAAI,EACR,SAASC,IAAI,CACX,OAAOD,IAAKA,GAAI,EAAI,GAAKxB,EAAGwB,EAC9B,CACA,SAASE,IAAK,CACZ,OAAOF,EACT,CACA,IAAIG,GAAI,EAAGC,GAAI,EAAGC,GAAI,GACtB,SAASC,IAAI,CACX,OAAOD,IAAK5B,GAAK,QAAQ,KACvB,+FACJ,EAAK,KAAO4B,GAAI,GAAIF,GAAIA,GAAI,EAAI3B,EAAG4B,GAAI,EAAG,GAC1C,CACA,SAASG,IAAI,CACXF,GAAI,EACN,CACA,SAASG,IAAK,CACZ,OAAOH,GAAI,EAAED,GAAI,CACnB,CACA,MAAMK,EAAG,CACP,aAAc,CACZ,KAAK,OAAS,GAAI,KAAK,OAAS,CAAA,EAAI,KAAK,MAAQ,KAAK,OAAQ,KAAK,UAAY,EAAG,KAAK,OAAS,EAAG,KAAK,aAAe,GAAI,KAAK,WAAa,GAAI,KAAK,WAAa,EAAG,KAAK,WAAa,CAAA,EAAI,KAAK,eAAiB,EAAG,KAAK,eAAiB,GAAI,KAAK,mBAAqBnC,EAAE,oBAC7Q,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,cAAgB,KAAK,eAAiB,EAAI,KAAK,WAAa,EAAI,CAC9E,CAOA,SAAS,EAAG,CACV,GAAI,OAAO,GAAK,WACd,MAAM,IAAIU,GAAE,uCAAuC,EACrD,EAAE,aAAe,KAAK,SAAW,EAAE,WAAa,KAAK,OAAQ,KAAK,YAAc,KAAK,eAAiB,KAAK,WAAW,KAAK,gBAAgB,EAAI,GAAK,KAAK,MAAM,KAAK,WAAW,EAAI,EAAG,KAAK,cAAgB,KAAK,MAAK,GACvN,CACA,OAAQ,CACN,GAAI,KAAK,cAAgB,KAAK,YAAc,EAAG,OAC/C,KAAK,aAAe,GACpB,MAAM,EAAI,KAAK,MAAOJ,EAAI,KAAK,UAC/B,KAAK,MAAQ,KAAK,QAAU,KAAK,OAAS,KAAK,OAAS,KAAK,OAAQ,KAAK,UAAY,EAAG,KAAK,SAAU,eAAe,IAAM,CAC3H,MAAMC,EAAIyB,GAAC,EACX,KAAK,aAAa,EAAG1B,CAAC,EAAG,KAAK,aAAe,GAAIC,GAAK0B,GAAC,EAAI,KAAK,UAAY,GAAK,CAAC,KAAK,YAAc,KAAK,MAAK,CACjH,CAAC,CACH,CACA,WAAY,CACV,KAAK,eAAiB,GACtB,MAAM,EAAID,GAAC,EACX,GAAI,CACF,KAAK,iBAAgB,EAAI,KAAK,YAAW,CAC3C,QAAC,CACC,KAAK,eAAiB,GAAI,GAAKC,GAAC,CAClC,CACF,CACA,kBAAmB,CACjB,GAAI,KAAK,SAAU,KAAK,eAAiB,EAAG,CAC1C,QAAS,EAAI,EAAG,EAAI,KAAK,eAAgB,IAAK,CAC5C,MAAM3B,EAAI,KAAK,WAAW,CAAC,EAC3BA,GAAKA,EAAE,aAAe,KAAK,SAAWA,EAAE,WAAa,KAAK,OAAQ,KAAK,MAAM,KAAK,WAAW,EAAIA,EACnG,CACA,KAAK,eAAiB,CACxB,CACF,CACA,aAAc,CACZ,IAAI,EAAI,EACR,KAAO,KAAK,UAAY,GAAK,CAC3B,GAAI,EAAE,EAAI,KAAK,mBAAoB,CACjC,KAAK,qBAAoB,EACzB,KACF,CACA,KAAK,qBAAoB,EAAI,KAAK,iBAAgB,CACpD,CACF,CACA,sBAAuB,CACrB,MAAM,EAAI,KAAK,MAAOA,EAAI,KAAK,UAC/B,KAAK,MAAQ,KAAK,QAAU,KAAK,OAAS,KAAK,OAAS,KAAK,OAAQ,KAAK,UAAY,EAAG,KAAK,SAAU,KAAK,aAAa,EAAGA,CAAC,CAChI,CACA,sBAAuB,CACrB,QAAQ,MACN,IAAII,GACF,6BAA6B,KAAK,kBAAkB,qCAC5D,CACA,EAAO,KAAK,UAAY,EAAG,KAAK,MAAM,OAAS,EAAG,KAAK,eAAiB,CACtE,CACA,aAAa,EAAGJ,EAAG,CACjB,QAASC,EAAI,EAAGA,EAAID,EAAGC,IACrB,GAAI,CACF,EAAEA,CAAC,IAAC,CACN,OAASa,EAAG,CACV,QAAQ,MACN,IAAIV,GAAE,4CAA6CU,CAAC,CAC9D,CACM,CACF,EAAE,OAAS,CACb,CAEA,YAAa,CACX,KAAK,aAAc,KAAK,WAAa,EACvC,CAIA,UAAW,CACT,KAAK,WAAa,KAAK,IAAI,EAAG,KAAK,WAAa,CAAC,EAAG,KAAK,aAAe,IAAM,KAAK,UAAS,EAAI,KAAK,WAAa,GACpH,CAMA,sBAAsB,EAAG,CACvB,GAAI,EAAIpB,EAAE,qBACR,MAAM,IAAIU,GACR,yCAAyCV,EAAE,oBAAoB,EACvE,EACI,KAAK,mBAAqB,CAC5B,CACF,CACA,MAAMoC,EAAI,IAAID,GACd,SAASE,EAAGzB,EAAG,CACb,GAAI,OAAOA,GAAK,WACd,MAAM,IAAIP,EAAE,mCAAmC,EACjD+B,EAAE,WAAU,EACZ,GAAI,CACF,OAAOxB,EAAC,CACV,QAAC,CACCwB,EAAE,SAAQ,CACZ,CACF,CACA,MAAME,EAAI,CACR,QAAS,KACT,IAAI1B,EAAG,EAAG,CACR,MAAMN,EAAI,KAAK,QACf,KAAK,QAAUM,EACf,GAAI,CACF,OAAO,EAAC,CACV,QAAC,CACC,KAAK,QAAUN,CACjB,CACF,EACA,YAAa,CACX,OAAO,KAAK,OACd,CACF,EACA,SAASiC,GAAG3B,EAAG,CACb,GAAI,OAAOA,GAAK,WACd,MAAM,IAAIP,EAAE,uCAAuC,EACrD,MAAM,EAAIiC,EAAE,QACZA,EAAE,QAAU,KACZ,GAAI,CACF,OAAO1B,EAAC,CACV,QAAC,CACC0B,EAAE,QAAU,CACd,CACF,CACA,MAAME,EAAE,CACN,aAAc,CACZ,KAAK,YAAc,IACrB,CAEA,IAAI,EAAG,CACL,GAAI,KAAK,cAAgB,KAAK,YAAc,CAAA,GAAK,KAAK,YAAY,QAAQ,CAAC,IAAM,GAC/E,MAAO,IAAM,CACb,EACF,KAAK,YAAY,KAAK,CAAC,EACvB,IAAIlC,EAAI,GACR,MAAO,IAAM,CACXA,IAAMA,EAAI,GAAI,KAAK,OAAO,CAAC,EAC7B,CACF,CAEA,OAAO,EAAG,CACR,GAAI,CAAC,KAAK,YACR,MAAO,GACT,MAAMA,EAAI,KAAK,YAAY,QAAQ,CAAC,EACpC,GAAIA,IAAM,GACR,MAAO,GACT,MAAMC,EAAI,KAAK,YAAY,OAAS,EACpC,OAAOD,IAAMC,IAAM,KAAK,YAAYD,CAAC,EAAI,KAAK,YAAYC,CAAC,GAAI,KAAK,YAAY,IAAG,EAAI,EACzF,CACA,IAAI,EAAG,CACL,OAAO,KAAK,YAAc,KAAK,YAAY,QAAQ,CAAC,IAAM,GAAK,EACjE,CACA,QAAQ,EAAG,CACT,GAAI,KAAK,YACP,QAASD,EAAI,EAAGA,EAAI,KAAK,YAAY,OAAQA,IAC3C,EAAE,KAAK,YAAYA,CAAC,EAAGA,CAAC,CAC9B,CAEA,YAAY,EAAGA,EAAG,CAChB,GAAI,KAAK,YACP,QAASC,EAAI,EAAGA,EAAI,KAAK,YAAY,OAAQA,IAC3C,GAAI,CACF,EAAE,KAAK,YAAYA,CAAC,EAAGA,CAAC,CAC1B,OAASa,EAAG,CACVd,EAAIA,EAAEc,CAAC,EAAI,QAAQ,MAAM,oDAAqDA,CAAC,CACjF,CACN,CACA,IAAI,MAAO,CACT,OAAO,KAAK,aAAa,QAAU,CACrC,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,cAAgB,MAAQ,KAAK,YAAY,OAAS,CAChE,CACA,OAAQ,CACN,KAAK,YAAc,IACrB,CACA,SAAU,CACR,OAAO,KAAK,YAAc,CAAC,GAAG,KAAK,WAAW,EAAI,CAAA,CACpD,CACF,CACA,SAASqB,GAAG7B,EAAG,CACb,OAAOA,IAAM,MAAQ,OAAOA,GAAK,UAAY,UAAWA,GAAK,cAAeA,GAAK,OAAOA,EAAE,WAAa,UACzG,CACA,SAAS8B,GAAG9B,EAAG,CACb,GAAIS,EAAE,UAAYT,GAAK,MAAQ,OAAOA,GAAK,UAAW,CACpD,MAAM,EAAIS,EAAE,aAAaT,CAAC,EAC1B,GAAI,EACF,OAAO,IAAM,UACjB,CACA,OAAO6B,GAAG7B,CAAC,GAAK,eAAgBA,GAAK,OAAOA,EAAE,YAAc,UAC9D,CAIA,SAAS+B,GAAE/B,EAAG,CACZ,OAAOA,GAAK,MAAQ,OAAOA,EAAE,MAAQ,UACvC,CACA,SAASgC,GAAGhC,EAAG,CACb,OAAO,OAAOA,GAAK,UAAYA,IAAM,IACvC,CACA,SAASiC,GAAEjC,EAAG,CACZ,OAAQ,OAAOA,GAAK,UAAY,OAAOA,GAAK,aAAeA,IAAM,MAAQ,OAAOA,EAAE,eAAiB,UACrG,CACA,SAASkC,GAAElC,EAAG,CACZ,OAAO,OAAOA,GAAK,YAAc,OAAOA,EAAE,eAAiB,UAC7D,CACA,SAASmC,GAAEnC,EAAG,CACZ,OAAOgC,GAAGhC,CAAC,GAAK,OAAOA,EAAE,SAAW,UACtC,CACA,MAAMoC,WAAWvB,EAAE,CACjB,YAAY,EAAGnB,EAAG,CAChB,MAAK,EAAI,KAAK,yBAA2B,GAAI,KAAK,OAAS,EAAG,KAAK,0BAA4B,IAAIkC,GAAK,KAAK,wBAA0B,IAAIA,GAAK,KAAK,MAAQlC,EAAG,KAAK,YAAc,KAAK,oBAAoB,KAAK,IAAI,EAAGe,EAAE,gBAAgB,KAAM,OAAQ,KAAK,EAAE,CACjQ,CAEA,IAAI,sBAAuB,CACzB,OAAO,KAAK,yBACd,CAEA,IAAI,oBAAqB,CACvB,OAAO,KAAK,uBACd,CAIA,IAAI,OAAQ,CACV,MAAM,EAAIiB,EAAE,WAAU,EACtB,OAAO,GAAK,KAAK,OAAO,CAAC,EAAG,KAAK,MACnC,CAKA,IAAI,MAAM,EAAG,CACX,GAAI,OAAO,GAAG,KAAK,OAAQ,CAAC,EAAG,OAC/B,MAAMhC,EAAI,KAAK,OACf,KAAK,QAAU,KAAK,QAAU,EAAIJ,EAAG,KAAK,OAAS,EAAG,EAAE,CAAC,KAAK,0BAA0B,gBAAkB,CAAC,KAAK,wBAAwB,iBAAmB,KAAK,sBAAsBI,CAAC,CACzL,CACA,OAAO,EAAG,CACR,GAAIuC,GAAE,CAAC,EAAG,CACR,EAAE,cAAc,IAAI,EACpB,MACF,CACA,GAAIC,GAAE,CAAC,EAAG,CACR,KAAK,0BAA0B,IAAI,CAAC,EACpC,MACF,CACAC,GAAE,CAAC,GAAK,KAAK,wBAAwB,IAAI,CAAC,CAC5C,CACA,sBAAsB,EAAG,CACvB,KAAK,2BAA6B,KAAK,iBAAmB,EAAG,KAAK,yBAA2B,IAAK,KAAK,OAAS,CAACX,EAAE,WAAa,KAAK,oBAAmB,EAAKA,EAAE,SAAS,KAAK,WAAW,CAC1L,CACA,qBAAsB,CACpB,GAAI,CAAC,KAAK,yBAA0B,OACpC,MAAM,EAAI,KAAK,iBAAkB9B,EAAI,KAAK,OAC1C,KAAK,iBAAmB,OAAQ,KAAK,yBAA2B,GAAI,KAAK,mBAAmBA,EAAG,CAAC,CAClG,CAIA,MAAO,CACL,OAAO,KAAK,MACd,CAIA,SAAU,CACR,KAAK,0BAA0B,MAAK,EAAI,KAAK,wBAAwB,MAAK,EAAI,KAAK,OAAS,MAC9F,CACF,CACA,SAAS2C,GAAGrC,EAAG,EAAI,GAAI,CACrB,OAAO,IAAIoC,GAAGpC,EAAG,EAAE,MAAQ,EAAE,CAC/B,CACA,MAAMsC,EAAE,CACN,aAAc,CACZ,KAAK,KAAO,GAAI,KAAK,YAAc,GAAI,KAAK,oBAAsB,IAAK,KAAK,MAAQ/C,EAAI,CACtF,SAAU,EACV,SAAU,EACV,SAAU,CAAE,OAAQ,EAAG,SAAU,EAAG,SAAU,CAAC,CACrD,EAAQ,IACN,CAEA,SAAU,CACR,OAAOA,GAAK,KAAK,OAAS,KAAK,MAAM,WAAY,KAAK,KAAK,IAAG,GAAM,CAAA,CACtE,CAOA,QAAQ,EAAGG,EAAG,CACZ,GAAI,EAAEA,GAAK,IAAMA,GAAI,CACnB,GAAI,OAAO,SAAS,CAAC,EAAG,CACtBH,GAAK,KAAK,OAAS,KAAK,MAAM,SAAS,SACvC,MACF,CACA,GAAI,EAAE,OAAS,KAAK,oBAAqB,CACvCA,GAAK,KAAK,OAAS,KAAK,MAAM,SAAS,WACvC,MACF,CACA,GAAI,KAAK,KAAK,QAAU,KAAK,YAAa,CACxCA,GAAK,KAAK,OAAS,KAAK,MAAM,SAAS,WACvC,MACF,CACA,EAAE,OAAS,EAAG,KAAK,KAAK,KAAK,CAAC,EAAGA,GAAK,KAAK,OAAS,KAAK,MAAM,UACjE,CACF,CAEA,UAAW,CACT,GAAI,CAACA,GAAK,CAAC,KAAK,MAAO,OAAO,KAC9B,KAAM,CAAE,SAAU,EAAG,SAAUG,EAAG,SAAUC,CAAC,EAAK,KAAK,MAAOa,EAAIb,EAAE,OAASA,EAAE,SAAWA,EAAE,SAC5F,MAAO,CACL,SAAU,EACV,SAAUD,EACV,SAAUC,EACV,OAAQ,EAAID,EAAIc,EAChB,SAAU,KAAK,KAAK,MAC1B,CACE,CAEA,OAAQ,CACN,KAAK,KAAK,OAAS,EAAGjB,GAAK,KAAK,QAAU,KAAK,MAAM,SAAW,EAAG,KAAK,MAAM,SAAW,EAAG,KAAK,MAAM,SAAW,CAAE,OAAQ,EAAG,SAAU,EAAG,SAAU,CAAC,EACzJ,CACF,CACA,MAAMgD,EAAI,OAAO,OAAO,EAAE,EAAGC,EAAI,OAAO,OAAO,EAAE,EAAGC,EAAI,OAAO,OAAO,EAAE,EAAGC,EAAI,IAAIJ,GAAKK,EAAI,IAAIL,GAAKM,EAAI,IAAIN,GAC7G,SAASO,GAAG7C,EAAG,EAAGN,EAAGC,EAAG,CACtB,GAAI,IAAM4C,GAAK7C,IAAM8C,EACnB,QAAS,EAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CACjC,MAAM,EAAI,EAAE,CAAC,EACb,IAAM,EAAE,WAAa9C,EAAE,CAAC,EAC1B,CACF,MAAMc,EAAImC,EAAE,QAAO,EACnBnC,EAAE,OAASR,EAAE,OACb,QAAS,EAAI,EAAG,EAAIA,EAAE,OAAQ,IAAK,CACjC,MAAM,EAAIA,EAAE,CAAC,EACb,IAAM,EAAE,YAAcQ,EAAE,CAAC,EAAI,EAAE,WAAY,EAAE,WAAa,SAAWC,EAAE,cAAc,EAAGd,CAAC,EAAGa,EAAE,CAAC,EAAI,EAAE,UAAUb,CAAC,GAClH,CACA,GAAI,IAAM4C,EACR,QAAS,EAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CACjC,MAAM,EAAI,EAAE,CAAC,EACb,GAAG,aAAe,EAAE,WAAU,EAAI,EAAE,WAAa,OACnD,CACF,OAAO7C,IAAM8C,GAAKG,EAAE,QAAQjD,CAAC,EAAGc,CAClC,CACA,SAASsC,EAAE9C,EAAG,EAAGN,EAAG,CAClB,GAAIM,aAAa,UACf,OAAO,IAAI,EAAE,eAAeN,CAAC,MAAMM,EAAE,OAAO,GAAIA,CAAC,EACnD,GAAIA,aAAa,eACf,OAAO,IAAI,EAAE,oBAAoBN,CAAC,MAAMM,EAAE,OAAO,GAAIA,CAAC,EACxD,GAAIA,aAAaP,EACf,OAAOO,EACT,MAAML,EAAIK,aAAa,MAAQA,EAAE,QAAU,OAAOA,CAAC,EAAGQ,EAAIR,aAAa,MAAQA,EAAI,KACnF,OAAO,IAAI,EAAE,qBAAqBN,CAAC,MAAMC,CAAC,GAAIa,CAAC,CACjD,CACA,MAAMuC,GAAI5D,EAAE,SAAWA,EAAE,QAAUA,EAAE,SAAU6D,GAAI,MAAMD,GAAI,CAAC,EAAE,KAAK9D,EAAE,IAAI,EAC3E+D,GAAE7D,EAAE,QAAQ,EAAIF,EAAE,SAClB+D,GAAE7D,EAAE,OAAO,EAAIF,EAAE,QACjB+D,GAAE7D,EAAE,QAAQ,EAAIF,EAAE,SAClB,MAAMgE,WAAWpC,EAAE,CACjB,YAAY,EAAGnB,EAAI,GAAI,CACrB,GAAI,OAAO,GAAK,WACd,MAAM,IAAIE,EAAEG,EAAE,yBAAyB,EACzC,GAAI,MAAK,EAAI,KAAK,cAAgB,KAAM,KAAK,iBAAmB,GAAI,KAAK,OAAS,OAAQ,KAAK,MAAQZ,EAAE,MAAQA,EAAE,KAAM,KAAK,OAAS,KAAM,KAAK,WAAa,EAAG,KAAK,OAASO,EAAE,OAAS,OAAO,GAAI,KAAK,IAAM,EAAG,KAAK,cAAgB,iBAAkBA,EAAIA,EAAE,aAAeU,GAAG,KAAK,iBAAmB,KAAK,gBAAkBA,GAAG,KAAK,SAAWV,EAAE,SAAW,KAAM,KAAK,eAAiB,OAAO,iBAAmB,EAAG,KAAK,0BAA4B,IAAIkC,GAAK,KAAK,wBAA0B,IAAIA,GAAK,KAAK,cAAgBW,EAAG,KAAK,oBAAsBE,EAAG,KAAK,cAAgBD,EAAG,KAAK,WAAa,IAAM,CACjlB,KAAK,0BAA0B,YAC5B7C,GAAMA,EAAC,EACPA,GAAM,QAAQ,MAAMA,CAAC,CAC9B,EAAS,KAAK,wBAAwB,YAC7BA,GAAMA,EAAE,QAAO,EACfA,GAAM,QAAQ,MAAMA,CAAC,CAC9B,CACI,EAAG,KAAK,WAAa,OAAO,OAAO,IAAM,KAAK,aAAc,CAC1D,cAAgBA,GAAM,CACtB,CACN,CAAK,EAAGc,EAAE,gBAAgB,KAAM,WAAY,KAAK,EAAE,EAAGA,EAAE,QAAS,CAC3D,MAAMd,EAAI,KACVA,EAAE,gBAAkB,IAAM,KAAK,0BAA0B,KAAO,KAAK,wBAAwB,KAAMA,EAAE,QAAU,IAAM,KAAK,SAAQ,EAAIA,EAAE,aAAe,KAAK,cAAeA,EAAE,WAAa,KAAK,kBAAiB,CAClN,CACA,GAAID,EAAE,OAAS,GACb,GAAI,CACF,KAAK,WAAU,CACjB,MAAQ,CACR,CACJ,CACA,IAAI,sBAAuB,CACzB,OAAO,KAAK,yBACd,CACA,IAAI,oBAAqB,CACvB,OAAO,KAAK,uBACd,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,oBAAqB,KAAK,cAAa,CACrD,CACA,MAAO,CACL,OAAO,KAAK,MACd,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,oBAAqB,KAAK,eAAc,CACtD,CACA,IAAI,UAAW,CACb,GAAI,KAAK,oBAAqB,KAAK,YAAW,EAC5C,MAAO,GACT,QAAS,EAAI,EAAG,EAAI,KAAK,cAAc,OAAQ,IAAK,CAClD,MAAMA,EAAI,KAAK,cAAc,CAAC,EAC9B,GAAIA,GAAK,aAAcA,GAAKA,EAAE,SAC5B,MAAO,EACX,CACA,MAAO,EACT,CACA,IAAI,SAAU,CACZ,MAAO,CAAC,KAAK,QACf,CACA,IAAI,QAAS,CACX,GAAI,KAAK,oBAAqB,CAAC,KAAK,SAClC,OAAOF,GACT,MAAM,EAAIwB,GAAE,EACZ,GAAI,KAAK,mBAAqB,GAAK,KAAK,gBAAkB,KACxD,OAAO,KAAK,cACd,MAAMtB,EAAoB,IAAI,IAC9B,KAAK,QAAUA,EAAE,IAAI,KAAK,MAAM,EAChC,QAASC,EAAI,EAAGA,EAAI,KAAK,cAAc,OAAQA,IAAK,CAClD,MAAMa,EAAI,KAAK,cAAcb,CAAC,EAC9B,GAAIa,GAAK,WAAYA,EAAG,CACtB,MAAM,EAAIA,EAAE,OACZ,QAAS,EAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CACjC,MAAM0C,EAAI,EAAE,CAAC,EACbA,GAAKxD,EAAE,IAAIwD,CAAC,CACd,CACF,CACF,CACA,OAAO,KAAK,cAAgB,OAAO,OAAO,CAAC,GAAGxD,CAAC,CAAC,EAAG,KAAK,iBAAmB,EAAG,KAAK,aACrF,CACA,IAAI,WAAY,CACd,OAAO,KAAK,oBAAqB,KAAK,MACxC,CACA,IAAI,WAAY,CACd,OAAO,KAAK,oBAAqB,KAAK,WAAU,CAClD,CACA,IAAI,YAAa,CACf,OAAO,KAAK,oBAAqB,KAAK,YAAW,CACnD,CACA,YAAa,CACX,KAAK,WAAU,EAAI,KAAK,sBAAwB+C,IAAMG,EAAE,QAAQ,KAAK,mBAAmB,EAAG,KAAK,oBAAsBH,GAAI,KAAK,iBAAmB,GAAI,KAAK,cAAgB,IAC7K,CACA,SAAU,CACR,GAAI,KAAK,gBAAkBD,EAAG,CAC5B,QAAS,EAAI,EAAG,EAAI,KAAK,cAAc,OAAQ,IAAK,CAClD,MAAM9C,EAAI,KAAK,cAAc,CAAC,EAC9BA,GAAKA,EAAC,CACR,CACAiD,EAAE,QAAQ,KAAK,aAAa,EAAG,KAAK,cAAgBH,CACtD,CACA,KAAK,gBAAkBD,IAAMG,EAAE,QAAQ,KAAK,aAAa,EAAG,KAAK,cAAgBH,GAAI,KAAK,sBAAwBE,IAAMG,EAAE,QAAQ,KAAK,mBAAmB,EAAG,KAAK,oBAAsBH,GAAI,KAAK,0BAA0B,MAAK,EAAI,KAAK,wBAAwB,MAAK,EAAI,KAAK,MAAQtD,EAAE,MAAQA,EAAE,KAAM,KAAK,OAAS,KAAM,KAAK,OAAS,OAAQ,KAAK,YAAc,KAAK,WAAa,GAAK,KAAK,eAAgB,KAAK,cAAgB,KAAM,KAAK,iBAAmB,EACvc,CAEA,UAAW,CACT,OAAQ,KAAK,MAAQA,EAAE,SAAW,CACpC,CACA,WAAY,CACV,KAAK,OAASA,EAAE,KAClB,CACA,aAAc,CACZ,KAAK,OAAS,EAChB,CACA,SAAU,CACR,OAAQ,KAAK,MAAQA,EAAE,QAAU,CACnC,CACA,UAAW,CACT,KAAK,OAASA,EAAE,KAAM,KAAK,OAAS,GACtC,CACA,YAAa,CACX,OAAQ,KAAK,MAAQA,EAAE,WAAa,CACtC,CACA,aAAc,CACZ,KAAK,OAASA,EAAE,QAAS,KAAK,OAAS,GACzC,CACA,aAAc,CACZ,OAAQ,KAAK,MAAQA,EAAE,YAAc,CACvC,CACA,cAAe,CACb,KAAK,OAASA,EAAE,SAAU,KAAK,OAAS,GAC1C,CACA,aAAc,CACZ,OAAQ,KAAK,MAAQA,EAAE,YAAc,CACvC,CACA,cAAe,CACb,KAAK,OAASA,EAAE,SAAWA,EAAE,UAAW,KAAK,OAAS,GACxD,CACA,gBAAiB,CACf,OAAQ,KAAK,MAAQA,EAAE,eAAiB,CAC1C,CACA,gBAAgB,EAAG,CACjB,MAAMO,EAAIP,EAAE,YACZ,KAAK,MAAQ,KAAK,MAAQ,CAACO,EAAI,CAAC,OAAO,CAAC,EAAIA,CAC9C,CACA,gBAAiB,CACf,OAAOsD,GAAE,KAAK,MAAQD,EAAC,CACzB,CACA,mBAAoB,CAClB,MAAM,EAAI,CAAA,EACV,OAAO,KAAK,SAAQ,GAAM,EAAE,KAAK,OAAO,EAAG,KAAK,QAAO,GAAM,EAAE,KAAK,MAAM,EAAG,KAAK,WAAU,GAAM,EAAE,KAAK,SAAS,EAAG,KAAK,YAAW,GAAM,EAAE,KAAK,UAAU,EAAG,KAAK,YAAW,GAAM,EAAE,KAAK,UAAU,EAAG,KAAK,eAAc,GAAM,EAAE,KAAK,aAAa,EAAG,EAAE,KAAK,KAAK,CACvQ,CACA,eAAgB,CACd,OAAO,KAAK,iBAAmB,KAAK,SAAW,KAAK,YAAc,KAAK,QAAO,IAAO,KAAK,aAAc,KAAK,WAAU,EAAK,KAAK,eAAc,EAAK,KAAK,YAAW,EAAK,KAAK,kBAAoB,KAAK,OACzM,CACA,YAAa,CACX,GAAI,KAAK,iBAAkB,OAC3B,KAAK,gBAAgB,EAAE,EACvB,MAAM,EAAI,KAAK,2BAA0B,EACzC,IAAIrD,EAAI,GACR,GAAI,CACF,MAAMC,EAAI+B,EAAE,IAAI,KAAK,WAAY,KAAK,GAAG,EACzC,KAAK,oBAAoB,CAAC,EAAGhC,EAAI,GAAIqC,GAAEpC,CAAC,EAAI,KAAK,wBAAwBA,CAAC,EAAI,KAAK,kBAAkBA,CAAC,CACxG,OAASA,EAAG,CACV,GAAI,CAACD,EACH,GAAI,CACF,KAAK,oBAAoB,CAAC,EAAGA,EAAI,EACnC,OAASc,EAAG,CACV,KAAK,wBAAwBA,CAAC,CAChC,CACF,KAAK,wBAAwBb,CAAC,CAChC,QAAC,CACC,KAAK,gBAAgB,EAAGD,CAAC,EAAG,KAAK,gBAAgB,EAAE,CACrD,CACF,CACA,4BAA6B,CAC3B,MAAM,EAAI,KAAK,cAAeA,EAAI,KAAK,oBAAqBC,EAAI+C,EAAE,QAAO,EAAIlC,EAAIoC,EAAE,UAAW,EAAI7B,GAAC,EAAI,EAAI,CAAE,SAAU,CAAC,EAAImC,EAAKC,GAAM,CACrIA,EAAE,iBAAmB,IAAMA,EAAE,eAAiB,EAAG,EAAE,SAAWxD,EAAE,QAAUA,EAAE,EAAE,QAAQ,EAAIwD,EAAG3C,EAAE,EAAE,QAAQ,EAAI2C,EAAE,UAAYxD,EAAE,KAAKwD,CAAC,EAAG3C,EAAE,KAAK2C,EAAE,OAAO,GAAI,EAAE,WAC9J,EAAGC,EAAI,KAAK,WAAW,cACvB,OAAO,KAAK,WAAW,cAAgBF,EAAG,CAAE,SAAU,EAAG,aAAcxD,EAAG,SAAUC,EAAG,aAAca,EAAG,YAAa4C,EAAG,MAAO,CAAC,CAClI,CACA,oBAAoB,EAAG,CACrB,KAAM,CAAE,SAAU1D,EAAG,aAAcC,EAAG,MAAOa,EAAG,SAAU,CAAC,EAAK,EAChEd,EAAE,OAASc,EAAE,SAAUb,EAAE,OAASa,EAAE,SAAU,KAAK,cAAgBqC,GAAGnD,EAAG,EAAG,KAAK,cAAe,IAAI,EAAG,KAAK,cAAgBA,EAAG,KAAK,oBAAsBC,CAC5J,CACA,gBAAgB,EAAGD,EAAG,CACpB,KAAK,WAAW,cAAgB,EAAE,YAAaA,GAAK,EAAE,WAAa6C,GAAKG,EAAE,QAAQ,EAAE,QAAQ,EAAG,EAAE,eAAiBD,GAAKG,EAAE,QAAQ,EAAE,YAAY,IAAMF,EAAE,QAAQ,EAAE,QAAQ,EAAGE,EAAE,QAAQ,EAAE,YAAY,EACtM,CACA,kBAAkB,EAAG,CACnB,MAAMlD,EAAI,CAAC,KAAK,YAAW,GAAM,CAAC,KAAK,OAAO,KAAK,OAAQ,CAAC,EAC5D,KAAK,QAAU,KAAK,QAAU,OAAOA,CAAC,EAAIJ,EAAG,KAAK,OAAS,EAAG,KAAK,YAAW,EAAI,KAAK,aAAY,EAAI,KAAK,OAAS,KAAM,KAAK,gBAAgB,EAAE,EAAG,KAAK,cAAgB,KAAM,KAAK,iBAAmB,EAC1M,CACA,wBAAwB,EAAG,CACzB,KAAK,YAAW,EAAI,KAAK,YAAW,EAAI,KAAK,aAAc,KAAK,WAAa,KAAK,YAAc,KAAK,eAAiB,EAAI,KAAK,WAAa,EAC5I,MAAMI,EAAI,KAAK,WACf,EAAE,KAAMC,GAAM,CACZD,IAAM,KAAK,YAAc,KAAK,uBAAuBC,CAAC,CACxD,CAAC,EAAE,MAAOA,GAAM,CACdD,IAAM,KAAK,YAAc,KAAK,sBAAsBC,CAAC,CACvD,CAAC,CACH,CACA,uBAAuB,EAAG,CACxB,MAAMD,EAAI,CAAC,KAAK,YAAW,GAAM,CAAC,KAAK,OAAO,KAAK,OAAQ,CAAC,EAC5D,KAAK,QAAU,KAAK,QAAU,OAAOA,CAAC,EAAIJ,EAAG,KAAK,OAAS,EAAG,KAAK,YAAW,EAAI,KAAK,aAAY,EAAI,KAAK,OAAS,KAAM,KAAK,gBAAgB,EAAE,EAAG,KAAK,cAAgB,KAAM,KAAK,iBAAmB,GAAI,KAAK,WAAU,CAC7N,CACA,sBAAsB,EAAG,CACvB,MAAMI,EAAIoD,EAAE,EAAGlD,EAAGG,EAAE,iCAAiC,EAAGJ,EAAI,CAAC,KAAK,YAAW,EAC7E,GAAI,KAAK,QAAU,KAAK,QAAU,OAAOA,CAAC,EAAIL,EAAG,KAAK,OAASI,EAAG,KAAK,eAAgB,KAAK,YAAW,EAAI,KAAK,gBAAgB,EAAE,EAAG,KAAK,SACxI,GAAI,CACF,KAAK,SAASA,CAAC,CACjB,OAASc,EAAG,CACV,QAAQ,MAAMT,EAAE,gCAAiCS,CAAC,CACpD,CACF,KAAK,WAAU,CACjB,CACA,wBAAwB,EAAG,CACzB,MAAMd,EAAIoD,EAAE,EAAGlD,EAAGG,EAAE,2BAA2B,EAC/C,GAAI,KAAK,OAASL,EAAG,KAAK,aAAY,EAAI,KAAK,YAAW,EAAI,KAAK,gBAAgB,EAAE,EAAG,KAAK,SAC3F,GAAI,CACF,KAAK,SAASA,CAAC,CACjB,OAASC,EAAG,CACV,QAAQ,MAAMI,EAAE,gCAAiCJ,CAAC,CACpD,CACF,MAAMD,CACR,CACA,gBAAiB,CACf,GAAI,KAAK,iBACP,OAAO,KAAK,cACd,MAAM,IAAIE,EAAEG,EAAE,iCAAiC,CACjD,CACA,iBAAkB,CAChB,GAAI,KAAK,QAAQ,aAAe,KAAK,iBACnC,OAAO,KAAK,cACd,MAAM,KAAK,MACb,CAEA,SAAU,CACR,KAAK,WAAU,CACjB,CACA,YAAa,CACX,KAAK,kBAAoB,KAAK,SAAQ,IAAO,KAAK,UAAS,EAAI,KAAK,aACtE,CACA,mBAAoB,CAClB,MAAM,EAAI2B,EAAE,WAAU,EACtB,GAAI,EAAG,CACL,GAAIO,GAAE,CAAC,EAAG,CACR,EAAE,cAAc,IAAI,EACpB,MACF,CACA,GAAIC,GAAE,CAAC,EAAG,CACR,KAAK,0BAA0B,IAAI,CAAC,EACpC,MACF,CACAC,GAAE,CAAC,GAAK,KAAK,wBAAwB,IAAI,CAAC,CAC5C,CACF,CACF,CACA,OAAO,OAAOc,GAAG,SAAS,EAC1B,SAASI,GAAGrD,EAAG,EAAI,GAAI,CACrB,OAAO,IAAIiD,GAAGjD,EAAG,CAAC,CACpB,CACA,MAAMsD,WAAW1C,EAAE,CAMjB,YAAY,EAAGlB,EAAI,GAAI,CACrB,MAAK,EAAI,KAAK,IAAM,IAAM,CACxB,GAAI,KAAK,WACP,MAAM,IAAIG,EAAEE,EAAE,uBAAuB,EACvC,KAAK,sBAAwB0C,IAAMG,EAAE,QAAQ,KAAK,mBAAmB,EAAG,KAAK,oBAAsBH,GAAI,KAAK,QAAO,CACrH,EAAG,KAAK,QAAU,IAAM,CACtB,GAAI,CAAC,KAAK,WAAY,CACpB,GAAI,KAAK,aAAY,EAAI,KAAK,aAAY,EAAI,KAAK,gBAAkBD,EAAG,CACtE,QAAS7C,EAAI,EAAGA,EAAI,KAAK,cAAc,OAAQA,IAAK,CAClD,MAAMa,EAAI,KAAK,cAAcb,CAAC,EAC9Ba,GAAKA,EAAC,CACR,CACAmC,EAAE,QAAQ,KAAK,aAAa,EAAG,KAAK,cAAgBH,CACtD,CACA,KAAK,gBAAkBD,IAAMG,EAAE,QAAQ,KAAK,aAAa,EAAG,KAAK,cAAgBH,GAAI,KAAK,sBAAwBE,IAAMG,EAAE,QAAQ,KAAK,mBAAmB,EAAG,KAAK,oBAAsBH,EAC1L,CACF,EAAG,KAAK,cAAiB9C,GAAM,CAC7B,GAAI,KAAK,aAAe,KAAK,WAAa,KAAK,aAAe,KAAK,cAAe,CAChF,MAAMa,EAAI,KAAK,cACf,GAAIb,EAAE,iBAAmBa,EAAG,OAC5Bb,EAAE,eAAiBa,EAAG,KAAK,UAAU,KAAKb,CAAC,EAAG,KAAK,cAAc,KAAKA,EAAE,OAAO,EAAGA,EAAE,YAAc,KAAK,YAAY,KAAKA,EAAE,UAAU,EAAGA,EAAE,WAAa,QAAU,KAAK,aAAaA,CAAC,CACrL,CACF,EAAG,KAAK,QAAU,IAAM,CACtB,GAAI,KAAK,YAAc,KAAK,aAAe,CAAC,KAAK,iBAAkB,OACnE,KAAK,mBAAkB,EAAI,KAAK,cAAc,EAAE,EAAG,KAAK,aAAY,EACpE,MAAMA,EAAI,KAAK,sBAAqB,EACpC,IAAIa,EAAI,GACR,GAAI,CACF,MAAM,EAAIkB,EAAE,IAAI,KAAM,KAAK,GAAG,EAC9B,KAAK,cAAc/B,CAAC,EAAGa,EAAI,GAAI,KAAK,mBAAkB,EAAIuB,GAAE,CAAC,EAAI,EAAE,KAAM,GAAM,CAC7E,CAAC,KAAK,YAAc,OAAO,GAAK,aAAe,KAAK,SAAW,EACjE,CAAC,EAAE,MAAO,GAAM,CACd,QAAQ,MAAMe,EAAE,EAAGjD,EAAGE,EAAE,uBAAuB,CAAC,CAClD,CAAC,EAAI,KAAK,SAAW,OAAO,GAAK,WAAa,EAAI,IACpD,OAAS,EAAG,CACVS,EAAI,GAAI,QAAQ,MAAMsC,EAAE,EAAGjD,EAAGE,EAAE,uBAAuB,CAAC,EAAG,KAAK,SAAW,IAC7E,QAAC,CACC,KAAK,eAAeJ,EAAGa,CAAC,EAAG,KAAK,cAAc,EAAE,CAClD,CACF,EAAG,KAAK,cAAgB,GAAI,KAAK,gBAAkB,GAAI,KAAK,mBAAqB,EAAG,KAAK,IAAM,EAAG,KAAK,MAAQd,EAAE,MAAQ,GAAI,KAAK,eAAiBA,EAAE,wBAA0BN,EAAE,0BAA2B,KAAK,uBAAyBM,EAAE,uBAAyBN,EAAE,0BAA2B,KAAK,oBAAsBM,EAAE,oBAAsB,GAAI,KAAK,SAAW,KAAM,KAAK,cAAgB6C,EAAG,KAAK,oBAAsBE,EAAG,KAAK,cAAgBD,EAAG,KAAK,UAAY,KAAM,KAAK,cAAgB,KAAM,KAAK,YAAc,KAAM,KAAK,SAAWjD,EAAI,CAAA,EAAK,KAAM,KAAK,gBAAkB,EAAGkB,EAAE,gBAAgB,KAAM,SAAU,KAAK,EAAE,CAC5mB,CAKA,uBAAwB,CACtB,MAAM,EAAI,KAAK,cAAef,EAAI,KAAK,oBAAqBC,EAAI,KAAK,cAAea,EAAIkC,EAAE,UAAW,EAAIE,EAAE,QAAO,EAAI,EAAID,EAAE,QAAO,EAAIO,EAAInC,GAAC,EAC5I,GAAI,IAAMwB,GAAK5C,IAAM6C,EACnB,QAASY,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CACjC,MAAMD,EAAI,EAAEC,CAAC,EACbD,IAAMA,EAAE,WAAaxD,EAAEyD,CAAC,EAC1B,CACF,OAAO,KAAK,UAAY5C,EAAG,KAAK,cAAgB,EAAG,KAAK,YAAc,EAAG,KAAK,cAAgB0C,EAAG,CAAE,SAAU,EAAG,aAAcxD,EAAG,WAAYC,EAAG,SAAUa,EAAG,aAAc,EAAG,WAAY,CAAC,CAC7L,CAKA,cAAc,EAAG,CACf,MAAMd,EAAI,EAAE,SAAS,OACrB,EAAE,SAAS,OAASA,EAAG,EAAE,aAAa,OAASA,EAAG,KAAK,cAAgB,EAAE,SAAU,KAAK,oBAAsB,EAAE,aAAc,KAAK,cAAgB,EAAE,UACvJ,CAMA,eAAe,EAAGA,EAAG,CACnB,GAAI,KAAK,UAAY,KAAM,KAAK,cAAgB,KAAM,KAAK,YAAc,KAAMA,EAAG,CAChF,GAAI,EAAE,WAAa6C,EAAG,CACpB,QAAS5C,EAAI,EAAGA,EAAI,EAAE,SAAS,OAAQA,IAAK,CAC1C,MAAMa,EAAI,EAAE,SAASb,CAAC,EACtBa,GAAG,aAAeA,EAAE,WAAU,EAAIA,EAAE,WAAa,OACnD,CACAkC,EAAE,QAAQ,EAAE,QAAQ,CACtB,CACA,EAAE,aAAeF,GAAKG,EAAE,QAAQ,EAAE,UAAU,EAAG,EAAE,eAAiBF,GAAKG,EAAE,QAAQ,EAAE,YAAY,CACjG,KAAO,CACLF,EAAE,QAAQ,EAAE,QAAQ,EAAGE,EAAE,QAAQ,EAAE,YAAY,EAC/C,QAASjD,EAAI,EAAGA,EAAI,EAAE,WAAW,OAAQA,IACvC,EAAE,WAAWA,CAAC,IAAC,EACjB,GAAIgD,EAAE,QAAQ,EAAE,UAAU,EAAG,EAAE,WAAaJ,EAC1C,QAAS5C,EAAI,EAAGA,EAAI,EAAE,SAAS,OAAQA,IAAK,CAC1C,MAAMa,EAAI,EAAE,SAASb,CAAC,EACtBa,IAAMA,EAAE,WAAa,OACvB,CACJ,CACF,CAKA,aAAa,EAAG,CACd,GAAI,CACF,MAAMd,EAAI,EAAE,UAAU,IAAM,CAC1B,KAAK,qBAAuB,KAAK,cAAgB,EAAE,iBAAmB,KAAK,eAAgB,KAAK,MAAQ,KAAK,QAAO,EAAK8B,EAAE,SAAS,KAAK,OAAO,CAClJ,CAAC,EACD,KAAK,aAAe,KAAK,YAAY,KAAK9B,CAAC,CAC7C,OAASA,EAAG,CACV,QAAQ,MAAMoD,EAAEpD,EAAGG,EAAGE,EAAE,uBAAuB,CAAC,EAAG,KAAK,aAAe,KAAK,YAAY,KAAK,IAAM,CACnG,CAAC,CACH,CACF,CAIA,IAAI,YAAa,CACf,OAAQ,KAAK,MAAQb,EAAE,YAAc,CACvC,CAIA,IAAI,gBAAiB,CACnB,OAAO,KAAK,eACd,CAIA,IAAI,aAAc,CAChB,OAAQ,KAAK,MAAQA,EAAE,aAAe,CACxC,CACA,cAAe,CACb,KAAK,OAASA,EAAE,QAClB,CACA,cAAc,EAAG,CACf,MAAMQ,EAAIR,EAAE,UACZ,KAAK,MAAQ,KAAK,MAAQ,CAACQ,EAAI,CAAC,OAAO,CAAC,EAAIA,CAC9C,CAIA,cAAe,CACb,GAAI,KAAK,SAAU,CACjB,GAAI,CACF,KAAK,SAAQ,CACf,OAAS,EAAG,CACV,QAAQ,MAAMoD,EAAE,EAAGjD,EAAGE,EAAE,qBAAqB,CAAC,CAChD,CACA,KAAK,SAAW,IAClB,CACF,CAKA,oBAAqB,CACnB,GAAI,KAAK,kBAAoBkB,KAAM,KAAK,gBAAkBA,GAAG,KAAK,mBAAqB,GAAI,KAAK,qBAAsB,KAAK,mBAAqB,KAAK,wBAA0B,KAAK,wBAAwB,YAAY,EAAGK,GAAE,EAAKlC,EAAE,0BAA4B,KAAK,wBAAwB,QAAQ,EAAG,KAAK,kBAAmB,KAAK,SAAU,CAC7U,MAAM,EAAI,KAAK,IAAG,EAClB,KAAK,SAAS,KAAK,CAAC,EAAG,KAAK,SAAS,OAASA,EAAE,0BAA4B,IAAM,KAAK,SAAS,MAAK,EAAI,KAAK,oBAAoB,CAAC,CACrI,CACF,CACA,oBAAoB,EAAG,CACrB,MAAMM,EAAI,KAAK,SACf,GAAI,CAACA,GAAK,KAAK,gBAAkB,EAAG,OACpC,MAAMC,EAAI,EAAIX,GAAG,cACjB,IAAIwB,EAAI,EACR,QAAS,EAAId,EAAE,OAAS,EAAG,GAAK,GAAK,EAAEA,EAAE,CAAC,EAAIC,GAAI,IAChDa,IACF,GAAIA,EAAI,KAAK,eAAgB,CAC3B,MAAM,EAAI,IAAIX,EACZ,mBAAmBW,CAAC,iDAC5B,EACM,GAAI,KAAK,QAAO,EAAI,QAAQ,MAAM,CAAC,EAAGjB,EACpC,MAAM,CACV,CACF,CACA,wBAAwB,EAAG,CACzB,MAAMG,EAAI,IAAIG,EACZ,2BAA2B,CAAC,sBAAsB,KAAK,kBAAkB,uDAAuDqB,EAAC,EACvI,EACI,MAAM,KAAK,QAAO,EAAI,QAAQ,MAAMxB,CAAC,EAAGA,CAC1C,CAKA,gBAAiB,CACf,GAAI,KAAK,gBAAkB6C,GAAK,KAAK,sBAAwBE,EAC3D,MAAO,GACT,QAAS,EAAI,EAAG,EAAI,KAAK,cAAc,OAAQ,IAAK,CAClD,MAAM/C,EAAI,KAAK,cAAc,CAAC,EAC9B,GAAIA,EAAG,CACL,GAAI,UAAWA,EACb,GAAI,CACFiC,GAAG,IAAMjC,EAAE,KAAK,CAClB,MAAQ,CACN,MAAO,EACT,CACF,GAAIA,EAAE,UAAY,KAAK,oBAAoB,CAAC,EAC1C,MAAO,EACX,CACF,CACA,MAAO,EACT,CAKA,oBAAqB,CACnB,GAAI,KAAK,qBAAuBe,EAAE,QAAS,CACzC,MAAM,EAAI,KAAK,cACf,QAASf,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CACjC,MAAMC,EAAI,EAAED,CAAC,EACbC,GAAKA,EAAE,mBAAqB,KAAK,eAAiBc,EAAE,KAClD,GACA,mCAAmCA,EAAE,aAAad,CAAC,GAAK,SAAS,kDAC3E,CACM,CACF,CACF,CACF,CACA,SAAS4D,EAAGvD,EAAG,EAAI,GAAI,CACrB,GAAI,OAAOA,GAAK,WACd,MAAM,IAAIH,EAAEE,EAAE,uBAAuB,EACvC,MAAML,EAAI,IAAI4D,GAAGtD,EAAG,CAAC,EACrB,OAAON,EAAE,QAAO,EAAIA,CACtB,CC/mCO,SAAS8D,EAAWC,EAAwE,CACjG,OAAOA,IAAU,MAAQ,OAAOA,GAAU,UAAY,UAAWA,GAAS,cAAeA,CAC3F,CAUO,SAASC,EAAYC,EAA6B,CACvD,OAAIH,EAAWG,CAAM,EACXA,EAA2B,MAE9BA,CACT,CAUO,SAASC,GAAYC,EAA8B,CAExD,MAAMC,EAASD,EAAc,OAAUA,EAAc,CAAC,EAAKA,EAC3D,GAAI,CAACC,EAAO,MAAO,UAEnB,GAAIA,EAAM,GAAI,MAAO,IAAIA,EAAM,EAAE,GACjC,GAAIA,EAAM,UAAW,CACnB,MAAMC,EAAU,OAAOD,EAAM,SAAS,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC7E,OAAOC,EAAU,GAAGD,EAAM,QAAQ,YAAA,CAAa,IAAIC,CAAO,GAAKD,EAAM,QAAQ,YAAA,CAC/E,CACA,OAAOA,EAAM,QAAQ,YAAA,CACvB,CC7BA,SAASE,IAAgC,CAEvC,GAAI,OAAO,OAAW,IAAa,CACjC,MAAMC,EAAc,OAAiD,eACrE,GAAI,OAAOA,GAAe,UACxB,OAAOA,CAEX,CAQA,GAAI,CAEF,GAAI,OAAO,QAAY,KAAe,QAAQ,KAAO,QAAQ,IAAI,WAAa,cAC5E,MAAO,EAEX,MAAa,CAEb,CAEA,MAAO,EACT,CAEA,IAAIC,EAAeF,GAAA,EAEZ,MAAMG,EAAQ,CACnB,IAAI,SAAU,CACZ,OAAOD,CACT,EACA,IAAI,QAAQT,EAAgB,CAC1BS,EAAeT,CACjB,EAEA,IAAOW,KAAiBC,EAAW,CAC7BH,GACF,QAAQ,IAAI,wBAAwBE,CAAI,IAAK,GAAGC,CAAI,CAExD,EAEA,YAAeC,EAA0BC,EAAWC,EAAW,CACzDN,GAEF,QAAQ,IAAI,8BADEI,GAAQ,WACyB,aAAcC,EAAQ,IAAKC,CAAM,CAEpF,EAKA,WAAcC,EAAaL,EAAcX,EAAU,CACjD,GAAI,CAACS,EAAc,OAGnB,MAAMQ,EAAWd,GAAYa,CAAG,EAChC,QAAQ,IAAI,qCAAqCC,CAAQ,IAAIN,CAAI,KAAMX,CAAK,EAG5EkB,GAAiBF,CAAG,CACtB,EAEA,QAAQC,EAAkB,CACpBR,GACF,QAAQ,IAAI,iCAAiCQ,CAAQ,EAAE,CAE3D,EAEA,QAAWL,EAAW,CAChBH,GACF,QAAQ,KAAK,uBAAwB,GAAGG,CAAI,CAEhD,CACF,EASA,SAASM,GAAiBF,EAAmB,CAC3C,MAAMZ,EAAKY,EAAI,CAAC,EAChB,GAAI,CAACZ,GAAM,CAAC,SAAS,SAASA,CAAE,EAAG,OAEnC,MAAMe,EAAY,mBACZC,EAAoB,2BACpBC,EAAgB,uBAGtB,aAAaL,EAAI,KAAKG,CAAS,CAAC,EAChC,aAAaH,EAAI,KAAKI,CAAiB,CAAC,EAInCJ,EAAI,KAAKK,CAAa,GACzBL,EAAI,KAAKK,EAAe,CACtB,QAASL,EAAI,IAAI,SAAS,EAC1B,cAAeA,EAAI,IAAI,gBAAgB,EACvC,WAAYA,EAAI,IAAI,YAAY,CAAA,CACjC,EAIHA,EAAI,IAAI,CACN,QAAS,mCACT,iBAAkB,MAClB,WAAY,MAAA,CACb,EAGD,MAAMM,EAAU,WAAW,IAAM,CAE/B,MAAMC,EAAiBP,EAAI,KAAKK,CAAa,EAG7CL,EAAI,IAAI,aAAc,uBAAuB,EAG7C,sBAAsB,IAAM,CAC1BA,EAAI,IAAI,CACN,QAASO,GAAgB,SAAW,GACpC,iBAAkBA,GAAgB,eAAiB,EAAA,CACpD,EAID,MAAMC,EAAiB,WAAW,IAAM,CACtCR,EAAI,IAAI,aAAcO,GAAgB,YAAc,EAAE,EACtDP,EAAI,WAAWG,CAAS,EACxBH,EAAI,WAAWI,CAAiB,EAChCJ,EAAI,WAAWK,CAAa,CAC9B,EAAG,GAAG,EACNL,EAAI,KAAKI,EAAmBI,CAAc,CAC5C,CAAC,CACH,EAAG,GAAG,EAENR,EAAI,KAAKG,EAAWG,CAAO,CAC7B,CC/IA,MAAMG,OAAmB,QAKzB,SAASC,GAAQC,EAAiBC,EAAuB,GAAqB,CAC5E,MAAMC,EAAWC,GAAWH,EAAcC,CAAO,EAGjD,OAAIA,EAAQ,MACVH,GAAa,IAAII,EAAU,CAAE,KAAMD,EAAQ,KAAM,EAY5CC,CACT,CAGA,OAAO,eAAeH,GAAM,QAAS,CACnC,KAAM,CACJ,OAAOhB,EAAM,OACf,EACA,IAAIV,EAAgB,CAClBU,EAAM,QAAUV,CAClB,CACF,CAAC,EAOD,SAAS+B,IAA0B,CACjC,OAAO,IAAI,QAASC,GAAY,WAAWA,EAAS,CAAC,CAAC,CACxD,CAKA5E,EAAE,OAAO,CACP,KAAAsE,GAAA,SACAO,GAAA,OACAC,EAAA,MACAC,EAAA,UACAC,GAAA,OACAC,GAAA,WACAC,GACA,WAAa9G,GAAe6G,GAAO7G,CAAC,GAAK8G,GAAW9G,CAAC,EACrD,SAAAuG,EACF,CAAC,ECmBM,SAASQ,IAA6C,CAC3D,MAAO,CAAE,UAAW,KAAM,MAAO,OAAQ,SAAU,EAAA,CACrD,CChFO,SAASC,GACdxB,EACAU,EACAE,EAAyB,CAAA,EACoB,CAC7C,KAAM,CACJ,SAAUa,EACV,MAAAC,EAAQ,QACR,MAAAC,EAASnH,GAAcA,EACvB,OAAAoH,EAAUpH,GAAS,OAAOA,GAAK,EAAE,CAAA,EAC/BoG,EAEEiB,EAA2BN,GAAA,EAG3BO,EAAqB,IAAM,CAC/BD,EAAM,MAAQ,WAChB,EAEME,EAAmB,IAAM,CAC7BF,EAAM,MAAQ,OACdG,EAAA,CACF,EAEAhC,EAAI,GAAG,mBAAoB8B,CAAkB,EAC7C9B,EAAI,GAAG,iBAAkB+B,CAAgB,EAGzC,MAAME,EAAU,IAAM,CACpBJ,EAAM,SAAW,EACnB,EAEMK,EAAS,IAAM,CACnBL,EAAM,SAAW,GAEjB,MAAMM,EAAYP,EAAOlB,EAAK,KAAK,EAC/BV,EAAI,IAAA,IAAUmC,GAChBnC,EAAI,IAAImC,CAAS,CAErB,EAEAnC,EAAI,GAAG,QAASiC,CAAO,EACvBjC,EAAI,GAAG,OAAQkC,CAAM,EAGrB,MAAMF,EAAkB,IAAM,CACxBH,EAAM,QAAU,SAEpBA,EAAM,MAAQ,kBACdV,EAAM,IAAM,CACVT,EAAK,MAAQiB,EAAM3B,EAAI,IAAA,CAAe,CACxC,CAAC,EACD6B,EAAM,MAAQ,OAChB,EAGMO,EAAU,IAAM,CAChBP,EAAM,QAAU,SAEhBJ,GACEI,EAAM,WAAW,aAAaA,EAAM,SAAS,EACjDA,EAAM,UAAY,OAAO,WAAWG,EAAiBP,CAAU,GAE/DO,EAAA,EAEJ,EAEA,OAAAhC,EAAI,GAAG0B,EAAOU,CAAO,EACrBpC,EAAI,GAAG,SAAUoC,CAAO,EAgCjB,CAAE,OAlBM,IAAM,CACnB,MAAMD,EAAYP,EAAOlB,EAAK,KAAK,EAC7B2B,EAAarC,EAAI,IAAA,EAGvB,GAAIqC,IAAeF,EAAW,CAE5B,GAAIN,EAAM,UAAYF,EAAMU,CAAU,IAAM3B,EAAK,MAC/C,OAGFmB,EAAM,MAAQ,iBACd7B,EAAI,IAAImC,CAAS,EACjBzC,EAAM,WAAWM,EAAK,MAAOmC,CAAS,EACtCN,EAAM,MAAQ,MAChB,CACF,EAEiB,QA7BD,IAAM,CACpB7B,EAAI,IAAI0B,EAAOU,CAAO,EACtBpC,EAAI,IAAI,SAAUoC,CAAO,EACzBpC,EAAI,IAAI,mBAAoB8B,CAAkB,EAC9C9B,EAAI,IAAI,iBAAkB+B,CAAgB,EAC1C/B,EAAI,IAAI,QAASiC,CAAO,EACxBjC,EAAI,IAAI,OAAQkC,CAAM,EAClBL,EAAM,WAAW,aAAaA,EAAM,SAAS,CACnD,CAqBiB,CACnB,CCnGA,MAAMS,EAAgB,CAEZ,YAAc,QAGd,aAAe,QAGf,kBAAoB,QAMpB,mBAAqB,QAE7B,KAAKC,EAAkB,CACrB,KAAK,eAAe,IAAIA,CAAI,CAC9B,CAEA,OAAOA,EAAqB,CAC1B,OAAO,KAAK,eAAe,IAAIA,CAAI,CACrC,CAKA,YAAYnD,EAAaoD,EAAwB,CAC/C,MAAMC,EAAO,KAAK,QAAQ,IAAIrD,CAAE,GAAK,CAAA,EACrCqD,EAAK,KAAKD,CAAE,EACZ,KAAK,QAAQ,IAAIpD,EAAIqD,CAAI,EACzB,KAAK,cAAc,IAAIrD,CAAE,CAC3B,CAKA,aAAaA,EAAasD,EAAsB,CAC9C,MAAMD,EAAO,KAAK,SAAS,IAAIrD,CAAE,GAAK,CAAA,EACtCqD,EAAK,KAAKC,CAAE,EACZ,KAAK,SAAS,IAAItD,EAAIqD,CAAI,EAC1B,KAAK,cAAc,IAAIrD,CAAE,CAC3B,CAKA,QAAQA,EAAsB,CAC5B,OAAO,KAAK,cAAc,IAAIA,CAAE,CAClC,CAOA,QAAQA,EAAmB,CACzB,GAAI,CAAC,KAAK,cAAc,IAAIA,CAAE,EAAG,OAEjCM,EAAM,QAAQP,GAAYC,CAAE,CAAC,EAG7B,MAAMuD,EAAU,KAAK,QAAQ,IAAIvD,CAAE,EAC/BuD,IACF,KAAK,QAAQ,OAAOvD,CAAE,EACtBuD,EAAQ,QAASH,GAAO,CACtB,GAAI,CACFA,EAAG,QAAA,CACL,OAASI,EAAG,CACVlD,EAAM,KAAK,wBAAyBkD,CAAC,CACvC,CACF,CAAC,GAIH,MAAMC,EAAW,KAAK,SAAS,IAAIzD,CAAE,EACjCyD,IACF,KAAK,SAAS,OAAOzD,CAAE,EACvByD,EAAS,QAASH,GAAO,CACvB,GAAI,CACFA,EAAA,CACF,OAASE,EAAG,CACVlD,EAAM,KAAK,iBAAkBkD,CAAC,CAChC,CACF,CAAC,GAGH,KAAK,cAAc,OAAOxD,CAAE,CAC9B,CAMA,YAAYA,EAAmB,CAEZA,EAAG,iBAAiB,GAAG,EAC/B,QAAS0D,GAAU,CACtB,KAAK,cAAc,IAAIA,CAAK,GAC9B,KAAK,QAAQA,CAAK,CAEtB,CAAC,EAGD,KAAK,QAAQ1D,CAAE,CACjB,CACF,CAEO,MAAM2D,EAAW,IAAIT,GAS5B,IAAIU,EAAoC,KAEjC,SAASC,GAAkBC,EAAgB,SAAS,KAAY,CACjEF,IAEJA,EAAW,IAAI,iBAAkBG,GAAc,CAC7C,UAAWC,KAAYD,EACrBC,EAAS,aAAa,QAASb,GAAS,CAElCQ,EAAS,OAAOR,CAAI,GAIpBA,EAAK,aAMLA,EAAK,WAAa,GAEpBQ,EAAS,YAAYR,CAAe,CAExC,CAAC,CAEL,CAAC,EAEDS,EAAS,QAAQE,EAAM,CAAE,UAAW,GAAM,QAAS,GAAM,EAC3D,CAEO,SAASG,IAA2B,CACzCL,GAAU,WAAA,EACVA,EAAW,IACb,CCzJA5G,EAAE,GAAG,SAAW,SAAa8C,EAA0BoE,EAAsC,CAC3F,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMtD,EAAM5D,EAAE,IAAI,EAElB,GAAI2C,EAAWG,CAAM,EAAG,CACtB,MAAMsD,EAAKtB,EAAO,IAAM,CACtB,MAAMlC,EAAQC,EAASC,CAAM,EACvBqE,EAAOD,EAAYA,EAAUtE,CAAK,EAAI,OAAOA,GAAS,EAAE,EAC9DgB,EAAI,KAAKuD,CAAI,EACb7D,EAAM,WAAWM,EAAK,OAAQuD,CAAI,CACpC,CAAC,EACDR,EAAS,YAAY,KAAMP,CAAE,CAC/B,KAAO,CACL,MAAMe,EAAOD,EAAYA,EAAUpE,CAAM,EAAI,OAAOA,GAAU,EAAE,EAChEc,EAAI,KAAKuD,CAAI,CACf,CACF,CAAC,CACH,EAMAnH,EAAE,GAAG,SAAW,SAAU8C,EAAuC,CAC/D,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMc,EAAM5D,EAAE,IAAI,EAElB,GAAI2C,EAAWG,CAAM,EAAG,CACtB,MAAMsD,EAAKtB,EAAO,IAAM,CACtB,MAAMsC,EAAO,OAAOvE,EAASC,CAAM,GAAK,EAAE,EAC1Cc,EAAI,KAAKwD,CAAI,EACb9D,EAAM,WAAWM,EAAK,OAAQwD,CAAI,CACpC,CAAC,EACDT,EAAS,YAAY,KAAMP,CAAE,CAC/B,MACExC,EAAI,KAAK,OAAOd,GAAU,EAAE,CAAC,CAEjC,CAAC,CACH,EAOA9C,EAAE,GAAG,UAAY,SAAUqH,EAAmBC,EAA2C,CACvF,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM1D,EAAM5D,EAAE,IAAI,EAElB,GAAI2C,EAAW2E,CAAS,EAAG,CACzB,MAAMlB,EAAKtB,EAAO,IAAM,CACtB,MAAMlC,EAAQ,EAAQC,EAASyE,CAAS,EACxC1D,EAAI,YAAYyD,EAAWzE,CAAK,EAChCU,EAAM,WAAWM,EAAK,SAASyD,CAAS,GAAIzE,CAAK,CACnD,CAAC,EACD+D,EAAS,YAAY,KAAMP,CAAE,CAC/B,MACExC,EAAI,YAAYyD,EAAW,EAAQC,CAAU,CAEjD,CAAC,CACH,EAQAtH,EAAE,GAAG,QAAU,SACbuH,EACAzE,EACA0E,EACQ,CACR,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM5D,EAAM5D,EAAE,IAAI,EAElB,GAAI2C,EAAWG,CAAM,EAAG,CACtB,MAAMsD,EAAKtB,EAAO,IAAM,CACtB,MAAMlC,EAAQC,EAASC,CAAM,EACvB2E,EAAWD,EAAO,GAAG5E,CAAK,GAAG4E,CAAI,GAAK5E,EAC5CgB,EAAI,IAAI2D,EAAME,CAAQ,EACtBnE,EAAM,WAAWM,EAAK,OAAO2D,CAAI,GAAIE,CAAQ,CAC/C,CAAC,EACDd,EAAS,YAAY,KAAMP,CAAE,CAC/B,MACExC,EAAI,IAAI2D,EAAMC,EAAO,GAAG1E,CAAM,GAAG0E,CAAI,GAAK1E,CAAM,CAEpD,CAAC,CACH,EAOA9C,EAAE,GAAG,SAAW,SAAUyD,EAAcX,EAAwD,CAC9F,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMc,EAAM5D,EAAE,IAAI,EAEZ0H,EAAa9E,GAAmC,CAChDA,GAAU,MAA+BA,IAAU,GACrDgB,EAAI,WAAWH,CAAI,EACVb,IAAU,GACnBgB,EAAI,KAAKH,EAAMA,CAAI,EAEnBG,EAAI,KAAKH,EAAM,OAAOb,CAAK,CAAC,EAE9BU,EAAM,WAAWM,EAAK,QAAQH,CAAI,GAAIb,CAAK,CAC7C,EAEA,GAAID,EAAWG,CAAM,EAAG,CACtB,MAAMsD,EAAKtB,EAAO,IAAM4C,EAAU7E,EAASC,CAAM,CAAC,CAAC,EACnD6D,EAAS,YAAY,KAAMP,CAAE,CAC/B,MACEsB,EAAU5E,CAAM,CAEpB,CAAC,CACH,EAOA9C,EAAE,GAAG,SAAW,SACdyD,EACAX,EACQ,CACR,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMc,EAAM5D,EAAE,IAAI,EAElB,GAAI2C,EAAWG,CAAM,EAAG,CACtB,MAAMsD,EAAKtB,EAAO,IAAM,CACtB,MAAMlC,EAAQC,EAASC,CAAM,EAC7Bc,EAAI,KAAKH,EAAMb,CAAK,EACpBU,EAAM,WAAWM,EAAK,QAAQH,CAAI,GAAIb,CAAK,CAC7C,CAAC,EACD+D,EAAS,YAAY,KAAMP,CAAE,CAC/B,MACExC,EAAI,KAAKH,EAAMX,CAAM,CAEzB,CAAC,CACH,EAMA9C,EAAE,GAAG,SAAW,SAAUsH,EAA2C,CACnE,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM1D,EAAM5D,EAAE,IAAI,EAElB,GAAI2C,EAAW2E,CAAS,EAAG,CACzB,MAAMlB,EAAKtB,EAAO,IAAM,CACtB,MAAMlC,EAAQ,EAAQC,EAASyE,CAAS,EACxC1D,EAAI,OAAOhB,CAAK,EAChBU,EAAM,WAAWM,EAAK,OAAQhB,CAAK,CACrC,CAAC,EACD+D,EAAS,YAAY,KAAMP,CAAE,CAC/B,MACExC,EAAI,OAAO,EAAQ0D,CAAU,CAEjC,CAAC,CACH,EAMAtH,EAAE,GAAG,SAAW,SAAUsH,EAA2C,CACnE,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM1D,EAAM5D,EAAE,IAAI,EAElB,GAAI2C,EAAW2E,CAAS,EAAG,CACzB,MAAMlB,EAAKtB,EAAO,IAAM,CACtB,MAAMlC,EAAQ,CAACC,EAASyE,CAAS,EACjC1D,EAAI,OAAOhB,CAAK,EAChBU,EAAM,WAAWM,EAAK,OAAQ,CAAChB,CAAK,CACtC,CAAC,EACD+D,EAAS,YAAY,KAAMP,CAAE,CAC/B,MACExC,EAAI,OAAO,CAAC0D,CAAS,CAEzB,CAAC,CACH,EAOAtH,EAAE,GAAG,QAAU,SAAasE,EAAuBE,EAAyB,CAAA,EAAY,CACtF,OAAO,KAAK,KAAK,UAAY,CAC3B,KAAM,CAAE,OAAQmD,EAAM,QAAAC,CAAA,EAAYxC,GAAkBpF,EAAE,IAAI,EAAGsE,EAAME,CAAO,EAEpE4B,EAAKtB,EAAO6C,CAAI,EACtBhB,EAAS,YAAY,KAAMP,CAAE,EAC7BO,EAAS,aAAa,KAAMiB,CAAO,CACrC,CAAC,CACH,EAKA5H,EAAE,GAAG,YAAc,SAAUsE,EAAqC,CAChE,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMV,EAAM5D,EAAE,IAAI,EAElB,IAAI6H,EAAqB,GAGzB,MAAMC,EAAU,IAAM,CAChBD,GAEJ9C,EAAM,IAAM,CACVT,EAAK,MAAQV,EAAI,KAAK,SAAS,CACjC,CAAC,CACH,EAEAA,EAAI,GAAG,SAAUkE,CAAO,EACxBnB,EAAS,aAAa,KAAM,IAAM/C,EAAI,IAAI,SAAUkE,CAAO,CAAC,EAG5D,MAAM1B,EAAKtB,EAAO,IAAM,CACtB+C,EAAqB,GACrBjE,EAAI,KAAK,UAAWU,EAAK,KAAK,EAC9BhB,EAAM,WAAWM,EAAK,UAAWU,EAAK,KAAK,EAC3CuD,EAAqB,EACvB,CAAC,EACDlB,EAAS,YAAY,KAAMP,CAAE,CAC/B,CAAC,CACH,EAKApG,EAAE,GAAG,OAAS,SAAUsF,EAAewC,EAA4C,CACjF,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMlE,EAAM5D,EAAE,IAAI,EAEZ+H,EAAiB,SAA6BvB,EAAiB,CACnEzB,EAAM,IAAM+C,EAAQ,KAAK,KAAMtB,CAAC,CAAC,CACnC,EAEA5C,EAAI,GAAG0B,EAAOyC,CAAc,EAC5BpB,EAAS,aAAa,KAAM,IAAM/C,EAAI,IAAI0B,EAAOyC,CAAc,CAAC,CAClE,CAAC,CACH,EAKA/H,EAAE,GAAG,WAAa,UAAoB,CACpC,OAAO,KAAK,KAAK,UAAY,CAC3B2G,EAAS,YAAY,IAAI,CAC3B,CAAC,CACH,EC7OA,SAASqB,GAAYC,EAAqBrF,EAA+B,CACnED,EAAWC,CAAK,EAClBqF,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMd,EAAO,OAAOtE,EAASD,CAAK,GAAK,EAAE,EACzCqF,EAAI,IAAI,KAAKd,CAAI,EACjB7D,EAAM,WAAW2E,EAAI,IAAK,OAAQd,CAAI,CACxC,CAAC,EAEDc,EAAI,IAAI,KAAK,OAAOrF,GAAS,EAAE,CAAC,CAEpC,CAEA,SAASsF,GAASD,EAAqBrF,EAAoC,CACrED,EAAWC,CAAK,EAClBqF,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMb,EAAO,OAAOvE,EAASD,CAAK,GAAK,EAAE,EACzCqF,EAAI,IAAI,KAAKb,CAAI,EACjB9D,EAAM,WAAW2E,EAAI,IAAK,OAAQb,CAAI,CACxC,CAAC,EAEDa,EAAI,IAAI,KAAK,OAAOrF,GAAS,EAAE,CAAC,CAEpC,CAEA,SAASuF,GAAUF,EAAqBG,EAAwD,CAC9F,SAAW,CAACf,EAAWC,CAAS,IAAK,OAAO,QAAQc,CAAQ,EACtDzF,EAAW2E,CAAS,EACtBW,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMrF,EAAQ,EAAQC,EAASyE,CAAS,EACxCW,EAAI,IAAI,YAAYZ,EAAWzE,CAAK,EACpCU,EAAM,WAAW2E,EAAI,IAAK,SAASZ,CAAS,GAAIzE,CAAK,CACvD,CAAC,EAEDqF,EAAI,IAAI,YAAYZ,EAAW,EAAQC,CAAU,CAGvD,CAEA,SAASe,GAAQJ,EAAqBK,EAAwC,CAC5E,SAAW,CAACf,EAAM3E,CAAK,IAAK,OAAO,QAAQ0F,CAAM,EAC/C,GAAI,MAAM,QAAQ1F,CAAK,EAAG,CACxB,KAAM,CAACE,EAAQ0E,CAAI,EAAI5E,EACnBD,EAAWG,CAAM,EACnBmF,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMR,EAAW,GAAG5E,EAASC,CAAM,CAAC,GAAG0E,CAAI,GAC3CS,EAAI,IAAI,IAAIV,EAAME,CAAQ,EAC1BnE,EAAM,WAAW2E,EAAI,IAAK,OAAOV,CAAI,GAAIE,CAAQ,CACnD,CAAC,EAEDQ,EAAI,IAAI,IAAIV,EAAM,GAAGzE,CAAM,GAAG0E,CAAI,EAAE,CAExC,MAAW7E,EAAWC,CAAK,EACzBqF,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMR,EAAW5E,EAASD,CAAK,EAC/BqF,EAAI,IAAI,IAAIV,EAAME,CAAQ,EAC1BnE,EAAM,WAAW2E,EAAI,IAAK,OAAOV,CAAI,GAAIE,CAAQ,CACnD,CAAC,EAEDQ,EAAI,IAAI,IAAIV,EAAM3E,CAAwB,CAGhD,CAEA,SAAS2F,GACPN,EACAO,EACM,CACN,SAAW,CAAC/E,EAAMb,CAAK,IAAK,OAAO,QAAQ4F,CAAO,EAAG,CACnD,MAAMd,EAAatJ,GAA2C,CACxDA,GAAM,MAA2BA,IAAM,GACzC6J,EAAI,IAAI,WAAWxE,CAAI,EACdrF,IAAM,GACf6J,EAAI,IAAI,KAAKxE,EAAMA,CAAI,EAEvBwE,EAAI,IAAI,KAAKxE,EAAM,OAAOrF,CAAC,CAAC,EAE9BkF,EAAM,WAAW2E,EAAI,IAAK,QAAQxE,CAAI,GAAIrF,CAAC,CAC7C,EAEIuE,EAAWC,CAAK,EAClBqF,EAAI,QAAQ,KAAK,IAAMP,EAAU7E,EAASD,CAAK,CAAC,CAAC,EAEjD8E,EAAU9E,CAAK,CAEnB,CACF,CAEA,SAAS6F,GAASR,EAAqBS,EAAuD,CAC5F,SAAW,CAACjF,EAAMb,CAAK,IAAK,OAAO,QAAQ8F,CAAO,EAC5C/F,EAAWC,CAAK,EAClBqF,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMU,EAAY9F,EAASD,CAAK,EAChCqF,EAAI,IAAI,KAAKxE,EAAMkF,CAAyD,EAC5ErF,EAAM,WAAW2E,EAAI,IAAK,QAAQxE,CAAI,GAAIkF,CAAS,CACrD,CAAC,EAEDV,EAAI,IAAI,KAAKxE,EAAMb,CAAqD,CAG9E,CAEA,SAASgG,GAASX,EAAqBX,EAAyC,CAC1E3E,EAAW2E,CAAS,EACtBW,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMrF,EAAQ,EAAQC,EAASyE,CAAS,EACxCW,EAAI,IAAI,OAAOrF,CAAK,EACpBU,EAAM,WAAW2E,EAAI,IAAK,OAAQrF,CAAK,CACzC,CAAC,EAEDqF,EAAI,IAAI,OAAO,EAAQX,CAAU,CAErC,CAEA,SAASuB,GAASZ,EAAqBX,EAAyC,CAC1E3E,EAAW2E,CAAS,EACtBW,EAAI,QAAQ,KAAK,IAAM,CACrB,MAAMrF,EAAQ,CAACC,EAASyE,CAAS,EACjCW,EAAI,IAAI,OAAOrF,CAAK,EACpBU,EAAM,WAAW2E,EAAI,IAAK,OAAQ,CAACrF,CAAK,CAC1C,CAAC,EAEDqF,EAAI,IAAI,OAAO,CAACX,CAAS,CAE7B,CAMA,SAASwB,GACPb,EACAc,EACM,CAEN,MAAMzE,EAAO,MAAM,QAAQyE,CAAS,EAAIA,EAAU,CAAC,EAAIA,EACjDvE,EAAU,MAAM,QAAQuE,CAAS,EAAIA,EAAU,CAAC,EAAI,CAAA,EAEpD,CAAE,OAAAjE,EAAQ,QAAA8C,CAAA,EAAYxC,GAAkB6C,EAAI,IAAK3D,EAAME,CAAO,EAEpEyD,EAAI,QAAQ,KAAKnD,CAAM,EACvBmD,EAAI,aAAaL,CAAO,CAC1B,CAEA,SAASoB,GAAYf,EAAqB3D,EAAmC,CAC3E,MAAMmB,EAAQN,GAAA,EAGR2C,EAAU,IAAM,CAChBrC,EAAM,QAAU,QACpBV,EAAM,IAAM,CACVT,EAAK,MAAQ2D,EAAI,IAAI,KAAK,SAAS,CACrC,CAAC,CACH,EAEAA,EAAI,IAAI,GAAG,SAAUH,CAAO,EAC5BG,EAAI,aAAa,IAAMA,EAAI,IAAI,IAAI,SAAUH,CAAO,CAAC,EAGrDG,EAAI,QAAQ,KAAK,IAAM,CACrBxC,EAAM,MAAQ,iBACdwC,EAAI,IAAI,KAAK,UAAW3D,EAAK,KAAK,EAClChB,EAAM,WAAW2E,EAAI,IAAK,UAAW3D,EAAK,KAAK,EAC/CmB,EAAM,MAAQ,MAChB,CAAC,CACH,CAMA,SAASwD,GACPhB,EACAiB,EACM,CACN,SAAW,CAACC,EAAWrB,CAAO,IAAK,OAAO,QAAQoB,CAAQ,EAAG,CAC3D,MAAME,EAAU,SAA6B5C,EAAiB,CAC5DzB,EAAM,IAAM+C,EAAQ,KAAK,KAAMtB,CAAC,CAAC,CACnC,EACAyB,EAAI,IAAI,GAAGkB,EAAWC,CAAO,EAC7BnB,EAAI,aAAa,IAAMA,EAAI,IAAI,IAAIkB,EAAWC,CAAO,CAAC,CACxD,CACF,CAYApJ,EAAE,GAAG,SAAW,SACdwE,EACQ,CACR,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMZ,EAAM5D,EAAE,IAAI,EACZuG,EAA2B,CAAA,EAG3B0B,EAAsB,CAC1B,IAAArE,EACA,GAAI,KACJ,QAAA2C,EACA,aAAeD,GAAOK,EAAS,aAAa,KAAML,CAAE,CAAA,EAIlD9B,EAAQ,OAAS,QAAWwD,GAASC,EAAKzD,EAAQ,IAAI,EACtDA,EAAQ,OAAS,QAAW0D,GAASD,EAAKzD,EAAQ,IAAI,EACtDA,EAAQ,OAAO2D,GAAUF,EAAKzD,EAAQ,KAAK,EAC3CA,EAAQ,KAAK6D,GAAQJ,EAAKzD,EAAQ,GAAG,EACrCA,EAAQ,MAAM+D,GAASN,EAAKzD,EAAQ,IAAI,EACxCA,EAAQ,MAAMiE,GAASR,EAAKzD,EAAQ,IAAI,EACxCA,EAAQ,OAAS,QAAWoE,GAASX,EAAKzD,EAAQ,IAAI,EACtDA,EAAQ,OAAS,QAAWqE,GAASZ,EAAKzD,EAAQ,IAAI,EACtDA,EAAQ,MAAQ,QAAWsE,GAAQb,EAAKzD,EAAQ,GAAG,EACnDA,EAAQ,UAAY,QAAWwE,GAAYf,EAAKzD,EAAQ,OAAO,EAC/DA,EAAQ,IAAIyE,GAAWhB,EAAKzD,EAAQ,EAAE,EAG1C+B,EAAQ,QAASD,GAAO,CACtB,MAAMF,EAAKtB,EAAOwB,CAAE,EACpBK,EAAS,YAAY,KAAMP,CAAE,CAC/B,CAAC,CACH,CAAC,CACH,ECxPA,SAASiD,GAAOC,EAAyB,CACvC,GAAIA,EAAI,SAAW,EAAG,MAAO,CAAA,EAG7B,MAAMC,EAAeD,EAAI,MAAA,EAInBE,EAAmB,CAAC,CAAC,EAE3B,IAAIrK,EAAWsK,EAAcC,EAAeC,EAC5C,MAAMC,EAAMN,EAAI,OAEhB,IAAKnK,EAAI,EAAGA,EAAIyK,EAAKzK,IAAK,CACxB,MAAM0K,EAAOP,EAAInK,CAAC,EAGlB,GAAI0K,IAAS,GAAI,CACf,MAAMC,EAAkBN,EAAOA,EAAO,OAAS,CAAC,EAGhD,GAAIF,EAAIQ,CAAe,EAAKD,EAAM,CAChCN,EAAapK,CAAC,EAAI2K,EAClBN,EAAO,KAAKrK,CAAC,EACb,QACF,CAOA,IAHAsK,EAAO,EACPC,EAAQF,EAAO,OAAS,EAEjBC,EAAOC,GACZC,GAAQF,EAAOC,GAAS,EAAK,EACzBJ,EAAIE,EAAOG,CAAG,CAAE,EAAKE,EACvBJ,EAAOE,EAAM,EAEbD,EAAQC,EAKRE,EAAOP,EAAIE,EAAOC,CAAI,CAAE,IACtBA,EAAO,IAETF,EAAapK,CAAC,EAAIqK,EAAOC,EAAO,CAAC,GAEnCD,EAAOC,CAAI,EAAItK,EAEnB,CACF,CAGA,IAAIuC,EAAI8H,EAAO,OACXpL,EAAIoL,EAAO9H,EAAI,CAAC,EAEpB,KAAOA,KAAM,GACX8H,EAAO9H,CAAC,EAAItD,EACZA,EAAImL,EAAanL,CAAC,EAGpB,OAAOoL,CACT,CAMAxJ,EAAE,GAAG,SAAW,SAAa8C,EAA2B0B,EAAiC,CACvF,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMuF,EAAa/J,EAAE,IAAI,EACnBgK,EAAoBjH,GAAY,IAAI,EAEpC,CAAE,IAAAkH,EAAK,OAAAC,EAAQ,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,MAAAC,GAAU9F,EAEhD+F,EACJ,OAAON,GAAQ,WACXA,EACCO,GAAYA,EAAKP,CAAc,EAEhCQ,MAAc,IACpB,IAAIC,EAA+B,CAAA,EAC/BC,EAA0B,KAI9B,MAAMC,OAAmB,IAEnBxE,GAAKtB,EAAO,IAAM,CACtB,MAAM+F,EAAQ/H,EAAO,MACfgI,EAA+B,CAAA,EAC/BC,OAAgB,IAGtB,QAAS5L,EAAI,EAAGA,EAAI0L,EAAM,OAAQ1L,IAAK,CACrC,MAAMqL,EAAOK,EAAM1L,CAAC,EACdX,EAAI+L,EAAOC,EAAMrL,CAAC,EACxB2L,EAAQ,KAAKtM,CAAC,EACduM,GAAU,IAAIvM,CAAC,CACjB,CAKA,GAHA8E,EAAM,IAAI,OAAQ,GAAG0G,CAAiB,kBAAkBa,EAAM,MAAM,QAAQ,EAGxEA,EAAM,SAAW,GAAKP,EAAO,CAC1BK,IACHA,EAAW3K,EAAEsK,CAAK,EAClBP,EAAW,OAAOY,CAAQ,GAE5B,SAAW,CAAA,CAAGK,CAAK,IAAKP,EAAS,CAC/BO,EAAM,IAAI,OAAA,EACV,MAAMhI,EAAKgI,EAAM,IAAI,CAAC,EAClBhI,GAAI2D,EAAS,QAAQ3D,CAAE,CAC7B,CACAyH,EAAQ,MAAA,EACRC,EAAU,CAAA,EACV,MACF,MAAWC,IACTA,EAAS,OAAA,EACTA,EAAW,MAIb,SAAW,CAACnM,EAAGwM,CAAK,IAAKP,EACvB,GAAI,CAACM,GAAU,IAAIvM,CAAC,EAAG,CAErB,GAAIoM,GAAa,IAAIpM,CAAC,EAAG,SAEzB,MAAMyM,EAAW,IAAM,CACrBD,EAAM,IAAI,OAAA,EACV,MAAMhI,GAAKgI,EAAM,IAAI,CAAC,EAClBhI,IAAI2D,EAAS,QAAQ3D,EAAE,EAC3B4H,GAAa,OAAOpM,CAAC,EACrB8E,EAAM,IAAI,OAAQ,GAAG0G,CAAiB,iBAAkBxL,CAAC,CAC3D,EAEAiM,EAAQ,OAAOjM,CAAC,EAChBoM,GAAa,IAAIpM,CAAC,EAEd6L,EACF,QAAQ,QAAQA,EAASW,EAAM,GAAG,CAAC,EAAE,KAAKC,CAAQ,EAElDA,EAAA,CAEJ,CAKF,MAAMC,OAAkB,IACxBR,EAAQ,QAAQ,CAAClM,EAAGW,IAAM+L,GAAY,IAAI1M,EAAGW,CAAC,CAAC,EAG/C,MAAMgM,GAAaL,EAAQ,IAAKtM,GAAM0M,GAAY,IAAI1M,CAAC,GAAK,EAAE,EAGxD4M,GAAM/B,GAAO8B,EAAU,EACvBE,GAAS,IAAI,IAAID,EAAG,EAG1B,IAAIE,EAAwB,KAE5B,QAASnM,EAAI0L,EAAM,OAAS,EAAG1L,GAAK,EAAGA,IAAK,CAC1C,MAAM8K,EAAMa,EAAQ3L,CAAC,EACfqL,EAAOK,EAAM1L,CAAC,EACdoM,GAAWF,GAAO,IAAIlM,CAAC,EAE7B,GAAIsL,EAAQ,IAAIR,CAAG,EAAG,CAEpB,MAAMe,EAAQP,EAAQ,IAAIR,CAAG,EAC7B,GAAI,CAACe,EAAO,SAEZA,EAAM,KAAOR,EACb,MAAMxH,EAAKgI,EAAM,IAAI,CAAC,EACtB,GAAI,CAAChI,EAAI,SAMT,GAJIwB,EAAQ,QACVA,EAAQ,OAAOwG,EAAM,IAAKR,EAAMrL,CAAC,EAG/B,CAACoM,GAECD,EACFN,EAAM,IAAI,aAAaM,CAAQ,EAE/BN,EAAM,IAAI,SAASjB,CAAU,MAE1B,CAIL,MAAMyB,EAAUxI,EAAG,YACfsI,GAAYE,IAAYF,EAC1BN,EAAM,IAAI,aAAaM,CAAQ,EACtB,CAACA,GAAYE,GACtBR,EAAM,IAAI,SAASjB,CAAU,CAEjC,CACAuB,EAAWtI,CACb,KAAO,CAEL,MAAMyI,EAAWvB,EAAOM,EAAMrL,CAAC,EACzByE,GACJ6H,aAAoB,QAAUzL,EAAEyL,CAAQ,GAE1ChB,EAAQ,IAAIR,EAAK,CAAE,IAAArG,EAAK,KAAA4G,EAAM,EAE1Bc,EACF1H,EAAI,aAAa0H,CAAQ,EAEzB1H,EAAI,SAASmG,CAAU,EAGrBI,GAAMA,EAAKvG,EAAK4G,EAAMrL,CAAC,EACvBiL,KAAaxG,CAAG,EAEpBN,EAAM,IAAI,OAAQ,GAAG0G,CAAiB,eAAgBC,CAAG,EAGzD,MAAMyB,EAAQ9H,EAAI,CAAC,EACf8H,IAAOJ,EAAWI,EACxB,CACF,CAEAhB,EAAUI,CACZ,CAAC,EAEDnE,EAAS,YAAY,KAAMP,EAAE,EAC7BO,EAAS,aAAa,KAAM,IAAM,CAChC8D,EAAQ,MAAA,EACRC,EAAU,CAAA,EACVC,GAAU,OAAA,CACZ,CAAC,CACH,CAAC,CACH,EC/OA,MAAMgB,OAAwB,QAM9B3L,EAAE,GAAG,UAAY,SAAa4L,EAA2BC,EAAW,CAAA,EAAiB,CACnF,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMjI,EAAM5D,EAAE,IAAI,EACZ6D,EAAWd,GAAY,IAAI,EAG3B+I,EAAWH,GAAkB,IAAI,IAAI,EACvCG,IACFxI,EAAM,IAAI,QAAS,GAAGO,CAAQ,gCAAgC,EAC9DiI,EAAA,GAGFxI,EAAM,IAAI,QAAS,GAAGO,CAAQ,qBAAqB,EAGnD,IAAIkI,EACJ,GAAI,CACFA,EAAcH,EAAUhI,EAAKiI,CAAK,CACpC,OAASrF,EAAG,CACV,QAAQ,MAAM,oCAAqCA,CAAC,EACpD,MACF,CAGA,IAAIwF,EAAc,GAClB,MAAMC,EAAc,IAAM,CACxB,GAAI,CAAAD,EAKJ,IAJAA,EAAc,GAEd1I,EAAM,IAAI,QAAS,GAAGO,CAAQ,eAAe,EAEzC,OAAOkI,GAAgB,WACzB,GAAI,CACFA,EAAA,CACF,MAAQ,CAAC,CAEXpF,EAAS,YAAY,IAAI,EACzBgF,GAAkB,OAAO,IAAI,EAC/B,EAEAA,GAAkB,IAAI,KAAMM,CAAW,EACvCtF,EAAS,aAAa,KAAMsF,CAAW,CACzC,CAAC,CACH,EAKAjM,EAAE,GAAG,YAAc,UAAoB,CACrC,OAAO,KAAK,KAAK,UAAY,CAC3B2L,GAAkB,IAAI,IAAI,IAAA,CAC5B,CAAC,CACH,ECxDA,MAAMO,MAAiB,QAEvB,IAAIC,GAA2B,GAYxB,SAASC,IAAwB,CACtC,GAAID,GAA0B,OAC9BA,GAA2B,GAE3B,MAAME,EAAarM,EAAE,GAAG,GAClBsM,EAActM,EAAE,GAAG,IACnBuM,EAAiBvM,EAAE,GAAG,OACtBwM,EAAgBxM,EAAE,GAAG,MACrByM,EAAiBzM,EAAE,GAAG,OAK5BA,EAAE,GAAG,OAAS,SAAU6D,EAAmB,CAIzC,OAFgBA,EAAW,KAAK,OAAOA,CAAQ,EAAI,MAE3C,KAAK,UAAY,CACvB8C,EAAS,YAAY,IAAI,CAC3B,CAAC,EAEM4F,EAAe,KAAK,KAAM1I,CAAQ,CAC3C,EAGA7D,EAAE,GAAG,MAAQ,UAAY,CACvB,YAAK,KAAK,UAAY,CACH,KAAK,iBAAiB,GAAG,EACjC,QAAS0G,GAAUC,EAAS,QAAQD,CAAK,CAAC,CAGrD,CAAC,EAEM8F,EAAc,KAAK,IAAI,CAChC,EAGAxM,EAAE,GAAG,OAAS,SAAU6D,EAAmB,CAGzC,OAFgBA,EAAW,KAAK,OAAOA,CAAQ,EAAI,MAE3C,KAAK,UAAY,CACvB8C,EAAS,KAAK,IAAI,CACpB,CAAC,EAEM8F,EAAe,KAAK,KAAM5I,CAAQ,CAC3C,EAMA7D,EAAE,GAAG,GAAK,YAAwBwD,EAAa,CAC7C,IAAIkJ,EAAU,GACd,QAASvN,EAAIqE,EAAK,OAAS,EAAGrE,GAAK,EAAGA,IACpC,GAAI,OAAOqE,EAAKrE,CAAC,GAAM,WAAY,CACjCuN,EAAUvN,EACV,KACF,CAGF,GAAIuN,IAAY,GAAI,CAClB,MAAMC,EAAanJ,EAAKkJ,CAAO,EAE/B,IAAIE,EACAV,EAAW,IAAIS,CAAU,EAC3BC,EAAYV,EAAW,IAAIS,CAAU,GAGrCC,EAAY,YAAwBC,EAAkB,CAEpD,IAAIrD,EACJzE,OAAAA,EAAM,IAAM,CACVyE,EAASmD,EAAW,MAAM,KAAME,CAAS,CAC3C,CAAC,EACMrD,CACT,EACA0C,EAAW,IAAIS,EAAYC,CAAS,GAGtCpJ,EAAKkJ,CAAO,EAAIE,CAClB,CAGA,OAAOP,EAAW,MAAM,KAAM7I,CAAW,CAC3C,EAIAxD,EAAE,GAAG,IAAM,YAAwBwD,EAAa,CAC9C,IAAIkJ,EAAU,GACd,QAASvN,EAAIqE,EAAK,OAAS,EAAGrE,GAAK,EAAGA,IACpC,GAAI,OAAOqE,EAAKrE,CAAC,GAAM,WAAY,CACjCuN,EAAUvN,EACV,KACF,CAGF,GAAIuN,IAAY,GAAI,CAClB,MAAMC,EAAanJ,EAAKkJ,CAAO,EAC3BR,EAAW,IAAIS,CAAU,IAC3BnJ,EAAKkJ,CAAO,EAAIR,EAAW,IAAIS,CAAU,EAE7C,CAGA,OAAOL,EAAY,MAAM,KAAM9I,CAAW,CAC5C,CACF,CAGO,MAAMsJ,GAAuBV,GC3GpCA,GAAA,EACApM,EAAE,IAAM,CACN6G,GAAkB,SAAS,IAAI,CACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"atom-effect-jquery.min.js","sources":["../../core/dist/index.mjs","../src/utils.ts","../src/debug.ts","../src/namespace.ts","../src/types.ts","../src/input-binding.ts","../src/registry.ts","../src/chainable.ts","../src/unified.ts","../src/list.ts","../src/mount.ts","../src/jquery-patch.ts","../src/index.ts"],"sourcesContent":["const Z = {\n /** One second in milliseconds */\n ONE_SECOND_MS: 1e3\n}, v = {\n IDLE: \"idle\",\n PENDING: \"pending\",\n RESOLVED: \"resolved\",\n REJECTED: \"rejected\"\n}, A = {\n DISPOSED: 1,\n // 0001 - Effect has been disposed\n EXECUTING: 2\n // 0010 - Effect is currently executing\n}, c = {\n DIRTY: 1,\n // 0001 - Needs recomputation\n IDLE: 2,\n // 0010 - Initial state, not computed yet\n PENDING: 4,\n // 0100 - Async computation in progress\n RESOLVED: 8,\n // 1000 - Successfully computed\n REJECTED: 16,\n // 10000 - Computation failed\n RECOMPUTING: 32,\n // 100000 - Currently recomputing\n HAS_ERROR: 64\n // 1000000 - Has error state\n}, be = {\n /** Maximum number of pooled objects to prevent memory bloat */\n MAX_SIZE: 1e3,\n /** Number of objects to pre-allocate for performance-critical paths */\n WARMUP_SIZE: 100\n}, g = {\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}, 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}, I = 1073741823, a = typeof process < \"u\" && process.env && process.env.NODE_ENV !== \"production\", ee = Object.freeze([]);\nclass p 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 N extends p {\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 b extends p {\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 O extends p {\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 h = {\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 subscribing to a dependency fails.\n */\n COMPUTED_DEPENDENCY_SUBSCRIPTION_FAILED: \"Failed to subscribe to dependency\",\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 // 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}, L = /* @__PURE__ */ Symbol(\"debugName\"), te = /* @__PURE__ */ Symbol(\"id\"), V = /* @__PURE__ */ Symbol(\"type\"), q = /* @__PURE__ */ Symbol(\"noDefaultValue\");\nfunction se(i) {\n return \"dependencies\" in i && Array.isArray(i.dependencies);\n}\nlet j = 0;\nfunction G(i, e, t) {\n if (i._visitedEpoch !== t) {\n if (i._visitedEpoch = t, i === e)\n throw new N(\"Indirect circular dependency detected\");\n if (se(i)) {\n const s = i.dependencies;\n for (let n = 0; n < s.length; n++) {\n const r = s[n];\n r && G(r, e, t);\n }\n }\n }\n}\nconst d = {\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 N(\"Direct circular dependency detected\");\n this.enabled && (j++, G(i, e, j));\n },\n attachDebugInfo(i, e, t) {\n if (!this.enabled)\n return;\n const s = i;\n s[L] = `${e}_${t}`, s[te] = t, s[V] = e;\n },\n getDebugName(i) {\n if (i != null && L in i)\n return i[L];\n },\n getDebugType(i) {\n if (i != null && V in i)\n return i[V];\n }\n};\nlet ie = 1;\nconst ne = () => ie++;\nclass Y {\n constructor() {\n this.id = ne() & I, this.flags = 0;\n }\n}\nclass $ extends Y {\n constructor() {\n super(), this.version = 0, this._lastSeenEpoch = -1;\n }\n /**\n * Subscribes a listener function or Subscriber object to value changes.\n *\n * @param listener - Function or Subscriber object to call when the value changes\n * @returns An unsubscribe function\n * @throws {AtomError} If listener is not a function or Subscriber\n */\n subscribe(e) {\n if (typeof e == \"object\" && e !== null && \"execute\" in e)\n return this._objectSubscribers.add(e);\n if (typeof e != \"function\")\n throw new p(h.ATOM_SUBSCRIBER_MUST_BE_FUNCTION);\n return this._functionSubscribers.add(e);\n }\n /**\n * Gets the total number of active subscribers.\n */\n subscriberCount() {\n return this._functionSubscribers.size + this._objectSubscribers.size;\n }\n /**\n * Notifies all subscribers of a change.\n *\n * @param newValue - The new value\n * @param oldValue - The old value\n */\n _notifySubscribers(e, t) {\n this._functionSubscribers.forEachSafe(\n (s) => s(e, t),\n (s) => console.error(new p(h.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, s))\n ), this._objectSubscribers.forEachSafe(\n (s) => s.execute(),\n (s) => console.error(new p(h.ATOM_INDIVIDUAL_SUBSCRIBER_FAILED, s))\n );\n }\n}\nlet U = 0;\nfunction H() {\n return U = (U + 1 | 0) & I, U;\n}\nfunction re() {\n return U;\n}\nlet x = 0, w = 0, F = !1;\nfunction z() {\n return F ? (a && console.warn(\n \"Warning: startFlush() called during flush - ignored to prevent infinite loop detection bypass\"\n ), !1) : (F = !0, x = x + 1 & I, w = 0, !0);\n}\nfunction X() {\n F = !1;\n}\nfunction oe() {\n return F ? ++w : 0;\n}\nclass ce {\n constructor() {\n this.queueA = [], this.queueB = [], this.queue = this.queueA, this.queueSize = 0, this._epoch = 0, this.isProcessing = !1, this.isBatching = !1, this.batchDepth = 0, this.batchQueue = [], this.batchQueueSize = 0, this.isFlushingSync = !1, this.maxFlushIterations = g.MAX_FLUSH_ITERATIONS;\n }\n get phase() {\n return this.isProcessing || this.isFlushingSync ? 2 : this.isBatching ? 1 : 0;\n }\n /**\n * Schedules a task for execution.\n * Tasks are deduplicated within the same flush cycle using epoch tracking.\n * @param callback - The function to execute.\n * @throws {SchedulerError} If the callback is not a function.\n */\n schedule(e) {\n if (typeof e != \"function\")\n throw new O(\"Scheduler callback must be a function\");\n e._nextEpoch !== this._epoch && (e._nextEpoch = this._epoch, this.isBatching || this.isFlushingSync ? this.batchQueue[this.batchQueueSize++] = e : (this.queue[this.queueSize++] = e, this.isProcessing || this.flush()));\n }\n flush() {\n if (this.isProcessing || this.queueSize === 0) return;\n this.isProcessing = !0;\n const e = this.queue, t = this.queueSize;\n this.queue = this.queue === this.queueA ? this.queueB : this.queueA, this.queueSize = 0, this._epoch++, queueMicrotask(() => {\n const s = z();\n this._processJobs(e, t), this.isProcessing = !1, s && X(), this.queueSize > 0 && !this.isBatching && this.flush();\n });\n }\n flushSync() {\n this.isFlushingSync = !0;\n const e = z();\n try {\n this._mergeBatchQueue(), this._drainQueue();\n } finally {\n this.isFlushingSync = !1, e && X();\n }\n }\n _mergeBatchQueue() {\n if (this._epoch++, this.batchQueueSize > 0) {\n for (let e = 0; e < this.batchQueueSize; e++) {\n const t = this.batchQueue[e];\n t && t._nextEpoch !== this._epoch && (t._nextEpoch = this._epoch, this.queue[this.queueSize++] = t);\n }\n this.batchQueueSize = 0;\n }\n }\n _drainQueue() {\n let e = 0;\n for (; this.queueSize > 0; ) {\n if (++e > this.maxFlushIterations) {\n this._handleFlushOverflow();\n break;\n }\n this._processCurrentQueue(), this._mergeBatchQueue();\n }\n }\n _processCurrentQueue() {\n const e = this.queue, t = this.queueSize;\n this.queue = this.queue === this.queueA ? this.queueB : this.queueA, this.queueSize = 0, this._epoch++, this._processJobs(e, t);\n }\n _handleFlushOverflow() {\n console.error(\n new O(\n `Maximum flush iterations (${this.maxFlushIterations}) exceeded. Possible infinite loop.`\n )\n ), this.queueSize = 0, this.queue.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 O(\"Error occurred during scheduler execution\", n)\n );\n }\n e.length = 0;\n }\n /** Starts a new batch of updates. Updates will be deferred until endBatch is called. */\n startBatch() {\n this.batchDepth++, this.isBatching = !0;\n }\n /**\n * Ends the current batch. If the batch depth reaches zero, all pending updates are flushed synchronously.\n */\n endBatch() {\n this.batchDepth = Math.max(0, this.batchDepth - 1), this.batchDepth === 0 && (this.flushSync(), this.isBatching = !1);\n }\n /**\n * Configures the maximum number of iterations allowed during a synchronous flush.\n * Used to prevent infinite loops.\n * @param max - Maximum iterations count.\n */\n setMaxFlushIterations(e) {\n if (e < g.MIN_FLUSH_ITERATIONS)\n throw new O(\n `Max flush iterations must be at least ${g.MIN_FLUSH_ITERATIONS}`\n );\n this.maxFlushIterations = e;\n }\n}\nconst T = new ce();\nfunction Se(i) {\n if (typeof i != \"function\")\n throw new p(\"Batch callback must be a function\");\n T.startBatch();\n try {\n return i();\n } finally {\n T.endBatch();\n }\n}\nconst y = {\n current: null,\n run(i, e) {\n const t = this.current;\n this.current = i;\n try {\n return e();\n } finally {\n this.current = t;\n }\n },\n getCurrent() {\n return this.current;\n }\n};\nfunction he(i) {\n if (typeof i != \"function\")\n throw new p(\"Untracked callback must be a function\");\n const e = y.current;\n y.current = null;\n try {\n return i();\n } finally {\n y.current = e;\n }\n}\nclass P {\n constructor() {\n this.subscribers = null;\n }\n /** Adds subscriber and returns unsubscribe function (idempotent) */\n add(e) {\n if (this.subscribers || (this.subscribers = []), this.subscribers.indexOf(e) !== -1)\n return () => {\n };\n this.subscribers.push(e);\n let t = !1;\n return () => {\n t || (t = !0, this.remove(e));\n };\n }\n /** Removes subscriber using swap-and-pop */\n remove(e) {\n if (!this.subscribers)\n return !1;\n const t = this.subscribers.indexOf(e);\n if (t === -1)\n return !1;\n const s = this.subscribers.length - 1;\n return t !== s && (this.subscribers[t] = this.subscribers[s]), this.subscribers.pop(), !0;\n }\n has(e) {\n return this.subscribers ? this.subscribers.indexOf(e) !== -1 : !1;\n }\n forEach(e) {\n if (this.subscribers)\n for (let t = 0; t < this.subscribers.length; t++)\n e(this.subscribers[t], t);\n }\n /** Iterates with error handling to prevent one failure from breaking the chain */\n forEachSafe(e, t) {\n if (this.subscribers)\n for (let s = 0; s < this.subscribers.length; s++)\n try {\n e(this.subscribers[s], s);\n } catch (n) {\n t ? t(n) : console.error(\"[SubscriberManager] Error in subscriber callback:\", n);\n }\n }\n get size() {\n return this.subscribers?.length ?? 0;\n }\n get hasSubscribers() {\n return this.subscribers !== null && this.subscribers.length > 0;\n }\n clear() {\n this.subscribers = null;\n }\n toArray() {\n return this.subscribers ? [...this.subscribers] : [];\n }\n}\nclass B {\n constructor() {\n this.pool = [], this.maxPoolSize = 50, this.maxReusableCapacity = 256, this.stats = a ? {\n acquired: 0,\n released: 0,\n rejected: { frozen: 0, tooLarge: 0, poolFull: 0 }\n } : null;\n }\n /** Acquires an array from the pool or creates a new one if the pool is empty. */\n acquire() {\n return a && this.stats && this.stats.acquired++, this.pool.pop() ?? [];\n }\n /**\n * Releases an array back to the pool.\n * Clears the array before storing it.\n * @param arr - The array to release.\n * @param emptyConst - Optional reference to a constant empty array to skip.\n */\n release(e, t) {\n if (!(t && e === t)) {\n if (Object.isFrozen(e)) {\n a && this.stats && this.stats.rejected.frozen++;\n return;\n }\n if (e.length > this.maxReusableCapacity) {\n a && this.stats && this.stats.rejected.tooLarge++;\n return;\n }\n if (this.pool.length >= this.maxPoolSize) {\n a && this.stats && this.stats.rejected.poolFull++;\n return;\n }\n e.length = 0, this.pool.push(e), a && this.stats && this.stats.released++;\n }\n }\n /** Returns current stats for the pool (dev mode only). */\n getStats() {\n if (!a || !this.stats) return null;\n const { acquired: e, released: t, rejected: s } = this.stats, n = s.frozen + s.tooLarge + s.poolFull;\n return {\n acquired: e,\n released: t,\n rejected: s,\n leaked: e - t - n,\n poolSize: this.pool.length\n };\n }\n /** Resets the pool and its stats. */\n reset() {\n this.pool.length = 0, a && this.stats && (this.stats.acquired = 0, this.stats.released = 0, this.stats.rejected = { frozen: 0, tooLarge: 0, poolFull: 0 });\n }\n}\nconst u = Object.freeze([]), l = Object.freeze([]), _ = Object.freeze([]), S = new B(), D = new B(), f = new B();\nfunction ue(i) {\n return i !== null && typeof i == \"object\" && \"value\" in i && \"subscribe\" in i && typeof i.subscribe == \"function\";\n}\nfunction ge(i) {\n if (d.enabled && (i == null || typeof i == \"object\")) {\n const e = d.getDebugType(i);\n if (e)\n return e === \"computed\";\n }\n return ue(i) && \"invalidate\" in i && typeof i.invalidate == \"function\";\n}\nfunction De(i) {\n return i !== null && typeof i == \"object\" && \"dispose\" in i && \"run\" in i && typeof i.dispose == \"function\" && typeof i.run == \"function\";\n}\nfunction J(i) {\n return i != null && typeof i.then == \"function\";\n}\nfunction _e(i) {\n return typeof i == \"object\" && i !== null;\n}\nfunction ae(i) {\n return (typeof i == \"object\" || typeof i == \"function\") && i !== null && typeof i.addDependency == \"function\";\n}\nfunction le(i) {\n return typeof i == \"function\" && typeof i.addDependency != \"function\";\n}\nfunction fe(i) {\n return _e(i) && typeof i.execute == \"function\";\n}\nfunction Q(i, e, t, s) {\n if (e) {\n if (ae(e)) {\n e.addDependency(i);\n return;\n }\n if (le(e)) {\n t.add(e);\n return;\n }\n fe(e) && s.add(e);\n }\n}\nfunction de(i, e, t, s) {\n if (e !== u && t !== l)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o && (o._tempUnsub = t[r]);\n }\n const n = D.acquire();\n n.length = i.length;\n for (let r = 0; r < i.length; r++) {\n const o = i[r];\n o && (o._tempUnsub ? (n[r] = o._tempUnsub, o._tempUnsub = void 0) : (d.checkCircular(o, s), n[r] = o.subscribe(s)));\n }\n if (e !== u)\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n o?._tempUnsub && (o._tempUnsub(), o._tempUnsub = void 0);\n }\n return t !== l && D.release(t), n;\n}\nclass Ee extends $ {\n constructor(e, t) {\n super(), this._isNotificationScheduled = !1, this._value = e, this._functionSubscribersStore = new P(), this._objectSubscribersStore = new P(), this._sync = t, this._notifyTask = this._flushNotifications.bind(this), d.attachDebugInfo(this, \"atom\", this.id);\n }\n /** Gets the manager for function-based subscribers. */\n get _functionSubscribers() {\n return this._functionSubscribersStore;\n }\n /** Gets the manager for object-based subscribers. */\n get _objectSubscribers() {\n return this._objectSubscribersStore;\n }\n /**\n * Returns the current value and registers the atom as a dependency in the current tracking context.\n */\n get value() {\n const e = y.getCurrent();\n return e && this._track(e), this._value;\n }\n /**\n * Sets a new value and schedules notifications if the value has changed.\n * Uses `Object.is` for comparison.\n */\n set value(e) {\n if (Object.is(this._value, e)) return;\n const t = this._value;\n this.version = this.version + 1 & I, this._value = e, !(!this._functionSubscribersStore.hasSubscribers && !this._objectSubscribersStore.hasSubscribers) && this._scheduleNotification(t);\n }\n _track(e) {\n Q(this, e, this._functionSubscribersStore, this._objectSubscribersStore);\n }\n _scheduleNotification(e) {\n this._isNotificationScheduled || (this._pendingOldValue = e, this._isNotificationScheduled = !0), this._sync && !T.isBatching ? this._flushNotifications() : T.schedule(this._notifyTask);\n }\n _flushNotifications() {\n if (!this._isNotificationScheduled) return;\n const e = this._pendingOldValue, t = this._value;\n this._pendingOldValue = void 0, this._isNotificationScheduled = !1, this._notifySubscribers(t, e);\n }\n /**\n * Returns the current value without registering as a dependency in the tracking context.\n */\n peek() {\n return this._value;\n }\n /**\n * Disposes of the atom, clearing all subscribers and resetting the value.\n */\n dispose() {\n this._functionSubscribersStore.clear(), this._objectSubscribersStore.clear(), this._value = void 0;\n }\n}\nfunction Ie(i, e = {}) {\n return new Ee(i, e.sync ?? !1);\n}\nfunction R(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 p)\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}\nconst W = c.RESOLVED | c.PENDING | c.REJECTED, M = Array(W + 1).fill(v.IDLE);\nM[c.RESOLVED] = v.RESOLVED;\nM[c.PENDING] = v.PENDING;\nM[c.REJECTED] = v.REJECTED;\nclass K extends $ {\n constructor(e, t = {}) {\n if (typeof e != \"function\")\n throw new N(h.COMPUTED_MUST_BE_FUNCTION);\n if (super(), this._cachedErrors = null, this._errorCacheEpoch = -1, this._value = void 0, this.flags = c.DIRTY | c.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._hasDefaultValue = this._defaultValue !== q, this._onError = t.onError ?? null, this.MAX_PROMISE_ID = Number.MAX_SAFE_INTEGER - 1, this._functionSubscribersStore = new P(), this._objectSubscribersStore = new P(), this._dependencies = u, this._dependencyVersions = _, this._unsubscribes = l, this._notifyJob = () => {\n this._functionSubscribersStore.forEachSafe(\n (s) => s(),\n (s) => console.error(s)\n ), this._objectSubscribersStore.forEachSafe(\n (s) => s.execute(),\n (s) => console.error(s)\n );\n }, this._trackable = Object.assign(() => this._markDirty(), {\n addDependency: (s) => {\n }\n }), d.attachDebugInfo(this, \"computed\", this.id), d.enabled) {\n const s = this;\n s.subscriberCount = () => this._functionSubscribersStore.size + this._objectSubscribersStore.size, s.isDirty = () => this._isDirty(), s.dependencies = this._dependencies, s.stateFlags = this._getFlagsAsString();\n }\n if (t.lazy === !1)\n try {\n this._recompute();\n } catch {\n }\n }\n get _functionSubscribers() {\n return this._functionSubscribersStore;\n }\n get _objectSubscribers() {\n return this._objectSubscribersStore;\n }\n get value() {\n return this._registerTracking(), this._computeValue();\n }\n peek() {\n return this._value;\n }\n get state() {\n return this._registerTracking(), this._getAsyncState();\n }\n get hasError() {\n if (this._registerTracking(), this._isRejected())\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t && \"hasError\" in t && t.hasError)\n return !0;\n }\n return !1;\n }\n get isValid() {\n return !this.hasError;\n }\n get errors() {\n if (this._registerTracking(), !this.hasError)\n return ee;\n const e = re();\n if (this._errorCacheEpoch === e && this._cachedErrors !== null)\n return this._cachedErrors;\n const t = /* @__PURE__ */ new Set();\n this._error && t.add(this._error);\n for (let s = 0; s < this._dependencies.length; s++) {\n const n = this._dependencies[s];\n if (n && \"errors\" in n) {\n const r = n.errors;\n for (let o = 0; o < r.length; o++) {\n const m = r[o];\n m && t.add(m);\n }\n }\n }\n return this._cachedErrors = Object.freeze([...t]), this._errorCacheEpoch = e, this._cachedErrors;\n }\n get lastError() {\n return this._registerTracking(), this._error;\n }\n get isPending() {\n return this._registerTracking(), this._isPending();\n }\n get isResolved() {\n return this._registerTracking(), this._isResolved();\n }\n invalidate() {\n this._markDirty(), this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _), this._errorCacheEpoch = -1, this._cachedErrors = null;\n }\n dispose() {\n if (this._unsubscribes !== l) {\n for (let e = 0; e < this._unsubscribes.length; e++) {\n const t = this._unsubscribes[e];\n t && t();\n }\n D.release(this._unsubscribes), this._unsubscribes = l;\n }\n this._dependencies !== u && (S.release(this._dependencies), this._dependencies = u), this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _), this._functionSubscribersStore.clear(), this._objectSubscribersStore.clear(), this.flags = c.DIRTY | c.IDLE, this._error = null, this._value = void 0, this._promiseId = (this._promiseId + 1) % this.MAX_PROMISE_ID, this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n // State flag operations\n _isDirty() {\n return (this.flags & c.DIRTY) !== 0;\n }\n _setDirty() {\n this.flags |= c.DIRTY;\n }\n _clearDirty() {\n this.flags &= -2;\n }\n _isIdle() {\n return (this.flags & c.IDLE) !== 0;\n }\n _setIdle() {\n this.flags |= c.IDLE, this.flags &= -29;\n }\n _isPending() {\n return (this.flags & c.PENDING) !== 0;\n }\n _setPending() {\n this.flags |= c.PENDING, this.flags &= -27;\n }\n _isResolved() {\n return (this.flags & c.RESOLVED) !== 0;\n }\n _setResolved() {\n this.flags |= c.RESOLVED, this.flags &= -87;\n }\n _isRejected() {\n return (this.flags & c.REJECTED) !== 0;\n }\n _setRejected() {\n this.flags |= c.REJECTED | c.HAS_ERROR, this.flags &= -15;\n }\n _isRecomputing() {\n return (this.flags & c.RECOMPUTING) !== 0;\n }\n _setRecomputing(e) {\n const t = c.RECOMPUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n _getAsyncState() {\n return M[this.flags & W];\n }\n _getFlagsAsString() {\n const e = [];\n return this._isDirty() && e.push(\"DIRTY\"), this._isIdle() && e.push(\"IDLE\"), this._isPending() && e.push(\"PENDING\"), this._isResolved() && e.push(\"RESOLVED\"), this._isRejected() && e.push(\"REJECTED\"), this._isRecomputing() && e.push(\"RECOMPUTING\"), e.join(\" | \");\n }\n _computeValue() {\n return this._isRecomputing() ? this._value : ((this._isDirty() || this._isIdle()) && this._recompute(), this._isPending() ? this._handlePending() : this._isRejected() ? this._handleRejected() : this._value);\n }\n _recompute() {\n if (this._isRecomputing()) return;\n this._setRecomputing(!0);\n const e = this._prepareComputationContext();\n let t = !1;\n try {\n const s = y.run(this._trackable, this._fn);\n this._commitDependencies(e), t = !0, J(s) ? this._handleAsyncComputation(s) : this._handleSyncResult(s);\n } catch (s) {\n if (!t)\n try {\n this._commitDependencies(e), t = !0;\n } catch (n) {\n this._handleComputationError(n);\n }\n this._handleComputationError(s);\n } finally {\n this._cleanupContext(e, t), this._setRecomputing(!1);\n }\n }\n _prepareComputationContext() {\n const e = this._dependencies, t = this._dependencyVersions, s = S.acquire(), n = f.acquire(), r = H(), o = { depCount: 0 }, m = (E) => {\n E._lastSeenEpoch !== r && (E._lastSeenEpoch = r, o.depCount < s.length ? (s[o.depCount] = E, n[o.depCount] = E.version) : (s.push(E), n.push(E.version)), o.depCount++);\n }, C = this._trackable.addDependency;\n return this._trackable.addDependency = m, { prevDeps: e, prevVersions: t, nextDeps: s, nextVersions: n, originalAdd: C, state: o };\n }\n _commitDependencies(e) {\n const { nextDeps: t, nextVersions: s, state: n, prevDeps: r } = e;\n t.length = n.depCount, s.length = n.depCount, this._unsubscribes = de(t, r, this._unsubscribes, this), this._dependencies = t, this._dependencyVersions = s;\n }\n _cleanupContext(e, t) {\n this._trackable.addDependency = e.originalAdd, t ? (e.prevDeps !== u && S.release(e.prevDeps), e.prevVersions !== _ && f.release(e.prevVersions)) : (S.release(e.nextDeps), f.release(e.nextVersions));\n }\n _handleSyncResult(e) {\n const t = !this._isResolved() || !this._equal(this._value, e);\n this.version = this.version + Number(t) & I, this._value = e, this._clearDirty(), this._setResolved(), this._error = null, this._setRecomputing(!1), this._cachedErrors = null, this._errorCacheEpoch = -1;\n }\n _handleAsyncComputation(e) {\n this._setPending(), this._clearDirty(), this._notifyJob(), this._promiseId = this._promiseId >= this.MAX_PROMISE_ID ? 1 : this._promiseId + 1;\n const t = this._promiseId;\n e.then((s) => {\n t === this._promiseId && this._handleAsyncResolution(s);\n }).catch((s) => {\n t === this._promiseId && this._handleAsyncRejection(s);\n });\n }\n _handleAsyncResolution(e) {\n const t = !this._isResolved() || !this._equal(this._value, e);\n this.version = this.version + Number(t) & I, this._value = e, this._clearDirty(), this._setResolved(), this._error = null, this._setRecomputing(!1), this._cachedErrors = null, this._errorCacheEpoch = -1, this._notifyJob();\n }\n _handleAsyncRejection(e) {\n const t = R(e, N, h.COMPUTED_ASYNC_COMPUTATION_FAILED), s = !this._isRejected();\n if (this.version = this.version + Number(s) & I, this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (n) {\n console.error(h.CALLBACK_ERROR_IN_ERROR_HANDLER, n);\n }\n this._notifyJob();\n }\n _handleComputationError(e) {\n const t = R(e, N, h.COMPUTED_COMPUTATION_FAILED);\n if (this._error = t, this._setRejected(), this._clearDirty(), this._setRecomputing(!1), this._onError)\n try {\n this._onError(t);\n } catch (s) {\n console.error(h.CALLBACK_ERROR_IN_ERROR_HANDLER, s);\n }\n throw t;\n }\n _handlePending() {\n if (this._hasDefaultValue)\n return this._defaultValue;\n throw new N(h.COMPUTED_ASYNC_PENDING_NO_DEFAULT);\n }\n _handleRejected() {\n if (this._error?.recoverable && this._hasDefaultValue)\n return this._defaultValue;\n throw this._error;\n }\n /** Subscriber interface - marks dirty on dependency change */\n execute() {\n this._markDirty();\n }\n _markDirty() {\n this._isRecomputing() || this._isDirty() || (this._setDirty(), this._notifyJob());\n }\n _registerTracking() {\n Q(\n this,\n y.getCurrent(),\n this._functionSubscribersStore,\n this._objectSubscribersStore\n );\n }\n}\nObject.freeze(K.prototype);\nfunction ye(i, e = {}) {\n return new K(i, e);\n}\nclass pe extends Y {\n /**\n * Creates a new EffectImpl instance.\n * @param fn - The effect function to run.\n * @param options - Configuration options for the effect.\n */\n constructor(e, t = {}) {\n super(), this.run = () => {\n if (this.isDisposed)\n throw new b(h.EFFECT_MUST_BE_FUNCTION);\n this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _), this.execute();\n }, this.dispose = () => {\n if (!this.isDisposed) {\n if (this._setDisposed(), this._safeCleanup(), this._unsubscribes !== l) {\n for (let s = 0; s < this._unsubscribes.length; s++) {\n const n = this._unsubscribes[s];\n n && n();\n }\n D.release(this._unsubscribes), this._unsubscribes = l;\n }\n this._dependencies !== u && (S.release(this._dependencies), this._dependencies = u), this._dependencyVersions !== _ && (f.release(this._dependencyVersions), this._dependencyVersions = _);\n }\n }, this.addDependency = (s) => {\n if (this.isExecuting && this._nextDeps && this._nextUnsubs && this._nextVersions) {\n const n = this._currentEpoch;\n if (s._lastSeenEpoch === n) return;\n s._lastSeenEpoch = n, this._nextDeps.push(s), this._nextVersions.push(s.version), s._tempUnsub ? (this._nextUnsubs.push(s._tempUnsub), s._tempUnsub = void 0) : this._subscribeTo(s);\n }\n }, this.execute = () => {\n if (this.isDisposed || this.isExecuting || !this._shouldExecute()) return;\n this._checkInfiniteLoop(), this._setExecuting(!0), this._safeCleanup();\n const s = this._prepareEffectContext();\n let n = !1;\n try {\n const r = y.run(this, this._fn);\n this._commitEffect(s), n = !0, this._checkLoopWarnings(), J(r) ? r.then((o) => {\n !this.isDisposed && typeof o == \"function\" && (this._cleanup = o);\n }).catch((o) => {\n console.error(R(o, b, h.EFFECT_EXECUTION_FAILED));\n }) : this._cleanup = typeof r == \"function\" ? r : null;\n } catch (r) {\n n = !0, console.error(R(r, b, h.EFFECT_EXECUTION_FAILED)), this._cleanup = null;\n } finally {\n this._cleanupEffect(s, n), this._setExecuting(!1);\n }\n }, this._currentEpoch = -1, this._lastFlushEpoch = -1, this._executionsInEpoch = 0, this._fn = e, this._sync = t.sync ?? !1, this._maxExecutions = t.maxExecutionsPerSecond ?? g.MAX_EXECUTIONS_PER_SECOND, this._maxExecutionsPerFlush = t.maxExecutionsPerFlush ?? g.MAX_EXECUTIONS_PER_EFFECT, this._trackModifications = t.trackModifications ?? !1, this._cleanup = null, this._dependencies = u, this._dependencyVersions = _, this._unsubscribes = l, this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, this._history = a ? [] : null, this._executionCount = 0, d.attachDebugInfo(this, \"effect\", this.id);\n }\n /**\n * Prepares the execution context by acquiring pools and setting up epoch.\n * @returns The prepared EffectContext.\n */\n _prepareEffectContext() {\n const e = this._dependencies, t = this._dependencyVersions, s = this._unsubscribes, n = S.acquire(), r = f.acquire(), o = D.acquire(), m = H();\n if (e !== u && s !== l)\n for (let C = 0; C < e.length; C++) {\n const E = e[C];\n E && (E._tempUnsub = s[C]);\n }\n return this._nextDeps = n, this._nextVersions = r, this._nextUnsubs = o, this._currentEpoch = m, { prevDeps: e, prevVersions: t, prevUnsubs: s, nextDeps: n, nextVersions: r, nextUnsubs: o };\n }\n /**\n * Commits the tracked dependencies as the current active dependencies.\n * @param ctx - The current effect context.\n */\n _commitEffect(e) {\n const t = e.nextDeps.length;\n e.nextDeps.length = t, e.nextVersions.length = t, this._dependencies = e.nextDeps, this._dependencyVersions = e.nextVersions, this._unsubscribes = e.nextUnsubs;\n }\n /**\n * Cleans up the effect execution context, releasing resources back to pools.\n * @param ctx - The effect context to clean up.\n * @param committed - Whether the changes were committed to the effect.\n */\n _cleanupEffect(e, t) {\n if (this._nextDeps = null, this._nextVersions = null, this._nextUnsubs = null, t) {\n if (e.prevDeps !== u) {\n for (let s = 0; s < e.prevDeps.length; s++) {\n const n = e.prevDeps[s];\n n?._tempUnsub && (n._tempUnsub(), n._tempUnsub = void 0);\n }\n S.release(e.prevDeps);\n }\n e.prevUnsubs !== l && D.release(e.prevUnsubs), e.prevVersions !== _ && f.release(e.prevVersions);\n } else {\n S.release(e.nextDeps), f.release(e.nextVersions);\n for (let s = 0; s < e.nextUnsubs.length; s++)\n e.nextUnsubs[s]?.();\n if (D.release(e.nextUnsubs), e.prevDeps !== u)\n for (let s = 0; s < e.prevDeps.length; s++) {\n const n = e.prevDeps[s];\n n && (n._tempUnsub = void 0);\n }\n }\n }\n /**\n * Subscribes to a dependency's changes.\n * @param dep - The dependency to subscribe to.\n */\n _subscribeTo(e) {\n try {\n const t = e.subscribe(() => {\n this._trackModifications && this.isExecuting && (e._modifiedAtEpoch = this._currentEpoch), this._sync ? this.execute() : T.schedule(this.execute);\n });\n this._nextUnsubs && this._nextUnsubs.push(t);\n } catch (t) {\n console.error(R(t, b, h.EFFECT_EXECUTION_FAILED)), this._nextUnsubs && this._nextUnsubs.push(() => {\n });\n }\n }\n /**\n * Whether the effect has been disposed.\n */\n get isDisposed() {\n return (this.flags & A.DISPOSED) !== 0;\n }\n /**\n * Total number of times this effect has executed.\n */\n get executionCount() {\n return this._executionCount;\n }\n /**\n * Whether the effect is currently executing.\n */\n get isExecuting() {\n return (this.flags & A.EXECUTING) !== 0;\n }\n _setDisposed() {\n this.flags |= A.DISPOSED;\n }\n _setExecuting(e) {\n const t = A.EXECUTING;\n this.flags = this.flags & ~t | -Number(e) & t;\n }\n /**\n * Executes the cleanup function if it exists.\n */\n _safeCleanup() {\n if (this._cleanup) {\n try {\n this._cleanup();\n } catch (e) {\n console.error(R(e, b, h.EFFECT_CLEANUP_FAILED));\n }\n this._cleanup = null;\n }\n }\n /**\n * Checks for infinite loops by tracking execution counts within a flush and time period.\n * @throws {EffectError} If an infinite loop is detected.\n */\n _checkInfiniteLoop() {\n if (this._lastFlushEpoch !== x && (this._lastFlushEpoch = x, this._executionsInEpoch = 0), this._executionsInEpoch++, this._executionsInEpoch > this._maxExecutionsPerFlush && this._throwInfiniteLoopError(\"per-effect\"), oe() > g.MAX_EXECUTIONS_PER_FLUSH && this._throwInfiniteLoopError(\"global\"), this._executionCount++, this._history) {\n const e = Date.now();\n this._history.push(e), this._history.length > g.MAX_EXECUTIONS_PER_SECOND + 10 && this._history.shift(), this._checkTimestampLoop(e);\n }\n }\n _checkTimestampLoop(e) {\n const t = this._history;\n if (!t || this._maxExecutions <= 0) return;\n const s = e - Z.ONE_SECOND_MS;\n let n = 0;\n for (let r = t.length - 1; r >= 0 && !(t[r] < s); r--)\n n++;\n if (n > this._maxExecutions) {\n const r = new b(\n `Effect executed ${n} times within 1 second. Infinite loop suspected`\n );\n if (this.dispose(), console.error(r), a)\n throw r;\n }\n }\n _throwInfiniteLoopError(e) {\n const t = new b(\n `Infinite loop detected (${e}): effect executed ${this._executionsInEpoch} times in current flush. Total executions in flush: ${w}`\n );\n throw this.dispose(), console.error(t), t;\n }\n /**\n * Determines if the effect should execute based on dependency versions.\n * @returns true if any dependency has changed or if it's the first run.\n */\n _shouldExecute() {\n if (this._dependencies === u || this._dependencyVersions === _)\n return !0;\n for (let e = 0; e < this._dependencies.length; e++) {\n const t = this._dependencies[e];\n if (t) {\n if (\"value\" in t)\n try {\n he(() => t.value);\n } catch {\n return !0;\n }\n if (t.version !== this._dependencyVersions[e])\n return !0;\n }\n }\n return !1;\n }\n /**\n * Checks for potential infinite loops where an effect modifies its own dependencies.\n * Only active if trackModifications is enabled and debug is on.\n */\n _checkLoopWarnings() {\n if (this._trackModifications && d.enabled) {\n const e = this._dependencies;\n for (let t = 0; t < e.length; t++) {\n const s = e[t];\n s && s._modifiedAtEpoch === this._currentEpoch && d.warn(\n !0,\n `Effect is reading a dependency (${d.getDebugName(s) || \"unknown\"}) that it just modified. Infinite loop may occur`\n );\n }\n }\n }\n}\nfunction me(i, e = {}) {\n if (typeof i != \"function\")\n throw new b(h.EFFECT_MUST_BE_FUNCTION);\n const t = new pe(i, e);\n return t.execute(), t;\n}\nexport {\n v as AsyncState,\n p as AtomError,\n N as ComputedError,\n k as DEBUG_CONFIG,\n d as DEBUG_RUNTIME,\n b as EffectError,\n be as POOL_CONFIG,\n g as SCHEDULER_CONFIG,\n O as SchedulerError,\n Ie as atom,\n Se as batch,\n ye as computed,\n me as effect,\n ue as isAtom,\n ge as isComputed,\n De as isEffect,\n T as scheduler,\n he 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 // Handle JQuery objects by extracting the first DOM element\n const domEl = (el as JQuery).jquery ? (el as JQuery)[0] : (el as Element);\n if (!domEl) return 'unknown';\n\n if (domEl.id) return `#${domEl.id}`;\n if (domEl.className) {\n const classes = String(domEl.className).split(/\\s+/).filter(Boolean).join('.');\n return classes ? `${domEl.tagName.toLowerCase()}.${classes}` : domEl.tagName.toLowerCase();\n }\n return domEl.tagName.toLowerCase();\n}\n","/**\n * Debug Mode\n *\n * When $.atom.debug = true is enabled:\n * 1. Logs state changes to the console.\n * 2. Visually highlights DOM updates (red border flash).\n *\n * Debug mode can be enabled in two ways:\n * 1. Environment variable (build-time): NODE_ENV=development\n * 2. Runtime: $.atom.debug = true or window.__ATOM_DEBUG__ = true\n */\n\nimport { getSelector } from './utils';\n\n/**\n * Determines the initial debug state based on environment.\n * Priority: window.__ATOM_DEBUG__ > NODE_ENV === 'development'\n */\nfunction getInitialDebugState(): boolean {\n // Browser: check global flag\n if (typeof window !== 'undefined') {\n const globalFlag = (window as Window & { __ATOM_DEBUG__?: boolean }).__ATOM_DEBUG__;\n if (typeof globalFlag === 'boolean') {\n return globalFlag;\n }\n }\n\n // Vite support\n if (import.meta.env?.DEV && import.meta.env.MODE !== 'test') {\n return true;\n }\n\n // Node/Bundler check\n try {\n // @ts-expect-error\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') {\n return true;\n }\n } catch (_e) {\n // ignore\n }\n\n return false;\n}\n\nlet debugEnabled = getInitialDebugState();\n\nexport const debug = {\n get enabled() {\n return debugEnabled;\n },\n set enabled(value: boolean) {\n debugEnabled = value;\n },\n\n log<T>(type: string, ...args: T[]) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] ${type}:`, ...args);\n }\n },\n\n atomChanged<T>(name: string | undefined, oldVal: T, newVal: T) {\n if (debugEnabled) {\n const label = name || 'anonymous';\n console.log(`[atom-effect-jquery] Atom \"${label}\" changed:`, oldVal, '→', newVal);\n }\n },\n\n /**\n * Logs DOM updates and triggers visual highlight.\n */\n domUpdated<T>($el: JQuery, type: string, value: T) {\n if (!debugEnabled) return;\n\n // Console logging\n const selector = getSelector($el);\n console.log(`[atom-effect-jquery] DOM updated: ${selector}.${type} =`, value);\n\n // Visual highlight (red border flash)\n highlightElement($el);\n },\n\n cleanup(selector: string) {\n if (debugEnabled) {\n console.log(`[atom-effect-jquery] Cleanup: ${selector}`);\n }\n },\n\n warn<T>(...args: T[]) {\n if (debugEnabled) {\n console.warn('[atom-effect-jquery]', ...args);\n }\n },\n};\n\n/**\n * Visual highlight - flashes a red border.\n * Inspired by React DevTools \"Highlight updates\".\n *\n * Uses data attributes to manage state and prevent style pollution\n * when updates happen rapidly.\n */\nfunction highlightElement($el: JQuery): void {\n const el = $el[0];\n if (!el || !document.contains(el)) return;\n\n const TIMER_KEY = 'atom_debug_timer';\n const CLEANUP_TIMER_KEY = 'atom_debug_cleanup_timer';\n const ORG_STYLE_KEY = 'atom_debug_org_style';\n\n // 1. Clear existing timers for both restoration and cleanup\n clearTimeout($el.data(TIMER_KEY));\n clearTimeout($el.data(CLEANUP_TIMER_KEY));\n\n // 2. Save original style only if not already actively highlighting\n // (meaning this is the start of a highlight sequence)\n if (!$el.data(ORG_STYLE_KEY)) {\n $el.data(ORG_STYLE_KEY, {\n outline: $el.css('outline'),\n outlineOffset: $el.css('outline-offset'),\n transition: $el.css('transition'),\n });\n }\n\n // 3. Apply highlight style\n $el.css({\n outline: '2px solid rgba(255, 68, 68, 0.8)',\n 'outline-offset': '1px',\n transition: 'none', // Remove transition for instant feedback on update\n });\n\n // 4. Set timer to restore\n const timerId = setTimeout(() => {\n // Restore original styles\n const originalStyles = $el.data(ORG_STYLE_KEY);\n\n // We add a transition for the fade out\n $el.css('transition', 'outline 0.5s ease-out');\n\n // Defer the actual style restoration to allow transition to take effect\n requestAnimationFrame(() => {\n $el.css({\n outline: originalStyles?.outline || '',\n 'outline-offset': originalStyles?.outlineOffset || '',\n });\n\n // 5. Cleanup data after fade out\n // Wait for transition to finish (500ms)\n const cleanupTimerId = setTimeout(() => {\n $el.css('transition', originalStyles?.transition || '');\n $el.removeData(TIMER_KEY);\n $el.removeData(CLEANUP_TIMER_KEY);\n $el.removeData(ORG_STYLE_KEY);\n }, 500);\n $el.data(CLEANUP_TIMER_KEY, cleanupTimerId);\n });\n }, 100); // Flash duration\n\n $el.data(TIMER_KEY, timerId);\n}\n","import {\n batch,\n computed,\n atom as createAtom,\n effect,\n isAtom,\n isComputed,\n untracked,\n} from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport type { AtomOptions, WritableAtom } from './types';\n\n/**\n * Stores Atom metadata (for debugging).\n */\nconst atomMetadata = new WeakMap<WritableAtom<unknown>, { name?: string }>();\n\n/**\n * Creates an atom with optional metadata.\n */\nfunction atom<T>(initialValue: T, options: AtomOptions = {}): WritableAtom<T> {\n const instance = createAtom(initialValue, options);\n\n // Store metadata\n if (options.name) {\n atomMetadata.set(instance, { name: options.name });\n }\n\n // Debug mode: Value change detection\n // Note: Wrapper logic removed due to interference with atom-effect internals (computed reactivity)\n // Revisit if safer interception method is found.\n /*\n if (debug.enabled || options.name) {\n // ... removed ...\n }\n */\n\n return instance;\n}\n\n// Add debug property\nObject.defineProperty(atom, 'debug', {\n get() {\n return debug.enabled;\n },\n set(value: boolean) {\n debug.enabled = value;\n },\n});\n\n/**\n * Waits for the next microtask (tick).\n * Useful for waiting for batched updates to complete in tests or async logic.\n * logic: Uses setTimeout to ensure it runs after all microtasks (where effects are processed).\n */\nfunction nextTick(): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, 0));\n}\n\n/**\n * Extend jQuery static methods.\n */\n$.extend({\n atom,\n computed,\n effect,\n batch,\n untracked,\n isAtom,\n isComputed,\n isReactive: (v: unknown) => isAtom(v) || isComputed(v),\n nextTick,\n});\n","import type {\n AtomOptions as BaseAtomOptions,\n ComputedAtom,\n ComputedOptions,\n EffectObject,\n ReadonlyAtom,\n WritableAtom,\n} from '@but212/atom-effect';\n\n/**\n * Extended options for Atom creation.\n */\nexport interface AtomOptions extends BaseAtomOptions {\n /** Name for debugging purposes */\n name?: string;\n}\n\n/**\n * Represents a value that can be either dynamic (Atom/Computed) or static.\n */\nexport type ReactiveValue<T> = T | ReadonlyAtom<T> | ComputedAtom<T>;\n\n/**\n * CSS value: either a direct reactive value or a tuple of [source, unit].\n * Named type provides clear bone structure for CSS binding configurations.\n */\nexport type CssValue =\n | ReactiveValue<string | number>\n | [source: ReactiveValue<number>, unit: string];\n\n/**\n * CSS bindings map property names to CSS values.\n */\nexport type CssBindings = Record<string, CssValue>;\n\n/**\n * Configuration options for `atomBind`.\n */\nexport interface BindingOptions<T> {\n text?: ReactiveValue<T>;\n html?: ReactiveValue<string>;\n class?: Record<string, ReactiveValue<boolean>>;\n css?: CssBindings;\n attr?: Record<string, ReactiveValue<string | boolean | null>>;\n prop?: Record<string, ReactiveValue<T>>;\n show?: ReactiveValue<boolean>;\n hide?: ReactiveValue<boolean>;\n val?: WritableAtom<T> | [atom: WritableAtom<T>, options: ValOptions<T>];\n checked?: WritableAtom<boolean>;\n on?: Record<string, (e: JQuery.Event) => void>;\n}\n\n/**\n * Configuration options for `atomList`.\n */\nexport interface ListOptions<T> {\n key: keyof T | ((item: T, index: number) => string | number);\n render: (item: T, index: number) => string | Element;\n bind?: ($el: JQuery, item: T, index: number) => void;\n update?: ($el: JQuery, item: T, index: number) => void;\n onAdd?: ($el: JQuery) => void;\n onRemove?: ($el: JQuery) => Promise<void> | void;\n empty?: string;\n}\n\n/**\n * Configuration options for `atomVal`.\n */\nexport interface ValOptions<T> {\n debounce?: number;\n event?: string;\n parse?: (v: string) => T;\n format?: (v: T) => string;\n}\n\n/**\n * State context for two-way input bindings.\n * Consolidates scattered state flags into a single, traceable object.\n * This is the \"bone structure\" for input binding lifecycle management.\n */\nexport interface InputBindingState {\n /** Timeout ID for debounced updates */\n timeoutId: number | null;\n /** Current binding phase - makes state transitions explicit and traceable */\n phase: 'idle' | 'composing' | 'syncing-to-atom' | 'syncing-to-dom';\n /** Whether the input currently has focus */\n hasFocus: boolean;\n}\n\n/**\n * Creates a fresh InputBindingState with default values.\n */\nexport function createInputBindingState(): InputBindingState {\n return { timeoutId: null, phase: 'idle', hasFocus: false };\n}\n\n/**\n * Functional Component type.\n */\nexport type ComponentFn<P = {}> = ($el: JQuery, props: P) => undefined | (() => void);\n\ndeclare global {\n interface JQueryStatic {\n atom: {\n <T>(initialValue: T, options?: AtomOptions): WritableAtom<T>;\n debug: boolean;\n };\n computed<T>(fn: () => T, options?: ComputedOptions<T>): ComputedAtom<T>;\n computed<T>(\n fn: () => Promise<T>,\n options: ComputedOptions<T> & { defaultValue: T }\n ): ComputedAtom<T>;\n effect(fn: () => undefined | (() => void)): EffectObject;\n batch(fn: () => void): void;\n untracked<T>(fn: () => T): T;\n isAtom(v: unknown): boolean;\n isComputed(v: unknown): boolean;\n isReactive(v: unknown): boolean;\n nextTick(): Promise<void>;\n }\n\n interface JQuery {\n // Chainable methods\n atomText<T>(source: ReactiveValue<T>, formatter?: (v: T) => string): this;\n atomHtml(source: ReactiveValue<string>): this;\n atomClass(className: string, condition: ReactiveValue<boolean>): this;\n atomCss(prop: string, source: ReactiveValue<string | number>, unit?: string): this;\n atomAttr(name: string, source: ReactiveValue<string | boolean | null>): this;\n atomProp<T extends string | number | boolean | null | undefined>(\n name: string,\n source: ReactiveValue<T>\n ): this;\n atomShow(condition: ReactiveValue<boolean>): this;\n atomHide(condition: ReactiveValue<boolean>): this;\n atomVal<T>(atom: WritableAtom<T>, options?: ValOptions<T>): this;\n atomChecked(atom: WritableAtom<boolean>): this;\n atomOn(event: string, handler: (e: JQuery.Event) => void): this;\n\n // Integrated binding\n atomBind<T extends string | number | boolean | null | undefined>(\n options: BindingOptions<T>\n ): this;\n\n // List rendering\n atomList<T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): this;\n\n // Component mounting\n atomMount<P>(component: ComponentFn<P>, props?: P): this;\n atomUnmount(): this;\n\n // Cleanup\n atomUnbind(): this;\n }\n}\n\nexport type { WritableAtom, ReadonlyAtom, ComputedAtom, EffectObject, ComputedOptions };\n","import { batch } from '@but212/atom-effect';\nimport { debug } from './debug';\nimport type { InputBindingState, ValOptions, WritableAtom } from './types';\nimport { createInputBindingState } from './types';\n\n/**\n * Applies two-way data binding configuration to an input element.\n * Shared logic used by both implicit (atomBind) and explicit (atomVal) bindings.\n *\n * @param $el - The jQuery element to bind.\n * @param atom - The target atom for two-way binding.\n * @param options - Binding options (parse, format, debounce, events).\n * @returns Object containing the effect function (for Atom -> DOM) and cleanup function.\n */\nexport function applyInputBinding<T>(\n $el: JQuery,\n atom: WritableAtom<T>,\n options: ValOptions<T> = {}\n): { effect: () => void; cleanup: () => void } {\n const {\n debounce: debounceMs,\n event = 'input',\n parse = (v: string) => v as unknown as T,\n format = (v: T) => String(v ?? ''),\n } = options;\n\n const state: InputBindingState = createInputBindingState();\n\n // IME composition support (CJK input)\n const onCompositionStart = () => {\n state.phase = 'composing';\n };\n\n const onCompositionEnd = () => {\n state.phase = 'idle';\n syncAtomFromDom();\n };\n\n $el.on('compositionstart', onCompositionStart);\n $el.on('compositionend', onCompositionEnd);\n\n // Focus tracking for smart formatting\n const onFocus = () => {\n state.hasFocus = true;\n };\n\n const onBlur = () => {\n state.hasFocus = false;\n // Force formatting on blur to ensure clean display\n const formatted = format(atom.value);\n if ($el.val() !== formatted) {\n $el.val(formatted);\n }\n };\n\n $el.on('focus', onFocus);\n $el.on('blur', onBlur);\n\n // Core sync: DOM → Atom\n const syncAtomFromDom = () => {\n if (state.phase !== 'idle') return;\n\n state.phase = 'syncing-to-atom';\n batch(() => {\n atom.value = parse($el.val() as string);\n });\n state.phase = 'idle';\n };\n\n // Input handler with optional debounce\n const onInput = () => {\n if (state.phase !== 'idle') return;\n\n if (debounceMs) {\n if (state.timeoutId) clearTimeout(state.timeoutId);\n state.timeoutId = window.setTimeout(syncAtomFromDom, debounceMs);\n } else {\n syncAtomFromDom();\n }\n };\n\n $el.on(event, onInput);\n $el.on('change', onInput);\n\n // Cleanup handler\n const cleanup = () => {\n $el.off(event, onInput);\n $el.off('change', onInput);\n $el.off('compositionstart', onCompositionStart);\n $el.off('compositionend', onCompositionEnd);\n $el.off('focus', onFocus);\n $el.off('blur', onBlur);\n if (state.timeoutId) clearTimeout(state.timeoutId);\n };\n\n // Core sync: Atom → DOM (Effect body)\n const effect = () => {\n const formatted = format(atom.value);\n const currentVal = $el.val() as string;\n\n // Update only if value differs\n if (currentVal !== formatted) {\n // Don't interrupt user input if parsed value matches\n if (state.hasFocus && parse(currentVal) === atom.value) {\n return;\n }\n\n state.phase = 'syncing-to-dom';\n $el.val(formatted);\n debug.domUpdated($el, 'val', formatted);\n state.phase = 'idle';\n }\n };\n\n return { effect, cleanup };\n}\n","import { debug } from './debug';\nimport type { EffectObject } from './types';\nimport { getSelector } from './utils';\n\n/**\n * Binding Registry\n *\n * Solving Circular Reference Issues:\n * - Prevents Atom -> Subscription -> Callback -> DOM Element cycle.\n * - Uses WeakMap to track effects and cleanup functions per DOM element.\n * - Automatically unsubscribes when DOM elements are removed via MutationObserver.\n *\n * Preventing Memory Leaks:\n * - Must call unsubscribe() when DOM is removed.\n * - Recursively cleans up child nodes.\n */\nclass BindingRegistry {\n // DOM Element -> Effect Array (for disposal)\n private effects = new WeakMap<Element, EffectObject[]>();\n\n // DOM Element -> Custom Cleanup Function Array\n private cleanups = new WeakMap<Element, Array<() => void>>();\n\n // Track bound elements (Performance optimization)\n private boundElements = new WeakSet<Element>();\n\n /**\n * Tracks elements that are temporarily detached (e.g. via .detach())\n * so they are NOT cleaned up by the MutationObserver.\n */\n private preservedNodes = new WeakSet<Node>();\n\n keep(node: Node): void {\n this.preservedNodes.add(node);\n }\n\n isKept(node: Node): boolean {\n return this.preservedNodes.has(node);\n }\n\n /**\n * Registers an Effect to be disposed later.\n */\n trackEffect(el: Element, fx: EffectObject): void {\n const list = this.effects.get(el) || [];\n list.push(fx);\n this.effects.set(el, list);\n this.boundElements.add(el);\n }\n\n /**\n * Registers a custom cleanup function (e.g., event listener removal).\n */\n trackCleanup(el: Element, fn: () => void): void {\n const list = this.cleanups.get(el) || [];\n list.push(fn);\n this.cleanups.set(el, list);\n this.boundElements.add(el);\n }\n\n /**\n * Checks if an element has bindings (Fast check).\n */\n hasBind(el: Element): boolean {\n return this.boundElements.has(el);\n }\n\n /**\n * Cleans up a single element.\n * - Disposes all Effects (severs connection with Atom).\n * - Executes all custom cleanups.\n */\n cleanup(el: Element): void {\n if (!this.boundElements.has(el)) return;\n\n debug.cleanup(getSelector(el));\n\n // 1. Dispose Effects - Unsubscribe from Atoms (Break circular reference!)\n const effects = this.effects.get(el);\n if (effects) {\n this.effects.delete(el); // Delete first to prevent re-entry\n effects.forEach((fx) => {\n try {\n fx.dispose();\n } catch (e) {\n debug.warn('Effect dispose error:', e);\n }\n });\n }\n\n // 2. Execute custom cleanups (e.g., remove event listeners)\n const cleanups = this.cleanups.get(el);\n if (cleanups) {\n this.cleanups.delete(el); // Delete first to prevent re-entry\n cleanups.forEach((fn) => {\n try {\n fn();\n } catch (e) {\n debug.warn('Cleanup error:', e);\n }\n });\n }\n\n this.boundElements.delete(el);\n }\n\n /**\n * Cleans up the element and all its descendants (Recursive).\n * - Essential for deep removal (empty(), remove(), etc.).\n */\n cleanupTree(el: Element): void {\n // Descendants first (Depth-First)\n const children = el.querySelectorAll('*');\n children.forEach((child) => {\n if (this.boundElements.has(child)) {\n this.cleanup(child);\n }\n });\n\n // Then the element itself\n this.cleanup(el);\n }\n}\n\nexport const registry = new BindingRegistry();\n\n/**\n * MutationObserver for Auto-Cleanup\n *\n * jQuery's .remove() or .empty() cannot clean up external library (Atom) subscriptions.\n * MutationObserver is essential to detect DOM removals and trigger cleanup.\n */\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 (const mutation of mutations) {\n mutation.removedNodes.forEach((node) => {\n // If the node is marked as \"kept\" (e.g. .detach()), skip cleanup\n if (registry.isKept(node)) {\n return;\n }\n\n if (node.isConnected) {\n return;\n }\n\n // Use nodeType === 1 check instead of instanceof Element to avoid\n // ReferenceError during test teardown where Element might be undefined\n if (node.nodeType === 1) {\n // Cleanup removed node and all its descendants recursively\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 { batch, effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type { ReactiveValue, ValOptions, WritableAtom } from './types';\nimport { getValue, isReactive } from './utils';\n\n/**\n * Updates element text content.\n * @param source - Atom or static value.\n * @param formatter - Optional function to format the value.\n */\n$.fn.atomText = function <T>(source: ReactiveValue<T>, formatter?: (v: T) => string): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = getValue(source);\n const text = formatter ? formatter(value) : String(value ?? '');\n $el.text(text);\n debug.domUpdated($el, 'text', text);\n });\n registry.trackEffect(this, fx);\n } else {\n const text = formatter ? formatter(source) : String(source ?? '');\n $el.text(text);\n }\n });\n};\n\n/**\n * Updates element inner HTML.\n * @param source - Atom or static value.\n */\n$.fn.atomHtml = function (source: ReactiveValue<string>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(source)) {\n const fx = effect(() => {\n const html = String(getValue(source) ?? '');\n $el.html(html);\n debug.domUpdated($el, 'html', html);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.html(String(source ?? ''));\n }\n });\n};\n\n/**\n * Toggles a CSS class based on boolean value.\n * @param className - The class to toggle.\n * @param condition - Boolean source value.\n */\n$.fn.atomClass = function (className: string, condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(condition)) {\n const fx = effect(() => {\n const value = Boolean(getValue(condition));\n $el.toggleClass(className, value);\n debug.domUpdated($el, `class.${className}`, value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.toggleClass(className, Boolean(condition));\n }\n });\n};\n\n/**\n * Updates a CSS style property.\n * @param prop - CSS property name.\n * @param source - Value source.\n * @param unit - Optional unit (e.g., 'px', 'em').\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\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = getValue(source);\n const cssValue = unit ? `${value}${unit}` : value;\n $el.css(prop, cssValue);\n debug.domUpdated($el, `css.${prop}`, cssValue);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.css(prop, unit ? `${source}${unit}` : source);\n }\n });\n};\n\n/**\n * Updates an HTML attribute.\n * @param name - Attribute name.\n * @param source - Attribute value.\n */\n$.fn.atomAttr = function (name: string, source: ReactiveValue<string | boolean | null>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n const applyAttr = (value: string | boolean | null) => {\n if (value === null || value === undefined || value === false) {\n $el.removeAttr(name);\n } else if (value === true) {\n $el.attr(name, name);\n } else {\n $el.attr(name, String(value));\n }\n debug.domUpdated($el, `attr.${name}`, value);\n };\n\n if (isReactive(source)) {\n const fx = effect(() => applyAttr(getValue(source)));\n registry.trackEffect(this, fx);\n } else {\n applyAttr(source);\n }\n });\n};\n\n/**\n * Updates a DOM property (e.g., checked, selected, value).\n * @param name - Property name.\n * @param source - Property 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\n if (isReactive(source)) {\n const fx = effect(() => {\n const value = getValue(source);\n $el.prop(name, value);\n debug.domUpdated($el, `prop.${name}`, value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.prop(name, source);\n }\n });\n};\n\n/**\n * Shows element when condition is true.\n * @param condition - Boolean source value.\n */\n$.fn.atomShow = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(condition)) {\n const fx = effect(() => {\n const value = Boolean(getValue(condition));\n $el.toggle(value);\n debug.domUpdated($el, 'show', value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.toggle(Boolean(condition));\n }\n });\n};\n\n/**\n * Hides element when condition is true.\n * @param condition - Boolean source value.\n */\n$.fn.atomHide = function (condition: ReactiveValue<boolean>): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n if (isReactive(condition)) {\n const fx = effect(() => {\n const value = !getValue(condition);\n $el.toggle(value);\n debug.domUpdated($el, 'hide', !value);\n });\n registry.trackEffect(this, fx);\n } else {\n $el.toggle(!condition);\n }\n });\n};\n\n/**\n * Two-way binding for input values.\n * Uses InputBindingState for explicit lifecycle management.\n * Supports IME (Input Method Editor) for CJK languages.\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\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\n let isUpdatingFromAtom = false;\n\n // DOM → Atom\n const handler = () => {\n if (isUpdatingFromAtom) return;\n\n batch(() => {\n atom.value = $el.prop('checked');\n });\n };\n\n $el.on('change', handler);\n registry.trackCleanup(this, () => $el.off('change', handler));\n\n // Atom → DOM\n const fx = effect(() => {\n isUpdatingFromAtom = true;\n $el.prop('checked', atom.value);\n debug.domUpdated($el, 'checked', atom.value);\n isUpdatingFromAtom = false;\n });\n registry.trackEffect(this, fx);\n });\n};\n\n/**\n * Binds an event handler that automatically runs within a batch.\n */\n$.fn.atomOn = function (event: string, handler: (e: JQuery.Event) => void): JQuery {\n return this.each(function () {\n const $el = $(this);\n\n const wrappedHandler = function (this: HTMLElement, e: JQuery.Event) {\n batch(() => handler.call(this, e));\n };\n\n $el.on(event, wrappedHandler);\n registry.trackCleanup(this, () => $el.off(event, wrappedHandler));\n });\n};\n\n/**\n * Removes all atom bindings and cleanup effects from the elements.\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 { applyInputBinding } from './input-binding';\nimport { registry } from './registry';\nimport type { BindingOptions, CssValue, ReactiveValue, ValOptions, WritableAtom } from './types';\nimport { createInputBindingState } from './types';\nimport { getValue, isReactive } from './utils';\n\n// ============================================================================\n// Binding Handler Types\n// ============================================================================\n\n/**\n * Effect factory function - returns effects to register, or empty array for static bindings.\n */\ntype EffectFactory = () => void;\n\n/**\n * Context passed to binding handlers for cleanup registration.\n */\ninterface BindingContext {\n readonly $el: JQuery;\n readonly el: HTMLElement;\n readonly effects: EffectFactory[];\n readonly trackCleanup: (fn: () => void) => void;\n}\n\n// ============================================================================\n// One-Way Binding Handlers (Atom → DOM)\n// ============================================================================\n\nfunction bindText<T>(ctx: BindingContext, value: ReactiveValue<T>): void {\n if (isReactive(value)) {\n ctx.effects.push(() => {\n const text = String(getValue(value) ?? '');\n ctx.$el.text(text);\n debug.domUpdated(ctx.$el, 'text', text);\n });\n } else {\n ctx.$el.text(String(value ?? ''));\n }\n}\n\nfunction bindHtml(ctx: BindingContext, value: ReactiveValue<string>): void {\n if (isReactive(value)) {\n ctx.effects.push(() => {\n const html = String(getValue(value) ?? '');\n ctx.$el.html(html);\n debug.domUpdated(ctx.$el, 'html', html);\n });\n } else {\n ctx.$el.html(String(value ?? ''));\n }\n}\n\nfunction bindClass(ctx: BindingContext, classMap: Record<string, ReactiveValue<boolean>>): void {\n for (const [className, condition] of Object.entries(classMap)) {\n if (isReactive(condition)) {\n ctx.effects.push(() => {\n const value = Boolean(getValue(condition));\n ctx.$el.toggleClass(className, value);\n debug.domUpdated(ctx.$el, `class.${className}`, value);\n });\n } else {\n ctx.$el.toggleClass(className, Boolean(condition));\n }\n }\n}\n\nfunction bindCss(ctx: BindingContext, cssMap: Record<string, CssValue>): void {\n for (const [prop, value] of Object.entries(cssMap)) {\n if (Array.isArray(value)) {\n const [source, unit] = value;\n if (isReactive(source)) {\n ctx.effects.push(() => {\n const cssValue = `${getValue(source)}${unit}`;\n ctx.$el.css(prop, cssValue);\n debug.domUpdated(ctx.$el, `css.${prop}`, cssValue);\n });\n } else {\n ctx.$el.css(prop, `${source}${unit}`);\n }\n } else if (isReactive(value)) {\n ctx.effects.push(() => {\n const cssValue = getValue(value) as string | number;\n ctx.$el.css(prop, cssValue);\n debug.domUpdated(ctx.$el, `css.${prop}`, cssValue);\n });\n } else {\n ctx.$el.css(prop, value as string | number);\n }\n }\n}\n\nfunction bindAttr(\n ctx: BindingContext,\n attrMap: Record<string, ReactiveValue<string | boolean | null>>\n): void {\n for (const [name, value] of Object.entries(attrMap)) {\n const applyAttr = (v: string | boolean | null | undefined) => {\n if (v === null || v === undefined || v === false) {\n ctx.$el.removeAttr(name);\n } else if (v === true) {\n ctx.$el.attr(name, name);\n } else {\n ctx.$el.attr(name, String(v));\n }\n debug.domUpdated(ctx.$el, `attr.${name}`, v);\n };\n\n if (isReactive(value)) {\n ctx.effects.push(() => applyAttr(getValue(value)));\n } else {\n applyAttr(value);\n }\n }\n}\n\nfunction bindProp(ctx: BindingContext, propMap: Record<string, ReactiveValue<unknown>>): void {\n for (const [name, value] of Object.entries(propMap)) {\n if (isReactive(value)) {\n ctx.effects.push(() => {\n const propValue = getValue(value);\n ctx.$el.prop(name, propValue as string | number | boolean | null | undefined);\n debug.domUpdated(ctx.$el, `prop.${name}`, propValue);\n });\n } else {\n ctx.$el.prop(name, value as string | number | boolean | null | undefined);\n }\n }\n}\n\nfunction bindShow(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n if (isReactive(condition)) {\n ctx.effects.push(() => {\n const value = Boolean(getValue(condition));\n ctx.$el.toggle(value);\n debug.domUpdated(ctx.$el, 'show', value);\n });\n } else {\n ctx.$el.toggle(Boolean(condition));\n }\n}\n\nfunction bindHide(ctx: BindingContext, condition: ReactiveValue<boolean>): void {\n if (isReactive(condition)) {\n ctx.effects.push(() => {\n const value = !getValue(condition);\n ctx.$el.toggle(value);\n debug.domUpdated(ctx.$el, 'hide', !value);\n });\n } else {\n ctx.$el.toggle(!condition);\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 // Parse config - can be just an atom or [atom, options] tuple\n const atom = Array.isArray(valConfig) ? valConfig[0] : valConfig;\n const options = Array.isArray(valConfig) ? valConfig[1] : {};\n\n const { effect, cleanup } = applyInputBinding(ctx.$el, atom, options);\n\n ctx.effects.push(effect);\n ctx.trackCleanup(cleanup);\n}\n\nfunction bindChecked(ctx: BindingContext, atom: WritableAtom<boolean>): void {\n const state = createInputBindingState();\n\n // DOM → Atom\n const handler = () => {\n if (state.phase !== 'idle') return;\n batch(() => {\n atom.value = ctx.$el.prop('checked');\n });\n };\n\n ctx.$el.on('change', handler);\n ctx.trackCleanup(() => ctx.$el.off('change', handler));\n\n // Atom → DOM\n ctx.effects.push(() => {\n state.phase = 'syncing-to-dom';\n ctx.$el.prop('checked', atom.value);\n debug.domUpdated(ctx.$el, 'checked', atom.value);\n state.phase = 'idle';\n });\n}\n\n// ============================================================================\n// Event Binding Handler\n// ============================================================================\n\nfunction bindEvents(\n ctx: BindingContext,\n eventMap: Record<string, (e: JQuery.Event) => void>\n): void {\n for (const [eventName, handler] of Object.entries(eventMap)) {\n const wrapped = function (this: HTMLElement, e: JQuery.Event) {\n batch(() => handler.call(this, e));\n };\n ctx.$el.on(eventName, wrapped);\n ctx.trackCleanup(() => ctx.$el.off(eventName, wrapped));\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 const effects: EffectFactory[] = [];\n\n // Build binding context\n const ctx: BindingContext = {\n $el,\n el: this,\n effects,\n trackCleanup: (fn) => registry.trackCleanup(this, fn),\n };\n\n // Apply bindings through focused handlers\n if (options.text !== undefined) bindText(ctx, options.text);\n if (options.html !== undefined) bindHtml(ctx, options.html);\n if (options.class) bindClass(ctx, options.class);\n if (options.css) bindCss(ctx, options.css);\n if (options.attr) bindAttr(ctx, options.attr);\n if (options.prop) bindProp(ctx, options.prop);\n if (options.show !== undefined) bindShow(ctx, options.show);\n if (options.hide !== undefined) bindHide(ctx, options.hide);\n if (options.val !== undefined) bindVal(ctx, options.val);\n if (options.checked !== undefined) bindChecked(ctx, options.checked);\n if (options.on) bindEvents(ctx, options.on);\n\n // Register all collected effects\n effects.forEach((fn) => {\n const fx = effect(fn);\n registry.trackEffect(this, fx);\n });\n });\n};\n","import { effect } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ListOptions, ReadonlyAtom } from './types';\nimport { getSelector } from './utils';\n\n/**\n * Helper: Longest Increasing Subsequence (LIS)\n * O(N log N) algorithm used to minimize DOM moves in the diffing algorithm.\n */\nfunction getLIS(arr: number[]): number[] {\n if (arr.length === 0) return [];\n\n // predecessors: stores the index of the previous element for backtracking\n const predecessors = arr.slice();\n\n // result: stores the indices of the longest increasing subsequence found so far\n // result[k] is the index of the last element of an increasing subsequence of length k+1\n const result: number[] = [0];\n\n let i: number, left: number, right: number, mid: number;\n const len = arr.length;\n\n for (i = 0; i < len; i++) {\n const arrI = arr[i]!; // Safe: i is within bounds [0, len)\n\n // -1 is treated as \"not present\" or \"ignored\" (specific to the diff algorithm)\n if (arrI !== -1) {\n const lastResultIndex = result[result.length - 1]!; // Safe: result always has at least 1 element\n\n // Case A: If current value is greater than the last value in result -> append (Greedy)\n if (arr[lastResultIndex]! < arrI) {\n predecessors[i] = lastResultIndex;\n result.push(i);\n continue;\n }\n\n // Case B: If current value is smaller or equal -> find the insertion point (Binary Search)\n // Updates with a smaller value to increase future possibilities without breaking the sequence\n left = 0;\n right = result.length - 1;\n\n while (left < right) {\n mid = ((left + right) / 2) | 0;\n if (arr[result[mid]!]! < arrI) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n\n // Replace if the current value is smaller than the value at the found position\n if (arrI < arr[result[left]!]!) {\n if (left > 0) {\n // Link the predecessor\n predecessors[i] = result[left - 1]!; // Safe: left > 0 means left-1 >= 0\n }\n result[left] = i;\n }\n }\n }\n\n // Backtracking: reconstruct the actual LIS path using predecessors\n let u = result.length;\n let v = result[u - 1]!; // Safe: result has at least 1 element\n\n while (u-- > 0) {\n result[u] = v;\n v = predecessors[v]!; // Safe: v is always a valid index from previous iteration\n }\n\n return result;\n}\n\n/**\n * Implementation of atomList with Smart Reconciliation (Keyed Diffing)\n * Uses LIS (Longest Increasing Subsequence) to minimize DOM moves.\n */\n$.fn.atomList = function <T>(source: ReadonlyAtom<T[]>, options: ListOptions<T>): JQuery {\n return this.each(function () {\n const $container = $(this);\n const containerSelector = getSelector(this);\n\n const { key, render, bind, onAdd, onRemove, empty } = options;\n\n const getKey =\n typeof key === 'function'\n ? key\n : (item: T) => item[key as keyof T] as unknown as string | number;\n\n const itemMap = new Map<string | number, { $el: JQuery; item: T }>();\n let oldKeys: (string | number)[] = [];\n let $emptyEl: JQuery | null = null;\n\n // Track keys currently being removed (async animation etc.)\n // This prevents duplicate items when the same key is re-added during removal\n const removingKeys = new Set<string | number>();\n\n const fx = effect(() => {\n const items = source.value;\n const newKeys: (string | number)[] = [];\n const newKeySet = new Set<string | number>();\n\n // 1. Prepare keys\n for (let i = 0; i < items.length; i++) {\n const item = items[i]!; // Safe: i is within bounds\n const k = getKey(item, i);\n newKeys.push(k);\n newKeySet.add(k);\n }\n\n debug.log('list', `${containerSelector} updating with ${items.length} items`);\n\n // 2. Handle Empty State\n if (items.length === 0 && empty) {\n if (!$emptyEl) {\n $emptyEl = $(empty);\n $container.append($emptyEl);\n }\n for (const [, entry] of itemMap) {\n entry.$el.remove();\n const el = entry.$el[0];\n if (el) registry.cleanup(el);\n }\n itemMap.clear();\n oldKeys = [];\n return;\n } else if ($emptyEl) {\n $emptyEl.remove();\n $emptyEl = null;\n }\n\n // 3. Remove vanished items\n for (const [k, entry] of itemMap) {\n if (!newKeySet.has(k)) {\n // Skip if already being removed (prevents duplicate removal attempts)\n if (removingKeys.has(k)) continue;\n\n const doRemove = () => {\n entry.$el.remove();\n const el = entry.$el[0];\n if (el) registry.cleanup(el);\n removingKeys.delete(k); // Clear from tracking when removal completes\n debug.log('list', `${containerSelector} removed item:`, k);\n };\n\n itemMap.delete(k); // Remove from map immediately to avoid interference\n removingKeys.add(k); // Mark as being removed\n\n if (onRemove) {\n Promise.resolve(onRemove(entry.$el)).then(doRemove);\n } else {\n doRemove();\n }\n }\n }\n\n // 4. LIS algorithm for minimizing moves\n // Map keys to their index in the OLD list\n const oldIndexMap = new Map<string | number, number>();\n oldKeys.forEach((k, i) => oldIndexMap.set(k, i));\n\n // Construct array of old indices for the new items\n const newIndices = newKeys.map((k) => oldIndexMap.get(k) ?? -1);\n\n // Get indices of items in the new list that form the LIS (stable candidates)\n const lis = getLIS(newIndices);\n const lisSet = new Set(lis); // fast lookup\n\n // 5. Reconciliation (Backwards)\n let nextNode: Node | null = null;\n\n for (let i = items.length - 1; i >= 0; i--) {\n const key = newKeys[i]!; // Safe: i is within bounds\n const item = items[i]!; // Safe: i is within bounds\n const isStable = lisSet.has(i);\n\n if (itemMap.has(key)) {\n // Update Existing\n const entry = itemMap.get(key);\n if (!entry) continue; // Type guard\n\n entry.item = item;\n const el = entry.$el[0];\n if (!el) continue; // Type guard\n\n if (options.update) {\n options.update(entry.$el, item, i);\n }\n\n if (!isStable) {\n // MOVED (Not in LIS)\n if (nextNode) {\n entry.$el.insertBefore(nextNode);\n } else {\n entry.$el.appendTo($container);\n }\n } else {\n // STABLE (In LIS) - But check for gaps/interleaving\n // If the stable item isn't strictly before the next one, fix it.\n // (e.g., if a new item was inserted, or a neighbor moved away)\n const nextSib = el.nextSibling;\n if (nextNode && nextSib !== nextNode) {\n entry.$el.insertBefore(nextNode);\n } else if (!nextNode && nextSib) {\n entry.$el.appendTo($container);\n }\n }\n nextNode = el; // This node is now the anchor\n } else {\n // item and key are guaranteed non-undefined from the loop invariant\n const rendered = render(item, i);\n const $el: JQuery = (\n rendered instanceof Element ? $(rendered) : $(rendered as string)\n ) as JQuery;\n itemMap.set(key, { $el, item });\n\n if (nextNode) {\n $el.insertBefore(nextNode);\n } else {\n $el.appendTo($container);\n }\n\n if (bind) bind($el, item, i);\n if (onAdd) onAdd($el);\n\n debug.log('list', `${containerSelector} added item:`, key);\n\n // Use first element of new set as anchor\n const newEl = $el[0];\n if (newEl) nextNode = newEl;\n }\n }\n\n oldKeys = newKeys;\n });\n\n registry.trackEffect(this, fx);\n registry.trackCleanup(this, () => {\n itemMap.clear();\n oldKeys = [];\n $emptyEl?.remove();\n });\n });\n};\n","import $ from 'jquery';\nimport { debug } from './debug';\nimport { registry } from './registry';\nimport type { ComponentFn } from './types';\nimport { getSelector } from './utils';\n\nconst mountedComponents = new WeakMap<Element, () => void>();\n\n/**\n * Mounts a functional component to the element.\n * Automatically cleans up existing components on the same element.\n */\n$.fn.atomMount = function <P>(component: ComponentFn<P>, props: P = {} as P): JQuery {\n return this.each(function () {\n const $el = $(this);\n const selector = getSelector(this);\n\n // Unmount existing component\n const existing = mountedComponents.get(this);\n if (existing) {\n debug.log('mount', `${selector} unmounting existing component`);\n existing();\n }\n\n debug.log('mount', `${selector} mounting component`);\n\n // Mount\n let userCleanup: undefined | (() => void);\n try {\n userCleanup = component($el, props);\n } catch (e) {\n console.error('[atom-effect-jquery] Mount error:', e);\n return;\n }\n\n // cleanup\n let isUnmounted = false;\n const fullCleanup = () => {\n if (isUnmounted) return;\n isUnmounted = true;\n\n debug.log('mount', `${selector} full cleanup`);\n\n if (typeof userCleanup === 'function') {\n try {\n userCleanup();\n } catch {}\n }\n registry.cleanupTree(this);\n mountedComponents.delete(this);\n };\n\n mountedComponents.set(this, fullCleanup);\n registry.trackCleanup(this, fullCleanup);\n });\n};\n\n/**\n * Manually unmounts a component from the element.\n */\n$.fn.atomUnmount = function (): JQuery {\n return this.each(function () {\n mountedComponents.get(this)?.();\n });\n};\n","import { batch } from '@but212/atom-effect';\nimport $ from 'jquery';\nimport { registry } from './registry';\n\n/**\n * WeakMap to store strict association between original handlers and batched wrappers.\n * This ensures that .off() works correctly when passing the original handler.\n */\nconst handlerMap = new WeakMap<Function, Function>();\n\nlet isjQueryOverridesEnabled = false;\n\n/**\n * Patches jQuery methods to integrate with the reactive system.\n *\n * 1. Lifecycle Overrides (.remove, .empty, .detach):\n * - Automatically cleans up effects/bindings when elements are removed.\n * - Preserves bindings when elements are detached.\n *\n * 2. Event Batching (.on, .off):\n * - Wraps event handlers in batch() to optimize rendering.\n */\nexport function enablejQueryOverrides() {\n if (isjQueryOverridesEnabled) return;\n isjQueryOverridesEnabled = true;\n\n const originalOn = $.fn.on;\n const originalOff = $.fn.off;\n const originalRemove = $.fn.remove;\n const originalEmpty = $.fn.empty;\n const originalDetach = $.fn.detach;\n\n // ========== Lifecycle Overrides ==========\n\n // .remove() - Delete element + Unsubscribe\n $.fn.remove = function (selector?: string) {\n // Filter elements if selector is provided, as per jQuery docs\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.cleanupTree(this);\n });\n\n return originalRemove.call(this, selector);\n };\n\n // .empty() - Delete children + Recursive Unsubscribe\n $.fn.empty = function () {\n this.each(function () {\n const children = this.querySelectorAll('*');\n children.forEach((child) => registry.cleanup(child));\n // Note: cleanupTree(this) would unsubscribe the element itself, which is incorrect for .empty().\n // We must clean up all descendants. `querySelectorAll('*')` achieves this.\n });\n\n return originalEmpty.call(this);\n };\n\n // .detach() - Remove from DOM + Keep Subscription (Marking)\n $.fn.detach = function (selector?: string) {\n const $target = selector ? this.filter(selector) : this;\n\n $target.each(function () {\n registry.keep(this);\n });\n\n return originalDetach.call(this, selector);\n };\n\n // ========== Event Overrides ==========\n\n // Patch .on()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.on = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n\n let wrappedFn: Function | undefined;\n if (handlerMap.has(originalFn)) {\n wrappedFn = handlerMap.get(originalFn);\n } else {\n // biome-ignore lint/suspicious/noExplicitAny: internal this\n wrappedFn = function (this: any, ...eventArgs: any[]) {\n // biome-ignore lint/suspicious/noExplicitAny: return value\n let result: any;\n batch(() => {\n result = originalFn.apply(this, eventArgs);\n });\n return result;\n };\n handlerMap.set(originalFn, wrappedFn);\n }\n\n args[fnIndex] = wrappedFn;\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOn.apply(this, args as any);\n };\n\n // Patch .off()\n // biome-ignore lint/suspicious/noExplicitAny: jQuery dynamic args\n $.fn.off = function (this: any, ...args: any[]) {\n let fnIndex = -1;\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n fnIndex = i;\n break;\n }\n }\n\n if (fnIndex !== -1) {\n const originalFn = args[fnIndex];\n if (handlerMap.has(originalFn)) {\n args[fnIndex] = handlerMap.get(originalFn);\n }\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: dynamic args\n return originalOff.apply(this, args as any);\n };\n}\n\n// Alias for backward compatibility if needed, though we are refactoring.\nexport const enablejQueryBatching = enablejQueryOverrides;\n","/**\n * atom-effect-jquery\n *\n * Brings reactivity to jQuery.\n *\n * Features:\n * - Full CJK IME Support (Input Method Editor).\n * - Auto-cleanup via MutationObserver (No memory leaks).\n * - Debug Mode: Console logging + Visual Highlighting.\n */\n\nimport $ from 'jquery';\n\n// Register plugins\nimport './namespace';\nimport './chainable';\nimport './unified';\nimport './list';\nimport './mount';\n\nimport { enablejQueryOverrides } from './jquery-patch';\n// Auto-cleanup (Crucial!)\nimport { disableAutoCleanup, enableAutoCleanup, registry } from './registry';\n\n// Auto-enable on DOM ready\nenablejQueryOverrides();\n$(() => {\n enableAutoCleanup(document.body);\n});\n\n// Explicit import support\nexport {\n atom,\n batch,\n computed,\n effect,\n untracked,\n} from '@but212/atom-effect';\n// Optional: Auto-batching for jQuery events\nexport { enablejQueryBatching, enablejQueryOverrides } from './jquery-patch';\n// Export types\nexport type {\n BindingOptions,\n ComponentFn,\n ComputedAtom,\n ListOptions,\n ReadonlyAtom,\n WritableAtom,\n} from './types';\n\nexport { registry, enableAutoCleanup, disableAutoCleanup };\nexport default $;\n"],"names":["Z","v","A","c","g","k","I","a","ee","p","t","s","N","b","O","h","i","L","te","V","q","se","j","G","n","d","ie","ne","Y","$","U","H","re","x","w","F","z","X","oe","ce","T","Se","y","he","P","B","u","l","_","S","D","f","ue","ge","J","_e","ae","le","fe","Q","de","Ee","Ie","R","W","M","K","m","E","C","ye","pe","me","isReactive","value","getValue","source","getSelector","el","domEl","classes","getInitialDebugState","globalFlag","debugEnabled","debug","type","args","name","oldVal","newVal","$el","selector","highlightElement","TIMER_KEY","CLEANUP_TIMER_KEY","ORG_STYLE_KEY","timerId","originalStyles","cleanupTimerId","atomMetadata","atom","initialValue","options","instance","createAtom","nextTick","resolve","computed","effect","batch","untracked","isAtom","isComputed","createInputBindingState","applyInputBinding","debounceMs","event","parse","format","state","onCompositionStart","onCompositionEnd","syncAtomFromDom","onFocus","onBlur","formatted","onInput","currentVal","BindingRegistry","node","fx","list","fn","effects","e","cleanups","child","registry","observer","enableAutoCleanup","root","mutations","mutation","disableAutoCleanup","formatter","text","html","className","condition","prop","unit","cssValue","applyAttr","fxFn","cleanup","isUpdatingFromAtom","handler","wrappedHandler","bindText","ctx","bindHtml","bindClass","classMap","bindCss","cssMap","bindAttr","attrMap","bindProp","propMap","propValue","bindShow","bindHide","bindVal","valConfig","bindChecked","bindEvents","eventMap","eventName","wrapped","getLIS","arr","predecessors","result","left","right","mid","len","arrI","lastResultIndex","$container","containerSelector","key","render","bind","onAdd","onRemove","empty","getKey","item","itemMap","oldKeys","$emptyEl","removingKeys","items","newKeys","newKeySet","entry","doRemove","oldIndexMap","newIndices","lis","lisSet","nextNode","isStable","nextSib","rendered","newEl","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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"}
|