(function attachSidepanelIcloudManager(globalScope) { function createIcloudManager(context = {}) { const { dom, helpers, runtime, } = context; let refreshQueued = false; let renderedAliases = []; let selectedEmails = new Set(); let searchTerm = ''; let filterMode = 'all'; function normalizeIcloudSearchText(value) { return String(value || '').trim().toLowerCase(); } function getFilteredIcloudAliases(aliases = renderedAliases) { const normalizedSearchTerm = normalizeIcloudSearchText(searchTerm); return (Array.isArray(aliases) ? aliases : []).filter((alias) => { const matchesFilter = (() => { switch (filterMode) { case 'active': return Boolean(alias.active); case 'used': return Boolean(alias.used); case 'unused': return !alias.used; case 'preserved': return Boolean(alias.preserved); default: return true; } })(); if (!matchesFilter) return false; if (!normalizedSearchTerm) return true; const haystack = [ alias.email, alias.label, alias.note, alias.used ? '已用 used' : '未用 unused', alias.active ? '可用 active' : '不可用 inactive', alias.preserved ? '保留 preserved' : '', ].join(' ').toLowerCase(); return haystack.includes(normalizedSearchTerm); }); } function pruneIcloudSelection(aliases = renderedAliases) { const existing = new Set((Array.isArray(aliases) ? aliases : []).map((alias) => alias.email)); selectedEmails = new Set([...selectedEmails].filter((email) => existing.has(email))); } function updateIcloudBulkUI(visibleAliases = getFilteredIcloudAliases()) { if (!dom.checkboxIcloudSelectAll || !dom.icloudSelectionSummary) { return; } const visibleEmails = visibleAliases.map((alias) => alias.email); const selectedVisibleCount = visibleEmails.filter((email) => selectedEmails.has(email)).length; const hasVisible = visibleEmails.length > 0; dom.checkboxIcloudSelectAll.checked = hasVisible && selectedVisibleCount === visibleEmails.length; dom.checkboxIcloudSelectAll.indeterminate = selectedVisibleCount > 0 && selectedVisibleCount < visibleEmails.length; dom.checkboxIcloudSelectAll.disabled = !hasVisible; dom.icloudSelectionSummary.textContent = `已选 ${selectedEmails.size} 个(当前显示 ${visibleEmails.length} 个)`; const hasSelection = selectedEmails.size > 0; if (dom.btnIcloudBulkUsed) dom.btnIcloudBulkUsed.disabled = !hasSelection; if (dom.btnIcloudBulkUnused) dom.btnIcloudBulkUnused.disabled = !hasSelection; if (dom.btnIcloudBulkPreserve) dom.btnIcloudBulkPreserve.disabled = !hasSelection; if (dom.btnIcloudBulkUnpreserve) dom.btnIcloudBulkUnpreserve.disabled = !hasSelection; if (dom.btnIcloudBulkDelete) dom.btnIcloudBulkDelete.disabled = !hasSelection; } function setIcloudLoadingState(loading, summary = '') { if (dom.btnIcloudRefresh) dom.btnIcloudRefresh.disabled = loading; if (dom.btnIcloudDeleteUsed) dom.btnIcloudDeleteUsed.disabled = loading; if (dom.btnIcloudLoginDone) dom.btnIcloudLoginDone.disabled = loading; if (dom.inputIcloudSearch) dom.inputIcloudSearch.disabled = loading; if (dom.selectIcloudFilter) dom.selectIcloudFilter.disabled = loading; if (dom.checkboxIcloudSelectAll) dom.checkboxIcloudSelectAll.disabled = loading || getFilteredIcloudAliases().length === 0; if (dom.btnIcloudBulkUsed) dom.btnIcloudBulkUsed.disabled = loading || selectedEmails.size === 0; if (dom.btnIcloudBulkUnused) dom.btnIcloudBulkUnused.disabled = loading || selectedEmails.size === 0; if (dom.btnIcloudBulkPreserve) dom.btnIcloudBulkPreserve.disabled = loading || selectedEmails.size === 0; if (dom.btnIcloudBulkUnpreserve) dom.btnIcloudBulkUnpreserve.disabled = loading || selectedEmails.size === 0; if (dom.btnIcloudBulkDelete) dom.btnIcloudBulkDelete.disabled = loading || selectedEmails.size === 0; if (summary && dom.icloudSummary) dom.icloudSummary.textContent = summary; } function showIcloudLoginHelp(payload = {}) { if (!dom.icloudLoginHelp) return; const loginUrl = String(payload.loginUrl || '').trim(); let host = 'icloud.com.cn / icloud.com'; if (loginUrl) { try { host = new URL(loginUrl).host; } catch { host = loginUrl; } } if (dom.icloudLoginHelpTitle) dom.icloudLoginHelpTitle.textContent = '需要登录 iCloud'; if (dom.icloudLoginHelpText) dom.icloudLoginHelpText.textContent = `我已经为你打开 ${host}。请在那个页面完成登录,然后回到这里点击“我已登录”。`; dom.icloudLoginHelp.style.display = 'flex'; } function hideIcloudLoginHelp() { if (dom.icloudLoginHelp) { dom.icloudLoginHelp.style.display = 'none'; } } function renderIcloudAliases(aliases = []) { if (!dom.icloudList || !dom.icloudSummary) return; renderedAliases = Array.isArray(aliases) ? aliases : []; pruneIcloudSelection(renderedAliases); dom.icloudList.innerHTML = ''; if (!aliases.length) { selectedEmails.clear(); dom.icloudList.innerHTML = '