@sparkelf/dsh-group-chat 0.5.0 → 0.5.1
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/README.md +27 -0
- package/lib/client.js +232 -129
- package/lib/client.js.map +1 -1
- package/lib/index.js +431 -46
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -80,6 +80,33 @@ the session id because `SessionHeader` carries no free-form metadata field. An
|
|
|
80
80
|
ordinary session never matches that prefix, which is the second half of how this
|
|
81
81
|
plugin stays out of the way.
|
|
82
82
|
|
|
83
|
+
Opening a room is a **resolve-or-create**: the plugin resolves the persisted session
|
|
84
|
+
first and only calls the controller's create path when the session does not exist. A
|
|
85
|
+
create call is not a create-or-reuse call — once the named session has run a turn the
|
|
86
|
+
controller mints a fresh `session-<uuid>` instead — so calling it on every host restart
|
|
87
|
+
would leave a throwaway session directory behind. Older builds did exactly that; a
|
|
88
|
+
room could grow to thousands of directories and slow the shell's `session/list`.
|
|
89
|
+
|
|
90
|
+
A workspace upgraded from such a build can report or remove the leftovers for one room:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Report (default; no writes)
|
|
94
|
+
curl -sS -X POST http://127.0.0.1:3080/dsh-group-chat/api/rooms/<roomId>/sessions/cleanup \
|
|
95
|
+
-H 'content-type: application/json' -d '{}'
|
|
96
|
+
|
|
97
|
+
# Archive: mark them hidden from grouping surfaces, keep the files
|
|
98
|
+
curl -sS -X POST .../rooms/<roomId>/sessions/cleanup \
|
|
99
|
+
-H 'content-type: application/json' -d '{"dryRun":false}'
|
|
100
|
+
|
|
101
|
+
# Purge: delete the throwaway directories (canonical room session and subagent children are kept)
|
|
102
|
+
curl -sS -X POST .../rooms/<roomId>/sessions/cleanup \
|
|
103
|
+
-H 'content-type: application/json' -d '{"dryRun":false,"purge":true,"confirm":"<roomId>"}'
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The canonical `group-room-<roomId>` session is never a cleanup candidate, so the
|
|
107
|
+
room's history stays openable. If a room has already been dissolved and is no longer
|
|
108
|
+
listed by the backend, pass its project directory explicitly with `"directory": "..."`.
|
|
109
|
+
|
|
83
110
|
## Known limits
|
|
84
111
|
|
|
85
112
|
- **Display names are not authentication.** The backend verifies *who* a caller is
|
package/lib/client.js
CHANGED
|
@@ -514,10 +514,10 @@ window.__ModuleLoader__.load({
|
|
|
514
514
|
}
|
|
515
515
|
var Avatar_module_css_default = {
|
|
516
516
|
"stack": "Ohch6W_stack",
|
|
517
|
-
"over": "Ohch6W_over",
|
|
518
517
|
"md": "Ohch6W_md",
|
|
519
|
-
"
|
|
520
|
-
"avatar": "Ohch6W_avatar"
|
|
518
|
+
"over": "Ohch6W_over",
|
|
519
|
+
"avatar": "Ohch6W_avatar",
|
|
520
|
+
"sm": "Ohch6W_sm"
|
|
521
521
|
};
|
|
522
522
|
//#endregion
|
|
523
523
|
//#region src/client/Avatar.tsx
|
|
@@ -557,12 +557,12 @@ window.__ModuleLoader__.load({
|
|
|
557
557
|
document.head.appendChild(tag);
|
|
558
558
|
}
|
|
559
559
|
var Picker_module_css_default = {
|
|
560
|
-
"
|
|
560
|
+
"label": "sKjJ-a_label",
|
|
561
561
|
"secondary": "sKjJ-a_secondary",
|
|
562
|
-
"note": "sKjJ-a_note",
|
|
563
562
|
"box": "sKjJ-a_box",
|
|
563
|
+
"rowActive": "sKjJ-a_rowActive",
|
|
564
564
|
"list": "sKjJ-a_list",
|
|
565
|
-
"
|
|
565
|
+
"note": "sKjJ-a_note",
|
|
566
566
|
"row": "sKjJ-a_row"
|
|
567
567
|
};
|
|
568
568
|
//#endregion
|
|
@@ -736,10 +736,10 @@ window.__ModuleLoader__.load({
|
|
|
736
736
|
document.head.appendChild(tag);
|
|
737
737
|
}
|
|
738
738
|
var PresetSelect_module_css_default = {
|
|
739
|
-
"triggerLabel": "xjnmxG_triggerLabel",
|
|
740
739
|
"description": "xjnmxG_description",
|
|
741
740
|
"trigger": "xjnmxG_trigger",
|
|
742
741
|
"name": "xjnmxG_name",
|
|
742
|
+
"triggerLabel": "xjnmxG_triggerLabel",
|
|
743
743
|
"row": "xjnmxG_row"
|
|
744
744
|
};
|
|
745
745
|
//#endregion
|
|
@@ -998,23 +998,23 @@ window.__ModuleLoader__.load({
|
|
|
998
998
|
document.head.appendChild(tag);
|
|
999
999
|
}
|
|
1000
1000
|
var CreateRoomDialog_module_css_default = {
|
|
1001
|
-
"
|
|
1001
|
+
"pill": "Z3w8WW_pill",
|
|
1002
|
+
"hint": "Z3w8WW_hint",
|
|
1003
|
+
"field": "Z3w8WW_field",
|
|
1004
|
+
"label": "Z3w8WW_label",
|
|
1005
|
+
"triggerExtra": "Z3w8WW_triggerExtra",
|
|
1006
|
+
"pillActive": "Z3w8WW_pillActive",
|
|
1002
1007
|
"body": "Z3w8WW_body",
|
|
1008
|
+
"notice": "Z3w8WW_notice",
|
|
1009
|
+
"footer": "Z3w8WW_footer",
|
|
1010
|
+
"error": "Z3w8WW_error",
|
|
1011
|
+
"policyRow": "Z3w8WW_policyRow",
|
|
1003
1012
|
"switches": "Z3w8WW_switches",
|
|
1004
1013
|
"memberName": "Z3w8WW_memberName",
|
|
1005
1014
|
"memberBadge": "Z3w8WW_memberBadge",
|
|
1006
|
-
"policyRow": "Z3w8WW_policyRow",
|
|
1007
|
-
"notice": "Z3w8WW_notice",
|
|
1008
|
-
"warn": "Z3w8WW_warn",
|
|
1009
|
-
"field": "Z3w8WW_field",
|
|
1010
|
-
"error": "Z3w8WW_error",
|
|
1011
|
-
"pill": "Z3w8WW_pill",
|
|
1012
|
-
"memberList": "Z3w8WW_memberList",
|
|
1013
|
-
"label": "Z3w8WW_label",
|
|
1014
|
-
"triggerExtra": "Z3w8WW_triggerExtra",
|
|
1015
1015
|
"memberRow": "Z3w8WW_memberRow",
|
|
1016
|
-
"
|
|
1017
|
-
"
|
|
1016
|
+
"memberList": "Z3w8WW_memberList",
|
|
1017
|
+
"warn": "Z3w8WW_warn"
|
|
1018
1018
|
};
|
|
1019
1019
|
//#endregion
|
|
1020
1020
|
//#region src/client/CreateRoomDialog.tsx
|
|
@@ -1281,28 +1281,28 @@ window.__ModuleLoader__.load({
|
|
|
1281
1281
|
document.head.appendChild(tag);
|
|
1282
1282
|
}
|
|
1283
1283
|
var InviteDialog_module_css_default = {
|
|
1284
|
+
"content": "r4uCba_content",
|
|
1285
|
+
"rowSelected": "r4uCba_rowSelected",
|
|
1284
1286
|
"search": "r4uCba_search",
|
|
1285
|
-
"searchRow": "r4uCba_searchRow",
|
|
1286
|
-
"chip": "r4uCba_chip",
|
|
1287
1287
|
"chipRemove": "r4uCba_chipRemove",
|
|
1288
|
-
"
|
|
1289
|
-
"
|
|
1290
|
-
"rowSelected": "r4uCba_rowSelected",
|
|
1291
|
-
"inviteSpin": "r4uCba_inviteSpin",
|
|
1288
|
+
"rowName": "r4uCba_rowName",
|
|
1289
|
+
"searchRow": "r4uCba_searchRow",
|
|
1292
1290
|
"chipName": "r4uCba_chipName",
|
|
1291
|
+
"row": "r4uCba_row",
|
|
1292
|
+
"chips": "r4uCba_chips",
|
|
1293
1293
|
"visuallyHidden": "r4uCba_visuallyHidden",
|
|
1294
|
+
"rowHandle": "r4uCba_rowHandle",
|
|
1295
|
+
"errorRow": "r4uCba_errorRow",
|
|
1296
|
+
"dialog": "r4uCba_dialog",
|
|
1294
1297
|
"list": "r4uCba_list",
|
|
1295
|
-
"
|
|
1296
|
-
"content": "r4uCba_content",
|
|
1297
|
-
"field": "r4uCba_field",
|
|
1298
|
-
"chips": "r4uCba_chips",
|
|
1298
|
+
"inviteSpin": "r4uCba_inviteSpin",
|
|
1299
1299
|
"check": "r4uCba_check",
|
|
1300
|
+
"chip": "r4uCba_chip",
|
|
1301
|
+
"note": "r4uCba_note",
|
|
1302
|
+
"checkHidden": "r4uCba_checkHidden",
|
|
1300
1303
|
"error": "r4uCba_error",
|
|
1301
|
-
"
|
|
1302
|
-
"
|
|
1303
|
-
"spinner": "r4uCba_spinner",
|
|
1304
|
-
"dialog": "r4uCba_dialog",
|
|
1305
|
-
"errorRow": "r4uCba_errorRow"
|
|
1304
|
+
"field": "r4uCba_field",
|
|
1305
|
+
"spinner": "r4uCba_spinner"
|
|
1306
1306
|
};
|
|
1307
1307
|
//#endregion
|
|
1308
1308
|
//#region src/client/RoomDialogs.tsx
|
|
@@ -1909,7 +1909,7 @@ window.__ModuleLoader__.load({
|
|
|
1909
1909
|
}
|
|
1910
1910
|
//#endregion
|
|
1911
1911
|
//#region \0dsh-css:/root/projects/dsh-plugins-plus/packages/group-chat/src/client/SidebarRooms.module.css.mjs
|
|
1912
|
-
const css$4 = ".s0QgKq_root{--dsh-session-list-edge-inset:var(--dsh-sidebar-inline-padding,12px);--dsh-session-list-scrollbar-width:5px;--dsh-session-list-scrollbar-offset:2px;box-sizing:border-box;flex-direction:column;flex:auto;width:100%;min-width:0;min-height:0;max-height:20vh;display:flex;position:relative}.s0QgKq_resizer{z-index:1;cursor:row-resize;touch-action:none;background:0 0;height:6px;position:absolute;top:-3px;left:0;right:0}.s0QgKq_resizer:after{content:\"\";background:var(--dsw-alias-border-l1,var(--dsw-alias-separator-primary));opacity:0;border-radius:1px;height:1px;transition:opacity .12s;position:absolute;top:3px;left:8px;right:8px}.s0QgKq_root:hover .s0QgKq_resizer:after,.s0QgKq_resizer:focus-visible:after{opacity:1}.s0QgKq_resizer:focus-visible{outline:none}.s0QgKq_resizer:focus-visible:after{background:var(--dsw-alias-brand-primary,var(--dsw-alias-label-primary));height:2px}.s0QgKq_sectionHeader{box-sizing:border-box;border-radius:var(--dsw-radius-md);height:36px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:flex-end;align-items:center;gap:4px;margin-bottom:4px;margin-right:-4px;padding-left:4px;display:flex;overflow:hidden}.s0QgKq_sectionLabel{white-space:nowrap;flex:none;min-width:0;max-width:45%;line-height:20px;overflow:hidden}.s0QgKq_searchSlot{box-sizing:border-box;flex:1;align-items:center;min-width:0;max-width:28px;margin-left:auto;padding-left:0;display:flex}.s0QgKq_searchSlotExpanded{box-sizing:border-box;flex:1;align-items:center;min-width:0;max-width:100%;margin-left:auto;padding-right:4px;display:flex}.s0QgKq_search,.s0QgKq_searchExpanded{box-sizing:border-box;border-radius:var(--dsw-radius-sm);width:100%;height:28px;color:var(--dsw-alias-label-secondary);cursor:text;background:0 0;border:none;flex:none;align-items:center;margin:0;padding:0;display:flex;overflow:hidden}.s0QgKq_searchExpanded{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;height:30px;color:var(--dsw-alias-label-caption);margin-inline:0;padding:0 4px 0 0}.s0QgKq_iconButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.s0QgKq_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_iconButton:focus-visible,.s0QgKq_searchButton:focus-visible,.s0QgKq_clearButton:focus-visible{outline:var(--dsw-focus-ring-width,2px) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.s0QgKq_searchButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:inherit;cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.s0QgKq_searchExpanded .s0QgKq_searchButton{width:28px;height:30px}.s0QgKq_searchButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_searchExpanded .s0QgKq_searchButton:hover{background:0 0}.s0QgKq_searchInput{width:0;min-width:0;color:var(--dsw-alias-label-primary);opacity:0;pointer-events:none;transition:opacity .12s var(--ds-ease-in-out);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:13px;line-height:18px}.s0QgKq_searchExpanded .s0QgKq_searchInput{opacity:1;pointer-events:auto;margin-left:-2px}.s0QgKq_searchInput::placeholder{color:var(--dsw-alias-label-tertiary)}.s0QgKq_clearButton{border-radius:var(--dsw-radius-sm);width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.s0QgKq_clearButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_headerActions{flex:none;align-items:center;gap:4px;display:flex}.s0QgKq_viewWrap{display:flex;position:relative}.s0QgKq_listArea{min-height:0;margin-left:-4px;margin-right:calc(-1 * var(--dsh-session-list-edge-inset));flex-direction:column;flex:1;padding-left:4px;display:flex;position:relative}.s0QgKq_list{min-height:0;max-height:100%;margin-left:-4px;margin-right:var(--dsh-session-list-scrollbar-offset);padding-left:4px;padding-right:calc(var(--dsh-session-list-edge-inset) - var(--dsh-session-list-scrollbar-width) - var(--dsh-session-list-scrollbar-offset));scrollbar-gutter:stable;padding-bottom:8px;overflow-y:auto}.s0QgKq_flatList{margin:0;padding:0;list-style:none}.s0QgKq_flatList>*+*{margin-top:2px}.s0QgKq_sessionRow,.s0QgKq_sessionRowSelected{box-sizing:border-box;border-radius:var(--dsw-radius-sm);width:100%;height:32px;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0 8px;font-size:14px;display:flex}.s0QgKq_sessionRow:hover,.s0QgKq_sessionRowSelected{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_rowIcon{width:16px;color:var(--dsw-alias-label-secondary);flex:none;justify-content:center;align-items:center;display:flex}.s0QgKq_title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.s0QgKq_time{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;font-size:12px;line-height:17px}.s0QgKq_unread{background:var(--dsw-alias-bg-layer-3,var(--dsw-alias-interactive-bg-hover));min-width:18px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;text-align:center;border-radius:9px;flex:none;padding:0 5px;font-size:11px;font-weight:600;line-height:17px}.s0QgKq_unreadMentioned{background:var(--dsw-alias-state-business-primary);min-width:18px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;text-align:center;border-radius:9px;flex:none;padding:0 5px;font-size:11px;font-weight:600;line-height:17px}.s0QgKq_empty{color:var(--dsw-alias-label-tertiary);margin:0;padding:16px 12px;font-size:13px}.s0QgKq_emptyState{color:var(--dsw-alias-label-tertiary);text-align:center;flex-direction:column;align-items:center;gap:8px;margin-top:80px;padding:0 12px;font-size:13px;line-height:20px;display:flex}.s0QgKq_emptyState>svg{color:var(--dsw-alias-label-caption);margin-bottom:4px}.s0QgKq_fade{left:0;right:var(--dsh-session-list-edge-inset);background:linear-gradient(to bottom, transparent, var(--dsw-specific-sidebar-fill));pointer-events:none;height:24px;position:absolute;bottom:0}.s0QgKq_menuLayer{z-index:60;max-height:calc(100vh - 16px);position:fixed;overflow-y:auto}.s0QgKq_menuInline{z-index:30;position:absolute;top:32px;right:0}.s0QgKq_menu{border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-specific-sidebar-fill));min-width:200px;padding:4px;position:relative;box-shadow:0 6px 20px #0000002e}.s0QgKq_menuHeading{color:var(--dsw-alias-label-tertiary);padding:4px 8px 2px;font-size:11px;line-height:16px;display:block}.s0QgKq_menuItem{border-radius:var(--dsw-radius-sm);width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.s0QgKq_menuItem:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_check{color:var(--dsw-alias-state-business-primary);margin-left:auto}.s0QgKq_visuallyHidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.s0QgKq_rowWrap{position:relative}.s0QgKq_menuRename{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-specific-sidebar-fill));min-width:240px;padding:8px;box-shadow:0 6px 20px #0000002e}.s0QgKq_menuRename .s0QgKq_menuHeading{padding:0 0 6px}.s0QgKq_menuInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-sm);appearance:none;background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-primary);font:inherit;outline:none;margin:2px 0 6px;padding:6px 8px;font-size:13px;line-height:20px}.s0QgKq_menuInput:focus-visible{border-color:var(--dsw-alias-state-business-primary)}.s0QgKq_menuInput::placeholder{color:var(--dsw-alias-label-tertiary)}.s0QgKq_menuActions{justify-content:flex-end;gap:6px;padding-top:2px;display:flex}.s0QgKq_menuConfirm{box-sizing:border-box;border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground);font:inherit;cursor:pointer;border:1px solid #0000;padding:5px 12px;font-size:12px;line-height:18px}.s0QgKq_menuConfirm:hover:not(:disabled){filter:brightness(1.06)}.s0QgKq_menuConfirm:disabled{opacity:.5;cursor:default}.s0QgKq_menuCancel{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;padding:5px 12px;font-size:12px;line-height:18px}.s0QgKq_menuCancel:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_menuItem:disabled{opacity:.5;cursor:default}.s0QgKq_discoverSection{border-top:1px solid var(--dsw-alias-border-l3);margin-top:8px;padding-top:8px}.s0QgKq_discoverHeading{color:var(--dsw-alias-label-tertiary);margin:0 0 4px;padding:0 12px;font-size:11px;line-height:16px}.s0QgKq_discoverRow{border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-primary);align-items:center;gap:8px;padding:4px 12px;font-size:13px;line-height:18px;display:flex}.s0QgKq_discoverRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_discoverName{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.s0QgKq_discoverMeta{color:var(--dsw-alias-label-tertiary);flex:none;font-size:11px}.s0QgKq_joinButton{border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-state-business-primary);font:inherit;cursor:pointer;background:0 0;flex:none;padding:2px 10px;font-size:12px}.s0QgKq_joinButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_joinButton:disabled{opacity:.5;cursor:default}.s0QgKq_leaveBody{flex-direction:column;gap:8px;min-width:0;display:flex}.s0QgKq_leaveCopy{color:var(--dsw-alias-label-primary);margin:0;font-size:14px;line-height:22px}.s0QgKq_leaveRoomName{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;font-size:14px;line-height:22px}.s0QgKq_leaveRoomName strong{font-weight:600}.s0QgKq_leaveError{color:var(--dsw-alias-state-error-primary,#f85149);margin:0;font-size:12px;line-height:17px}.s0QgKq_footer{justify-content:flex-end;gap:8px;display:flex}.s0QgKq_leaveConfirmDanger{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary)}.s0QgKq_leaveConfirmDanger.s0QgKq_leaveConfirmDanger{color:var(--dsw-alias-label-primary)}.s0QgKq_leaveConfirmDanger:hover:not(:disabled){background:var(--dsw-alias-state-error-primary);filter:brightness(1.08)}.s0QgKq_leaveConfirmDanger:disabled{opacity:.5}.s0QgKq_hitList{flex-direction:column;flex:none;gap:2px;max-height:45%;margin-bottom:4px;display:flex;overflow-y:auto}.s0QgKq_hitHint{color:var(--dsw-alias-label-tertiary);margin:2px 8px;font-size:12px;line-height:16px}.s0QgKq_hit{border-radius:var(--dsw-radius-sm);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:1px;padding:5px 8px;display:flex}.s0QgKq_hit:hover,.s0QgKq_hit:focus-visible{background:var(--dsw-alias-interactive-bg-hover);outline:none}.s0QgKq_hitHead{min-width:0;color:var(--dsw-alias-label-tertiary);align-items:baseline;gap:6px;font-size:11px;line-height:14px;display:flex}.s0QgKq_hitRoom{flex:none;font-weight:500}.s0QgKq_hitAuthor{text-overflow:ellipsis;white-space:nowrap;opacity:.8;min-width:0;overflow:hidden}.s0QgKq_hitText{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;line-height:16px;display:block;overflow:hidden}.s0QgKq_mark{background:var(--dsw-alias-bg-brand-weak,#ffd66659);color:inherit;border-radius:2px;padding:0;font-weight:600}";
|
|
1912
|
+
const css$4 = ".s0QgKq_root{--dsh-session-list-edge-inset:var(--dsh-sidebar-inline-padding,12px);--dsh-session-list-scrollbar-width:5px;--dsh-session-list-scrollbar-offset:2px;box-sizing:border-box;flex-direction:column;flex:auto;width:100%;min-width:0;min-height:0;max-height:20vh;display:flex;position:relative}.s0QgKq_resizer{z-index:1;cursor:row-resize;touch-action:none;background:0 0;height:6px;position:absolute;top:-3px;left:0;right:0}.s0QgKq_resizer:after{content:\"\";background:var(--dsw-alias-border-l1,var(--dsw-alias-separator-primary));opacity:0;border-radius:1px;height:1px;transition:opacity .12s;position:absolute;top:3px;left:8px;right:8px}.s0QgKq_root:hover .s0QgKq_resizer:after,.s0QgKq_resizer:focus-visible:after{opacity:1}.s0QgKq_resizer:focus-visible{outline:none}.s0QgKq_resizer:focus-visible:after{background:var(--dsw-alias-brand-primary,var(--dsw-alias-label-primary));height:2px}.s0QgKq_sectionHeader{box-sizing:border-box;border-radius:var(--dsw-radius-md);height:36px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:flex-end;align-items:center;gap:4px;margin-bottom:4px;margin-right:-4px;padding-left:4px;display:flex;overflow:hidden}.s0QgKq_sectionLabel{white-space:nowrap;flex:none;min-width:0;max-width:45%;line-height:20px;overflow:hidden}.s0QgKq_searchSlot{box-sizing:border-box;flex:1;align-items:center;min-width:0;max-width:28px;margin-left:auto;padding-left:0;display:flex}.s0QgKq_searchSlotExpanded{box-sizing:border-box;flex:1;align-items:center;min-width:0;max-width:100%;margin-left:auto;padding-right:4px;display:flex}.s0QgKq_search,.s0QgKq_searchExpanded{box-sizing:border-box;border-radius:var(--dsw-radius-sm);width:100%;height:28px;color:var(--dsw-alias-label-secondary);cursor:text;background:0 0;border:none;flex:none;align-items:center;margin:0;padding:0;display:flex;overflow:hidden}.s0QgKq_searchExpanded{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);width:100%;height:30px;color:var(--dsw-alias-label-caption);margin-inline:0;padding:0 4px 0 0}.s0QgKq_iconButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.s0QgKq_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_iconButton:focus-visible,.s0QgKq_searchButton:focus-visible,.s0QgKq_clearButton:focus-visible{outline:var(--dsw-focus-ring-width,2px) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.s0QgKq_searchButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:inherit;cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.s0QgKq_searchExpanded .s0QgKq_searchButton{width:28px;height:30px}.s0QgKq_searchButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_searchExpanded .s0QgKq_searchButton:hover{background:0 0}.s0QgKq_searchInput{width:0;min-width:0;color:var(--dsw-alias-label-primary);opacity:0;pointer-events:none;transition:opacity .12s var(--ds-ease-in-out);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:13px;line-height:18px}.s0QgKq_searchExpanded .s0QgKq_searchInput{opacity:1;pointer-events:auto;margin-left:-2px}.s0QgKq_searchInput::placeholder{color:var(--dsw-alias-label-tertiary)}.s0QgKq_clearButton{border-radius:var(--dsw-radius-sm);width:24px;height:24px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.s0QgKq_clearButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_headerActions{flex:none;align-items:center;gap:4px;display:flex}.s0QgKq_viewWrap{display:flex;position:relative}.s0QgKq_listArea{min-height:0;margin-left:-4px;margin-right:calc(-1 * var(--dsh-session-list-edge-inset));flex-direction:column;flex:1;padding-left:4px;display:flex;position:relative}.s0QgKq_list{min-height:0;max-height:100%;margin-left:-4px;margin-right:var(--dsh-session-list-scrollbar-offset);padding-left:4px;padding-right:calc(var(--dsh-session-list-edge-inset) - var(--dsh-session-list-scrollbar-width) - var(--dsh-session-list-scrollbar-offset));scrollbar-gutter:stable;padding-bottom:8px;overflow-y:auto}.s0QgKq_flatList{margin:0;padding:0;list-style:none}.s0QgKq_flatList>*+*{margin-top:2px}.s0QgKq_sessionRow,.s0QgKq_sessionRowSelected{box-sizing:border-box;border-radius:var(--dsw-radius-sm);width:100%;height:32px;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0 8px;font-size:14px;display:flex}.s0QgKq_sessionRow:hover,.s0QgKq_sessionRowSelected{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_rowIcon{width:16px;color:var(--dsw-alias-label-secondary);flex:none;justify-content:center;align-items:center;display:flex}.s0QgKq_title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.s0QgKq_time{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;font-size:12px;line-height:17px}.s0QgKq_unread{background:var(--dsw-alias-bg-layer-3,var(--dsw-alias-interactive-bg-hover));min-width:18px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;text-align:center;border-radius:9px;flex:none;padding:0 5px;font-size:11px;font-weight:600;line-height:17px}.s0QgKq_unreadMentioned{background:var(--dsw-alias-state-business-primary);min-width:18px;color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;text-align:center;border-radius:9px;flex:none;padding:0 5px;font-size:11px;font-weight:600;line-height:17px}.s0QgKq_empty{color:var(--dsw-alias-label-tertiary);margin:0;padding:16px 12px;font-size:13px}.s0QgKq_emptyState{color:var(--dsw-alias-label-tertiary);text-align:center;flex-direction:column;align-items:center;gap:8px;margin-top:80px;padding:0 12px;font-size:13px;line-height:20px;display:flex}.s0QgKq_emptyState>svg{color:var(--dsw-alias-label-caption);margin-bottom:4px}.s0QgKq_fade{left:0;right:var(--dsh-session-list-edge-inset);background:linear-gradient(to bottom, transparent, var(--dsw-specific-sidebar-fill));pointer-events:none;height:24px;position:absolute;bottom:0}.s0QgKq_menuLayer{z-index:60;max-height:calc(100vh - 16px);position:fixed;overflow-y:auto}.s0QgKq_menuInline{z-index:30;position:absolute;top:32px;right:0}.s0QgKq_menu{border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-specific-sidebar-fill));min-width:200px;padding:4px;position:relative;box-shadow:0 6px 20px #0000002e}.s0QgKq_menuHeading{color:var(--dsw-alias-label-tertiary);padding:4px 8px 2px;font-size:11px;line-height:16px;display:block}.s0QgKq_menuItem{border-radius:var(--dsw-radius-sm);width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.s0QgKq_menuItem:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_check{color:var(--dsw-alias-state-business-primary);margin-left:auto}.s0QgKq_visuallyHidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.s0QgKq_rowWrap{position:relative}.s0QgKq_menuRename{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1,var(--dsw-specific-sidebar-fill));min-width:240px;padding:8px;box-shadow:0 6px 20px #0000002e}.s0QgKq_menuRename .s0QgKq_menuHeading{padding:0 0 6px}.s0QgKq_menuInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-sm);appearance:none;background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-primary);font:inherit;outline:none;margin:2px 0 6px;padding:6px 8px;font-size:13px;line-height:20px}.s0QgKq_menuInput:focus-visible{border-color:var(--dsw-alias-state-business-primary)}.s0QgKq_menuInput::placeholder{color:var(--dsw-alias-label-tertiary)}.s0QgKq_menuActions{justify-content:flex-end;gap:6px;padding-top:2px;display:flex}.s0QgKq_menuConfirm{box-sizing:border-box;border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground);font:inherit;cursor:pointer;border:1px solid #0000;padding:5px 12px;font-size:12px;line-height:18px}.s0QgKq_menuConfirm:hover:not(:disabled){filter:brightness(1.06)}.s0QgKq_menuConfirm:disabled{opacity:.5;cursor:default}.s0QgKq_menuCancel{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;padding:5px 12px;font-size:12px;line-height:18px}.s0QgKq_menuCancel:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_menuItem:disabled{opacity:.5;cursor:default}.s0QgKq_discoverSection{border-top:1px solid var(--dsw-alias-border-l3);margin-top:8px;padding-top:8px}.s0QgKq_discoverHeading{color:var(--dsw-alias-label-tertiary);margin:0 0 4px;padding:0 12px;font-size:11px;line-height:16px}.s0QgKq_discoverRow{border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-primary);align-items:center;gap:8px;padding:4px 12px;font-size:13px;line-height:18px;display:flex}.s0QgKq_discoverRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_discoverName{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.s0QgKq_discoverMeta{color:var(--dsw-alias-label-tertiary);flex:none;font-size:11px}.s0QgKq_joinButton{border:1px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-state-business-primary);font:inherit;cursor:pointer;background:0 0;flex:none;padding:2px 10px;font-size:12px}.s0QgKq_joinButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.s0QgKq_joinButton:disabled{opacity:.5;cursor:default}.s0QgKq_leaveBody{flex-direction:column;gap:8px;min-width:0;display:flex}.s0QgKq_leaveCopy{color:var(--dsw-alias-label-primary);margin:0;font-size:14px;line-height:22px}.s0QgKq_leaveRoomName{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;margin:0;font-size:14px;line-height:22px}.s0QgKq_leaveRoomName strong{font-weight:600}.s0QgKq_leaveError{color:var(--dsw-alias-state-error-primary,#f85149);margin:0;font-size:12px;line-height:17px}.s0QgKq_footer{justify-content:flex-end;gap:8px;display:flex}.s0QgKq_leaveConfirmDanger{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary)}.s0QgKq_leaveConfirmDanger.s0QgKq_leaveConfirmDanger{color:var(--dsw-alias-label-primary)}.s0QgKq_leaveConfirmDanger:hover:not(:disabled){background:var(--dsw-alias-state-error-primary);filter:brightness(1.08)}.s0QgKq_leaveConfirmDanger:disabled{opacity:.5}.s0QgKq_hitList{flex-direction:column;flex:none;gap:2px;max-height:45%;margin-bottom:4px;display:flex;overflow-y:auto}.s0QgKq_hitHint{color:var(--dsw-alias-label-tertiary);margin:2px 8px;font-size:12px;line-height:16px}.s0QgKq_hit{border-radius:var(--dsw-radius-sm);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:1px;padding:5px 8px;display:flex}.s0QgKq_hit:hover,.s0QgKq_hit:focus-visible{background:var(--dsw-alias-interactive-bg-hover);outline:none}.s0QgKq_hitHead{min-width:0;color:var(--dsw-alias-label-tertiary);align-items:baseline;gap:6px;font-size:11px;line-height:14px;display:flex}.s0QgKq_hitRoom{flex:none;font-weight:500}.s0QgKq_hitAuthor{text-overflow:ellipsis;white-space:nowrap;opacity:.8;min-width:0;overflow:hidden}.s0QgKq_hitText{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;line-height:16px;display:block;overflow:hidden}.s0QgKq_mark{background:var(--dsw-alias-bg-brand-weak,#ffd66659);color:inherit;border-radius:2px;padding:0;font-weight:600}.s0QgKq_railButton{border-radius:var(--dsw-radius-sm);width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;margin:4px auto;padding:0;display:flex}.s0QgKq_railButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.s0QgKq_railButton:focus-visible{outline:1px solid var(--dsw-alias-brand-primary);outline-offset:-2px}";
|
|
1913
1913
|
const tagId$4 = "@sparkelf/dsh-group-chat/SidebarRooms.module.css";
|
|
1914
1914
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
1915
1915
|
const tag = document.createElement("style");
|
|
@@ -1919,66 +1919,67 @@ window.__ModuleLoader__.load({
|
|
|
1919
1919
|
document.head.appendChild(tag);
|
|
1920
1920
|
}
|
|
1921
1921
|
var SidebarRooms_module_css_default = {
|
|
1922
|
-
"
|
|
1923
|
-
"
|
|
1924
|
-
"hitHead": "s0QgKq_hitHead",
|
|
1925
|
-
"menuInput": "s0QgKq_menuInput",
|
|
1926
|
-
"menuActions": "s0QgKq_menuActions",
|
|
1927
|
-
"headerActions": "s0QgKq_headerActions",
|
|
1928
|
-
"discoverSection": "s0QgKq_discoverSection",
|
|
1929
|
-
"searchExpanded": "s0QgKq_searchExpanded",
|
|
1930
|
-
"hitHint": "s0QgKq_hitHint",
|
|
1922
|
+
"leaveCopy": "s0QgKq_leaveCopy",
|
|
1923
|
+
"leaveRoomName": "s0QgKq_leaveRoomName",
|
|
1931
1924
|
"hit": "s0QgKq_hit",
|
|
1925
|
+
"searchButton": "s0QgKq_searchButton",
|
|
1926
|
+
"unread": "s0QgKq_unread",
|
|
1927
|
+
"listArea": "s0QgKq_listArea",
|
|
1932
1928
|
"time": "s0QgKq_time",
|
|
1933
|
-
"
|
|
1934
|
-
"
|
|
1929
|
+
"menuInput": "s0QgKq_menuInput",
|
|
1930
|
+
"clearButton": "s0QgKq_clearButton",
|
|
1931
|
+
"empty": "s0QgKq_empty",
|
|
1932
|
+
"sectionHeader": "s0QgKq_sectionHeader",
|
|
1933
|
+
"iconButton": "s0QgKq_iconButton",
|
|
1934
|
+
"discoverRow": "s0QgKq_discoverRow",
|
|
1935
1935
|
"menuHeading": "s0QgKq_menuHeading",
|
|
1936
|
-
"
|
|
1937
|
-
"list": "s0QgKq_list",
|
|
1938
|
-
"root": "s0QgKq_root",
|
|
1936
|
+
"menuActions": "s0QgKq_menuActions",
|
|
1939
1937
|
"flatList": "s0QgKq_flatList",
|
|
1940
|
-
"
|
|
1941
|
-
"
|
|
1938
|
+
"hitHead": "s0QgKq_hitHead",
|
|
1939
|
+
"searchExpanded": "s0QgKq_searchExpanded",
|
|
1940
|
+
"footer": "s0QgKq_footer",
|
|
1942
1941
|
"searchInput": "s0QgKq_searchInput",
|
|
1943
|
-
"
|
|
1944
|
-
"
|
|
1945
|
-
"
|
|
1946
|
-
"
|
|
1942
|
+
"rowWrap": "s0QgKq_rowWrap",
|
|
1943
|
+
"rowIcon": "s0QgKq_rowIcon",
|
|
1944
|
+
"unreadMentioned": "s0QgKq_unreadMentioned",
|
|
1945
|
+
"menu": "s0QgKq_menu",
|
|
1946
|
+
"hitAuthor": "s0QgKq_hitAuthor",
|
|
1947
|
+
"hitList": "s0QgKq_hitList",
|
|
1948
|
+
"resizer": "s0QgKq_resizer",
|
|
1949
|
+
"headerActions": "s0QgKq_headerActions",
|
|
1950
|
+
"menuItem": "s0QgKq_menuItem",
|
|
1951
|
+
"hitText": "s0QgKq_hitText",
|
|
1947
1952
|
"leaveConfirmDanger": "s0QgKq_leaveConfirmDanger",
|
|
1948
|
-
"visuallyHidden": "s0QgKq_visuallyHidden",
|
|
1949
|
-
"title": "s0QgKq_title",
|
|
1950
1953
|
"joinButton": "s0QgKq_joinButton",
|
|
1954
|
+
"discoverMeta": "s0QgKq_discoverMeta",
|
|
1955
|
+
"mark": "s0QgKq_mark",
|
|
1956
|
+
"searchSlotExpanded": "s0QgKq_searchSlotExpanded",
|
|
1957
|
+
"list": "s0QgKq_list",
|
|
1958
|
+
"title": "s0QgKq_title",
|
|
1959
|
+
"leaveError": "s0QgKq_leaveError",
|
|
1951
1960
|
"hitRoom": "s0QgKq_hitRoom",
|
|
1952
|
-
"
|
|
1953
|
-
"
|
|
1954
|
-
"
|
|
1955
|
-
"hitAuthor": "s0QgKq_hitAuthor",
|
|
1961
|
+
"searchSlot": "s0QgKq_searchSlot",
|
|
1962
|
+
"search": "s0QgKq_search",
|
|
1963
|
+
"root": "s0QgKq_root",
|
|
1956
1964
|
"discoverHeading": "s0QgKq_discoverHeading",
|
|
1965
|
+
"menuCancel": "s0QgKq_menuCancel",
|
|
1957
1966
|
"menuLayer": "s0QgKq_menuLayer",
|
|
1958
|
-
"menuItem": "s0QgKq_menuItem",
|
|
1959
|
-
"menuConfirm": "s0QgKq_menuConfirm",
|
|
1960
|
-
"hitText": "s0QgKq_hitText",
|
|
1961
1967
|
"menuRename": "s0QgKq_menuRename",
|
|
1962
|
-
"
|
|
1968
|
+
"visuallyHidden": "s0QgKq_visuallyHidden",
|
|
1969
|
+
"emptyState": "s0QgKq_emptyState",
|
|
1970
|
+
"menuConfirm": "s0QgKq_menuConfirm",
|
|
1971
|
+
"railButton": "s0QgKq_railButton",
|
|
1963
1972
|
"discoverName": "s0QgKq_discoverName",
|
|
1973
|
+
"leaveBody": "s0QgKq_leaveBody",
|
|
1974
|
+
"viewWrap": "s0QgKq_viewWrap",
|
|
1964
1975
|
"fade": "s0QgKq_fade",
|
|
1965
|
-
"
|
|
1966
|
-
"searchSlot": "s0QgKq_searchSlot",
|
|
1967
|
-
"unreadMentioned": "s0QgKq_unreadMentioned",
|
|
1976
|
+
"sessionRowSelected": "s0QgKq_sessionRowSelected",
|
|
1968
1977
|
"menuInline": "s0QgKq_menuInline",
|
|
1969
|
-
"
|
|
1970
|
-
"leaveBody": "s0QgKq_leaveBody",
|
|
1971
|
-
"resizer": "s0QgKq_resizer",
|
|
1972
|
-
"search": "s0QgKq_search",
|
|
1973
|
-
"sessionRow": "s0QgKq_sessionRow",
|
|
1974
|
-
"sectionHeader": "s0QgKq_sectionHeader",
|
|
1975
|
-
"unread": "s0QgKq_unread",
|
|
1978
|
+
"check": "s0QgKq_check",
|
|
1976
1979
|
"sectionLabel": "s0QgKq_sectionLabel",
|
|
1977
|
-
"
|
|
1978
|
-
"
|
|
1979
|
-
"
|
|
1980
|
-
"menuCancel": "s0QgKq_menuCancel",
|
|
1981
|
-
"sessionRowSelected": "s0QgKq_sessionRowSelected"
|
|
1980
|
+
"hitHint": "s0QgKq_hitHint",
|
|
1981
|
+
"sessionRow": "s0QgKq_sessionRow",
|
|
1982
|
+
"discoverSection": "s0QgKq_discoverSection"
|
|
1982
1983
|
};
|
|
1983
1984
|
//#endregion
|
|
1984
1985
|
//#region src/client/SidebarRooms.tsx
|
|
@@ -2001,12 +2002,12 @@ window.__ModuleLoader__.load({
|
|
|
2001
2002
|
/**
|
|
2002
2003
|
* Height bounds for the region, in pixels.
|
|
2003
2004
|
*
|
|
2004
|
-
* The floor
|
|
2005
|
-
*
|
|
2006
|
-
*
|
|
2005
|
+
* The floor is one room row plus the header; the ceiling keeps the region from crowding
|
|
2006
|
+
* out the workspace list above it, which is the same reason the stylesheet capped it at
|
|
2007
|
+
* `46vh` before this was adjustable. The host clamps to the same pair, so a stored value
|
|
2007
2008
|
* cannot arrive outside the range the region can draw.
|
|
2008
2009
|
*/
|
|
2009
|
-
const HEIGHT_MIN =
|
|
2010
|
+
const HEIGHT_MIN = 80;
|
|
2010
2011
|
const HEIGHT_MAX = 1200;
|
|
2011
2012
|
/** Clamps a requested height into the range the region can draw. */
|
|
2012
2013
|
const clampHeight = (value) => Math.min(HEIGHT_MAX, Math.max(HEIGHT_MIN, Math.round(value)));
|
|
@@ -2045,8 +2046,39 @@ window.__ModuleLoader__.load({
|
|
|
2045
2046
|
if (from < text.length) parts.push(text.slice(from));
|
|
2046
2047
|
return parts;
|
|
2047
2048
|
};
|
|
2049
|
+
/**
|
|
2050
|
+
* The collapsed rail's stand-in for this region: one icon, no rows.
|
|
2051
|
+
*
|
|
2052
|
+
* `onSelect` is the same "open the group chat" action the room list header offers, so the
|
|
2053
|
+
* collapsed rail is not a dead end — clicking it gets the reader to the rooms.
|
|
2054
|
+
* @param props - the realm's injected copy resolver and the open action.
|
|
2055
|
+
* @returns The compact control.
|
|
2056
|
+
*/
|
|
2057
|
+
function SidebarRoomsCollapsed(props) {
|
|
2058
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
2059
|
+
label: props.t("title"),
|
|
2060
|
+
side: "right",
|
|
2061
|
+
delayMs: 400,
|
|
2062
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2063
|
+
type: "button",
|
|
2064
|
+
className: SidebarRooms_module_css_default["railButton"],
|
|
2065
|
+
"aria-label": props.t("title"),
|
|
2066
|
+
onClick: props.onOpen,
|
|
2067
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconQueueOutlineRegular, { size: 18 })
|
|
2068
|
+
})
|
|
2069
|
+
});
|
|
2070
|
+
}
|
|
2048
2071
|
function SidebarRooms(props) {
|
|
2049
2072
|
const { t, tPreset, store } = props;
|
|
2073
|
+
if (props.wide === false) {
|
|
2074
|
+
const firstRoom = store.getState().rooms?.[0];
|
|
2075
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SidebarRoomsCollapsed, {
|
|
2076
|
+
t,
|
|
2077
|
+
onOpen: () => {
|
|
2078
|
+
if (firstRoom !== void 0) store.open(firstRoom.id);
|
|
2079
|
+
}
|
|
2080
|
+
});
|
|
2081
|
+
}
|
|
2050
2082
|
const { rooms, activeRoomId, failure, searchQuery, discoverable } = (0, react.useSyncExternalStore)(store.subscribe, store.getState, store.getState);
|
|
2051
2083
|
const [searchExpanded, setSearchExpanded] = (0, react.useState)(false);
|
|
2052
2084
|
const [viewOpen, setViewOpen] = (0, react.useState)(false);
|
|
@@ -3040,20 +3072,20 @@ window.__ModuleLoader__.load({
|
|
|
3040
3072
|
document.head.appendChild(tag);
|
|
3041
3073
|
}
|
|
3042
3074
|
var MessageSide_module_css_default = {
|
|
3043
|
-
"quoteMark": "KXabfq_quoteMark",
|
|
3044
|
-
"quoteBody": "KXabfq_quoteBody",
|
|
3045
|
-
"rowBody": "KXabfq_rowBody",
|
|
3046
|
-
"otherRow": "KXabfq_otherRow",
|
|
3047
3075
|
"replyButton": "KXabfq_replyButton",
|
|
3048
|
-
"
|
|
3049
|
-
"rowActions": "KXabfq_rowActions",
|
|
3050
|
-
"rowActionsSelf": "KXabfq_rowActionsSelf",
|
|
3076
|
+
"quoteAuthor": "KXabfq_quoteAuthor",
|
|
3051
3077
|
"quoteText": "KXabfq_quoteText",
|
|
3078
|
+
"quoteMark": "KXabfq_quoteMark",
|
|
3079
|
+
"rowActions": "KXabfq_rowActions",
|
|
3080
|
+
"quoteBody": "KXabfq_quoteBody",
|
|
3081
|
+
"quoteBar": "KXabfq_quoteBar",
|
|
3052
3082
|
"authorName": "KXabfq_authorName",
|
|
3083
|
+
"selfBody": "KXabfq_selfBody",
|
|
3053
3084
|
"author": "KXabfq_author",
|
|
3085
|
+
"rowActionsSelf": "KXabfq_rowActionsSelf",
|
|
3054
3086
|
"selfRow": "KXabfq_selfRow",
|
|
3055
|
-
"
|
|
3056
|
-
"
|
|
3087
|
+
"rowBody": "KXabfq_rowBody",
|
|
3088
|
+
"otherRow": "KXabfq_otherRow"
|
|
3057
3089
|
};
|
|
3058
3090
|
//#endregion
|
|
3059
3091
|
//#region src/client/MessageSide.tsx
|
|
@@ -3344,46 +3376,46 @@ window.__ModuleLoader__.load({
|
|
|
3344
3376
|
document.head.appendChild(tag);
|
|
3345
3377
|
}
|
|
3346
3378
|
var MembersPanel_module_css_default = {
|
|
3347
|
-
"
|
|
3348
|
-
"
|
|
3379
|
+
"fileButton": "VeQVAa_fileButton",
|
|
3380
|
+
"previewTitle": "VeQVAa_previewTitle",
|
|
3381
|
+
"search": "VeQVAa_search",
|
|
3382
|
+
"linkButton": "VeQVAa_linkButton",
|
|
3383
|
+
"name": "VeQVAa_name",
|
|
3349
3384
|
"editorFooter": "VeQVAa_editorFooter",
|
|
3350
|
-
"
|
|
3385
|
+
"row": "VeQVAa_row",
|
|
3351
3386
|
"editor": "VeQVAa_editor",
|
|
3352
|
-
"
|
|
3353
|
-
"
|
|
3354
|
-
"
|
|
3355
|
-
"
|
|
3356
|
-
"
|
|
3357
|
-
"
|
|
3358
|
-
"section": "VeQVAa_section",
|
|
3387
|
+
"refresh": "VeQVAa_refresh",
|
|
3388
|
+
"searchToggle": "VeQVAa_searchToggle",
|
|
3389
|
+
"root": "VeQVAa_root",
|
|
3390
|
+
"crumbs": "VeQVAa_crumbs",
|
|
3391
|
+
"caret": "VeQVAa_caret",
|
|
3392
|
+
"fileIcon": "VeQVAa_fileIcon",
|
|
3359
3393
|
"fileSize": "VeQVAa_fileSize",
|
|
3394
|
+
"sectionBody": "VeQVAa_sectionBody",
|
|
3360
3395
|
"sectionHeader": "VeQVAa_sectionHeader",
|
|
3361
|
-
"
|
|
3396
|
+
"selfTag": "VeQVAa_selfTag",
|
|
3397
|
+
"previewClose": "VeQVAa_previewClose",
|
|
3362
3398
|
"sectionLabel": "VeQVAa_sectionLabel",
|
|
3363
|
-
"row": "VeQVAa_row",
|
|
3364
|
-
"caret": "VeQVAa_caret",
|
|
3365
3399
|
"hint": "VeQVAa_hint",
|
|
3366
|
-
"name": "VeQVAa_name",
|
|
3367
|
-
"fileButton": "VeQVAa_fileButton",
|
|
3368
3400
|
"error": "VeQVAa_error",
|
|
3369
|
-
"
|
|
3370
|
-
"textarea": "VeQVAa_textarea",
|
|
3371
|
-
"searchToggle": "VeQVAa_searchToggle",
|
|
3372
|
-
"previewHeader": "VeQVAa_previewHeader",
|
|
3401
|
+
"crumb": "VeQVAa_crumb",
|
|
3373
3402
|
"announcementText": "VeQVAa_announcementText",
|
|
3374
|
-
"
|
|
3375
|
-
"
|
|
3376
|
-
"
|
|
3377
|
-
"linkButton": "VeQVAa_linkButton",
|
|
3403
|
+
"previewHeader": "VeQVAa_previewHeader",
|
|
3404
|
+
"textarea": "VeQVAa_textarea",
|
|
3405
|
+
"notice": "VeQVAa_notice",
|
|
3378
3406
|
"previewBody": "VeQVAa_previewBody",
|
|
3379
|
-
"
|
|
3407
|
+
"section": "VeQVAa_section",
|
|
3408
|
+
"remove": "VeQVAa_remove",
|
|
3380
3409
|
"sectionToggle": "VeQVAa_sectionToggle",
|
|
3381
|
-
"
|
|
3410
|
+
"ownerTag": "VeQVAa_ownerTag",
|
|
3411
|
+
"unavailable": "VeQVAa_unavailable",
|
|
3412
|
+
"crumbGroup": "VeQVAa_crumbGroup",
|
|
3413
|
+
"crumbSep": "VeQVAa_crumbSep",
|
|
3414
|
+
"previewImage": "VeQVAa_previewImage",
|
|
3382
3415
|
"preview": "VeQVAa_preview",
|
|
3383
|
-
"
|
|
3384
|
-
"
|
|
3385
|
-
"
|
|
3386
|
-
"previewImage": "VeQVAa_previewImage"
|
|
3416
|
+
"count": "VeQVAa_count",
|
|
3417
|
+
"filePicker": "VeQVAa_filePicker",
|
|
3418
|
+
"list": "VeQVAa_list"
|
|
3387
3419
|
};
|
|
3388
3420
|
//#endregion
|
|
3389
3421
|
//#region src/client/MembersPanel.tsx
|
|
@@ -4006,11 +4038,11 @@ window.__ModuleLoader__.load({
|
|
|
4006
4038
|
document.head.appendChild(tag);
|
|
4007
4039
|
}
|
|
4008
4040
|
var GuideEntry_module_css_default = {
|
|
4041
|
+
"icon": "_0Vnsuq_icon",
|
|
4009
4042
|
"title": "_0Vnsuq_title",
|
|
4010
4043
|
"description": "_0Vnsuq_description",
|
|
4011
4044
|
"text": "_0Vnsuq_text",
|
|
4012
|
-
"entry": "_0Vnsuq_entry"
|
|
4013
|
-
"icon": "_0Vnsuq_icon"
|
|
4045
|
+
"entry": "_0Vnsuq_entry"
|
|
4014
4046
|
};
|
|
4015
4047
|
//#endregion
|
|
4016
4048
|
//#region src/client/GuideEntry.tsx
|
|
@@ -4077,13 +4109,13 @@ window.__ModuleLoader__.load({
|
|
|
4077
4109
|
document.head.appendChild(tag);
|
|
4078
4110
|
}
|
|
4079
4111
|
var QuoteComposer_module_css_default = {
|
|
4080
|
-
"
|
|
4081
|
-
"
|
|
4082
|
-
"button": "AK6KxW_button",
|
|
4112
|
+
"text": "AK6KxW_text",
|
|
4113
|
+
"body": "AK6KxW_body",
|
|
4083
4114
|
"bar": "AK6KxW_bar",
|
|
4084
4115
|
"mark": "AK6KxW_mark",
|
|
4085
|
-
"
|
|
4086
|
-
"
|
|
4116
|
+
"author": "AK6KxW_author",
|
|
4117
|
+
"dismiss": "AK6KxW_dismiss",
|
|
4118
|
+
"button": "AK6KxW_button"
|
|
4087
4119
|
};
|
|
4088
4120
|
//#endregion
|
|
4089
4121
|
//#region src/client/QuoteComposer.tsx
|
|
@@ -4658,6 +4690,27 @@ window.__ModuleLoader__.load({
|
|
|
4658
4690
|
* @param ctx - DSH client context with locale and slot registries.
|
|
4659
4691
|
*/
|
|
4660
4692
|
function apply(ctx) {
|
|
4693
|
+
const context = ctx;
|
|
4694
|
+
const sidebarRight = context.sidebarRight ?? context.get?.("sidebarRight");
|
|
4695
|
+
const openRoomFile = (attachment, roomId) => {
|
|
4696
|
+
const query = "attachmentId=" + encodeURIComponent(attachment.attachmentId) + "&name=" + encodeURIComponent(attachment.name) + "&bytes=" + encodeURIComponent(String(attachment.bytes));
|
|
4697
|
+
(async () => {
|
|
4698
|
+
const materialized = await fetch("/dsh-group-chat/api/attachment-materialize?" + query);
|
|
4699
|
+
if (!materialized.ok) throw new Error("附件预览准备失败");
|
|
4700
|
+
const target = await materialized.json();
|
|
4701
|
+
if (typeof target.path !== "string") throw new Error("附件预览路径缺失");
|
|
4702
|
+
const sessionId = "group-room-" + roomId;
|
|
4703
|
+
const address = "dsh-resource://file/session/" + encodeURIComponent(sessionId) + "/" + target.path.split("/").map((part) => encodeURIComponent(part)).join("/");
|
|
4704
|
+
if (sidebarRight !== void 0 && sidebarRight.openResource !== void 0) {
|
|
4705
|
+
sidebarRight.openResource(address);
|
|
4706
|
+
return;
|
|
4707
|
+
}
|
|
4708
|
+
const fallback = new URL("/dsh-group-chat/api/attachment-preview?" + query, window.location.origin).toString();
|
|
4709
|
+
window.open(fallback, "_blank", "noopener,noreferrer");
|
|
4710
|
+
})().catch((error) => {
|
|
4711
|
+
console.error("[group-chat] file preview failed", error);
|
|
4712
|
+
});
|
|
4713
|
+
};
|
|
4661
4714
|
ctx.effect(() => ctx.locale.register(NS, {
|
|
4662
4715
|
zh,
|
|
4663
4716
|
en
|
|
@@ -4838,6 +4891,56 @@ window.__ModuleLoader__.load({
|
|
|
4838
4891
|
}
|
|
4839
4892
|
}))
|
|
4840
4893
|
}, MembersGuideEntry)), "group-chat: members guide box");
|
|
4894
|
+
ctx.effect(() => {
|
|
4895
|
+
const onFileClick = (event) => {
|
|
4896
|
+
const target = event.target;
|
|
4897
|
+
if (!(target instanceof Element)) return;
|
|
4898
|
+
const card = target.closest("[data-message-attachments] > *");
|
|
4899
|
+
const roomId = store.getState().activeRoomId;
|
|
4900
|
+
if (!(card instanceof HTMLElement) || roomId === void 0) return;
|
|
4901
|
+
const name = (card.getAttribute("title") ?? card.innerText.split("\n")[0] ?? "").trim();
|
|
4902
|
+
if (name === "") return;
|
|
4903
|
+
(async () => {
|
|
4904
|
+
try {
|
|
4905
|
+
let cursor = null;
|
|
4906
|
+
let found;
|
|
4907
|
+
for (let page = 0; page < 20 && found === void 0; page += 1) {
|
|
4908
|
+
const suffix = cursor === null ? "" : "?cursor=" + encodeURIComponent(cursor);
|
|
4909
|
+
const response = await fetch("/dsh-group-chat/api/rooms/" + encodeURIComponent(roomId) + "/events" + suffix);
|
|
4910
|
+
if (!response.ok) return;
|
|
4911
|
+
const payload = await response.json();
|
|
4912
|
+
for (const record of payload.events ?? []) {
|
|
4913
|
+
const content = (record.event?.data)?.content;
|
|
4914
|
+
if (!Array.isArray(content)) continue;
|
|
4915
|
+
for (const block of content) {
|
|
4916
|
+
if (block === null || typeof block !== "object") continue;
|
|
4917
|
+
const item = block;
|
|
4918
|
+
const attachment = item.attachment;
|
|
4919
|
+
if (item.type === "file" && attachment?.name === name && typeof attachment.attachmentId === "string" && typeof attachment.bytes === "number") {
|
|
4920
|
+
found = {
|
|
4921
|
+
attachmentId: attachment.attachmentId,
|
|
4922
|
+
name,
|
|
4923
|
+
bytes: attachment.bytes
|
|
4924
|
+
};
|
|
4925
|
+
break;
|
|
4926
|
+
}
|
|
4927
|
+
}
|
|
4928
|
+
if (found !== void 0) break;
|
|
4929
|
+
}
|
|
4930
|
+
if (payload.hasMore !== true || payload.nextCursor === null || payload.nextCursor === void 0) break;
|
|
4931
|
+
cursor = payload.nextCursor;
|
|
4932
|
+
}
|
|
4933
|
+
if (found !== void 0) openRoomFile(found, roomId);
|
|
4934
|
+
} catch (error) {
|
|
4935
|
+
console.error("[group-chat] file preview lookup failed", error);
|
|
4936
|
+
}
|
|
4937
|
+
})();
|
|
4938
|
+
};
|
|
4939
|
+
document.addEventListener("click", onFileClick, true);
|
|
4940
|
+
return () => {
|
|
4941
|
+
document.removeEventListener("click", onFileClick, true);
|
|
4942
|
+
};
|
|
4943
|
+
}, "group-chat: file preview delegation");
|
|
4841
4944
|
ctx.slots.inject("conversation.chat.node", () => {
|
|
4842
4945
|
let claims = [];
|
|
4843
4946
|
const release = () => {
|