release: bump version to 0.30.0

This commit is contained in:
linkong
2026-04-21 12:28:04 +08:00
parent 2b0d4cfc49
commit 0f89372d71
17 changed files with 1132 additions and 64 deletions

View File

@@ -9,6 +9,11 @@ let statusQueue = [];
let statusBusy = false;
let loadingActive = false;
let loadingLockedWidth = 0;
let pendingLoadingMessage = "";
function createStatusEntry(message, type = "info") {
return { message, type };
}
function getElement(id) {
return document.getElementById(id);
@@ -113,7 +118,15 @@ function startTransientStatus(message, type = "info") {
// Show status message
export function showStatusMessage(message, type = "info") {
statusQueue.push({ message, type });
if (loadingActive) {
statusQueue.unshift(createStatusEntry(message, type));
return;
}
startTransientStatus(message, type);
}
export function queueStatusMessage(message, type = "info") {
statusQueue.push(createStatusEntry(message, type));
processStatusQueue();
}
@@ -179,7 +192,12 @@ export function setLoading(loading) {
loadingActive = true;
statusBusy = false;
clearLoadingWidthLock(statusEl);
buildStatusContent(statusEl, "正在加载...", "loading");
buildStatusContent(
statusEl,
pendingLoadingMessage || "正在加载...",
"loading",
);
pendingLoadingMessage = "";
statusEl.className = `${STATUS_BASE_CLASS} loading`;
setElementDisplay(statusEl, true, "inline-flex");
statusEl.offsetHeight;
@@ -188,6 +206,7 @@ export function setLoading(loading) {
updateLoadingWidthLock(statusEl);
});
} else {
pendingLoadingMessage = "";
if (!statusEl.classList.contains("loading")) {
loadingActive = false;
clearLoadingWidthLock(statusEl);
@@ -205,7 +224,10 @@ export function setLoading(loading) {
export function setLoadingMessage(title) {
const statusEl = getElement("status-message");
if (!statusEl || !statusEl.classList.contains("loading")) return;
if (!statusEl || !statusEl.classList.contains("loading")) {
pendingLoadingMessage = title;
return;
}
const textEl = statusEl.querySelector(".earth-status-text");
if (textEl) {
textEl.textContent = title;
@@ -255,6 +277,7 @@ export function clearUiState() {
statusQueue = [];
statusBusy = false;
loadingActive = false;
pendingLoadingMessage = "";
const statusEl = getElement("status-message");
if (statusEl) {