@arcblock/did-connect-service 4.1.42 → 4.1.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/_generated/asset-bytes.js +1 -1
  2. package/dist/_generated/asset-manifest.js +3 -3
  3. package/dist/assets/{admin-core.d42d34ce.js → admin-core.6e3d6ce9.js} +22 -19
  4. package/dist/assets/{admin-extra.da2c9785.js → admin-extra.82aff2c7.js} +1 -1
  5. package/dist/assets/{admin.d99b416e.css → admin.314473a7.css} +3 -1
  6. package/dist/handlers/auth-handler.d.ts.map +1 -1
  7. package/dist/handlers/auth-handler.js +2 -0
  8. package/dist/handlers/auth-handler.js.map +1 -1
  9. package/dist/handlers/branding-handler.d.ts.map +1 -1
  10. package/dist/handlers/branding-handler.js +5 -41
  11. package/dist/handlers/branding-handler.js.map +1 -1
  12. package/dist/handlers/did-connect-handler.d.ts.map +1 -1
  13. package/dist/handlers/did-connect-handler.js +2 -0
  14. package/dist/handlers/did-connect-handler.js.map +1 -1
  15. package/dist/handlers/email-login-handler.d.ts.map +1 -1
  16. package/dist/handlers/email-login-handler.js +1 -0
  17. package/dist/handlers/email-login-handler.js.map +1 -1
  18. package/dist/handlers/oauth-handler.d.ts.map +1 -1
  19. package/dist/handlers/oauth-handler.js +4 -0
  20. package/dist/handlers/oauth-handler.js.map +1 -1
  21. package/dist/handlers/passkey-handler.d.ts.map +1 -1
  22. package/dist/handlers/passkey-handler.js +6 -2
  23. package/dist/handlers/passkey-handler.js.map +1 -1
  24. package/dist/handlers/team-handler.d.ts.map +1 -1
  25. package/dist/handlers/team-handler.js +1 -0
  26. package/dist/handlers/team-handler.js.map +1 -1
  27. package/dist/http/security-headers.d.ts +38 -0
  28. package/dist/http/security-headers.d.ts.map +1 -0
  29. package/dist/http/security-headers.js +67 -0
  30. package/dist/http/security-headers.js.map +1 -0
  31. package/dist/locale.d.ts +4 -1
  32. package/dist/locale.d.ts.map +1 -1
  33. package/dist/locale.js +11 -5
  34. package/dist/locale.js.map +1 -1
  35. package/dist/pages/admin/i18n.d.ts.map +1 -1
  36. package/dist/pages/admin/i18n.js +0 -4
  37. package/dist/pages/admin/i18n.js.map +1 -1
  38. package/dist/pages/admin/index.d.ts.map +1 -1
  39. package/dist/pages/admin/index.js +60 -26
  40. package/dist/pages/admin/index.js.map +1 -1
  41. package/dist/pages/admin/scripts/utils.d.ts +1 -1
  42. package/dist/pages/admin/scripts/utils.d.ts.map +1 -1
  43. package/dist/pages/admin/scripts/utils.js +21 -0
  44. package/dist/pages/admin/scripts/utils.js.map +1 -1
  45. package/dist/pages/admin/styles.d.ts +1 -1
  46. package/dist/pages/admin/styles.d.ts.map +1 -1
  47. package/dist/pages/admin/styles.js +3 -1
  48. package/dist/pages/admin/styles.js.map +1 -1
  49. package/dist/pages/admin/tab-members.d.ts +1 -1
  50. package/dist/pages/admin/tab-members.d.ts.map +1 -1
  51. package/dist/pages/admin/tab-members.js +1 -1
  52. package/dist/pages/admin/tab-profile-accounts.d.ts.map +1 -1
  53. package/dist/pages/admin/tab-profile-accounts.js +1 -19
  54. package/dist/pages/admin/tab-profile-accounts.js.map +1 -1
  55. package/dist/store/d1-store.d.ts +12 -1
  56. package/dist/store/d1-store.d.ts.map +1 -1
  57. package/dist/store/d1-store.js +69 -12
  58. package/dist/store/d1-store.js.map +1 -1
  59. package/dist/theme-utils.d.ts +20 -0
  60. package/dist/theme-utils.d.ts.map +1 -1
  61. package/dist/theme-utils.js +62 -0
  62. package/dist/theme-utils.js.map +1 -1
  63. package/dist/types.d.ts +2 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/migrations/0022_connected_account_last_login_domain.sql +6 -0
  66. package/package.json +3 -3
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { assetUrl } from "../../asset-registry.js";
8
8
  import { DEFAULT_LANGUAGE_ROWS, resolvePageLocale } from "../../locale.js";
9
+ import { LEGACY_THEME_PREFER_KEY, WEB_MODE_STORAGE_KEY } from "../../theme-utils.js";
9
10
  import { adminT, getClientI18nScript } from "./i18n.js";
10
11
  // Client-side scripts (TOAST/UTILS/API/DIALOG/ROUTER + all tab *_SCRIPT consts) are
11
12
  // no longer inlined here — they ship as external cacheable bundles (admin-core.js +
@@ -21,13 +22,13 @@ import { invitationsTabHtml } from "./tab-invitations.js";
21
22
  import { membersTabHtml } from "./tab-members.js";
22
23
  import { profileTabHtml } from "./tab-profile.js";
23
24
  import { settingsTabHtml } from "./tab-settings.js";
24
- const ICON_GLOBE = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93c0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41c0 2.08-.8 3.97-2.1 5.39"/></svg>`;
25
+ const ICON_GLOBE = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg>`;
25
26
  const ICON_MENU = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"/></svg>`;
26
27
  const ICON_CLOSE = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>`;
27
28
  const ICON_CHECK = `<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="M5 13l4 4L19 7" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
28
- const ICON_MOON = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M12 3a9 9 0 1 0 9 9c0-.46-.04-.92-.1-1.36a5.389 5.389 0 0 1-4.4 2.26a5.403 5.403 0 0 1-3.14-9.8c-.44-.06-.9-.1-1.36-.1z"/></svg>`;
29
- const ICON_SUN = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5s5-2.24 5-5s-2.24-5-5-5M2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1m18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1m0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1M5.99 4.58a.996.996 0 0 0-1.41 0a.996.996 0 0 0 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41zm12.37 12.37a.996.996 0 0 0-1.41 0a.996.996 0 0 0 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0a.996.996 0 0 0 0-1.41zm1.06-10.96a.996.996 0 0 0 0-1.41a.996.996 0 0 0-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0zM7.05 18.36a.996.996 0 0 0 0-1.41a.996.996 0 0 0-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0z"/></svg>`;
30
- const ICON_MONITOR = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v2H8v2h8v-2h-2v-2h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m0 14H3V4h18z"/></svg>`;
29
+ // lucide sun/moon — same set as the arc AUP header so both toggles read alike
30
+ const ICON_MOON = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"/></svg>`;
31
+ const ICON_SUN = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/></svg>`;
31
32
  const MEMBERS_EXTRA_STYLES = /* css */ `
32
33
  /* Action cell: relative anchor for the absolute menu */
33
34
  .action-cell { position: relative; width: 40px; text-align: center; }
@@ -46,12 +47,13 @@ export function buildAdminPageHTML(data) {
46
47
  const externalTabs = data.externalTabs || [];
47
48
  const defaultTab = isUserPage ? "profile" : isAdmin ? "members" : isInstance ? "members" : "profile";
48
49
  const dataThemeAttr = theme === "light" ? ' data-theme="light"' : theme === "auto" ? ' data-theme="auto"' : "";
49
- // Theme icon — click cycles dark → light → auto
50
- const themeIcon = theme === "light" ? ICON_SUN : theme === "auto" ? ICON_MONITOR : ICON_MOON;
51
- const themeTitle = theme === "light" ? t("header.themeLight") : theme === "auto" ? t("header.themeAuto") : t("header.themeDark");
50
+ // Theme icon shows the effective theme (sun = light, moon = dark); click flips light ↔ dark.
51
+ // auto is not a clickable state — the client script resolves it against the OS before paint.
52
+ const themeIcon = theme === "light" ? ICON_SUN : ICON_MOON;
53
+ const themeTitle = theme === "light" ? t("header.themeLight") : t("header.themeDark");
52
54
  // Pre-render theme icons/titles as JSON for client-side use (avoids esbuild variable renaming issues)
53
- const themeIconsJSON = JSON.stringify({ dark: ICON_MOON, light: ICON_SUN, auto: ICON_MONITOR });
54
- const themeTitlesJSON = JSON.stringify({ dark: t("header.themeDark"), light: t("header.themeLight"), auto: t("header.themeAuto") });
55
+ const themeIconsJSON = JSON.stringify({ dark: ICON_MOON, light: ICON_SUN });
56
+ const themeTitlesJSON = JSON.stringify({ dark: t("header.themeDark"), light: t("header.themeLight") });
55
57
  // Language popover items — from instance config, fallback to en+zh self-names
56
58
  const configuredLangs = data.languages && data.languages.length > 0
57
59
  ? data.languages
@@ -242,7 +244,7 @@ function signOut() {
242
244
  location.href = "/.well-known/service/api/did/logout?return_to=" + encodeURIComponent(location.pathname + location.search);
243
245
  }
244
246
 
245
- // ─── Theme: click to cycle dark → light → auto (no reload) ──────────
247
+ // ─── Theme: click to flip light ↔ dark (no reload) ──────────
246
248
  var __currentTheme = '${theme}';
247
249
 
248
250
  function resolveEffectiveTheme(val) {
@@ -265,21 +267,50 @@ function applyThemeToDOM(theme) {
265
267
  }
266
268
  var btn = document.getElementById('theme-btn');
267
269
  if (btn) {
268
- btn.innerHTML = __themeIcons[theme] || '';
269
- btn.title = __themeTitles[theme] || '';
270
+ btn.innerHTML = __themeIcons[effective] || '';
271
+ btn.title = __themeTitles[effective] || '';
270
272
  }
271
273
  }
272
274
 
275
+ var MODE_KEY = '${WEB_MODE_STORAGE_KEY}';
276
+ var LEGACY_KEY = '${LEGACY_THEME_PREFER_KEY}';
277
+
278
+ function readSharedMode() {
279
+ try {
280
+ var mode = localStorage.getItem(MODE_KEY);
281
+ if (mode === 'light' || mode === 'dark' || mode === 'auto') return mode;
282
+ var legacy = localStorage.getItem(LEGACY_KEY);
283
+ if (legacy === 'light' || legacy === 'dark') return legacy;
284
+ if (legacy === 'system') return 'auto';
285
+ } catch (e) {}
286
+ return null;
287
+ }
288
+
289
+ function clearLegacyThemeKeys() {
290
+ try {
291
+ localStorage.removeItem(LEGACY_KEY);
292
+ sessionStorage.removeItem(LEGACY_KEY);
293
+ sessionStorage.removeItem(MODE_KEY);
294
+ } catch (e) {}
295
+ }
296
+
297
+ function persistWebMode(next) {
298
+ document.cookie = 'did_connect_theme=' + next + ';path=/;max-age=31536000';
299
+ try { localStorage.setItem(MODE_KEY, next); } catch (e) {}
300
+ clearLegacyThemeKeys();
301
+ if (next === 'light' || next === 'dark') {
302
+ document.cookie = 'arc_mode=' + next + ';path=/;max-age=31536000;SameSite=Lax';
303
+ } else {
304
+ document.cookie = 'arc_mode=;path=/;max-age=0;SameSite=Lax';
305
+ }
306
+ }
307
+
308
+ // Two states like the arc header. From auto, flip the theme the user is actually
309
+ // seeing — every click must produce a visible change.
273
310
  function switchTheme() {
274
- var next = __currentTheme === 'dark' ? 'light' : __currentTheme === 'light' ? 'auto' : 'dark';
311
+ var next = resolveEffectiveTheme(__currentTheme) === 'dark' ? 'light' : 'dark';
275
312
  __currentTheme = next;
276
- document.cookie = 'did_connect_theme=' + next + ';path=/;max-age=31536000';
277
- // Sync with @blocklet/theme storage key so Payment Kit header and iframe content stay in sync
278
- try {
279
- var btp = next === 'auto' ? 'system' : next;
280
- localStorage.setItem('blocklet_theme_prefer', btp);
281
- sessionStorage.setItem('blocklet_theme_prefer', btp);
282
- } catch(e) {}
313
+ persistWebMode(next);
283
314
  applyThemeToDOM(next);
284
315
  }
285
316
 
@@ -288,13 +319,16 @@ window.matchMedia('(prefers-color-scheme: light)').addEventListener('change', fu
288
319
  if (__currentTheme === 'auto') applyThemeToDOM('auto');
289
320
  });
290
321
 
291
- // Apply on load + sync to @blocklet/theme storage
322
+ // An existing web-mode (or a one-time legacy key) wins over the server-rendered
323
+ // cookie. Do not write the server theme into web-mode — that clobbers arc.
324
+ var sharedMode = readSharedMode();
325
+ if (sharedMode) {
326
+ if (sharedMode !== __currentTheme) __currentTheme = sharedMode;
327
+ persistWebMode(sharedMode);
328
+ } else {
329
+ clearLegacyThemeKeys();
330
+ }
292
331
  applyThemeToDOM(__currentTheme);
293
- try {
294
- var _btp = __currentTheme === 'auto' ? 'system' : __currentTheme;
295
- localStorage.setItem('blocklet_theme_prefer', _btp);
296
- sessionStorage.setItem('blocklet_theme_prefer', _btp);
297
- } catch(e) {}
298
332
 
299
333
  // ─── Language popover ────────────────────────────────────────────────
300
334
  function applyLocale(lang) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pages/admin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pages/admin/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Utility functions — time formatting, clipboard, DID truncation, initials.
3
3
  */
4
- export declare const UTILS_SCRIPT = "\nfunction relativeTime(iso) {\n var diff = Date.now() - new Date(iso).getTime();\n var abs = Math.abs(diff);\n var future = diff < 0;\n var s = Math.floor(abs / 1000);\n var m = Math.floor(s / 60);\n var h = Math.floor(m / 60);\n var d = Math.floor(h / 24);\n var label;\n if (d > 0) label = __t(\"time.dh\", { d: d, h: (h % 24) });\n else if (h > 0) label = __t(\"time.hm\", { h: h, m: (m % 60) });\n else if (m > 0) label = __t(\"time.min\", { m: m });\n else return __t(\"time.justNow\");\n return future ? __t(\"time.in\", { label: label }) : __t(\"time.ago\", { label: label });\n}\n\nfunction absoluteTime(iso) {\n var d = new Date(iso);\n var pad = function(n) { return n < 10 ? \"0\" + n : \"\" + n; };\n return d.getFullYear() + \"-\" + pad(d.getMonth() + 1) + \"-\" + pad(d.getDate())\n + \" \" + pad(d.getHours()) + \":\" + pad(d.getMinutes()) + \":\" + pad(d.getSeconds());\n}\n\nfunction copyToClipboard(text) {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(text).then(function() {\n showToast(__t(\"common.copied\"), \"success\");\n }).catch(function() {\n fallbackCopy(text);\n });\n } else {\n fallbackCopy(text);\n }\n}\n\nfunction fallbackCopy(text) {\n var input = document.createElement(\"input\");\n input.value = text;\n document.body.appendChild(input);\n input.select();\n document.execCommand(\"copy\");\n input.remove();\n showToast(__t(\"common.copied\"), \"success\");\n}\n\n// Delegate to the canonical implementation from @arcblock/did-connect-core\n// (exposed globally by the <did-address> IIFE bundle as __DidAddressBundle.truncateDid)\nfunction truncateDid(did) {\n return __DidAddressBundle.truncateDid(did);\n}\n\nfunction initials(name) {\n if (!name) return \"?\";\n var parts = name.trim().split(/\\s+/);\n if (parts.length >= 2) return (parts[0][0] + parts[1][0]).toUpperCase();\n return name.slice(0, 2).toUpperCase();\n}\n\nfunction escapeHtml(str) {\n var div = document.createElement(\"div\");\n div.textContent = str;\n // The DOM round-trip above only neutralizes & < > (per HTML text-node\n // serialization rules); quotes are not special in text content, so a raw\n // '\"' / \"'\" survives and can break out of a quoted HTML attribute\n // (e.g. <img src=\"...\">, onclick=\"fn('...')\"). Escape them explicitly.\n return div.innerHTML.replace(/\"/g, \"&quot;\").replace(/'/g, \"&#39;\");\n}\n\n// Generate a shimmer skeleton table: cols = column count, rows = row count\nfunction skeletonTable(cols, rows) {\n var widths = [70, 45, 60, 55, 65, 50, 60, 30];\n var cells = '';\n for (var i = 0; i < cols; i++) {\n cells += '<td><span class=\"skel\" style=\"width:' + widths[i % widths.length] + '%;height:13px;\"></span></td>';\n }\n var row = '<tr class=\"skel-row\">' + cells + '</tr>';\n var tbody = '';\n for (var j = 0; j < rows; j++) tbody += row;\n return '<table class=\"table\"><tbody>' + tbody + '</tbody></table>';\n}\n\n/** Generate shimmer skeleton rows for list-style containers. */\nfunction skeletonRows(rows) {\n var widths = [45, 65, 55];\n var html = '';\n for (var i = 0; i < rows; i++) {\n html += '<div class=\"settings-row\"><span class=\"skel\" style=\"width:' + widths[i % widths.length] + '%;height:13px;\"></span></div>';\n }\n return html;\n}\n\n// \u2500\u2500\u2500 Submit lock \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Busy state for a button: disabled + aria-busy + the .btn-loading spinner.\nfunction setButtonBusy(btn, busy) {\n if (!btn) return;\n btn.disabled = busy;\n btn.setAttribute(\"aria-busy\", busy ? \"true\" : \"false\");\n if (busy) btn.classList.add(\"btn-loading\");\n else btn.classList.remove(\"btn-loading\");\n}\n\n// Wrap a mutation handler so it can never run concurrently with itself: while\n// one run is pending, further calls are dropped, and the button that fired it\n// (the live event's currentTarget when invoked from an inline onclick) shows\n// the busy state until the run settles. Every button-driven handler that sends\n// a POST/PUT/DELETE goes through this \u2014 a double-click must never send twice.\n// The handler must return its promise (async function, or \"return api(...)\").\nfunction submitOnce(fn) {\n var pending = false;\n return function() {\n if (pending) return;\n var evt = window.event;\n var target = evt && evt.currentTarget;\n var btn = target && target.tagName === \"BUTTON\" ? target : null;\n pending = true;\n setButtonBusy(btn, true);\n var self = this;\n var args = arguments;\n var done = function() { pending = false; setButtonBusy(btn, false); };\n return Promise.resolve().then(function() { return fn.apply(self, args); }).then(\n function(result) { done(); return result; },\n function(err) { done(); console.error(\"submit failed\", err); }\n );\n };\n}\n\nfunction renderAvatar(avatarUrl, fullName, size) {\n size = size || \"\";\n var cls = \"avatar\" + (size ? \" avatar-\" + size : \"\");\n if (avatarUrl) {\n var sep = avatarUrl.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n var src = avatarUrl + sep + \"t=\" + Date.now() + (size === \"sm\" ? \"&s=64\" : \"\");\n return '<div class=\"' + cls + '\">'\n + '<img src=\"' + escapeHtml(src) + '\" '\n + 'onerror=\"this.style.display=\\'none\\';this.nextSibling.style.display=\\'flex\\'\">'\n + '<span class=\"avatar-fallback\" style=\"display:none\">' + escapeHtml(initials(fullName)) + '</span>'\n + '</div>';\n }\n return '<div class=\"' + cls + '\"><span class=\"avatar-fallback\">' + escapeHtml(initials(fullName)) + '</span></div>';\n}\n";
4
+ export declare const UTILS_SCRIPT = "\nfunction relativeTime(iso) {\n var diff = Date.now() - new Date(iso).getTime();\n var abs = Math.abs(diff);\n var future = diff < 0;\n var s = Math.floor(abs / 1000);\n var m = Math.floor(s / 60);\n var h = Math.floor(m / 60);\n var d = Math.floor(h / 24);\n var label;\n if (d > 0) label = __t(\"time.dh\", { d: d, h: (h % 24) });\n else if (h > 0) label = __t(\"time.hm\", { h: h, m: (m % 60) });\n else if (m > 0) label = __t(\"time.min\", { m: m });\n else return __t(\"time.justNow\");\n return future ? __t(\"time.in\", { label: label }) : __t(\"time.ago\", { label: label });\n}\n\nfunction absoluteTime(iso) {\n var d = new Date(iso);\n var pad = function(n) { return n < 10 ? \"0\" + n : \"\" + n; };\n return d.getFullYear() + \"-\" + pad(d.getMonth() + 1) + \"-\" + pad(d.getDate())\n + \" \" + pad(d.getHours()) + \":\" + pad(d.getMinutes()) + \":\" + pad(d.getSeconds());\n}\n\n/** Created / Last used rows shared by the profile card and the member detail. */\nfunction renderAccountTimeRows(a) {\n var rows = \"\";\n if (a.createdAt) {\n rows += '<div class=\"ca-bound-time\">';\n rows += '<span class=\"ca-bound-time-label\">' + __t(\"profile.createdAt\") + '</span>';\n rows += '<span class=\"ca-bound-time-value\">' + escapeHtml(absoluteTime(a.createdAt)) + '</span>';\n rows += '</div>';\n }\n if (a.lastLoginAt) {\n var lastUsed = absoluteTime(a.lastLoginAt);\n if (a.lastLoginDomain) lastUsed += \" \u00B7 \" + a.lastLoginDomain;\n rows += '<div class=\"ca-bound-time\">';\n rows += '<span class=\"ca-bound-time-label\">' + __t(\"profile.lastUsed\") + '</span>';\n rows += '<span class=\"ca-bound-time-value\">' + escapeHtml(lastUsed) + '</span>';\n rows += '</div>';\n }\n if (!rows) return \"\";\n return '<div class=\"ca-bound-times\">' + rows + '</div>';\n}\n\nfunction copyToClipboard(text) {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(text).then(function() {\n showToast(__t(\"common.copied\"), \"success\");\n }).catch(function() {\n fallbackCopy(text);\n });\n } else {\n fallbackCopy(text);\n }\n}\n\nfunction fallbackCopy(text) {\n var input = document.createElement(\"input\");\n input.value = text;\n document.body.appendChild(input);\n input.select();\n document.execCommand(\"copy\");\n input.remove();\n showToast(__t(\"common.copied\"), \"success\");\n}\n\n// Delegate to the canonical implementation from @arcblock/did-connect-core\n// (exposed globally by the <did-address> IIFE bundle as __DidAddressBundle.truncateDid)\nfunction truncateDid(did) {\n return __DidAddressBundle.truncateDid(did);\n}\n\nfunction initials(name) {\n if (!name) return \"?\";\n var parts = name.trim().split(/\\s+/);\n if (parts.length >= 2) return (parts[0][0] + parts[1][0]).toUpperCase();\n return name.slice(0, 2).toUpperCase();\n}\n\nfunction escapeHtml(str) {\n var div = document.createElement(\"div\");\n div.textContent = str;\n // The DOM round-trip above only neutralizes & < > (per HTML text-node\n // serialization rules); quotes are not special in text content, so a raw\n // '\"' / \"'\" survives and can break out of a quoted HTML attribute\n // (e.g. <img src=\"...\">, onclick=\"fn('...')\"). Escape them explicitly.\n return div.innerHTML.replace(/\"/g, \"&quot;\").replace(/'/g, \"&#39;\");\n}\n\n// Generate a shimmer skeleton table: cols = column count, rows = row count\nfunction skeletonTable(cols, rows) {\n var widths = [70, 45, 60, 55, 65, 50, 60, 30];\n var cells = '';\n for (var i = 0; i < cols; i++) {\n cells += '<td><span class=\"skel\" style=\"width:' + widths[i % widths.length] + '%;height:13px;\"></span></td>';\n }\n var row = '<tr class=\"skel-row\">' + cells + '</tr>';\n var tbody = '';\n for (var j = 0; j < rows; j++) tbody += row;\n return '<table class=\"table\"><tbody>' + tbody + '</tbody></table>';\n}\n\n/** Generate shimmer skeleton rows for list-style containers. */\nfunction skeletonRows(rows) {\n var widths = [45, 65, 55];\n var html = '';\n for (var i = 0; i < rows; i++) {\n html += '<div class=\"settings-row\"><span class=\"skel\" style=\"width:' + widths[i % widths.length] + '%;height:13px;\"></span></div>';\n }\n return html;\n}\n\n// \u2500\u2500\u2500 Submit lock \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Busy state for a button: disabled + aria-busy + the .btn-loading spinner.\nfunction setButtonBusy(btn, busy) {\n if (!btn) return;\n btn.disabled = busy;\n btn.setAttribute(\"aria-busy\", busy ? \"true\" : \"false\");\n if (busy) btn.classList.add(\"btn-loading\");\n else btn.classList.remove(\"btn-loading\");\n}\n\n// Wrap a mutation handler so it can never run concurrently with itself: while\n// one run is pending, further calls are dropped, and the button that fired it\n// (the live event's currentTarget when invoked from an inline onclick) shows\n// the busy state until the run settles. Every button-driven handler that sends\n// a POST/PUT/DELETE goes through this \u2014 a double-click must never send twice.\n// The handler must return its promise (async function, or \"return api(...)\").\nfunction submitOnce(fn) {\n var pending = false;\n return function() {\n if (pending) return;\n var evt = window.event;\n var target = evt && evt.currentTarget;\n var btn = target && target.tagName === \"BUTTON\" ? target : null;\n pending = true;\n setButtonBusy(btn, true);\n var self = this;\n var args = arguments;\n var done = function() { pending = false; setButtonBusy(btn, false); };\n return Promise.resolve().then(function() { return fn.apply(self, args); }).then(\n function(result) { done(); return result; },\n function(err) { done(); console.error(\"submit failed\", err); }\n );\n };\n}\n\nfunction renderAvatar(avatarUrl, fullName, size) {\n size = size || \"\";\n var cls = \"avatar\" + (size ? \" avatar-\" + size : \"\");\n if (avatarUrl) {\n var sep = avatarUrl.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n var src = avatarUrl + sep + \"t=\" + Date.now() + (size === \"sm\" ? \"&s=64\" : \"\");\n return '<div class=\"' + cls + '\">'\n + '<img src=\"' + escapeHtml(src) + '\" '\n + 'onerror=\"this.style.display=\\'none\\';this.nextSibling.style.display=\\'flex\\'\">'\n + '<span class=\"avatar-fallback\" style=\"display:none\">' + escapeHtml(initials(fullName)) + '</span>'\n + '</div>';\n }\n return '<div class=\"' + cls + '\"><span class=\"avatar-fallback\">' + escapeHtml(initials(fullName)) + '</span></div>';\n}\n";
5
5
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/pages/admin/scripts/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,ozLA6IxB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/pages/admin/scripts/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,utNAkKxB,CAAC"}
@@ -25,6 +25,27 @@ function absoluteTime(iso) {
25
25
  + " " + pad(d.getHours()) + ":" + pad(d.getMinutes()) + ":" + pad(d.getSeconds());
26
26
  }
27
27
 
28
+ /** Created / Last used rows shared by the profile card and the member detail. */
29
+ function renderAccountTimeRows(a) {
30
+ var rows = "";
31
+ if (a.createdAt) {
32
+ rows += '<div class="ca-bound-time">';
33
+ rows += '<span class="ca-bound-time-label">' + __t("profile.createdAt") + '</span>';
34
+ rows += '<span class="ca-bound-time-value">' + escapeHtml(absoluteTime(a.createdAt)) + '</span>';
35
+ rows += '</div>';
36
+ }
37
+ if (a.lastLoginAt) {
38
+ var lastUsed = absoluteTime(a.lastLoginAt);
39
+ if (a.lastLoginDomain) lastUsed += " · " + a.lastLoginDomain;
40
+ rows += '<div class="ca-bound-time">';
41
+ rows += '<span class="ca-bound-time-label">' + __t("profile.lastUsed") + '</span>';
42
+ rows += '<span class="ca-bound-time-value">' + escapeHtml(lastUsed) + '</span>';
43
+ rows += '</div>';
44
+ }
45
+ if (!rows) return "";
46
+ return '<div class="ca-bound-times">' + rows + '</div>';
47
+ }
48
+
28
49
  function copyToClipboard(text) {
29
50
  if (navigator.clipboard && navigator.clipboard.writeText) {
30
51
  navigator.clipboard.writeText(text).then(function() {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/pages/admin/scripts/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IpC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/pages/admin/scripts/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkKpC,CAAC"}