Bruno Charest 643a73e0f5
All checks were successful
CI / lint (push) Successful in 13s
CI / security (push) Successful in 8s
CI / test (push) Successful in 16s
CI / build (push) Successful in 3s
fix: strip read_file line numbers accidentally injected into JS files
2026-05-28 16:40:14 -04:00

59 lines
1.4 KiB
JavaScript

/* ObsiGate — Shared mutable application state.
Use state.xxx to read/write any value. ES module imports are read-only,
so we export a single mutable object instead of individual let bindings. */
export const state = {
APP_VERSION: "1.5.0",
// Core navigation
currentVault: null,
currentPath: null,
allVaults: [],
selectedContextVault: "all",
// Search
searchTimeout: null,
searchAbortController: null,
advancedSearchOffset: 0,
advancedSearchTotal: 0,
advancedSearchSort: "relevance",
advancedSearchLastQuery: "",
suggestAbortController: null,
dropdownActiveIndex: -1,
dropdownItems: [],
currentSearchId: 0,
selectedTags: [],
searchCaseSensitive: false,
searchWholeWord: false,
searchRegex: false,
searchFilterVisible: false,
// Search constants
SEARCH_HISTORY_KEY: "obsigate_search_history",
MAX_HISTORY_ENTRIES: 50,
SUGGEST_DEBOUNCE_MS: 150,
ADVANCED_SEARCH_LIMIT: 50,
MIN_SEARCH_LENGTH: 2,
SEARCH_TIMEOUT_MS: 30000,
// Viewer state
showingSource: false,
cachedRawSource: null,
editorView: null,
editorVault: null,
editorPath: null,
fallbackEditorEl: null,
_iconDebounceTimer: null,
// Outline/TOC
outlineObserver: null,
activeHeadingId: null,
headingsCache: [],
rightSidebarVisible: true,
rightSidebarWidth: 280,
// Sidebar
sidebarFilterCaseSensitive: false,
activeSidebarTab: "vaults",
filterDebounce: null,
vaultSettings: {},
};