UNPKG

@atlaskit/spotlight

Version:

A spotlight introduces users to points of interest, from focused messages to multi-step tours.

59 lines (58 loc) 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UNSAFE_UpdateOnChange = void 0; var _react = require("react"); var _browserApis = require("@atlaskit/browser-apis"); var _context = require("../../controllers/context"); var defaultOptions = { childList: true, subtree: true }; var UNSAFE_UpdateOnChange = exports.UNSAFE_UpdateOnChange = function UNSAFE_UpdateOnChange(_ref) { var _ref$selectors = _ref.selectors, selectors = _ref$selectors === void 0 ? ['body'] : _ref$selectors, _ref$options = _ref.options, options = _ref$options === void 0 ? defaultOptions : _ref$options; var _useContext = (0, _react.useContext)(_context.SpotlightContext), popoverContent = _useContext.popoverContent; var update = popoverContent.update; (0, _react.useEffect)(function () { if (!update || selectors.length === 0) { return; } var doc = (0, _browserApis.getDocument)(); if (!doc) { return; } var elements = new Set(); selectors.forEach(function (selector) { var element = doc.querySelector(selector); if (!element) { return; } elements.add(element); }); if (elements.size === 0) { return; } var observers = []; elements.forEach(function (element) { var observer = new MutationObserver(function (mutations) { if (mutations.length === 0) { return; } update(); }); observer.observe(element, options); observers.push(observer); }); return function () { observers.forEach(function (observer) { return observer.disconnect(); }); }; }, [selectors, options, update]); return null; };