import utils from "./utils.js"; import appContext from "./app_context.js"; import server from "./server.js"; import libraryLoader from "./library_loader.js"; import ws from "./ws.js"; import protectedSessionHolder from "./protected_session_holder.js"; import froca from "./froca.js"; function setupGlobs() { window.glob.PROFILING_LOG = false; window.glob.isDesktop = utils.isDesktop; window.glob.isMobile = utils.isMobile; window.glob.getComponentByEl = el => appContext.getComponentByEl(el); window.glob.getHeaders = server.getHeaders; // required for ESLint plugin and CKEditor window.glob.getActiveTabNote = () => appContext.tabManager.getActiveTabNote(); window.glob.requireLibrary = libraryLoader.requireLibrary; window.glob.ESLINT = libraryLoader.ESLINT; window.glob.appContext = appContext; // for debugging window.glob.froca = froca; window.glob.treeCache = froca; // compatibility for CKEditor builds for a while // for CKEditor integration (button on block toolbar) window.glob.importMarkdownInline = async () => { const dialog = await import("../dialogs/markdown_import.js"); dialog.importMarkdownInline(); }; window.glob.SEARCH_HELP_TEXT = ` Search tips - also see

`; window.onerror = function (msg, url, lineNo, columnNo, error) { const string = msg.toLowerCase(); let message = "Uncaught error: "; if (string.includes("script error")) { message += 'No details available'; } else { message += [ 'Message: ' + msg, 'URL: ' + url, 'Line: ' + lineNo, 'Column: ' + columnNo, 'Error object: ' + JSON.stringify(error), 'Stack: ' + (error && error.stack) ].join(', '); } ws.logError(message); return false; }; protectedSessionHolder.setProtectedSessionId(null); for (const appCssNoteId of glob.appCssNoteIds || []) { libraryLoader.requireCss(`api/notes/download/${appCssNoteId}`); } utils.initHelpButtons($(window)); $("body").on("click", "a.external", function () { window.open($(this).attr("href"), '_blank'); return false; }); } export default { setupGlobs }