zmp-react
Version:
Build full featured iOS & Android apps using ZMP & React
105 lines (83 loc) • 2.59 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.setTheme = exports.zmpinitEvents = exports.zmprouters = exports.zmpinit = exports.zmpevents = exports.zmpready = exports.theme = exports.zmp = void 0;
var _lite = _interopRequireDefault(require("zmp-core/lite"));
var _utils = require("./utils");
/* eslint-disable import/no-mutable-exports */
var zmp;
exports.zmp = zmp;
var zmpevents;
exports.zmpevents = zmpevents;
var theme = {};
exports.theme = theme;
var zmprouters = {
views: [],
tabs: [],
modals: null
};
exports.zmprouters = zmprouters;
var setTheme = function setTheme() {
if (!zmp) return;
theme.ios = zmp.theme === 'ios';
theme.md = zmp.theme === 'md';
theme.aurora = zmp.theme === 'aurora';
};
exports.setTheme = setTheme;
var cleanup = function cleanup() {
(0, _utils.unsetRouterIds)();
delete theme.ios;
delete theme.md;
delete theme.aurora;
zmprouters.views = [];
zmprouters.tabs = [];
zmprouters.modals = null;
};
var zmpinitEvents = function zmpinitEvents() {
exports.zmpevents = zmpevents = new _lite.default.Events();
};
exports.zmpinitEvents = zmpinitEvents;
var zmpinit = function zmpinit(rootEl, params, init) {
if (params === void 0) {
params = {};
}
if (init === void 0) {
init = true;
}
var zmpParams = (0, _utils.extend)({}, params, {
el: rootEl,
init: init
});
if (typeof params.store !== 'undefined') zmpParams.store = params.store;
if (!zmpParams.routes) zmpParams.routes = [];
if (zmpParams.userAgent && (zmpParams.theme === 'auto' || !zmpParams.theme)) {
var device = _lite.default.getDevice({
userAgent: zmpParams.userAgent
}, true);
theme.ios = !!device.ios;
theme.aurora = device.desktop && device.electron;
theme.md = !theme.ios && !theme.aurora;
} // eslint-disable-next-line
if (zmp && typeof window !== 'undefined') return; // eslint-disable-next-line
if (typeof window === 'undefined') cleanup();
var instance = new _lite.default(zmpParams);
exports.zmp = zmp = instance;
setTheme();
if (instance.initialized) {
exports.zmp = zmp = instance;
zmpevents.emit('ready', zmp);
} else {
instance.on('init', function () {
exports.zmp = zmp = instance;
zmpevents.emit('ready', zmp);
});
}
};
exports.zmpinit = zmpinit;
var zmpready = function zmpready(callback) {
if (!callback) return;
if (zmp && zmp.initialized) callback(zmp);else {
zmpevents.once('ready', callback);
}
};
exports.zmpready = zmpready;