import { useLayoutEffect } from "react";
/**
 * 订阅一个 `Subject` 或 `Observable`，并在值变化时调用指定的回调函数。
 *
 * @template T - `Subject` 或 `Observable` 中值的类型。
 * @param {Subject<T> | Observable<T>} subject - 要订阅的 `Subject` 或 `Observable`。
 * @param {(value: T) => void} fn - 当 `subject` 发出新值时调用的回调函数。
 * @param {any[]} [deps=[]] - 依赖项数组，当依赖项变化时重新订阅 `subject`。
 */ export var useSubject = function useSubject(subject, fn) {
    var deps = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
    useLayoutEffect(function() {
        var _subject_subscribe;
        if (!subject) return;
        var cancel = subject === null || subject === void 0 ? void 0 : (_subject_subscribe = subject.subscribe) === null || _subject_subscribe === void 0 ? void 0 : _subject_subscribe.call(subject, fn);
        return function() {
            var _cancel_unsubscribe;
            return cancel === null || cancel === void 0 ? void 0 : (_cancel_unsubscribe = cancel.unsubscribe) === null || _cancel_unsubscribe === void 0 ? void 0 : _cancel_unsubscribe.call(cancel);
        };
    }, deps);
};
