UNPKG

tdesign-react

Version:
63 lines (59 loc) 2.73 kB
/** * tdesign v1.16.2 * (c) 2025 tdesign * @license MIT */ import { _ as _defineProperty } from '../_chunks/dep-d67deb2c.js'; import { useRef, useEffect } from 'react'; import { isEqual, debounce } from 'lodash-es'; import useLatest from './useLatest.js'; import '../_chunks/dep-8abcbcbc.js'; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var DEFAULT_OPTIONS = { debounceTime: 0, config: { attributes: true, childList: true, characterData: true, subtree: true } }; function useMutationObservable(targetEl, cb, options) { var _options$debounceTime; var optionsRef = useRef(null); var signalRef = useRef(0); var callbackRef = useLatest(cb); var mergedOptions = { debounceTime: (_options$debounceTime = options === null || options === void 0 ? void 0 : options.debounceTime) !== null && _options$debounceTime !== void 0 ? _options$debounceTime : DEFAULT_OPTIONS.debounceTime, config: _objectSpread(_objectSpread({}, DEFAULT_OPTIONS.config), options === null || options === void 0 ? void 0 : options.config) }; if (!isEqual(mergedOptions, optionsRef.current)) { signalRef.current += 1; } optionsRef.current = mergedOptions; useEffect(function () { if (!targetEl || !(targetEl !== null && targetEl !== void 0 && targetEl.nodeType)) return; var observer = null; try { var _optionsRef$current = optionsRef.current, debounceTime = _optionsRef$current.debounceTime, config = _optionsRef$current.config; var mutationCallback = function mutationCallback() { callbackRef.current.apply(callbackRef, arguments); }; observer = new MutationObserver(debounceTime > 0 ? debounce(mutationCallback, debounceTime) : mutationCallback); observer.observe(targetEl, config); } catch (e) { console.error(e); } return function () { if (observer) { observer.disconnect(); observer = null; } }; }, [targetEl, signalRef.current]); } export { useMutationObservable as default }; //# sourceMappingURL=useMutationObserver.js.map