dsh-mesh-ui 0.0.16 → 0.0.17
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.
- package/lib/client.js +30 -3
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -563,10 +563,24 @@ body.light .dm-edge-label { stroke: rgba(255,255,255,.92); }
|
|
|
563
563
|
var s0 = useState({ scale: 1, x: 0, y: 0 }); var view = s0[0]; var setView = s0[1]
|
|
564
564
|
var s1 = useState(false); var dragging = s1[0]; var setDragging = s1[1]
|
|
565
565
|
// 2026-11-09:三通道筛选(局域网/公网/樱花)
|
|
566
|
-
|
|
566
|
+
// 2026-11-10:筛选状态持久化;刷新/切页面后不再丢。
|
|
567
|
+
var FILTER_STORE_KEY = 'dsh-mesh-ui.filters.v1'
|
|
568
|
+
var filterState = useState(function () {
|
|
569
|
+
try {
|
|
570
|
+
var saved = JSON.parse(window.localStorage.getItem(FILTER_STORE_KEY) || '{}') || {}
|
|
571
|
+
return { lan: saved.lan !== false, public: saved.public !== false, sakura: saved.sakura !== false }
|
|
572
|
+
} catch (_) { return { lan: true, public: true, sakura: true } }
|
|
573
|
+
})
|
|
567
574
|
var showFilters = filterState[0]
|
|
568
575
|
var setShowFilters = filterState[1]
|
|
569
|
-
function toggleFilter(k) {
|
|
576
|
+
function toggleFilter(k) {
|
|
577
|
+
setShowFilters(function (prev) {
|
|
578
|
+
var n = Object.assign({}, prev)
|
|
579
|
+
n[k] = !n[k]
|
|
580
|
+
try { window.localStorage.setItem(FILTER_STORE_KEY, JSON.stringify(n)) } catch (_) { /* ignore */ }
|
|
581
|
+
return n
|
|
582
|
+
})
|
|
583
|
+
}
|
|
570
584
|
// fit 用最新布局的 ref(拖拽中不重算视角;只有初始化 / 窗口变化 / ⟲ 重置 / ⤢ 自适应才重算)
|
|
571
585
|
var effRef = useRef(effLayout)
|
|
572
586
|
effRef.current = effLayout
|
|
@@ -1412,7 +1426,20 @@ function deviceLinkState(data, peer, lanMap) {
|
|
|
1412
1426
|
}
|
|
1413
1427
|
|
|
1414
1428
|
function Details(props) {
|
|
1415
|
-
|
|
1429
|
+
var storeKey = 'dsh-mesh-ui.details.' + encodeURIComponent(String(props.title || ''))
|
|
1430
|
+
var sOpen = useState(function () {
|
|
1431
|
+
try {
|
|
1432
|
+
var saved = window.localStorage.getItem(storeKey)
|
|
1433
|
+
return saved == null ? Boolean(props.open) : saved === '1'
|
|
1434
|
+
} catch (_) { return Boolean(props.open) }
|
|
1435
|
+
})
|
|
1436
|
+
var open = sOpen[0]; var setOpen = sOpen[1]
|
|
1437
|
+
function onToggle(event) {
|
|
1438
|
+
var next = Boolean(event.currentTarget.open)
|
|
1439
|
+
setOpen(next)
|
|
1440
|
+
try { window.localStorage.setItem(storeKey, next ? '1' : '0') } catch (_) { /* ignore */ }
|
|
1441
|
+
}
|
|
1442
|
+
return h('details', { className: 'dm-details', open: open, onToggle: onToggle },
|
|
1416
1443
|
h('summary', null, props.title, props.badge != null ? h('span', { className: 'dm-pill muted' }, String(props.badge)) : null),
|
|
1417
1444
|
h('div', { className: 'dm-body' }, props.children)
|
|
1418
1445
|
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mesh-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.17",
|
|
4
4
|
"description": "DSH sidebar page for dsh-mesh: AI network topology, peer health, and delegation panel. Read-only; data is collected from the installed dsh-mesh-node package.",
|
|
5
5
|
"icon": "icon.svg",
|
|
6
6
|
"type": "module",
|