@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
JavaScript
;
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;