tdesign-react
Version:
TDesign Component for React
84 lines (78 loc) • 2.72 kB
JavaScript
/**
* tdesign v1.15.1
* (c) 2025 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var hooks_useLatest = require('./useLatest.js');
var isEqual = require('../_chunks/dep-eb6d55c1.js');
var debounce = require('../_chunks/dep-a231fdc5.js');
require('../_chunks/dep-31c4bc3d.js');
require('../_chunks/dep-eea2872a.js');
require('../_chunks/dep-25585736.js');
require('../_chunks/dep-667ac7af.js');
require('../_chunks/dep-62e73936.js');
require('../_chunks/dep-64577888.js');
require('../_chunks/dep-71455db7.js');
require('../_chunks/dep-9e5a468d.js');
require('../_chunks/dep-ec8d2dca.js');
require('../_chunks/dep-fc596d16.js');
require('../_chunks/dep-f26edb7b.js');
require('../_chunks/dep-f33c1939.js');
require('../_chunks/dep-21ece627.js');
require('../_chunks/dep-25e4aa84.js');
require('../_chunks/dep-e1fbe1c3.js');
require('../_chunks/dep-014b9b78.js');
require('../_chunks/dep-abdd786a.js');
require('../_chunks/dep-3d4656ee.js');
require('../_chunks/dep-0ffc9d96.js');
require('../_chunks/dep-efe6d243.js');
require('../_chunks/dep-4b18243f.js');
require('../_chunks/dep-bff2c990.js');
require('../_chunks/dep-cf14666e.js');
require('../_chunks/dep-79629634.js');
var DEFAULT_OPTIONS = {
debounceTime: 0,
config: {
attributes: true,
childList: true,
characterData: true,
subtree: true
}
};
function useMutationObservable(targetEl, cb) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_OPTIONS;
var optionsRef = React.useRef(null);
var signalRef = React.useRef(0);
var callbackRef = hooks_useLatest["default"](cb);
if (!isEqual.isEqual(options, optionsRef.current)) {
signalRef.current += 1;
}
optionsRef.current = options;
React.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.debounce(mutationCallback, debounceTime) : mutationCallback);
observer.observe(targetEl, config);
} catch (e) {
console.error(e);
}
return function () {
if (observer) {
observer.disconnect();
observer = null;
}
};
}, [targetEl, signalRef.current]);
}
exports["default"] = useMutationObservable;
//# sourceMappingURL=useMutationObserver.js.map