diff --git a/docs/_includes/head_custom.html b/docs/_includes/head_custom.html
index 07e8cb7..34a2412 100644
--- a/docs/_includes/head_custom.html
+++ b/docs/_includes/head_custom.html
@@ -1,8 +1,2 @@
-
-
diff --git a/docs/assets/js/plugin_versions_menu.js b/docs/assets/js/plugin_versions_menu.js
index 1a61d85..667182b 100644
--- a/docs/assets/js/plugin_versions_menu.js
+++ b/docs/assets/js/plugin_versions_menu.js
@@ -1,8 +1,61 @@
-const { buildWebStorage, setupCache } = window.AxiosCacheInterceptor;
-const storage = buildWebStorage(sessionStorage, 'axios-cache:');
-const axiosCached = setupCache(axios.create(), { storage });
+// Look at webpack to replace the dependency loading
+// also would allow use yarn + jest to support unit testing code below
+
+const dependencies = [
+ {
+ src: 'https://cdnjs.cloudflare.com/ajax/libs/axios/0.27.2/axios.min.js',
+ integrity: 'sha512-odNmoc1XJy5x1TMVMdC7EMs3IVdItLPlCeL5vSUPN2llYKMJ2eByTTAIiiuqLg+GdNr9hF6z81p27DArRFKT7A==',
+ crossOrigin: 'anonymous',
+ },
+ {
+ src: 'https://cdn.jsdelivr.net/npm/axios-cache-interceptor@0.10.6/dist/index.bundle.js',
+ integrity: 'sha256-yJbSlTxKmgU+sjlMx48OSjoiUsboy18gXTxUBniEEO0=',
+ crossOrigin: 'anonymous',
+ },
+]
+
+const loaded = [];
+
+dependencies.forEach( (dep, i) => {
+ loaded[i] = false;
+ loadScript(dep, function() {
+ loaded[i] = true;
+ if (loaded.every(value => value === true)) {
+ // arguments come from a site constants file
+ handleVersionedDocs(repository_nwo, basePath);
+ }
+ });
+})
+
+// helper taken from https://stackoverflow.com/a/950146 under CC BY-SA 4.0, added support
+// for additional attributes to be set on the script tag.
+function loadScript(url, callback)
+{
+ // Adding the script tag to the head as suggested before
+ var head = document.head;
+ var script = document.createElement('script');
+ script.type = 'text/javascript';
+ script.src = url.src;
+ delete url.src;
+ for (var attribute in url) {
+ script[attribute] = url[attribute];
+ }
+
+ // Then bind the event to the callback function.
+ // There are several events for cross browser compatibility.
+ script.onreadystatechange = callback;
+ script.onload = callback;
+
+ // Fire the loading
+ head.appendChild(script);
+}
+
+// main function, must wait until dependencies are loaded before calling
+function handleVersionedDocs(repository_nwo, basePath) {
+ const { buildWebStorage, setupCache } = window.AxiosCacheInterceptor;
+ const storage = buildWebStorage(sessionStorage, 'axios-cache:');
+ const axiosCached = setupCache(axios.create(), { storage });
-changeVersion = function handleVersionedDocs(repository_nwo, basePath) {
menuBackgroundImageClosed = "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 6 9 12 15 18'%3E%3C/polyline%3E%3C/svg%3E\")";
menuBackgroundImageOpen = "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\")";
@@ -173,4 +226,4 @@ changeVersion = function handleVersionedDocs(repository_nwo, basePath) {
hideMenu();
}
});
-}(repository_nwo, basePath);
+}