/*\ title: $:/core/modules/startup.js type: application/javascript module-type: startup Miscellaneous startup logic for both the client and server. \*/ (function(){ /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; // Export name and synchronous status exports.name = "startup"; exports.after = ["load-modules"]; exports.synchronous = true; // Set to `true` to enable performance instrumentation var PERFORMANCE_INSTRUMENTATION = false; exports.startup = function() { var modules,n,m,f; if($tw.browser) { $tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent)); } $tw.version = $tw.utils.extractVersionInfo(); // Set up the performance framework $tw.perf = new $tw.Performance(PERFORMANCE_INSTRUMENTATION); // Kick off the language manager and switcher $tw.language = new $tw.Language(); $tw.languageSwitcher = new $tw.PluginSwitcher({ wiki: $tw.wiki, pluginType: "language", controllerTitle: "$:/language", defaultPlugins: [ "$:/languages/en-US" ] }); // Kick off the theme manager $tw.themeManager = new $tw.PluginSwitcher({ wiki: $tw.wiki, pluginType: "theme", controllerTitle: "$:/theme", defaultPlugins: [ "$:/themes/tiddlywiki/snowwhite", "$:/themes/tiddlywiki/vanilla" ] }); // Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup $tw.wiki.clearTiddlerEventQueue(); // Set up the syncer object $tw.syncer = new $tw.Syncer({wiki: $tw.wiki}); // Host-specific startup if($tw.browser) { // Set up our beforeunload handler window.addEventListener("beforeunload",function(event) { var confirmationMessage = undefined; if($tw.syncer.isDirty()) { confirmationMessage = "You have unsaved changes in TiddlyWiki"; event.returnValue = confirmationMessage; // Gecko } return confirmationMessage; }); // Install the popup manager $tw.popup = new $tw.utils.Popup({ rootElement: document.body }); // Install the animator $tw.anim = new $tw.utils.Animator(); } }; })();