This commit is contained in:
InsanusMokrassar
2026-05-23 11:30:30 +00:00
parent 55907d39f9
commit 80a0145cb4
6686 changed files with 469404 additions and 412054 deletions

View File

@@ -0,0 +1,86 @@
/*
* Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
/** When Dokka is viewed via iframe, local storage could be inaccessible (see https://github.com/Kotlin/dokka/issues/3323)
* This is a wrapper around local storage to prevent errors in such cases
* */
const safeLocalStorage = (() => {
let isLocalStorageAvailable = false;
try {
const testKey = '__testLocalStorageKey__';
localStorage.setItem(testKey, testKey);
localStorage.removeItem(testKey);
isLocalStorageAvailable = true;
} catch (e) {
console.error('Local storage is not available', e);
}
return {
getItem: (key) => {
if (!isLocalStorageAvailable) {
return null;
}
return localStorage.getItem(key);
},
setItem: (key, value) => {
if (!isLocalStorageAvailable) {
return;
}
localStorage.setItem(key, value);
},
removeItem: (key) => {
if (!isLocalStorageAvailable) {
return;
}
localStorage.removeItem(key);
},
getKeys: () => {
if (!isLocalStorageAvailable) {
return [];
}
return Object.keys(localStorage);
},
};
})();
/** When Dokka is viewed via iframe, session storage could be inaccessible (see https://github.com/Kotlin/dokka/issues/3323)
* This is a wrapper around session storage to prevent errors in such cases
* */
const safeSessionStorage = (() => {
let isSessionStorageAvailable = false;
try {
const testKey = '__testSessionStorageKey__';
sessionStorage.setItem(testKey, testKey);
sessionStorage.removeItem(testKey);
isSessionStorageAvailable = true;
} catch (e) {
console.error('Session storage is not available', e);
}
return {
getItem: (key) => {
if (!isSessionStorageAvailable) {
return null;
}
return sessionStorage.getItem(key);
},
setItem: (key, value) => {
if (!isSessionStorageAvailable) {
return;
}
sessionStorage.setItem(key, value);
},
removeItem: (key) => {
if (!isSessionStorageAvailable) {
return;
}
sessionStorage.removeItem(key);
},
getKeys: () => {
if (!isSessionStorageAvailable) {
return [];
}
return Object.keys(sessionStorage);
},
};
})();