67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.parseTabBar = exports.parseWindowOptions = void 0;
|
|
const shared_1 = require("@vue/shared");
|
|
const pages_1 = require("../pages");
|
|
function trimJson(json) {
|
|
delete json.maxWidth;
|
|
delete json.topWindow;
|
|
delete json.leftWindow;
|
|
delete json.rightWindow;
|
|
if (json.tabBar) {
|
|
delete json.tabBar.matchMedia;
|
|
}
|
|
return json;
|
|
}
|
|
function convert(to, from, map) {
|
|
Object.keys(map).forEach((key) => {
|
|
if ((0, shared_1.hasOwn)(from, map[key])) {
|
|
to[key] = from[map[key]];
|
|
}
|
|
});
|
|
return to;
|
|
}
|
|
function parseWindowOptions(style, platform, windowOptionsMap) {
|
|
if (!style) {
|
|
return {};
|
|
}
|
|
const platformStyle = style[platform] || {};
|
|
(0, pages_1.removePlatformStyle)(trimJson(style));
|
|
const res = {};
|
|
if (windowOptionsMap) {
|
|
return (0, shared_1.extend)(convert(res, style, windowOptionsMap), platformStyle);
|
|
}
|
|
return (0, shared_1.extend)(res, style, platformStyle);
|
|
}
|
|
exports.parseWindowOptions = parseWindowOptions;
|
|
function trimTabBarJson(tabBar) {
|
|
;
|
|
[
|
|
'fontSize',
|
|
'height',
|
|
'iconWidth',
|
|
'midButton',
|
|
'selectedIndex',
|
|
'spacing',
|
|
].forEach((name) => {
|
|
delete tabBar[name];
|
|
});
|
|
return tabBar;
|
|
}
|
|
function parseTabBar(tabBar, platform, tabBarOptionsMap, tabBarItemOptionsMap) {
|
|
const platformStyle = tabBar[platform] || {};
|
|
(0, pages_1.removePlatformStyle)(trimTabBarJson(tabBar));
|
|
const res = {};
|
|
if (tabBarOptionsMap) {
|
|
if (tabBarItemOptionsMap && tabBar.list) {
|
|
tabBar.list = tabBar.list.map((item) => {
|
|
return convert({}, item, tabBarItemOptionsMap);
|
|
});
|
|
}
|
|
convert(res, tabBar, tabBarOptionsMap);
|
|
return (0, shared_1.extend)(res, platformStyle);
|
|
}
|
|
return (0, shared_1.extend)(res, tabBar, platformStyle);
|
|
}
|
|
exports.parseTabBar = parseTabBar;
|