UNPKG

antd-watermark

Version:
59 lines (47 loc) 1.46 kB
"use strict"; 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 }; }