(function () { 'use strict'; var STANDARD_LINKS = [ { id: 'home', href: 'index.web.html', label: '设计首页', show: 'always' }, { id: 'member', href: 'member.web.html', label: '订阅', show: 'authed', elId: 'auth_member' }, { id: 'admin', href: 'admin/index.html', label: '管理', show: 'admin', elId: 'auth_admin' }, ]; function esc(s) { if (s == null) return ''; return String(s).replace(/&/g, '&').replace(/' + '登录' + '注册' + '' + '' + ''; } function renderLinks(links, active) { return links.map(function (lnk) { if (lnk.id === 'member' || lnk.id === 'admin') return ''; var cls = 'soon-portal-topbar__link' + (active === lnk.id ? ' is-active' : ''); return '' + esc(lnk.label) + ''; }).join(''); } function toolsBlock(lang, linksHtml) { return '
' + lang + (linksHtml ? '' : '') + '
'; } /** * @param {object} opts * @param {string} [opts.variant] standard | auth | design * @param {string} [opts.active] home | member * @param {string} [opts.extraClass] */ function html(opts) { opts = opts || {}; var base = opts.assetBase || '../'; var variant = opts.variant || 'standard'; var extraCls = opts.extraClass ? ' ' + opts.extraClass : ''; if (variant === 'auth') { return '
' + '
' + 'SoonDesign
' + '
' + toolsBlock('', '返回首页') + '
'; } if (variant === 'design') { return '
' + '
' + 'SoonDesign
' + '
' + toolsBlock('', '返回首页') + authBlock() + '
'; } var active = opts.active || ''; var showLang = opts.showLanguage !== false; var links = opts.links || STANDARD_LINKS; var lang = showLang ? '' : ''; return '
' + '
' + 'SoonDesign
' + '
' + toolsBlock(lang, renderLinks(links, active)) + authBlock() + '
'; } function mount(selector, opts) { var el = typeof selector === 'string' ? document.querySelector(selector) : selector; if (!el) return; el.innerHTML = html(opts); if (opts && opts.initLang !== false) { var sel = document.getElementById('language_select'); if (sel) { sel.value = localStorage.getItem('lang') || 'zh'; sel.onchange = function () { localStorage.setItem('lang', sel.value); }; } } } window.SoonPortalTopbar = { html: html, mount: mount }; })();