mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-30 12:00:28 +00:00
d6c5e51501
Cecily and Zoomin story views use a document.body that is smaller than the document.documentElement. We were just clearing the popups on clicks on the document.body Clicks on the document element (ie, on the background of the page) were not being trapped, meaning that you couldn’t dismiss a popup.
88 lines
2.4 KiB
JavaScript
Executable File
88 lines
2.4 KiB
JavaScript
Executable File
/*\
|
|
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;
|
|
|
|
var widget = require("$:/core/modules/widgets/widget.js");
|
|
|
|
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();
|
|
// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers
|
|
if($tw.browser) {
|
|
$tw.rootWidget = new widget.widget({
|
|
type: "widget",
|
|
children: []
|
|
},{
|
|
wiki: $tw.wiki,
|
|
document: document
|
|
});
|
|
}
|
|
// Find a working syncadaptor
|
|
$tw.syncadaptor = undefined;
|
|
$tw.modules.forEachModuleOfType("syncadaptor",function(title,module) {
|
|
if(!$tw.syncadaptor && module.adaptorClass) {
|
|
$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});
|
|
}
|
|
});
|
|
// Set up the syncer object if we've got a syncadaptor
|
|
if($tw.syncadaptor) {
|
|
$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});
|
|
}
|
|
// Setup the saver handler
|
|
$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});
|
|
// Host-specific startup
|
|
if($tw.browser) {
|
|
// Install the popup manager
|
|
$tw.popup = new $tw.utils.Popup();
|
|
// Install the animator
|
|
$tw.anim = new $tw.utils.Animator();
|
|
}
|
|
};
|
|
|
|
})();
|