@lijian-ui/dsh-file-manager 0.2.3 → 0.2.4

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 (96) hide show
  1. package/LICENSE +38 -38
  2. package/README.i18n.yaml +6 -6
  3. package/README.md +66 -66
  4. package/README.zh.md +66 -66
  5. package/cordis.patch.yml +13 -13
  6. package/lib/client.js +27305 -270
  7. package/lib/client.js.map +1 -1
  8. package/lib/index.js +474 -42
  9. package/lib/tsconfig.client.tsbuildinfo +1 -1
  10. package/lib/tsconfig.host.tsbuildinfo +1 -1
  11. package/lib/types/client/file-source.d.ts +10 -0
  12. package/lib/types/client/file-source.d.ts.map +1 -1
  13. package/lib/types/client/fileType.d.ts +19 -4
  14. package/lib/types/client/fileType.d.ts.map +1 -1
  15. package/lib/types/client/index.d.ts.map +1 -1
  16. package/lib/types/client/locales.d.ts +3 -0
  17. package/lib/types/client/locales.d.ts.map +1 -1
  18. package/lib/types/client/mount.d.ts +1 -1
  19. package/lib/types/client/mount.d.ts.map +1 -1
  20. package/lib/types/client/preview/PreviewPanel.d.ts +2 -1
  21. package/lib/types/client/preview/PreviewPanel.d.ts.map +1 -1
  22. package/lib/types/client/preview/PreviewToolbar.d.ts +3 -1
  23. package/lib/types/client/preview/PreviewToolbar.d.ts.map +1 -1
  24. package/lib/types/client/preview/content.d.ts +3 -1
  25. package/lib/types/client/preview/content.d.ts.map +1 -1
  26. package/lib/types/client/preview/office.d.ts +23 -0
  27. package/lib/types/client/preview/office.d.ts.map +1 -0
  28. package/lib/types/client/reference.d.ts +17 -0
  29. package/lib/types/client/reference.d.ts.map +1 -1
  30. package/lib/types/client/store.d.ts.map +1 -1
  31. package/lib/types/host/fs-service.d.ts.map +1 -1
  32. package/lib/types/host/office-preview.d.ts +13 -0
  33. package/lib/types/host/office-preview.d.ts.map +1 -0
  34. package/lib/types/host/routes.d.ts.map +1 -1
  35. package/lib/types/index.d.ts.map +1 -1
  36. package/package.json +19 -4
  37. package/src/client/FileManagerSettingsCard.tsx +117 -117
  38. package/src/client/PluginSettingsCard.tsx +337 -337
  39. package/src/client/chat/file-ref.ts +144 -144
  40. package/src/client/chat/mermaid-chat.tsx +102 -102
  41. package/src/client/chat/placeholder-hint.tsx +46 -46
  42. package/src/client/components/ExplorerPanel.tsx +534 -534
  43. package/src/client/components/FileIcon.tsx +46 -46
  44. package/src/client/components/ScmPanel.tsx +480 -480
  45. package/src/client/components/a11y.ts +20 -20
  46. package/src/client/components/icons.tsx +274 -274
  47. package/src/client/components/overlay.tsx +225 -225
  48. package/src/client/drag/DragFileInlay.tsx +89 -89
  49. package/src/client/drag/file-drag.ts +67 -67
  50. package/src/client/drag.ts +154 -154
  51. package/src/client/file-source.ts +34 -0
  52. package/src/client/fileType.ts +32 -5
  53. package/src/client/hooks/useResizableSplit.ts +91 -91
  54. package/src/client/hooks/useStore.ts +15 -15
  55. package/src/client/index.ts +42 -3
  56. package/src/client/layout.ts +523 -523
  57. package/src/client/locales.ts +6 -0
  58. package/src/client/maximize.ts +34 -34
  59. package/src/client/mount.tsx +2 -1
  60. package/src/client/persist.ts +194 -194
  61. package/src/client/picker/FilePickerModal.tsx +526 -526
  62. package/src/client/picker/file-picker.ts +86 -86
  63. package/src/client/preview/PreviewPanel.tsx +7 -1
  64. package/src/client/preview/PreviewTabs.tsx +159 -159
  65. package/src/client/preview/PreviewToolbar.tsx +3 -2
  66. package/src/client/preview/content.tsx +7 -2
  67. package/src/client/preview/markdown.ts +351 -351
  68. package/src/client/preview/mermaid.ts +274 -274
  69. package/src/client/preview/office.tsx +321 -0
  70. package/src/client/reference.ts +49 -0
  71. package/src/client/settings-card.module.css +316 -316
  72. package/src/client/settings-form.ts +451 -451
  73. package/src/client/store.ts +17 -12
  74. package/src/client/styles/drag.module.css +30 -30
  75. package/src/client/styles/explorer.module.css +371 -371
  76. package/src/client/styles/picker.module.css +344 -344
  77. package/src/client/styles/preview.module.css +3 -1
  78. package/src/client/styles/scm.module.css +380 -380
  79. package/src/client/styles/tokens.module.css +376 -371
  80. package/src/core/types.ts +162 -162
  81. package/src/host/fs-service.ts +7 -1
  82. package/src/host/gate.ts +73 -73
  83. package/src/host/git-runner.ts +116 -116
  84. package/src/host/git-service.ts +395 -395
  85. package/src/host/loopback.ts +63 -63
  86. package/src/host/office-preview.ts +399 -0
  87. package/src/host/poll-guard.ts +109 -109
  88. package/src/host/routes.ts +72 -1
  89. package/src/index.ts +3 -1
  90. package/src/mount-once.ts +48 -48
  91. package/lib/types/client/chat/AttachedFilesDock.d.ts +0 -51
  92. package/lib/types/client/chat/AttachedFilesDock.d.ts.map +0 -1
  93. package/lib/types/client/floating.d.ts +0 -27
  94. package/lib/types/client/floating.d.ts.map +0 -1
  95. package/lib/types/client/mention.d.ts +0 -44
  96. package/lib/types/client/mention.d.ts.map +0 -1
@@ -1,316 +1,316 @@
1
- /* Generated by scripts/sync-shared.mjs from shared/client/settings/settings-card.module.css. Do not edit this copy; edit the shared source and run "node scripts/sync-shared.mjs". */
2
- /* Plugin settings card chrome + staged form fields.
3
- * Aligned with the official ui-settings-plugins PluginCard / fields CSS:
4
- * same semantic tokens, radius, typography and states so family cards read
5
- * as siblings of the built-in Shell / Agent loop / Web search cards. */
6
-
7
- .card {
8
- border: 1px solid var(--dsw-alias-border-l2);
9
- background: var(--dsw-alias-bg-layer-3);
10
- border-radius: 12px;
11
- list-style: none;
12
- transition: border-color 0.16s, background 0.16s;
13
- }
14
-
15
- .card:hover {
16
- border-color: var(--dsw-alias-label-dimmed);
17
- }
18
-
19
- .cardOpen {
20
- background: var(--dsw-alias-bg-layer-2);
21
- border-color: var(--dsw-alias-label-dimmed);
22
- }
23
-
24
- .header {
25
- appearance: none;
26
- width: 100%;
27
- font: inherit;
28
- color: inherit;
29
- text-align: left;
30
- cursor: pointer;
31
- background: transparent;
32
- border: 0;
33
- border-radius: 12px;
34
- align-items: center;
35
- gap: 12px;
36
- padding: 14px 16px;
37
- display: flex;
38
- }
39
-
40
- .header:focus-visible {
41
- outline: 2px solid var(--dsw-alias-brand-primary);
42
- outline-offset: -2px;
43
- }
44
-
45
- .headerStatic {
46
- width: 100%;
47
- border-radius: 12px;
48
- align-items: center;
49
- gap: 12px;
50
- padding: 14px 16px;
51
- display: flex;
52
- }
53
-
54
- .headText {
55
- flex-direction: column;
56
- flex: 1;
57
- gap: 4px;
58
- min-width: 0;
59
- display: flex;
60
- }
61
-
62
- .name {
63
- color: var(--dsw-alias-label-primary);
64
- font-size: 15px;
65
- font-weight: 600;
66
- line-height: 1.4;
67
- }
68
-
69
- .description {
70
- color: var(--dsw-alias-label-tertiary);
71
- font-size: 13px;
72
- line-height: 1.5;
73
- }
74
-
75
- .pending {
76
- white-space: nowrap;
77
- background: var(--dsw-alias-bg-module-platform);
78
- color: var(--dsw-alias-label-secondary);
79
- border-radius: 999px;
80
- flex: none;
81
- padding: 1px 8px;
82
- font-size: 11px;
83
- font-weight: 500;
84
- line-height: 17px;
85
- }
86
-
87
- .chevron {
88
- color: var(--dsw-alias-label-tertiary);
89
- flex: none;
90
- transition: transform 0.16s;
91
- }
92
-
93
- .chevronOpen {
94
- transform: rotate(180deg);
95
- }
96
-
97
- .body {
98
- border-top: 1px solid var(--dsw-alias-border-l2);
99
- margin: 0 16px;
100
- padding-bottom: 8px;
101
- }
102
-
103
- .readOnly {
104
- color: var(--dsw-alias-label-tertiary);
105
- margin: 12px 0 0;
106
- font-size: 12px;
107
- line-height: 1.5;
108
- }
109
-
110
- .notExposed {
111
- color: var(--dsw-alias-state-warn-primary);
112
- margin: 12px 0 0;
113
- font-size: 12px;
114
- line-height: 1.5;
115
- }
116
-
117
- .footer {
118
- border-top: 1px solid var(--dsw-alias-border-l2);
119
- justify-content: flex-end;
120
- align-items: center;
121
- gap: 8px;
122
- padding: 12px 0 4px;
123
- display: flex;
124
- }
125
-
126
- .failed {
127
- min-width: 0;
128
- color: var(--dsw-alias-label-error);
129
- flex: 1;
130
- margin: 0;
131
- font-size: 12px;
132
- line-height: 1.5;
133
- text-overflow: ellipsis;
134
- overflow: hidden;
135
- white-space: nowrap;
136
- }
137
-
138
- .discard,
139
- .save {
140
- appearance: none;
141
- font: inherit;
142
- cursor: pointer;
143
- border: 1px solid transparent;
144
- border-radius: 8px;
145
- padding: 5px 14px;
146
- font-size: 13px;
147
- line-height: 1.5;
148
- }
149
-
150
- .discard {
151
- border-color: var(--dsw-alias-border-l2);
152
- color: var(--dsw-alias-label-secondary);
153
- background: transparent;
154
- }
155
-
156
- .discard:hover:not(:disabled) {
157
- color: var(--dsw-alias-label-primary);
158
- border-color: var(--dsw-alias-label-dimmed);
159
- }
160
-
161
- .save {
162
- background: var(--dsw-alias-label-primary);
163
- color: var(--dsw-alias-bg-layer-3);
164
- }
165
-
166
- .discard:disabled,
167
- .save:disabled {
168
- opacity: 0.4;
169
- cursor: default;
170
- }
171
-
172
- .discard:focus-visible,
173
- .save:focus-visible {
174
- outline: 2px solid var(--dsw-alias-brand-primary);
175
- outline-offset: 1px;
176
- }
177
-
178
- .field {
179
- flex-direction: column;
180
- gap: 6px;
181
- padding: 12px 0;
182
- display: flex;
183
- }
184
-
185
- .field + .field {
186
- border-top: 1px solid var(--dsw-alias-border-l2);
187
- }
188
-
189
- .head {
190
- align-items: center;
191
- gap: 8px;
192
- display: flex;
193
- }
194
-
195
- .label {
196
- min-width: 0;
197
- color: var(--dsw-alias-label-primary);
198
- flex: 1;
199
- font-size: 13px;
200
- font-weight: 500;
201
- line-height: 1.5;
202
- }
203
-
204
- .badges {
205
- align-items: center;
206
- gap: 8px;
207
- display: inline-flex;
208
- }
209
-
210
- .badge {
211
- white-space: nowrap;
212
- background: var(--dsw-alias-bg-module-platform);
213
- color: var(--dsw-alias-label-secondary);
214
- border-radius: 999px;
215
- padding: 1px 8px;
216
- font-size: 11px;
217
- font-weight: 500;
218
- line-height: 17px;
219
- }
220
-
221
- .reset {
222
- font: inherit;
223
- color: var(--dsw-alias-label-secondary);
224
- cursor: pointer;
225
- background: transparent;
226
- border: none;
227
- padding: 0;
228
- font-size: 12px;
229
- line-height: 1.5;
230
- }
231
-
232
- .reset:hover:not(:disabled) {
233
- color: var(--dsw-alias-label-primary);
234
- }
235
-
236
- .reset:disabled {
237
- cursor: default;
238
- }
239
-
240
- .reset:focus-visible {
241
- outline: 2px solid var(--dsw-alias-brand-primary);
242
- outline-offset: 2px;
243
- }
244
-
245
- .reset:focus-visible {
246
- outline: 2px solid var(--dsw-alias-brand-primary);
247
- outline-offset: 2px;
248
- }
249
-
250
- .input,
251
- .select {
252
- border: 1px solid var(--dsw-alias-border-l2);
253
- background: var(--dsw-alias-bg-layer-3);
254
- height: 34px;
255
- font: inherit;
256
- color: var(--dsw-alias-label-primary);
257
- border-radius: 8px;
258
- padding: 0 12px;
259
- font-size: 13px;
260
- line-height: 1.5;
261
- }
262
-
263
- .input:focus-visible,
264
- .select:focus-visible {
265
- border-color: var(--dsw-alias-brand-primary);
266
- outline: none;
267
- }
268
-
269
- .input:disabled,
270
- .select:disabled {
271
- color: var(--dsw-alias-label-tertiary);
272
- cursor: default;
273
- }
274
-
275
- .inputInvalid {
276
- border: 1px solid var(--dsw-alias-label-error);
277
- background: var(--dsw-alias-bg-layer-3);
278
- height: 34px;
279
- font: inherit;
280
- color: var(--dsw-alias-label-primary);
281
- border-radius: 8px;
282
- padding: 0 12px;
283
- font-size: 13px;
284
- line-height: 1.5;
285
- }
286
-
287
- .inputInvalid:focus-visible {
288
- outline: 2px solid var(--dsw-alias-label-error);
289
- outline-offset: 1px;
290
- border-color: var(--dsw-alias-label-error);
291
- }
292
-
293
- .invalid {
294
- color: var(--dsw-alias-label-error);
295
- margin: 0;
296
- font-size: 12px;
297
- line-height: 1.5;
298
- }
299
-
300
- .hint {
301
- color: var(--dsw-alias-label-tertiary);
302
- margin: 0;
303
- font-size: 12px;
304
- line-height: 1.5;
305
- }
306
-
307
- @media (prefers-reduced-motion: reduce) {
308
- .card,
309
- .header,
310
- .chevron,
311
- .chevronOpen,
312
- .discard,
313
- .save {
314
- transition: none;
315
- }
316
- }
1
+ /* Generated by scripts/sync-shared.mjs from shared/client/settings/settings-card.module.css. Do not edit this copy; edit the shared source and run "node scripts/sync-shared.mjs". */
2
+ /* Plugin settings card chrome + staged form fields.
3
+ * Aligned with the official ui-settings-plugins PluginCard / fields CSS:
4
+ * same semantic tokens, radius, typography and states so family cards read
5
+ * as siblings of the built-in Shell / Agent loop / Web search cards. */
6
+
7
+ .card {
8
+ border: 1px solid var(--dsw-alias-border-l2);
9
+ background: var(--dsw-alias-bg-layer-3);
10
+ border-radius: 12px;
11
+ list-style: none;
12
+ transition: border-color 0.16s, background 0.16s;
13
+ }
14
+
15
+ .card:hover {
16
+ border-color: var(--dsw-alias-label-dimmed);
17
+ }
18
+
19
+ .cardOpen {
20
+ background: var(--dsw-alias-bg-layer-2);
21
+ border-color: var(--dsw-alias-label-dimmed);
22
+ }
23
+
24
+ .header {
25
+ appearance: none;
26
+ width: 100%;
27
+ font: inherit;
28
+ color: inherit;
29
+ text-align: left;
30
+ cursor: pointer;
31
+ background: transparent;
32
+ border: 0;
33
+ border-radius: 12px;
34
+ align-items: center;
35
+ gap: 12px;
36
+ padding: 14px 16px;
37
+ display: flex;
38
+ }
39
+
40
+ .header:focus-visible {
41
+ outline: 2px solid var(--dsw-alias-brand-primary);
42
+ outline-offset: -2px;
43
+ }
44
+
45
+ .headerStatic {
46
+ width: 100%;
47
+ border-radius: 12px;
48
+ align-items: center;
49
+ gap: 12px;
50
+ padding: 14px 16px;
51
+ display: flex;
52
+ }
53
+
54
+ .headText {
55
+ flex-direction: column;
56
+ flex: 1;
57
+ gap: 4px;
58
+ min-width: 0;
59
+ display: flex;
60
+ }
61
+
62
+ .name {
63
+ color: var(--dsw-alias-label-primary);
64
+ font-size: 15px;
65
+ font-weight: 600;
66
+ line-height: 1.4;
67
+ }
68
+
69
+ .description {
70
+ color: var(--dsw-alias-label-tertiary);
71
+ font-size: 13px;
72
+ line-height: 1.5;
73
+ }
74
+
75
+ .pending {
76
+ white-space: nowrap;
77
+ background: var(--dsw-alias-bg-module-platform);
78
+ color: var(--dsw-alias-label-secondary);
79
+ border-radius: 999px;
80
+ flex: none;
81
+ padding: 1px 8px;
82
+ font-size: 11px;
83
+ font-weight: 500;
84
+ line-height: 17px;
85
+ }
86
+
87
+ .chevron {
88
+ color: var(--dsw-alias-label-tertiary);
89
+ flex: none;
90
+ transition: transform 0.16s;
91
+ }
92
+
93
+ .chevronOpen {
94
+ transform: rotate(180deg);
95
+ }
96
+
97
+ .body {
98
+ border-top: 1px solid var(--dsw-alias-border-l2);
99
+ margin: 0 16px;
100
+ padding-bottom: 8px;
101
+ }
102
+
103
+ .readOnly {
104
+ color: var(--dsw-alias-label-tertiary);
105
+ margin: 12px 0 0;
106
+ font-size: 12px;
107
+ line-height: 1.5;
108
+ }
109
+
110
+ .notExposed {
111
+ color: var(--dsw-alias-state-warn-primary);
112
+ margin: 12px 0 0;
113
+ font-size: 12px;
114
+ line-height: 1.5;
115
+ }
116
+
117
+ .footer {
118
+ border-top: 1px solid var(--dsw-alias-border-l2);
119
+ justify-content: flex-end;
120
+ align-items: center;
121
+ gap: 8px;
122
+ padding: 12px 0 4px;
123
+ display: flex;
124
+ }
125
+
126
+ .failed {
127
+ min-width: 0;
128
+ color: var(--dsw-alias-label-error);
129
+ flex: 1;
130
+ margin: 0;
131
+ font-size: 12px;
132
+ line-height: 1.5;
133
+ text-overflow: ellipsis;
134
+ overflow: hidden;
135
+ white-space: nowrap;
136
+ }
137
+
138
+ .discard,
139
+ .save {
140
+ appearance: none;
141
+ font: inherit;
142
+ cursor: pointer;
143
+ border: 1px solid transparent;
144
+ border-radius: 8px;
145
+ padding: 5px 14px;
146
+ font-size: 13px;
147
+ line-height: 1.5;
148
+ }
149
+
150
+ .discard {
151
+ border-color: var(--dsw-alias-border-l2);
152
+ color: var(--dsw-alias-label-secondary);
153
+ background: transparent;
154
+ }
155
+
156
+ .discard:hover:not(:disabled) {
157
+ color: var(--dsw-alias-label-primary);
158
+ border-color: var(--dsw-alias-label-dimmed);
159
+ }
160
+
161
+ .save {
162
+ background: var(--dsw-alias-label-primary);
163
+ color: var(--dsw-alias-bg-layer-3);
164
+ }
165
+
166
+ .discard:disabled,
167
+ .save:disabled {
168
+ opacity: 0.4;
169
+ cursor: default;
170
+ }
171
+
172
+ .discard:focus-visible,
173
+ .save:focus-visible {
174
+ outline: 2px solid var(--dsw-alias-brand-primary);
175
+ outline-offset: 1px;
176
+ }
177
+
178
+ .field {
179
+ flex-direction: column;
180
+ gap: 6px;
181
+ padding: 12px 0;
182
+ display: flex;
183
+ }
184
+
185
+ .field + .field {
186
+ border-top: 1px solid var(--dsw-alias-border-l2);
187
+ }
188
+
189
+ .head {
190
+ align-items: center;
191
+ gap: 8px;
192
+ display: flex;
193
+ }
194
+
195
+ .label {
196
+ min-width: 0;
197
+ color: var(--dsw-alias-label-primary);
198
+ flex: 1;
199
+ font-size: 13px;
200
+ font-weight: 500;
201
+ line-height: 1.5;
202
+ }
203
+
204
+ .badges {
205
+ align-items: center;
206
+ gap: 8px;
207
+ display: inline-flex;
208
+ }
209
+
210
+ .badge {
211
+ white-space: nowrap;
212
+ background: var(--dsw-alias-bg-module-platform);
213
+ color: var(--dsw-alias-label-secondary);
214
+ border-radius: 999px;
215
+ padding: 1px 8px;
216
+ font-size: 11px;
217
+ font-weight: 500;
218
+ line-height: 17px;
219
+ }
220
+
221
+ .reset {
222
+ font: inherit;
223
+ color: var(--dsw-alias-label-secondary);
224
+ cursor: pointer;
225
+ background: transparent;
226
+ border: none;
227
+ padding: 0;
228
+ font-size: 12px;
229
+ line-height: 1.5;
230
+ }
231
+
232
+ .reset:hover:not(:disabled) {
233
+ color: var(--dsw-alias-label-primary);
234
+ }
235
+
236
+ .reset:disabled {
237
+ cursor: default;
238
+ }
239
+
240
+ .reset:focus-visible {
241
+ outline: 2px solid var(--dsw-alias-brand-primary);
242
+ outline-offset: 2px;
243
+ }
244
+
245
+ .reset:focus-visible {
246
+ outline: 2px solid var(--dsw-alias-brand-primary);
247
+ outline-offset: 2px;
248
+ }
249
+
250
+ .input,
251
+ .select {
252
+ border: 1px solid var(--dsw-alias-border-l2);
253
+ background: var(--dsw-alias-bg-layer-3);
254
+ height: 34px;
255
+ font: inherit;
256
+ color: var(--dsw-alias-label-primary);
257
+ border-radius: 8px;
258
+ padding: 0 12px;
259
+ font-size: 13px;
260
+ line-height: 1.5;
261
+ }
262
+
263
+ .input:focus-visible,
264
+ .select:focus-visible {
265
+ border-color: var(--dsw-alias-brand-primary);
266
+ outline: none;
267
+ }
268
+
269
+ .input:disabled,
270
+ .select:disabled {
271
+ color: var(--dsw-alias-label-tertiary);
272
+ cursor: default;
273
+ }
274
+
275
+ .inputInvalid {
276
+ border: 1px solid var(--dsw-alias-label-error);
277
+ background: var(--dsw-alias-bg-layer-3);
278
+ height: 34px;
279
+ font: inherit;
280
+ color: var(--dsw-alias-label-primary);
281
+ border-radius: 8px;
282
+ padding: 0 12px;
283
+ font-size: 13px;
284
+ line-height: 1.5;
285
+ }
286
+
287
+ .inputInvalid:focus-visible {
288
+ outline: 2px solid var(--dsw-alias-label-error);
289
+ outline-offset: 1px;
290
+ border-color: var(--dsw-alias-label-error);
291
+ }
292
+
293
+ .invalid {
294
+ color: var(--dsw-alias-label-error);
295
+ margin: 0;
296
+ font-size: 12px;
297
+ line-height: 1.5;
298
+ }
299
+
300
+ .hint {
301
+ color: var(--dsw-alias-label-tertiary);
302
+ margin: 0;
303
+ font-size: 12px;
304
+ line-height: 1.5;
305
+ }
306
+
307
+ @media (prefers-reduced-motion: reduce) {
308
+ .card,
309
+ .header,
310
+ .chevron,
311
+ .chevronOpen,
312
+ .discard,
313
+ .save {
314
+ transition: none;
315
+ }
316
+ }