Files
2025-02-26 14:49:25 +07:00

135 lines
4.1 KiB
JavaScript

//////////////////////////////////////////////////////////////////////////
// //
// This is a generated file. You can view the original //
// source in your browser if your browser supports source maps. //
// Source maps are supported by all recent versions of Chrome, Safari, //
// and Firefox, and by Internet Explorer 11. //
// //
//////////////////////////////////////////////////////////////////////////
(function () {
/* Imports */
var Meteor = Package.meteor.Meteor;
var global = Package.meteor.global;
var meteorEnv = Package.meteor.meteorEnv;
/* Package-scope variables */
var LaunchScreen;
(function(){
////////////////////////////////////////////////////////////////////////////
// //
// packages/launch-screen/mobile-launch-screen.js //
// //
////////////////////////////////////////////////////////////////////////////
//
// XXX This currently implements loading screens for mobile apps only,
// but in the future can be expanded to all apps.
var holdCount = 0;
var alreadyHidden = false;
LaunchScreen = {
hold: function () {
if (! Meteor.isCordova) {
return {
release: function () { /* noop */ }
};
}
if (alreadyHidden) {
throw new Error("Can't show launch screen once it's hidden");
}
holdCount++;
var released = false;
var release = function () {
if (! Meteor.isCordova)
return;
if (! released) {
released = true;
holdCount--;
if (holdCount === 0 &&
typeof navigator !== 'undefined' && navigator.splashscreen) {
alreadyHidden = true;
navigator.splashscreen.hide();
}
}
};
// Returns a launch screen handle with a release method
return {
release: release
};
}
};
////////////////////////////////////////////////////////////////////////////
}).call(this);
(function(){
////////////////////////////////////////////////////////////////////////////
// //
// packages/launch-screen/default-behavior.js //
// //
////////////////////////////////////////////////////////////////////////////
//
// Hold launch screen on app load. This reflects the fact that Meteor
// mobile apps that use this package always start with a launch screen
// visible. (see XXX comment at the top of package.js for more
// details)
var handle = LaunchScreen.hold();
var Template = Package.templating && Package.templating.Template;
Meteor.startup(function () {
if (! Template) {
handle.release();
} else if (Package['iron:router']) {
// XXX Instead of doing this here, this code should be in
// iron:router directly. Note that since we're in a
// `Meteor.startup` block it's ok that we don't have a
// weak dependency on iron:router in package.js.
Package['iron:router'].Router.onAfterAction(function () {
handle.release();
});
} else {
Template.body.onRendered(function () {
handle.release();
});
// In case `Template.body` never gets rendered (due to some bug),
// hide the launch screen after 6 seconds. This matches the
// observed timeout that Cordova apps on Android (but not iOS)
// have on hiding the launch screen (even if you don't call
// `navigator.splashscreen.hide()`)
setTimeout(function () {
handle.release();
}, 6000);
}
});
////////////////////////////////////////////////////////////////////////////
}).call(this);
/* Exports */
Package._define("launch-screen", {
LaunchScreen: LaunchScreen
});
})();