Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,125 @@
/**
* Panel is the basic element for navigation. Which defines Six basic
* functions: show, hide, beforeShow, beforeHide, init, and uninit for
* navigation. These functions are called by `SettingsService` during the
* navigation.
* Internal functions onShow, onHide, onBeforeShow, onBeforeHide, onInit,
* and onUninit are called respectively in the basic functions.
*
* @module Panel
*/
define(function() {
'use strict';
var _emptyFunc = function panel_emptyFunc() {};
/**
* @alias module:Panel
* @param {Object} options
* Options are used to override the internal functions.
* @returns {Panel}
*/
var Panel = function ctor_panel(options) {
var _initialized = false;
options = options || {};
options.onInit = options.onInit || _emptyFunc;
options.onUninit = options.onUninit || _emptyFunc;
options.onShow = options.onShow || _emptyFunc;
options.onHide = options.onHide || _emptyFunc;
options.onBeforeShow = options.onBeforeShow || _emptyFunc;
options.onBeforeHide = options.onBeforeHide || _emptyFunc;
return {
/**
* Get a value that indicates whether the panel has been initialized.
*
* @alias module:Panel#initialized
* @return {Boolean}
*/
get initialized() {
return _initialized;
},
/**
* Called at the first time when the beforeShow function is called.
*
* @alias module:Panel#init
* @param {HTMLElement} panel
* @param {Object} initOptions
*/
init: function(panel, initOptions) {
if (_initialized) {
return;
}
_initialized = true;
return options.onInit(panel, initOptions);
},
/**
* Called when cleanup.
*
* @alias module:Panel#uninit
*/
uninit: function() {
if (!_initialized) {
return;
}
_initialized = false;
options.onUninit();
},
/**
* Called when the panel is navigated into the viewport.
*
* @alias module:Panel#show
* @param {HTMLElement} panel
* @param {Object} showOptions
*/
show: function(panel, showOptions) {
// Initialize at the first call to show if necessary.
return Promise.resolve(this.init(panel, showOptions)).then(function() {
return options.onShow(panel, showOptions);
});
},
/**
* Called when the panel is navigated out of the viewport.
*
* @alias module:Panel#hide
*/
hide: function() {
return options.onHide();
},
/**
* Called when the panel is about to be navigated to into the viewport.
*
* @alias module:Panel#beforeShow
* @param {HTMLElement} panel
* @param {Object} beforeShowOptions
*/
beforeShow: function(panel, beforeShowOptions) {
// Initialize at the first call to beforeShow.
return Promise.resolve(this.init(panel, beforeShowOptions)).then(
function() {
return options.onBeforeShow(panel, beforeShowOptions);
});
},
/**
* Called when the panel is about to be navigated out of the viewport.
*
* @alias module:Panel#beforeHide
* @param {HTMLElement} panel
* @param {Object} beforeShowOptions
*/
beforeHide: function() {
return options.onBeforeHide();
}
};
};
return Panel;
});