~cytrogen/masto-fe

ref: e9a181c52c2a701a1f93782233111c234dab5342 masto-fe/app/javascript/mastodon/ready.js -rw-r--r-- 660 bytes
e9a181c5 — Claire Merge commit 'e95d25e1013b6328457b81bd98e8d6a841d45ec2' into glitch-soc/merge-upstream 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// @ts-check

/**
 * @param {(() => void) | (() => Promise<void>)} callback
 * @returns {Promise<void>}
 */
export default function ready(callback) {
  return new Promise((resolve, reject) => {
    function loaded() {
      let result;
      try {
        result = callback();
      } catch (err) {
        reject(err);

        return;
      }

      if (typeof result?.then === 'function') {
        result.then(resolve).catch(reject);
      } else {
        resolve();
      }
    }

    if (['interactive', 'complete'].includes(document.readyState)) {
      loaded();
    } else {
      document.addEventListener('DOMContentLoaded', loaded);
    }
  });
}