docs-v2/assets/js/api-libs.js

44 lines
1.4 KiB
JavaScript

////////////////////////////////////////////////////////////////////////////////
///////////////// Preferred Client Library programming language ///////////////
////////////////////////////////////////////////////////////////////////////////
import { activateTabs, updateBtnURLs } from './tabbed-content.js';
import { getPreference, setPreference } from './services/local-storage.js';
function getVisitedApiLib() {
const path = window.location.pathname.match(
/client-libraries\/((?:v[0-9]|flight)\/)?([a-zA-Z0-9]*)/
);
return path && path.length && path[2];
}
function isApiLib() {
return /\/client-libraries\//.test(window.location.pathname);
}
// Set the user's programming language (client library) preference.
function setApiLibPreference(preference) {
setPreference('api_lib', preference);
}
// Retrieve the user's programming language (client library) preference.
function getApiLibPreference() {
return getPreference('api_lib') || '';
}
function initialize() {
// When visiting a client library page, set the api_lib preference
if (isApiLib()) {
var selectedApiLib = getVisitedApiLib();
setPreference('api_lib', selectedApiLib);
}
// Activate code-tabs based on the cookie then override with query param.
const tab = getApiLibPreference();
['.tabs, .code-tabs'].forEach(
(selector) => activateTabs(selector, tab),
updateBtnURLs(tab)
);
}
export { initialize };