aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/utils.js')
-rw-r--r--src/js/utils.js66
1 files changed, 33 insertions, 33 deletions
diff --git a/src/js/utils.js b/src/js/utils.js
index 5dafee89..4958627b 100644
--- a/src/js/utils.js
+++ b/src/js/utils.js
@@ -123,29 +123,29 @@ const utils = {
},
// Load an external script
- loadScript(url, callback, error) {
- const current = document.querySelector(`script[src="${url}"]`);
+ loadScript(url) {
+ return new Promise((resolve, reject) => {
+ const current = document.querySelector(`script[src="${url}"]`);
- // Check script is not already referenced, if so wait for load
- if (current !== null) {
- current.callbacks = current.callbacks || [];
- current.callbacks.push(callback);
- return;
- }
+ // Check script is not already referenced, if so wait for load
+ if (current !== null) {
+ current.callbacks = current.callbacks || [];
+ current.callbacks.push(resolve);
+ return;
+ }
- // Build the element
- const element = document.createElement('script');
+ // Build the element
+ const element = document.createElement('script');
- // Callback queue
- element.callbacks = element.callbacks || [];
- element.callbacks.push(callback);
+ // Callback queue
+ element.callbacks = element.callbacks || [];
+ element.callbacks.push(resolve);
- // Error queue
- element.errors = element.errors || [];
- element.errors.push(error);
+ // Error queue
+ element.errors = element.errors || [];
+ element.errors.push(reject);
- // Bind callback
- if (utils.is.function(callback)) {
+ // Bind callback
element.addEventListener(
'load',
event => {
@@ -154,24 +154,24 @@ const utils = {
},
false,
);
- }
- // Bind error handling
- element.addEventListener(
- 'error',
- event => {
- element.errors.forEach(err => err.call(null, event));
- element.errors = null;
- },
- false,
- );
+ // Bind error handling
+ element.addEventListener(
+ 'error',
+ event => {
+ element.errors.forEach(err => err.call(null, event));
+ element.errors = null;
+ },
+ false,
+ );
- // Set the URL after binding callback
- element.src = url;
+ // Set the URL after binding callback
+ element.src = url;
- // Inject
- const first = document.getElementsByTagName('script')[0];
- first.parentNode.insertBefore(element, first);
+ // Inject
+ const first = document.getElementsByTagName('script')[0];
+ first.parentNode.insertBefore(element, first);
+ });
},
// Load an external SVG sprite