UNPKG

@garage-panda/use-await-dom-render

Version:

React hook that is used to await all DOM elements inside a node to be rendered

54 lines (53 loc) 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var DomObserver = /** @class */ (function () { function DomObserver(observerCallback) { var _this = this; this.onLoadCallbacks = []; this.onDomUpdateCallbacks = []; this.onStartCallbacks = []; this.on = function (event, callback) { var callbackArray = _this.getCallbackArray(event); if (callbackArray) { callbackArray.push(callback); } }; this.call = function (event) { var callbackArray = _this.getCallbackArray(event); if (callbackArray) { callbackArray.forEach(function (callback) { return callback(); }); } }; this.startDomWait = function (targetNode) { var config = { attributes: true, childList: true, subtree: true }; _this.observer.observe(targetNode, config); }; this.disconnect = function () { _this.observer.disconnect(); }; this.removeListeners = function () { _this.onLoadCallbacks = []; _this.onDomUpdateCallbacks = []; _this.onStartCallbacks = []; }; this.getCallbackArray = function (event) { switch (event) { case "load": { return _this.onLoadCallbacks; } case "dom-update": { return _this.onDomUpdateCallbacks; } case "start": { return _this.onStartCallbacks; } default: { throw new Error("Event " + event + " is not a name handler for DomObserver"); } } }; this.observer = new MutationObserver(observerCallback); } return DomObserver; }()); exports.default = DomObserver;