(function () {
var VALID_TABS = ['cp', 'brother', 'sister'];
var LEVEL_IMAGES = {
1: './assets/level-1@4x.png',
2: './assets/level-2@4x.png',
3: './assets/level-3@4x.png',
4: './assets/level-4@4x.png',
5: './assets/level-5@4x.png',
};
var page = document.getElementById('page');
var contentPanel = document.getElementById('contentPanel');
var backButton = document.getElementById('backButton');
var tabButtons = Array.prototype.slice.call(
document.querySelectorAll('.tab-button[data-tab]')
);
var state = {
activeTab: normalizeTab(readParam('tab')) || 'cp',
tabs: {
cp: [normalizeLevel(readParam('level')) || 1],
brother: [2, 2],
sister: [4, 5],
},
};
function readParam(name) {
var params = new URLSearchParams(window.location.search || '');
return params.get(name);
}
function normalizeTab(value) {
var tab = String(value || '')
.trim()
.toLowerCase();
return VALID_TABS.indexOf(tab) >= 0 ? tab : '';
}
function normalizeLevel(value) {
var level = Number(value);
return Number.isFinite(level) && level >= 1 && level <= 5
? Math.floor(level)
: 0;
}
function t(key, fallback) {
if (window.HyAppI18n && window.HyAppI18n.t) {
return window.HyAppI18n.t(key, fallback);
}
return fallback || key;
}
function escapeHTML(value) {
return String(value == null ? '' : value)
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
function setActiveTab(tab) {
var nextTab = normalizeTab(tab) || 'cp';
state.activeTab = nextTab;
page.setAttribute('data-tab', nextTab);
tabButtons.forEach(function (button) {
button.classList.toggle(
'is-active',
button.getAttribute('data-tab') === nextTab
);
});
render();
}
function cardHTML(level, index) {
var safeLevel = normalizeLevel(level) || 1;
var label = t('cpSpace.levelCard', 'Best friend level {level}').replace(
'{level}',
String(safeLevel)
);
return [
'',
'',
'