antd-watermark
Version:
watermark ui component for react
59 lines (47 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useMutationObserver;
var _react = require("react");
function useMutationObserver() {
var instance = (0, _react.useRef)();
var destroyObserver = function destroyObserver() {
if (instance.current) {
instance.current.takeRecords();
instance.current.disconnect();
instance.current = undefined;
}
};
var createObserver = function createObserver(target, callback) {
if (MutationObserver) {
destroyObserver();
instance.current = new MutationObserver(callback);
instance.current.observe(target, {
childList: true,
subtree: true,
attributeFilter: ['style', 'class']
});
}
};
(0, _react.useEffect)(function () {
return destroyObserver;
}, []);
var reRendering = function reRendering(mutation, watermarkElement) {
var flag = false; // Whether to delete the watermark node
if (mutation.removedNodes.length) {
flag = Array.from(mutation.removedNodes).some(function (node) {
return node === watermarkElement;
});
} // Whether the watermark dom property value has been modified
if (mutation.type === 'attributes' && mutation.target === watermarkElement) {
flag = true;
}
return flag;
};
return {
createObserver: createObserver,
destroyObserver: destroyObserver,
reRendering: reRendering
};
}