tdesign-react
Version:
TDesign Component for React
84 lines (78 loc) • 2.72 kB
JavaScript
/**
* tdesign v1.13.2
* (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-d6e82200.js');
var debounce = require('../_chunks/dep-1bcdd0a4.js');
require('../_chunks/dep-07b911d8.js');
require('../_chunks/dep-4b02d669.js');
require('../_chunks/dep-f0379c5f.js');
require('../_chunks/dep-6d4d8660.js');
require('../_chunks/dep-ddacd27a.js');
require('../_chunks/dep-028b759d.js');
require('../_chunks/dep-8a116183.js');
require('../_chunks/dep-4671b9bd.js');
require('../_chunks/dep-bed9d73e.js');
require('../_chunks/dep-780eda7b.js');
require('../_chunks/dep-47bdc05f.js');
require('../_chunks/dep-cab13149.js');
require('../_chunks/dep-a30819a4.js');
require('../_chunks/dep-6a7ba247.js');
require('../_chunks/dep-c87d9752.js');
require('../_chunks/dep-94d97586.js');
require('../_chunks/dep-b12bf98d.js');
require('../_chunks/dep-0c1ca63f.js');
require('../_chunks/dep-fd5d57c1.js');
require('../_chunks/dep-ac2874ce.js');
require('../_chunks/dep-6cfc06a0.js');
require('../_chunks/dep-5d9d080b.js');
require('../_chunks/dep-c915e145.js');
require('../_chunks/dep-f076775e.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