123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import _setImmediate from "babel-runtime/core-js/set-immediate";
- import _WeakMap from "babel-runtime/core-js/weak-map";
-
-
- var readyMap = void 0,
- queueMap = void 0;
-
- function isContentReady(element) {
- if (element.childNodes.length > 0) {
- setContentReady(element);
- }
- return readyMap.has(element);
- }
-
- function setContentReady(element) {
- readyMap.set(element, true);
- }
-
- function addCallback(element, fn) {
- if (!queueMap.has(element)) {
- queueMap.set(element, []);
- }
- queueMap.get(element).push(fn);
- }
-
- function consumeQueue(element) {
- var callbacks = queueMap.get(element, []) || [];
- queueMap.delete(element);
- callbacks.forEach(function (callback) {
- return callback();
- });
- }
-
- export default function contentReady(element) {
- var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
-
- if (readyMap === undefined) {
- readyMap = new _WeakMap();
- queueMap = new _WeakMap();
- }
-
- addCallback(element, fn);
-
- if (isContentReady(element)) {
- consumeQueue(element);
- return;
- }
-
- var observer = new MutationObserver(function (changes) {
- setContentReady(element);
- consumeQueue(element);
- });
- observer.observe(element, { childList: true, characterData: true });
-
-
- _setImmediate(function () {
- setContentReady(element);
- consumeQueue(element);
- });
- }
|