dsh-plugin-core 0.35.18 → 0.35.20

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 (35) hide show
  1. package/README.md +2 -1
  2. package/README.zh-CN.md +2 -1
  3. package/dist/ui/display/CodeViewer.d.ts +2 -1
  4. package/dist/ui/display/CodeViewer.d.ts.map +1 -1
  5. package/dist/ui/display/CodeViewer.js +20 -71
  6. package/dist/ui/display/CodeViewer.js.map +1 -1
  7. package/dist/ui/display/code-viewer.d.ts +9 -0
  8. package/dist/ui/display/code-viewer.d.ts.map +1 -0
  9. package/dist/ui/display/code-viewer.js +9 -0
  10. package/dist/ui/display/code-viewer.js.map +1 -0
  11. package/dist/ui/infra/code-mirror-surface.d.ts +29 -0
  12. package/dist/ui/infra/code-mirror-surface.d.ts.map +1 -0
  13. package/dist/ui/infra/code-mirror-surface.js +83 -0
  14. package/dist/ui/infra/code-mirror-surface.js.map +1 -0
  15. package/dist/ui/inputs/CodeEditor.d.ts +30 -0
  16. package/dist/ui/inputs/CodeEditor.d.ts.map +1 -0
  17. package/dist/ui/inputs/CodeEditor.js +25 -0
  18. package/dist/ui/inputs/CodeEditor.js.map +1 -0
  19. package/dist/ui/inputs/ModelPicker.js +1 -1
  20. package/dist/ui/inputs/ModelPicker.js.map +1 -1
  21. package/dist/ui/inputs/Picker.d.ts.map +1 -1
  22. package/dist/ui/inputs/Picker.js +6 -3
  23. package/dist/ui/inputs/Picker.js.map +1 -1
  24. package/dist/ui/inputs/picker-css.generated.d.ts +1 -1
  25. package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -1
  26. package/dist/ui/inputs/picker-css.generated.js +1 -1
  27. package/dist/ui/inputs/picker-css.generated.js.map +1 -1
  28. package/dist/ui/inputs/picker-logic.d.ts +2 -1
  29. package/dist/ui/inputs/picker-logic.d.ts.map +1 -1
  30. package/dist/ui/inputs/picker-logic.js +8 -5
  31. package/dist/ui/inputs/picker-logic.js.map +1 -1
  32. package/docs/design/structure.md +9 -6
  33. package/docs/help/ui.doc.ts +38 -3
  34. package/docs/help/ui.md +30 -2
  35. package/package.json +3 -3
package/README.md CHANGED
@@ -81,7 +81,7 @@ Three things worth knowing on day one:
81
81
  | `dsh-plugin-core/design` | Token variables (light + dark), `createStyleKit` injector factory, dark-mode predicate | no |
82
82
  | `dsh-plugin-core/ui` | The whole control set — actions, inputs, display, feedback, layout, navigation | yes |
83
83
  | `dsh-plugin-core/ui/official` | Direct re-exports of the host's official primitives, for the rare case you need one | yes |
84
- | `dsh-plugin-core/ui/code-viewer` | Code viewer with per-line highlighting (also used by file preview) | yes |
84
+ | `dsh-plugin-core/ui/code-viewer` | Read-only `CodeViewer` + editable `CodeEditor`, sharing one CodeMirror surface (file preview uses the viewer) | yes |
85
85
  | `dsh-plugin-core/ui/host-toast` | Bridge to the host's own toast | yes |
86
86
  | `dsh-plugin-core/utils` | Pure helpers: date, string, bytes, HTTP, built-in zh/en dictionary | no |
87
87
  | `dsh-plugin-core/adv/explorer` | File browser, file picker, docked file preview | yes |
@@ -123,6 +123,7 @@ Everything is built from tokens, takes its data through props, and follows the h
123
123
  - `ModelPicker` — a domain picker for the host model catalog, wired on both sides: in the host `apply` register `serveModelCatalog(ctx, { path })` from `dsh-plugin-core/host`, then in the client `apply` call `connectHost(ctx, { modelsPath: path })` with the **same** path constant; `refreshModelCatalog()` re-pulls the catalog when providers or models change. Unwired pickers show an empty state rather than inventing entries.
124
124
  - `DateTimePicker` — one control for a single instant or a range, precision `day` / `hour` / `minute` / `second`, two independent calendars, keyboard support, start floored and end ceiled.
125
125
  - `InputGroup` — input with attached actions.
126
+ - `CodeEditor` — a controlled CodeMirror editor imported from `dsh-plugin-core/ui/code-viewer`: pass `value` + `onChange`, and optionally `path` to pick a language (omitted = plain text). It stays off the main `ui` entry so its heavy dependency remains optional; `CodeViewer` from the same subpath is the read-only counterpart.
126
127
 
127
128
  #### Display
128
129
 
package/README.zh-CN.md CHANGED
@@ -81,7 +81,7 @@ export function TaskEditor(props: { name: string; setName: (v: string) => void }
81
81
  | `dsh-plugin-core/design` | token 变量(明 + 暗)、`createStyleKit` 注入器工厂、明暗判据 | 否 |
82
82
  | `dsh-plugin-core/ui` | 全套控件:动作、录入、展示、反馈、布局、导航 | 是 |
83
83
  | `dsh-plugin-core/ui/official` | 官方 primitives 的直接再导出(少数确实要用官方原件的场景) | 是 |
84
- | `dsh-plugin-core/ui/code-viewer` | 代码查看器(行级高亮,文件预览源码态用的也是它) | 是 |
84
+ | `dsh-plugin-core/ui/code-viewer` | 只读 `CodeViewer` + 可编辑 `CodeEditor`,共用一份 CodeMirror 底座(文件预览源码态用查看器) | 是 |
85
85
  | `dsh-plugin-core/ui/host` | 宿主自带 toast 的桥接 | 是 |
86
86
  | `dsh-plugin-core/utils` | 纯方法:日期、字符串、字节、HTTP,外加内置中英字典 | 否 |
87
87
  | `dsh-plugin-core/explorer` | 文件浏览、文件选择、右侧停靠的文件预览 | 是 |
@@ -123,6 +123,7 @@ export function TaskEditor(props: { name: string; setName: (v: string) => void }
123
123
  - `ModelPicker`——选择模型的领域选择器,两段式接线:宿主 `apply` 调 `dsh-plugin-core/host` 的 `serveModelCatalog(ctx, { path })`,client `apply` 用**同一个 path 常量**调 `connectHost(ctx, { modelsPath: path })`;供应商 / 模型有增减时调 `refreshModelCatalog()` 重拉。没接线就是空态,不编造。
124
124
  - `DateTimePicker`——一个控件覆盖「一个时刻」与「时间段」,精度 `day` / `hour` / `minute` / `second`,左右两块独立月历,键盘可用,起始端归零、结束端拉满。
125
125
  - `InputGroup`——带附着动作的输入框。
126
+ - `CodeEditor`——从 `dsh-plugin-core/ui/code-viewer` 引的受控 CodeMirror 编辑控件:给 `value` + `onChange` 即可,传 `path` 按扩展名高亮,不传即纯文本。重依赖只挂这条子路径、不进 `ui` 主入口;同子路径的 `CodeViewer` 是只读那一半。
126
127
 
127
128
  #### 展示
128
129
 
@@ -8,8 +8,9 @@
8
8
  * 移植自兄弟项目 dsh-task-dispatch-table(src/client/ui/CodeViewer.tsx),按本仓约定重写:
9
9
  * 类名 dshpc-cv*、颜色吃 --dshpc-* token、官方图标 / writeClipboard 经 ui/official.ts 单一入口。
10
10
  *
11
- * 只读但可选中:仅用 <CodeMirror readOnly>(= EditorState.readOnly,挡住一切输入),
11
+ * 只读但可选中:底座用 <CodeMirror readOnly>(= EditorState.readOnly,挡住一切输入),
12
12
  * 不设置 editable=false —— 后者会把内容设为不可编辑并连带禁用鼠标选区,导致无法框选复制。
13
+ * 需要可编辑请用同一子路径导出的 CodeEditor。
13
14
  *
14
15
  * 明暗判据(唯一):body[data-ds-dark-theme](见 design/style-kit.ts DARK_THEME_SELECTOR),
15
16
  * 禁用 prefers-color-scheme。
@@ -1 +1 @@
1
- {"version":3,"file":"CodeViewer.d.ts","sourceRoot":"","sources":["../../../src/ui/display/CodeViewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAA4D,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAMvH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAepD,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,CAAC,EAAE,SAAS,CAAA;IACZ,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CA+E/D"}
1
+ {"version":3,"file":"CodeViewer.d.ts","sourceRoot":"","sources":["../../../src/ui/display/CodeViewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAgC,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAG3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAKpD,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,CAAC,EAAE,SAAS,CAAA;IACZ,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAiC/D"}
@@ -8,56 +8,24 @@
8
8
  * 移植自兄弟项目 dsh-task-dispatch-table(src/client/ui/CodeViewer.tsx),按本仓约定重写:
9
9
  * 类名 dshpc-cv*、颜色吃 --dshpc-* token、官方图标 / writeClipboard 经 ui/official.ts 单一入口。
10
10
  *
11
- * 只读但可选中:仅用 <CodeMirror readOnly>(= EditorState.readOnly,挡住一切输入),
11
+ * 只读但可选中:底座用 <CodeMirror readOnly>(= EditorState.readOnly,挡住一切输入),
12
12
  * 不设置 editable=false —— 后者会把内容设为不可编辑并连带禁用鼠标选区,导致无法框选复制。
13
+ * 需要可编辑请用同一子路径导出的 CodeEditor。
13
14
  *
14
15
  * 明暗判据(唯一):body[data-ds-dark-theme](见 design/style-kit.ts DARK_THEME_SELECTOR),
15
16
  * 禁用 prefers-color-scheme。
16
17
  */
17
- import { createElement as h, useEffect, useMemo, useRef, useState } from 'react';
18
- import CodeMirror from '@uiw/react-codemirror';
19
- import { EditorView } from '@codemirror/view';
18
+ import { createElement as h, useState } from 'react';
20
19
  import { IconButton } from '../actions/Button.js';
21
20
  import { IconCheckOutlineRegular, IconCopyOutlineRegular, writeClipboard } from '../official.js';
22
- import { languageForPath } from './code-viewer-lang.js';
23
- import { codeMirrorTheme } from './code-viewer-theme.js';
24
21
  import { ensureComponentStyles } from '../infra/css.js';
25
22
  import { CODE_VIEWER_CSS } from './code-viewer-css.js';
26
- /** 唯一明暗判据属性名(宿主启动脚本 toggleAttribute 写入 body)。 */
27
- const DARK_ATTR = 'data-ds-dark-theme';
28
- function hostDark() {
29
- if (typeof document === 'undefined')
30
- return false;
31
- const body = document.body;
32
- return body === null ? false : body.hasAttribute(DARK_ATTR);
33
- }
23
+ import { CodeMirrorSurface } from '../infra/code-mirror-surface.js';
34
24
  export function CodeViewer(props) {
25
+ // 复制钮用 .dshpc-cv__copy:谁用 dshpc 类名谁注入(与底座同一个域,幂等)。
35
26
  ensureComponentStyles('code-viewer', CODE_VIEWER_CSS);
36
27
  const { text, path, t, className, style, height = '100%', lineNumbers = true } = props;
37
28
  const [copied, setCopied] = useState(false);
38
- const [dark, setDark] = useState(hostDark);
39
- /** 编辑器实例(定位到行要 dispatch scrollIntoView)。 */
40
- const viewRef = useRef(null);
41
- // 用户切主题 = 宿主 toggleAttribute 写 body[data-ds-dark-theme] ⇒ 用 MutationObserver 跟。
42
- // 挂载时先 sync 一次:插件挂载可能早于宿主写好该属性。
43
- useEffect(() => {
44
- if (typeof document === 'undefined' || typeof MutationObserver !== 'function')
45
- return;
46
- const body = document.body;
47
- if (body === null)
48
- return;
49
- const sync = () => { setDark(body.hasAttribute(DARK_ATTR)); };
50
- sync();
51
- const observer = new MutationObserver(sync);
52
- observer.observe(body, { attributeFilter: [DARK_ATTR] });
53
- return () => { observer.disconnect(); };
54
- }, []);
55
- const language = useMemo(() => languageForPath(path), [path]);
56
- const extensions = useMemo(() => [
57
- ...codeMirrorTheme(dark),
58
- EditorView.lineWrapping, // 默认全换行,避免横向滚动条
59
- ...(language !== null ? [language] : []),
60
- ], [dark, language]);
61
29
  const copy = () => {
62
30
  void writeClipboard(text).then((ok) => {
63
31
  if (ok) {
@@ -66,42 +34,23 @@ export function CodeViewer(props) {
66
34
  }
67
35
  });
68
36
  };
69
- // 定位到行:预览分页是逐步追加的,文本到了才能滚 ⇒ 跟着 text 再试一次。
70
- useEffect(() => {
71
- const view = viewRef.current;
72
- if (view === null || props.focusLine === undefined)
73
- return;
74
- if (props.focusLine > view.state.doc.lines)
75
- return;
76
- view.dispatch({ effects: EditorView.scrollIntoView(view.state.doc.line(props.focusLine).from, { y: 'center' }) });
77
- }, [text, props.focusLine]);
78
- return h('div', { className: `dshpc-cv${className ? ` ${className}` : ''}`, style }, h(IconButton, {
79
- variant: 'outline',
80
- size: 'md',
81
- icon: copied ? h(IconCheckOutlineRegular) : h(IconCopyOutlineRegular),
82
- label: copied ? t('codeCopied') : t('codeCopy'),
83
- className: 'dshpc-cv__copy',
84
- onClick: copy,
85
- }), h(CodeMirror, {
37
+ return h(CodeMirrorSurface, {
86
38
  value: text,
87
- className: 'dshpc-cv__editor dshpc-scroll-thin',
88
- theme: 'none',
89
- extensions,
39
+ path,
90
40
  readOnly: true,
91
41
  height,
92
- onCreateEditor: (view) => { viewRef.current = view; },
93
- style: { flex: '1 1 auto', minHeight: 0, overflow: 'hidden' },
94
- basicSetup: {
95
- lineNumbers,
96
- foldGutter: false,
97
- highlightActiveLine: false,
98
- highlightActiveLineGutter: false,
99
- autocompletion: false,
100
- bracketMatching: true,
101
- closeBrackets: false,
102
- indentOnInput: false,
103
- searchKeymap: false,
104
- },
105
- }));
42
+ lineNumbers,
43
+ className,
44
+ style,
45
+ focusLine: props.focusLine,
46
+ overlay: h(IconButton, {
47
+ variant: 'outline',
48
+ size: 'md',
49
+ icon: copied ? h(IconCheckOutlineRegular) : h(IconCopyOutlineRegular),
50
+ label: copied ? t('codeCopied') : t('codeCopy'),
51
+ className: 'dshpc-cv__copy',
52
+ onClick: copy,
53
+ }),
54
+ });
106
55
  }
107
56
  //# sourceMappingURL=CodeViewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeViewer.js","sourceRoot":"","sources":["../../../src/ui/display/CodeViewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeViewer.js","sourceRoot":"","sources":["../../../src/ui/display/CodeViewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,QAAQ,EAAyC,MAAM,OAAO,CAAA;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEhG,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAqBnE,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,mDAAmD;IACnD,qBAAqB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IACrD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IACtF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAW,EAAE,EAAE;YAC7C,IAAI,EAAE,EAAE,CAAC;gBACP,SAAS,CAAC,IAAI,CAAC,CAAA;gBACf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;YACjD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO,CAAC,CAAC,iBAAiB,EAAE;QAC1B,KAAK,EAAE,IAAI;QACX,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,MAAM;QACN,WAAW;QACX,SAAS;QACT,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE;YACrB,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;YACrE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/C,SAAS,EAAE,gBAAgB;YAC3B,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `dsh-plugin-core/ui/code-viewer` 子路径入口。
3
+ *
4
+ * 只读与可编辑是两个控件、一份 CodeMirror 底座;共用同一条子路径,不新开导出口
5
+ * (`docs/design/structure.md` §六:不再新增子路径)。重依赖只从这条子路径可达。
6
+ */
7
+ export { CodeViewer, type CodeViewerProps } from './CodeViewer.js';
8
+ export { CodeEditor, type CodeEditorProps } from '../inputs/CodeEditor.js';
9
+ //# sourceMappingURL=code-viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-viewer.d.ts","sourceRoot":"","sources":["../../../src/ui/display/code-viewer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `dsh-plugin-core/ui/code-viewer` 子路径入口。
3
+ *
4
+ * 只读与可编辑是两个控件、一份 CodeMirror 底座;共用同一条子路径,不新开导出口
5
+ * (`docs/design/structure.md` §六:不再新增子路径)。重依赖只从这条子路径可达。
6
+ */
7
+ export { CodeViewer } from './CodeViewer.js';
8
+ export { CodeEditor } from '../inputs/CodeEditor.js';
9
+ //# sourceMappingURL=code-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-viewer.js","sourceRoot":"","sources":["../../../src/ui/display/code-viewer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * CodeMirror 共用底座 —— 只读 CodeViewer 与可编辑 CodeEditor 共用这一份渲染。
3
+ *
4
+ * 放 infra 而不是某个控件目录:它是跨类共用的底座,不是控件(`structure.md` §二)。
5
+ * 不对外导出,只在 `dsh-plugin-core/ui/code-viewer` 子路径内被两个控件引用 ——
6
+ * `@uiw/react-codemirror` 是重依赖,不能从 `src/ui/index.ts` 可达。
7
+ *
8
+ * 明暗判据(唯一):body[data-ds-dark-theme],禁用 prefers-color-scheme。
9
+ */
10
+ import { type CSSProperties, type ReactElement, type ReactNode } from 'react';
11
+ export interface CodeMirrorSurfaceProps {
12
+ /** 受控文本。 */
13
+ value: string;
14
+ /** 文件路径(按扩展名选语法高亮)。 */
15
+ path: string;
16
+ /** 只读开关:true = EditorState.readOnly,挡住一切输入但仍可框选复制。 */
17
+ readOnly: boolean;
18
+ /** 可编辑时回传全文;只读时不传。 */
19
+ onChange?: (value: string) => void;
20
+ /** 可选:浮在编辑器右上角的插槽(只读查看器的复制按钮)。 */
21
+ overlay?: ReactNode;
22
+ className?: string;
23
+ style?: CSSProperties;
24
+ height?: string;
25
+ lineNumbers?: boolean;
26
+ focusLine?: number;
27
+ }
28
+ export declare function CodeMirrorSurface(props: CodeMirrorSurfaceProps): ReactElement;
29
+ //# sourceMappingURL=code-mirror-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-mirror-surface.d.ts","sourceRoot":"","sources":["../../../src/ui/infra/code-mirror-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAA4D,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAiBvI,MAAM,WAAW,sBAAsB;IACrC,YAAY;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,QAAQ,EAAE,OAAO,CAAA;IACjB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,kCAAkC;IAClC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAgE7E"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * CodeMirror 共用底座 —— 只读 CodeViewer 与可编辑 CodeEditor 共用这一份渲染。
3
+ *
4
+ * 放 infra 而不是某个控件目录:它是跨类共用的底座,不是控件(`structure.md` §二)。
5
+ * 不对外导出,只在 `dsh-plugin-core/ui/code-viewer` 子路径内被两个控件引用 ——
6
+ * `@uiw/react-codemirror` 是重依赖,不能从 `src/ui/index.ts` 可达。
7
+ *
8
+ * 明暗判据(唯一):body[data-ds-dark-theme],禁用 prefers-color-scheme。
9
+ */
10
+ import { createElement as h, useEffect, useMemo, useRef, useState } from 'react';
11
+ import CodeMirror from '@uiw/react-codemirror';
12
+ import { EditorView } from '@codemirror/view';
13
+ import { ensureComponentStyles } from './css.js';
14
+ import { CODE_VIEWER_CSS } from '../display/code-viewer-css.js';
15
+ import { languageForPath } from '../display/code-viewer-lang.js';
16
+ import { codeMirrorTheme } from '../display/code-viewer-theme.js';
17
+ const DARK_ATTR = 'data-ds-dark-theme';
18
+ function hostDark() {
19
+ if (typeof document === 'undefined')
20
+ return false;
21
+ const body = document.body;
22
+ return body === null ? false : body.hasAttribute(DARK_ATTR);
23
+ }
24
+ export function CodeMirrorSurface(props) {
25
+ ensureComponentStyles('code-viewer', CODE_VIEWER_CSS);
26
+ const { value, path, readOnly, onChange, overlay, className, style, height = '100%', lineNumbers = true } = props;
27
+ const [dark, setDark] = useState(hostDark);
28
+ /** 编辑器实例(定位到行要 dispatch scrollIntoView)。 */
29
+ const viewRef = useRef(null);
30
+ // 用户切主题 = 宿主 toggleAttribute 写 body[data-ds-dark-theme] ⇒ 用 MutationObserver 跟。
31
+ // 挂载时先 sync 一次:插件挂载可能早于宿主写好该属性。
32
+ useEffect(() => {
33
+ if (typeof document === 'undefined' || typeof MutationObserver !== 'function')
34
+ return;
35
+ const body = document.body;
36
+ if (body === null)
37
+ return;
38
+ const sync = () => { setDark(body.hasAttribute(DARK_ATTR)); };
39
+ sync();
40
+ const observer = new MutationObserver(sync);
41
+ observer.observe(body, { attributeFilter: [DARK_ATTR] });
42
+ return () => { observer.disconnect(); };
43
+ }, []);
44
+ const language = useMemo(() => languageForPath(path), [path]);
45
+ const extensions = useMemo(() => [
46
+ ...codeMirrorTheme(dark),
47
+ EditorView.lineWrapping, // 默认全换行,避免横向滚动条
48
+ ...(language !== null ? [language] : []),
49
+ ], [dark, language]);
50
+ // 定位到行:预览分页是逐步追加的,文本到了才能滚 ⇒ 跟着 value 再试一次。
51
+ useEffect(() => {
52
+ const view = viewRef.current;
53
+ if (view === null || props.focusLine === undefined)
54
+ return;
55
+ if (props.focusLine > view.state.doc.lines)
56
+ return;
57
+ view.dispatch({ effects: EditorView.scrollIntoView(view.state.doc.line(props.focusLine).from, { y: 'center' }) });
58
+ }, [value, props.focusLine]);
59
+ return h('div', { className: `dshpc-cv${className ? ` ${className}` : ''}`, style }, overlay ?? null, h(CodeMirror, {
60
+ value,
61
+ className: 'dshpc-cv__editor dshpc-scroll-thin',
62
+ theme: 'none',
63
+ extensions,
64
+ readOnly,
65
+ onChange: onChange === undefined ? undefined : (next) => { onChange(next); },
66
+ height,
67
+ onCreateEditor: (view) => { viewRef.current = view; },
68
+ style: { flex: '1 1 auto', minHeight: 0, overflow: 'hidden' },
69
+ // 编辑辅助只在可编辑态打开:只读查看器不该有当前行高亮 / 补全 / 括号配对这些编辑噪音。
70
+ basicSetup: {
71
+ lineNumbers,
72
+ foldGutter: false,
73
+ highlightActiveLine: !readOnly,
74
+ highlightActiveLineGutter: !readOnly,
75
+ autocompletion: !readOnly,
76
+ bracketMatching: true,
77
+ closeBrackets: !readOnly,
78
+ indentOnInput: !readOnly,
79
+ searchKeymap: !readOnly,
80
+ },
81
+ }));
82
+ }
83
+ //# sourceMappingURL=code-mirror-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-mirror-surface.js","sourceRoot":"","sources":["../../../src/ui/infra/code-mirror-surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * CodeEditor —— 可编辑的 CodeMirror 控件(录入类)。
3
+ *
4
+ * 与只读 CodeViewer 共用 `infra/code-mirror-surface`,两者同在 `dsh-plugin-core/ui/code-viewer`
5
+ * 子路径导出:调用方想只读用 CodeViewer、想编辑用 CodeEditor,重依赖只在这一条子路径里。
6
+ * 不要把它加进 `src/ui/index.ts` —— 那会把 CodeMirror 拖进所有插件的包。
7
+ *
8
+ * 受控:控件自己不存文本,改一个字就经 onChange 回传全文,由调用方决定怎么保存。
9
+ */
10
+ import { type CSSProperties, type ReactElement } from 'react';
11
+ export interface CodeEditorProps {
12
+ /** 受控文本。 */
13
+ value: string;
14
+ /** 文本变化回调(每次编辑带出全文)。 */
15
+ onChange: (value: string) => void;
16
+ /** 可选:文件路径,按扩展名选语法高亮;不传即纯文本。 */
17
+ path?: string;
18
+ /** 可选:透传调用方样式类名。 */
19
+ className?: string;
20
+ /** 可选:透传根 div 行内样式。 */
21
+ style?: CSSProperties;
22
+ /** 可选:编辑器高度,默认 "100%";无确定高度上下文传 "auto" 随内容撑高。 */
23
+ height?: string;
24
+ /** 可选:是否显示行号,默认 true。 */
25
+ lineNumbers?: boolean;
26
+ /** 可选:挂载/换文本后把这一行滚到视口中部。 */
27
+ focusLine?: number;
28
+ }
29
+ export declare function CodeEditor(props: CodeEditorProps): ReactElement;
30
+ //# sourceMappingURL=CodeEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/CodeEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAsB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAGjF,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,wBAAwB;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yBAAyB;IACzB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAY/D"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * CodeEditor —— 可编辑的 CodeMirror 控件(录入类)。
3
+ *
4
+ * 与只读 CodeViewer 共用 `infra/code-mirror-surface`,两者同在 `dsh-plugin-core/ui/code-viewer`
5
+ * 子路径导出:调用方想只读用 CodeViewer、想编辑用 CodeEditor,重依赖只在这一条子路径里。
6
+ * 不要把它加进 `src/ui/index.ts` —— 那会把 CodeMirror 拖进所有插件的包。
7
+ *
8
+ * 受控:控件自己不存文本,改一个字就经 onChange 回传全文,由调用方决定怎么保存。
9
+ */
10
+ import { createElement as h } from 'react';
11
+ import { CodeMirrorSurface } from '../infra/code-mirror-surface.js';
12
+ export function CodeEditor(props) {
13
+ return h(CodeMirrorSurface, {
14
+ value: props.value,
15
+ path: props.path ?? '',
16
+ readOnly: false,
17
+ onChange: props.onChange,
18
+ className: props.className,
19
+ style: props.style,
20
+ height: props.height,
21
+ lineNumbers: props.lineNumbers,
22
+ focusLine: props.focusLine,
23
+ });
24
+ }
25
+ //# sourceMappingURL=CodeEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeEditor.js","sourceRoot":"","sources":["../../../src/ui/inputs/CodeEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAyC,MAAM,OAAO,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAqBnE,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,OAAO,CAAC,CAAC,iBAAiB,EAAE;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;AACJ,CAAC"}
@@ -110,7 +110,7 @@ export function ModelPicker(props) {
110
110
  const options = group === undefined ? [] : flattenOptions([group]);
111
111
  // 根元素统一吃 className(其它形态根就是 Picker),row 另留一条独立定制轴;
112
112
  // 两个框各自的类名也交出去,消费方才能分别控制布局。
113
- const rowClass = ['dshpc-picker__row', props.className, props.rowClassName]
113
+ const rowClass = ['dshpc-picker__row', 'dshpc-picker__cascade', props.className, props.rowClassName]
114
114
  .filter((part) => part !== undefined && part !== '')
115
115
  .join(' ');
116
116
  return h('div', { className: rowClass }, h(Picker, {
@@ -1 +1 @@
1
- {"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../../src/ui/inputs/ModelPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAkB,MAAM,OAAO,CAAA;AACrG,OAAO,EAAE,CAAC,EAAkB,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAuC,MAAM,mBAAmB,CAAA;AACpI,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AA6D5C,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAA;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAA;IAC3C,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,KAAK,KAAK;QAChD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,CAAA;IAElE,+CAA+C;IAC/C,MAAM,OAAO,GAAG,oBAAoB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IAChH,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM;QACZ,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO;YACzB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC7B,KAAK,EAAE,KAAK,CAAC,QAAQ;gBACrB,KAAK,EAAE,KAAK,CAAC,WAAW;gBACxB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACpC,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE;oBACtC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;iBAC9B,CAAC,CAAC;aACJ,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAC,CAAA;IACT,wCAAwC;IACxC,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC9B,gDAAgD;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,CACjC,OAAO,CAAC,MAAM,KAAK,aAAa;WAC7B,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;WAC1D,QAAQ,CAAC,QAAQ,CACrB,CAAA;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAA;IAC/E,MAAM,SAAS,GAAG,CAAC,CAAoB,EAAQ,EAAE;QAC/C,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC,CAAA;IACD,MAAM,MAAM,GAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAA;IAEvG,4CAA4C;IAC5C,kDAAkD;IAClD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;IAC7C,MAAM,QAAQ,GACZ,cAAc,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC;QACrE,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAA;IAC3B,8BAA8B;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAChE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACrC,OAAO,CAAC,CAAC,MAAM,EAAE;YACf,OAAO,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC;YAC5E,KAAK;YACL,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,GAAG,MAAM;YACT,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,IAAI;YACJ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,YAAY,CAAC;YAClD,QAAQ;YACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,kDAAkD;YAClD,YAAY,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,IAAI,IAAI;gBAAE,sBAAsB,EAAE,CAAA,CAAC,CAAC;YACvE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,MAAM,EAAE;YACf,0CAA0C;YAC1C,MAAM,EAAE,aAAa,KAAK,SAAS;gBACjC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;YACnE,KAAK;YACL,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,GAAG,MAAM;YACT,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,IAAI;YACJ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,YAAY,CAAC;YAClD,QAAQ;YACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,kDAAkD;YAClD,YAAY,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,IAAI,IAAI;gBAAE,sBAAsB,EAAE,CAAA,CAAC,CAAC;YACvE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAClE,kDAAkD;IAClD,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;SACxE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;SACnD,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,OAAO,CAAC,CACN,KAAK,EACL,EAAE,SAAS,EAAE,QAAQ,EAAE,EACvB,CAAC,CAAC,MAAM,EAAE;QACR,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAChE,KAAK,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAC7C,WAAW,EAAE,EAAE,CAAC,eAAe,CAAC;QAChC,QAAQ;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC;QACnC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,UAAU;QACV,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,iBAAiB;QAClC,kDAAkD;QAClD,YAAY,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,IAAI,IAAI;YAAE,sBAAsB,EAAE,CAAA,CAAC,CAAC;QACvE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,iBAAiB,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACzD,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;KACF,CAAC,EACF,CAAC,CAAC,MAAM,EAAE;QACR,OAAO,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC;QAC5E,KAAK;QACL,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC;QAChC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI;QACJ,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,YAAY,CAAC;QAClD,QAAQ;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE;QACpD,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU;QACV,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,cAAc;QAC/B,kDAAkD;QAClD,YAAY,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,IAAI,IAAI;YAAE,sBAAsB,EAAE,CAAA,CAAC,CAAC;QACvE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,SAAS;KACpB,CAAC,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../../src/ui/inputs/ModelPicker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG7G,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGvD,OAAO,EASL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAO1B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAEzC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3C,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,gCAAgC;IAChC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,qDAAqD;IACrD,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAqT/D"}
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG7G,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGvD,OAAO,EASL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAO1B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAEzC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3C,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,gCAAgC;IAChC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,qDAAqD;IACrD,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAwT/D"}
@@ -64,12 +64,12 @@ export function Picker(props) {
64
64
  middleware: [
65
65
  offset(4),
66
66
  flip(),
67
- // 左右各留 12:菜单比触发器宽是常态,贴到视口边上会显得在「硬挤」(2026-11-10 用户)。
68
- shift({ padding: { top: 8, bottom: 8, left: 12, right: 12 } }),
67
+ // size 必须排在 shift 之前:菜单宽度是本中间件 apply 里才设的,size 后置会让
68
+ // availableWidth 退化成整个视口宽(maxWidth 恒 480),靠右的触发器菜单必然右溢(2026-11-10 真机)。
69
69
  floatingSize({
70
70
  apply({ elements, rects, availableWidth, availableHeight }) {
71
71
  // 触发器可以限宽,菜单不能跟着限:至少与触发器同宽,随内容变宽,封顶 480 免得太夸张;
72
- // 搜索框显式设了下限时菜单还要让出它的宽度,否则 100% 宽的搜索框会被裁掉。
72
+ // 搜索框显式设了下限时菜单还要让出它的宽度,但整体仍受可用宽度约束(见 resolveMenuSizing)。
73
73
  const menu = resolveMenuSizing(rects.reference.width, availableWidth, props.searchSizing);
74
74
  Object.assign(elements.floating.style, {
75
75
  minWidth: menu.minWidth,
@@ -78,6 +78,9 @@ export function Picker(props) {
78
78
  });
79
79
  },
80
80
  }),
81
+ // 左右各留 12:菜单比触发器宽是常态,贴到视口边上会显得在「硬挤」(2026-11-10 用户)。
82
+ // 此时 size 已定好尺寸,shift 的水平 clamp 才能基于最终宽度把菜单推回视口内。
83
+ shift({ padding: { top: 8, bottom: 8, left: 12, right: 12 } }),
81
84
  ],
82
85
  whileElementsMounted: autoUpdate,
83
86
  strategy: 'fixed',
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const PICKER_CSS = "\n/* \u63A7\u4EF6\u5360\u4F4D\u5BBD\u5EA6\u7531\u6839\u76D2\u5403\uFF1Awidth / minWidth / maxWidth \u5185\u8054\u5728 .dshpc-picker \u4E0A\u3002\n \u6839\u76D2\u662F inline-block\uFF0C\u53EA\u7ED9\u5B9A\u5185\u5C42\u89E6\u53D1\u5668\u65F6 shrink-to-fit \u4F1A\u6309\u9009\u4E2D\u6587\u5B57\u7684 max-content \u6491\u5BBD\u6839\u76D2\uFF0C\n \u542B\u767E\u5206\u6BD4\u7684 clamp \u5728\u56FA\u6709\u5C3A\u5BF8\u9636\u6BB5\u53C8\u89E3\u4E0D\u51FA\u6765 \u21D2 \u957F\u6A21\u578B\u540D\u8BA9\u63A7\u4EF6\u53F3\u4FA7\u7559\u767D\u3001\u540C\u6392\u63A7\u4EF6\u88AB\u6324\uFF082026-11-10 \u771F\u673A\uFF09\u3002\n \u6839\u76D2\u5B9A\u5BBD\u540E\u767E\u5206\u6BD4\u76F8\u5BF9\u7236 flex \u884C\u89E3\u6790\uFF0C\u8D85\u957F\u6587\u5B57\u53EA\u7531 __label \u7684\u7701\u7565\u53F7\u63A5\u4F4F\uFF0C\u63A7\u4EF6\u4E0D\u518D\u8DDF\u7740\u5185\u5BB9\u8DF3\u3002 */\n.dshpc-picker{position:relative;display:inline-block;max-width:100%;min-width:0;font-size:13px;line-height:20px}\n/* \u89E6\u53D1\u5668\u94FA\u6EE1\u6839\u76D2\uFF1Bhint \u6001\u591A\u4E00\u5C42 fieldwrap\uFF0C\u90A3\u5C42\u4E5F\u94FA\u6EE1\u3001\u6309\u94AE\u5403\u5269\u4F59\u5BBD\u5EA6\u7ED9\u95EE\u53F7\u8BA9\u4F4D\u3002 */\n.dshpc-picker > .dshpc-picker__trigger{width:100%;box-sizing:border-box}\n.dshpc-picker > .dshpc-fieldwrap{display:flex;width:100%;box-sizing:border-box}\n.dshpc-picker .dshpc-fieldwrap > .dshpc-picker__trigger{flex:1 1 auto;width:auto;min-width:0}\n.dshpc-picker__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n min-width:120px;max-width:100%;height:28px;padding:0 8px;\n color:var(--dshpc-fg);background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);cursor:pointer;\n}\n.dshpc-picker__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}\n/* \u805A\u7126\uFF08\u952E\u76D8\u6216\u70B9\u51FB\u9009\u4E2D\uFF09\u65F6\u4E0E\u5168\u7AD9\u4E00\u81F4\u7684\u84DD\u8272\u63CF\u8FB9\uFF1B\u83DC\u5355\u6253\u5F00\u540E\u7126\u70B9\u4F1A\u8FDB\u53BB\uFF0C\u89E6\u53D1\u5668\u81EA\u7136\u5931\u53BB\u7126\u70B9\u3002 */\n.dshpc-picker__trigger:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n/* \u6587\u5B57\u9ED8\u8BA4\u9760\u5DE6\uFF08\u5403\u6389\u5269\u4F59\u5BBD\u5EA6\uFF09\uFF0C\u4E0D\u7ED9 space-between \u628A\u77ED\u6587\u6848\u63A8\u5230\u4E2D\u95F4\u7684\u673A\u4F1A\uFF1B\n \u786E\u5B9E\u8981\u5C45\u4E2D\u5C31\u663E\u5F0F\u4F20 align=\"center\"\u3002 */\n.dshpc-picker__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}\n.dshpc-picker__trigger--center .dshpc-picker__label{text-align:center}\n.dshpc-picker__caret{flex:none;color:var(--dshpc-fg-3)}\n.dshpc-picker__icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n.dshpc-picker__option-icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n/* \u4E0B\u62C9\u9762\u677F\u53EA\u7559\u5B9A\u4F4D / \u88C1\u5207 / \u5B57\u53F7\uFF1A\u5E95\u8272\u00B7\u63CF\u8FB9\u00B7\u5706\u89D2\u00B7\u9634\u5F71\u6765\u81EA panel.css \u7684 menu \u6863\u3002 */\n.dshpc-picker__menu{\n z-index:var(--dshpc-z-popmenu);max-height:280px;overflow:hidden;\n display:flex;flex-direction:column;\n /* \u83DC\u5355\u7ECF FloatingPortal \u6302\u5230 body\uFF0C\u8131\u79BB .dshpc-picker\uFF0C\u987B\u663E\u5F0F\u5B57\u53F7\uFF0C\u5426\u5219\u7EE7\u627F body \u7684\u5927\u5B57\u53F7 */\n font-size:13px;line-height:20px;\n}\n/* \u56FA\u5B9A\u5934\u90E8\uFF08\u63D0\u793A + \u641C\u7D22\u6846\uFF09\uFF0C\u4E0D\u968F\u5217\u8868\u6EDA\uFF082026-11-06 \u7528\u6237\uFF09\u3002 */\n.dshpc-picker__head{flex:none;padding:4px 4px 0}\n/* \u6EDA\u52A8\u5728\u5185\u5C42\uFF1A\u5217\u8868\u8D34\u6EE1\u9762\u677F\u5185\u5BB9\u533A\uFF0C1px \u8BA9\u4F4D\u7531 .dshpc-scroll-thin \u7EDF\u4E00\u7ED9\n \uFF08\u4E0D\u7559\u7F1D\u5C31\u8D34\u6B7B\u5728\u8FB9\u6846\u5185\u58C1\u4E0A\uFF0C2026-11-06 \u7528\u6237\u53CD\u9988\uFF09\u3002\u4E0A\u4E0B\u89D2\u6EA2\u51FA\u7531\u9762\u677F overflow:hidden \u88C1\u6389\u3002 */\n.dshpc-picker__list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 4px 4px}\n/* \u5C3A\u5BF8\u6863\uFF08\u4E0E Field \u7684 sm/md/lg \u5BF9\u5E94\uFF09\u3002 */\n.dshpc-picker__trigger--sm{height:24px;font-size:12px}\n.dshpc-picker__trigger--lg{height:32px}\n/* \u2500\u2500 \u83DC\u5355\u5185\u90E8\uFF1A\u5168\u90E8\u6536\u8FDB .dshpc-picker__menu \u4F5C\u7528\u57DF\uFF08\u4E0D\u8981\u9000\u56DE\u88F8\u5355\u7C7B\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u6BCF\u4E2A\u6D88\u8D39\u63D2\u4EF6\u90FD\u628A core \u5185\u8054\u8FDB\u81EA\u5DF1\u7684\u4EA7\u7269\uFF0C\u540C\u4E00\u9875\u4E0A\u53EF\u80FD\u540C\u65F6\u6302\u7740**\u65E7\u7248 core** \u7684\u540C\u4E00\u6279\n dshpc-* \u89C4\u5219\uFF08v0.35.15 \u7684\u9009\u9879\u662F 4px \u5706\u89D2\u3001\u63D0\u793A\u6761\u662F\u901A\u680F 0 \u5706\u89D2\uFF09\u3002\u65E7\u89C4\u5219\u4E0E\u672C\u6587\u4EF6\u540C\u4E3A\n \u5355\u7C7B\u9009\u62E9\u5668\uFF080,1,0\uFF09\uFF0C\u8C01\u540E\u6302\u8F7D\u8C01\u8D62 \u2014\u2014 2026-11-10 \u7528\u6237\u771F\u673A\uFF1A\u9009\u4E2D\u884C / \u60AC\u505C\u884C / \u9EC4\u8272\u63D0\u793A\u5757\n \u4E09\u5904\u5706\u89D2\u5168\u9000\u56DE\u65E7\u503C\uFF0C\u800C\u641C\u7D22\u6846\uFF08\u65E7\u7248\u78B0\u5DE7\u540C\u503C\uFF09\u770B\u7740\u6B63\u5E38\u3002\n \u6536\u8FDB\u83DC\u5355\u7956\u5148\uFF080,2,0\uFF09\u540E\uFF0C\u65E0\u8BBA\u65B0\u65E7 CSS \u8C01\u5148\u6CE8\u5165\uFF0C\u5F53\u524D\u7248\u672C\u90FD\u8D62\u3002\n \u6839\u6CBB\u662F\u7C7B\u540D\u8DE8\u7248\u672C\u9694\u79BB\uFF08\u5DF2\u77E5\u672A\u5B8C\u6210\u9879\uFF09\uFF1B\u5728\u90A3\u4E4B\u524D\uFF0C\u8FD9\u5C42\u4F5C\u7528\u57DF\u4E0D\u662F\u53EF\u9009\u4FEE\u9970\u3002 */\n\n/* \u952E\u76D8\u6E38\u6807\u6240\u5728\u9879\uFF08\u65E0 hover \u4E5F\u8981\u770B\u5F97\u89C1\uFF09\u3002 */\n.dshpc-picker__menu .dshpc-picker__option[data-active='true']{background:var(--dshpc-surface-sunken);outline:1px solid var(--dshpc-border)}\n.dshpc-picker__menu .dshpc-picker__option--clear{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__search{\n width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;\n color:var(--dshpc-fg);background:var(--dshpc-surface-sunken);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);outline:none;\n}\n.dshpc-picker__menu .dshpc-picker__search::placeholder{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__group-label{\n padding:6px 8px 2px;color:var(--dshpc-fg-3);font-size:11px;\n}\n/* \u5706\u89D2\u53EA\u8DDF\u5168\u7AD9\u300C\u6846 / \u884C\u300D\u90A3\u4E00\u6863\u8D70\uFF1A--dshpc-radius-md\u3002\n \u771F\u6E90\u662F Surface\uFF08surface.css:4-5\u300C\u5BB9\u5668\u6863 = --dshpc-radius-md\uFF0C\u4E0E Button / Input \u540C\u6863\u300D\uFF09\uFF0CListRow \u7684\u884C\n \u5706\u89D2\u4E5F\u662F\u4ECE Surface \u7EE7\u627F\u7684 \u2014\u2014 \u6240\u4EE5\u8FD9\u91CC\u4E0D\u80FD\u81EA\u5DF1\u6311 xs/sm \u4E4B\u7C7B\u66F4\u5C0F\u7684\u6863\u30022026-11-10 \u7528\u6237\u771F\u673A\u622A\u56FE\uFF1A\n \u641C\u7D22\u6846\uFF08md\uFF09\u4E0E\u88AB\u9009\u4E2D\u7684\u84DD\u884C\uFF08xs\uFF09\u5706\u89D2\u660E\u663E\u4E0D\u9F50\uFF0C\u540C\u5728\u4E00\u4E2A\u9762\u677F\u91CC\u50CF\u4E24\u5957\u63A7\u4EF6\u3002\n \u5927\u5706\u89D2\u4ECD\u7136\u53EA\u5F52\u5916\u5C42\u83DC\u5355\uFF08panel.css \u7684 menu \u6863 + overflow:hidden\uFF09\u3002 */\n.dshpc-picker__menu .dshpc-picker__option{\n display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--dshpc-radius-md);cursor:pointer;\n color:var(--dshpc-fg);white-space:nowrap;\n}\n/* \u884C\u4E0E\u884C\u4E4B\u95F4\u9694 1px\uFF08\u7528\u6237 2026-11-10 \u6307\u540D\uFF1A\u53EA\u8981 1px\uFF0C\u4E0D\u8981\u95F4\u8DDD\u56DB\u62CD\u91CC\u7684 4px \u2014\u2014 \u56DB\u6863\u662F\u6392\u7248\u7528\u7684\uFF0C\n \u8FD9\u79CD\u300C\u628A\u4E24\u6761\u5E95\u8272\u5206\u5F00\u4E00\u70B9\u300D\u7684\u7EC6\u5206\u7F1D\u662F\u7528\u6237\u70B9\u540D\u7684\u503C\uFF0C\u6309\u539F\u6837\u5199\uFF09\u3002 */\n.dshpc-picker__menu .dshpc-picker__option + .dshpc-picker__option{margin-top:1px}\n/* hover / \u9009\u4E2D\u76F4\u63A5\u501F ListRow \u7684\u4E24\u6761 token \u2014\u2014 \u540C\u4E00\u4E2A\u300C\u884C\u300D\u8BED\u4E49\uFF0C\u4E0E\u5217\u8868\u6761\u76EE\u5BF9\u9F50\u3002\n \u9009\u4E2D\u4E0D\u67D3\u6587\u5B57\u8272\uFF1A\u84DD\u5B57\u662F\u300C\u94FE\u63A5\u300D\u8BED\u4E49\uFF0C\u884C\u9009\u4E2D\u53EA\u6362\u5E95\uFF08list-row.css:44-47 \u7684\u53E3\u5F84\uFF09\u3002\n 2026-11-10 \u7528\u6237\uFF1A\u539F\u6765\u84DD\u5E95\u84DD\u5B57 + \u4EAE\u4E00\u70B9\u7684\u7070\uFF0C\u548C ListRow \u5B8C\u5168\u4E0D\u662F\u4E00\u5957\u3002 */\n.dshpc-picker__menu .dshpc-picker__option:hover{background:var(--dshpc-listrow-hover-bg)}\n.dshpc-picker__menu .dshpc-picker__option--active{background:var(--dshpc-listrow-selected-bg);color:var(--dshpc-fg)}\n.dshpc-picker__menu .dshpc-picker__option--disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}\n/* \u9009\u9879\u6587\u5B57\u5403\u6389\u5269\u4F59\u5BBD\u5EA6\uFF1A\u8D85\u957F\u7701\u7565\u53F7\uFF08\u914D\u5408 MarqueeText hover \u8DD1\u9A6C\u706F\uFF09\uFF0C\u4E0D\u6491\u5BBD\u83DC\u5355\u3002 */\n.dshpc-picker__menu .dshpc-picker__option-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.dshpc-picker__menu .dshpc-picker__tick{width:12px;color:var(--dshpc-business)}\n.dshpc-picker__menu .dshpc-picker__empty{padding:8px;color:var(--dshpc-fg-3);text-align:center}\n/* \u63D0\u793A\u6761\uFF08\u5019\u9009\u4E0D\u5B8C\u6574 / \u5DF2\u5230\u4E0A\u9650\uFF09\u4E0E\u5217\u8868\u884C\u540C\u4E00\u5957\u300C\u5757\u300D\uFF1Amd \u5706\u89D2 + \u884C\u5185\u8DDD\uFF0C\u5DE6\u53F3\u5BF9\u9F50\u641C\u7D22\u6846\u4E0E\u9009\u9879\n \uFF08\u4E0D\u518D\u9760\u8D1F margin \u4F38\u5230\u83DC\u5355\u5185\u58C1\uFF09\uFF0C\u53EA\u662F\u914D\u8272\u6362\u6210\u63D0\u793A\u9EC4\u30022026-11-10 \u7528\u6237\uFF1A\u90A3\u6761\u901A\u680F\u592A\u96BE\u770B\u4E86\uFF0C\n \u8981\u505A\u6210\u4E0B\u9762\u9009\u4E2D\u884C\u90A3\u79CD\u6846\u3001\u7528\u63D0\u793A\u8272\u3002 */\n.dshpc-picker__menu .dshpc-picker__degraded{\n padding:6px 8px;margin:0 0 4px;border-radius:var(--dshpc-radius-md);\n color:var(--dshpc-warning-label);background:color-mix(in srgb,var(--dshpc-warning) 12%,transparent);\n font-size:11px;\n}\n.dshpc-picker__menu .dshpc-picker__row{display:flex;align-items:center;gap:8px}\n/* \u300C\u663E\u793A\u66F4\u591A\u300D\u8DDF\u5728\u6700\u540E\u4E00\u6761\u540E\u9762\u3001\u957F\u5F97\u50CF\u591A\u4E00\u6761\u9009\u9879\uFF082026-11-06 \u7528\u6237\uFF1A\u7FFB\u5230\u5E95\u53D1\u73B0\u4E0D\u5168\u624D\u4F1A\u627E\u5B83\uFF09\u3002\n \u5706\u89D2\u540C\u6837\u8D70 md\uFF1A\u5B83\u89C6\u89C9\u4E0A\u5C31\u662F\u5217\u8868\u91CC\u591A\u51FA\u6765\u7684\u4E00\u884C\uFF0C\u6863\u4F4D\u4E0E\u9009\u9879\u4E00\u81F4\uFF0C\u522B\u518D\u5355\u72EC\u6311\u4E00\u4E2A\u3002 */\n.dshpc-picker__menu .dshpc-picker__more{\n display:block;width:100%;margin-top:1px;padding:6px 8px;\n color:var(--dshpc-business);background:none;\n border:0;border-radius:var(--dshpc-radius-md);cursor:pointer;\n font-size:12px;line-height:20px;text-align:center;\n}\n.dshpc-picker__menu .dshpc-picker__more:hover{background:var(--dshpc-surface-sunken)}\n";
1
+ export declare const PICKER_CSS = "\n/* \u63A7\u4EF6\u5360\u4F4D\u5BBD\u5EA6\u7531\u6839\u76D2\u5403\uFF1Awidth / minWidth / maxWidth \u5185\u8054\u5728 .dshpc-picker \u4E0A\u3002\n \u6839\u76D2\u662F inline-block\uFF0C\u53EA\u7ED9\u5B9A\u5185\u5C42\u89E6\u53D1\u5668\u65F6 shrink-to-fit \u4F1A\u6309\u9009\u4E2D\u6587\u5B57\u7684 max-content \u6491\u5BBD\u6839\u76D2\uFF0C\n \u542B\u767E\u5206\u6BD4\u7684 clamp \u5728\u56FA\u6709\u5C3A\u5BF8\u9636\u6BB5\u53C8\u89E3\u4E0D\u51FA\u6765 \u21D2 \u957F\u6A21\u578B\u540D\u8BA9\u63A7\u4EF6\u53F3\u4FA7\u7559\u767D\u3001\u540C\u6392\u63A7\u4EF6\u88AB\u6324\uFF082026-11-10 \u771F\u673A\uFF09\u3002\n \u6839\u76D2\u5B9A\u5BBD\u540E\u767E\u5206\u6BD4\u76F8\u5BF9\u7236 flex \u884C\u89E3\u6790\uFF0C\u8D85\u957F\u6587\u5B57\u53EA\u7531 __label \u7684\u7701\u7565\u53F7\u63A5\u4F4F\uFF0C\u63A7\u4EF6\u4E0D\u518D\u8DDF\u7740\u5185\u5BB9\u8DF3\u3002 */\n.dshpc-picker{position:relative;display:inline-block;max-width:100%;min-width:0;font-size:13px;line-height:20px}\n/* cascade \u5916\u5C42\u884C\u4E4B\u524D\u6CA1\u6709\u5E03\u5C40\uFF1A\u4E24\u4E2A inline-block \u6309\u57FA\u7EBF\u6392 \u21D2 \u4F9B\u5E94\u5546\u6846\u4E0B\u6C89\u3001\u4E24\u6846\u4E4B\u95F4\u53EA\u5269 HTML \u7A7A\u767D\u770B\u7740\u8FDE\u4F53\u3002\n \u8FD9\u91CC\u53EA\u7ED9\u9ED8\u8BA4\u503C\uFF0C:where() \u7279\u5F02\u6027 0\uFF0C\u6D88\u8D39\u65B9 rowClassName \u7684\u4EFB\u610F\u89C4\u5219\u90FD\u80FD\u76D6\u56DE\u6765\u3002 */\n:where(.dshpc-picker__cascade){display:flex;align-items:center;gap:8px}\n/* \u89E6\u53D1\u5668\u94FA\u6EE1\u6839\u76D2\uFF1Bhint \u6001\u591A\u4E00\u5C42 fieldwrap\uFF0C\u90A3\u5C42\u4E5F\u94FA\u6EE1\u3001\u6309\u94AE\u5403\u5269\u4F59\u5BBD\u5EA6\u7ED9\u95EE\u53F7\u8BA9\u4F4D\u3002 */\n.dshpc-picker > .dshpc-picker__trigger{width:100%;box-sizing:border-box}\n.dshpc-picker > .dshpc-fieldwrap{display:flex;width:100%;box-sizing:border-box}\n.dshpc-picker .dshpc-fieldwrap > .dshpc-picker__trigger{flex:1 1 auto;width:auto;min-width:0}\n.dshpc-picker__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n min-width:120px;max-width:100%;height:28px;padding:0 8px;\n color:var(--dshpc-fg);background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);cursor:pointer;\n}\n.dshpc-picker__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}\n/* \u805A\u7126\uFF08\u952E\u76D8\u6216\u70B9\u51FB\u9009\u4E2D\uFF09\u65F6\u4E0E\u5168\u7AD9\u4E00\u81F4\u7684\u84DD\u8272\u63CF\u8FB9\uFF1B\u83DC\u5355\u6253\u5F00\u540E\u7126\u70B9\u4F1A\u8FDB\u53BB\uFF0C\u89E6\u53D1\u5668\u81EA\u7136\u5931\u53BB\u7126\u70B9\u3002 */\n.dshpc-picker__trigger:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n/* \u6587\u5B57\u9ED8\u8BA4\u9760\u5DE6\uFF08\u5403\u6389\u5269\u4F59\u5BBD\u5EA6\uFF09\uFF0C\u4E0D\u7ED9 space-between \u628A\u77ED\u6587\u6848\u63A8\u5230\u4E2D\u95F4\u7684\u673A\u4F1A\uFF1B\n \u786E\u5B9E\u8981\u5C45\u4E2D\u5C31\u663E\u5F0F\u4F20 align=\"center\"\u3002 */\n.dshpc-picker__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}\n.dshpc-picker__trigger--center .dshpc-picker__label{text-align:center}\n.dshpc-picker__caret{flex:none;color:var(--dshpc-fg-3)}\n.dshpc-picker__icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n.dshpc-picker__option-icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n/* \u4E0B\u62C9\u9762\u677F\u53EA\u7559\u5B9A\u4F4D / \u88C1\u5207 / \u5B57\u53F7\uFF1A\u5E95\u8272\u00B7\u63CF\u8FB9\u00B7\u5706\u89D2\u00B7\u9634\u5F71\u6765\u81EA panel.css \u7684 menu \u6863\u3002 */\n.dshpc-picker__menu{\n z-index:var(--dshpc-z-popmenu);max-height:280px;overflow:hidden;\n display:flex;flex-direction:column;\n /* \u83DC\u5355\u7ECF FloatingPortal \u6302\u5230 body\uFF0C\u8131\u79BB .dshpc-picker\uFF0C\u987B\u663E\u5F0F\u5B57\u53F7\uFF0C\u5426\u5219\u7EE7\u627F body \u7684\u5927\u5B57\u53F7 */\n font-size:13px;line-height:20px;\n}\n/* \u56FA\u5B9A\u5934\u90E8\uFF08\u63D0\u793A + \u641C\u7D22\u6846\uFF09\uFF0C\u4E0D\u968F\u5217\u8868\u6EDA\uFF082026-11-06 \u7528\u6237\uFF09\u3002 */\n.dshpc-picker__head{flex:none;padding:4px 4px 0}\n/* \u6EDA\u52A8\u5728\u5185\u5C42\uFF1A\u5217\u8868\u8D34\u6EE1\u9762\u677F\u5185\u5BB9\u533A\uFF0C1px \u8BA9\u4F4D\u7531 .dshpc-scroll-thin \u7EDF\u4E00\u7ED9\n \uFF08\u4E0D\u7559\u7F1D\u5C31\u8D34\u6B7B\u5728\u8FB9\u6846\u5185\u58C1\u4E0A\uFF0C2026-11-06 \u7528\u6237\u53CD\u9988\uFF09\u3002\u4E0A\u4E0B\u89D2\u6EA2\u51FA\u7531\u9762\u677F overflow:hidden \u88C1\u6389\u3002 */\n.dshpc-picker__list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 4px 4px}\n/* \u5C3A\u5BF8\u6863\uFF08\u4E0E Field \u7684 sm/md/lg \u5BF9\u5E94\uFF09\u3002 */\n.dshpc-picker__trigger--sm{height:24px;font-size:12px}\n.dshpc-picker__trigger--lg{height:32px}\n/* \u2500\u2500 \u83DC\u5355\u5185\u90E8\uFF1A\u5168\u90E8\u6536\u8FDB .dshpc-picker__menu \u4F5C\u7528\u57DF\uFF08\u4E0D\u8981\u9000\u56DE\u88F8\u5355\u7C7B\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u6BCF\u4E2A\u6D88\u8D39\u63D2\u4EF6\u90FD\u628A core \u5185\u8054\u8FDB\u81EA\u5DF1\u7684\u4EA7\u7269\uFF0C\u540C\u4E00\u9875\u4E0A\u53EF\u80FD\u540C\u65F6\u6302\u7740**\u65E7\u7248 core** \u7684\u540C\u4E00\u6279\n dshpc-* \u89C4\u5219\uFF08v0.35.15 \u7684\u9009\u9879\u662F 4px \u5706\u89D2\u3001\u63D0\u793A\u6761\u662F\u901A\u680F 0 \u5706\u89D2\uFF09\u3002\u65E7\u89C4\u5219\u4E0E\u672C\u6587\u4EF6\u540C\u4E3A\n \u5355\u7C7B\u9009\u62E9\u5668\uFF080,1,0\uFF09\uFF0C\u8C01\u540E\u6302\u8F7D\u8C01\u8D62 \u2014\u2014 2026-11-10 \u7528\u6237\u771F\u673A\uFF1A\u9009\u4E2D\u884C / \u60AC\u505C\u884C / \u9EC4\u8272\u63D0\u793A\u5757\n \u4E09\u5904\u5706\u89D2\u5168\u9000\u56DE\u65E7\u503C\uFF0C\u800C\u641C\u7D22\u6846\uFF08\u65E7\u7248\u78B0\u5DE7\u540C\u503C\uFF09\u770B\u7740\u6B63\u5E38\u3002\n \u6536\u8FDB\u83DC\u5355\u7956\u5148\uFF080,2,0\uFF09\u540E\uFF0C\u65E0\u8BBA\u65B0\u65E7 CSS \u8C01\u5148\u6CE8\u5165\uFF0C\u5F53\u524D\u7248\u672C\u90FD\u8D62\u3002\n \u6839\u6CBB\u662F\u7C7B\u540D\u8DE8\u7248\u672C\u9694\u79BB\uFF08\u5DF2\u77E5\u672A\u5B8C\u6210\u9879\uFF09\uFF1B\u5728\u90A3\u4E4B\u524D\uFF0C\u8FD9\u5C42\u4F5C\u7528\u57DF\u4E0D\u662F\u53EF\u9009\u4FEE\u9970\u3002 */\n\n/* \u952E\u76D8\u6E38\u6807\u6240\u5728\u9879\uFF08\u65E0 hover \u4E5F\u8981\u770B\u5F97\u89C1\uFF09\u3002 */\n.dshpc-picker__menu .dshpc-picker__option[data-active='true']{background:var(--dshpc-surface-sunken);outline:1px solid var(--dshpc-border)}\n.dshpc-picker__menu .dshpc-picker__option--clear{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__search{\n width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;\n color:var(--dshpc-fg);background:var(--dshpc-surface-sunken);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);outline:none;\n}\n.dshpc-picker__menu .dshpc-picker__search::placeholder{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__group-label{\n padding:6px 8px 2px;color:var(--dshpc-fg-3);font-size:11px;\n}\n/* \u5706\u89D2\u53EA\u8DDF\u5168\u7AD9\u300C\u6846 / \u884C\u300D\u90A3\u4E00\u6863\u8D70\uFF1A--dshpc-radius-md\u3002\n \u771F\u6E90\u662F Surface\uFF08surface.css:4-5\u300C\u5BB9\u5668\u6863 = --dshpc-radius-md\uFF0C\u4E0E Button / Input \u540C\u6863\u300D\uFF09\uFF0CListRow \u7684\u884C\n \u5706\u89D2\u4E5F\u662F\u4ECE Surface \u7EE7\u627F\u7684 \u2014\u2014 \u6240\u4EE5\u8FD9\u91CC\u4E0D\u80FD\u81EA\u5DF1\u6311 xs/sm \u4E4B\u7C7B\u66F4\u5C0F\u7684\u6863\u30022026-11-10 \u7528\u6237\u771F\u673A\u622A\u56FE\uFF1A\n \u641C\u7D22\u6846\uFF08md\uFF09\u4E0E\u88AB\u9009\u4E2D\u7684\u84DD\u884C\uFF08xs\uFF09\u5706\u89D2\u660E\u663E\u4E0D\u9F50\uFF0C\u540C\u5728\u4E00\u4E2A\u9762\u677F\u91CC\u50CF\u4E24\u5957\u63A7\u4EF6\u3002\n \u5927\u5706\u89D2\u4ECD\u7136\u53EA\u5F52\u5916\u5C42\u83DC\u5355\uFF08panel.css \u7684 menu \u6863 + overflow:hidden\uFF09\u3002 */\n.dshpc-picker__menu .dshpc-picker__option{\n display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--dshpc-radius-md);cursor:pointer;\n color:var(--dshpc-fg);white-space:nowrap;\n}\n/* \u884C\u4E0E\u884C\u4E4B\u95F4\u9694 1px\uFF08\u7528\u6237 2026-11-10 \u6307\u540D\uFF1A\u53EA\u8981 1px\uFF0C\u4E0D\u8981\u95F4\u8DDD\u56DB\u62CD\u91CC\u7684 4px \u2014\u2014 \u56DB\u6863\u662F\u6392\u7248\u7528\u7684\uFF0C\n \u8FD9\u79CD\u300C\u628A\u4E24\u6761\u5E95\u8272\u5206\u5F00\u4E00\u70B9\u300D\u7684\u7EC6\u5206\u7F1D\u662F\u7528\u6237\u70B9\u540D\u7684\u503C\uFF0C\u6309\u539F\u6837\u5199\uFF09\u3002 */\n.dshpc-picker__menu .dshpc-picker__option + .dshpc-picker__option{margin-top:1px}\n/* hover / \u9009\u4E2D\u76F4\u63A5\u501F ListRow \u7684\u4E24\u6761 token \u2014\u2014 \u540C\u4E00\u4E2A\u300C\u884C\u300D\u8BED\u4E49\uFF0C\u4E0E\u5217\u8868\u6761\u76EE\u5BF9\u9F50\u3002\n \u9009\u4E2D\u4E0D\u67D3\u6587\u5B57\u8272\uFF1A\u84DD\u5B57\u662F\u300C\u94FE\u63A5\u300D\u8BED\u4E49\uFF0C\u884C\u9009\u4E2D\u53EA\u6362\u5E95\uFF08list-row.css:44-47 \u7684\u53E3\u5F84\uFF09\u3002\n 2026-11-10 \u7528\u6237\uFF1A\u539F\u6765\u84DD\u5E95\u84DD\u5B57 + \u4EAE\u4E00\u70B9\u7684\u7070\uFF0C\u548C ListRow \u5B8C\u5168\u4E0D\u662F\u4E00\u5957\u3002 */\n.dshpc-picker__menu .dshpc-picker__option:hover{background:var(--dshpc-listrow-hover-bg)}\n.dshpc-picker__menu .dshpc-picker__option--active{background:var(--dshpc-listrow-selected-bg);color:var(--dshpc-fg)}\n.dshpc-picker__menu .dshpc-picker__option--disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}\n/* \u9009\u9879\u6587\u5B57\u5403\u6389\u5269\u4F59\u5BBD\u5EA6\uFF1A\u8D85\u957F\u7701\u7565\u53F7\uFF08\u914D\u5408 MarqueeText hover \u8DD1\u9A6C\u706F\uFF09\uFF0C\u4E0D\u6491\u5BBD\u83DC\u5355\u3002 */\n.dshpc-picker__menu .dshpc-picker__option-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.dshpc-picker__menu .dshpc-picker__tick{width:12px;color:var(--dshpc-business)}\n.dshpc-picker__menu .dshpc-picker__empty{padding:8px;color:var(--dshpc-fg-3);text-align:center}\n/* \u63D0\u793A\u6761\uFF08\u5019\u9009\u4E0D\u5B8C\u6574 / \u5DF2\u5230\u4E0A\u9650\uFF09\u4E0E\u5217\u8868\u884C\u540C\u4E00\u5957\u300C\u5757\u300D\uFF1Amd \u5706\u89D2 + \u884C\u5185\u8DDD\uFF0C\u5DE6\u53F3\u5BF9\u9F50\u641C\u7D22\u6846\u4E0E\u9009\u9879\n \uFF08\u4E0D\u518D\u9760\u8D1F margin \u4F38\u5230\u83DC\u5355\u5185\u58C1\uFF09\uFF0C\u53EA\u662F\u914D\u8272\u6362\u6210\u63D0\u793A\u9EC4\u30022026-11-10 \u7528\u6237\uFF1A\u90A3\u6761\u901A\u680F\u592A\u96BE\u770B\u4E86\uFF0C\n \u8981\u505A\u6210\u4E0B\u9762\u9009\u4E2D\u884C\u90A3\u79CD\u6846\u3001\u7528\u63D0\u793A\u8272\u3002 */\n.dshpc-picker__menu .dshpc-picker__degraded{\n padding:6px 8px;margin:0 0 4px;border-radius:var(--dshpc-radius-md);\n color:var(--dshpc-warning-label);background:color-mix(in srgb,var(--dshpc-warning) 12%,transparent);\n font-size:11px;\n}\n.dshpc-picker__menu .dshpc-picker__row{display:flex;align-items:center;gap:8px}\n/* \u300C\u663E\u793A\u66F4\u591A\u300D\u8DDF\u5728\u6700\u540E\u4E00\u6761\u540E\u9762\u3001\u957F\u5F97\u50CF\u591A\u4E00\u6761\u9009\u9879\uFF082026-11-06 \u7528\u6237\uFF1A\u7FFB\u5230\u5E95\u53D1\u73B0\u4E0D\u5168\u624D\u4F1A\u627E\u5B83\uFF09\u3002\n \u5706\u89D2\u540C\u6837\u8D70 md\uFF1A\u5B83\u89C6\u89C9\u4E0A\u5C31\u662F\u5217\u8868\u91CC\u591A\u51FA\u6765\u7684\u4E00\u884C\uFF0C\u6863\u4F4D\u4E0E\u9009\u9879\u4E00\u81F4\uFF0C\u522B\u518D\u5355\u72EC\u6311\u4E00\u4E2A\u3002 */\n.dshpc-picker__menu .dshpc-picker__more{\n display:block;width:100%;margin-top:1px;padding:6px 8px;\n color:var(--dshpc-business);background:none;\n border:0;border-radius:var(--dshpc-radius-md);cursor:pointer;\n font-size:12px;line-height:20px;text-align:center;\n}\n.dshpc-picker__menu .dshpc-picker__more:hover{background:var(--dshpc-surface-sunken)}\n";
2
2
  //# sourceMappingURL=picker-css.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/picker-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,qmWAAy4L,CAAA"}
1
+ {"version":3,"file":"picker-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/picker-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,4mXAAqlM,CAAA"}
@@ -1,4 +1,4 @@
1
1
  // ⚠️ 生成物,勿手改。真源 = src/ui/inputs/picker.css
2
2
  // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
- export const PICKER_CSS = "\n/* 控件占位宽度由根盒吃:width / minWidth / maxWidth 内联在 .dshpc-picker 上。\n 根盒是 inline-block,只给定内层触发器时 shrink-to-fit 会按选中文字的 max-content 撑宽根盒,\n 含百分比的 clamp 在固有尺寸阶段又解不出来 ⇒ 长模型名让控件右侧留白、同排控件被挤(2026-11-10 真机)。\n 根盒定宽后百分比相对父 flex 行解析,超长文字只由 __label 的省略号接住,控件不再跟着内容跳。 */\n.dshpc-picker{position:relative;display:inline-block;max-width:100%;min-width:0;font-size:13px;line-height:20px}\n/* 触发器铺满根盒;hint 态多一层 fieldwrap,那层也铺满、按钮吃剩余宽度给问号让位。 */\n.dshpc-picker > .dshpc-picker__trigger{width:100%;box-sizing:border-box}\n.dshpc-picker > .dshpc-fieldwrap{display:flex;width:100%;box-sizing:border-box}\n.dshpc-picker .dshpc-fieldwrap > .dshpc-picker__trigger{flex:1 1 auto;width:auto;min-width:0}\n.dshpc-picker__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n min-width:120px;max-width:100%;height:28px;padding:0 8px;\n color:var(--dshpc-fg);background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);cursor:pointer;\n}\n.dshpc-picker__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}\n/* 聚焦(键盘或点击选中)时与全站一致的蓝色描边;菜单打开后焦点会进去,触发器自然失去焦点。 */\n.dshpc-picker__trigger:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n/* 文字默认靠左(吃掉剩余宽度),不给 space-between 把短文案推到中间的机会;\n 确实要居中就显式传 align=\"center\"。 */\n.dshpc-picker__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}\n.dshpc-picker__trigger--center .dshpc-picker__label{text-align:center}\n.dshpc-picker__caret{flex:none;color:var(--dshpc-fg-3)}\n.dshpc-picker__icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n.dshpc-picker__option-icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n/* 下拉面板只留定位 / 裁切 / 字号:底色·描边·圆角·阴影来自 panel.css 的 menu 档。 */\n.dshpc-picker__menu{\n z-index:var(--dshpc-z-popmenu);max-height:280px;overflow:hidden;\n display:flex;flex-direction:column;\n /* 菜单经 FloatingPortal 挂到 body,脱离 .dshpc-picker,须显式字号,否则继承 body 的大字号 */\n font-size:13px;line-height:20px;\n}\n/* 固定头部(提示 + 搜索框),不随列表滚(2026-11-06 用户)。 */\n.dshpc-picker__head{flex:none;padding:4px 4px 0}\n/* 滚动在内层:列表贴满面板内容区,1px 让位由 .dshpc-scroll-thin 统一给\n (不留缝就贴死在边框内壁上,2026-11-06 用户反馈)。上下角溢出由面板 overflow:hidden 裁掉。 */\n.dshpc-picker__list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 4px 4px}\n/* 尺寸档(与 Field 的 sm/md/lg 对应)。 */\n.dshpc-picker__trigger--sm{height:24px;font-size:12px}\n.dshpc-picker__trigger--lg{height:32px}\n/* ── 菜单内部:全部收进 .dshpc-picker__menu 作用域(不要退回裸单类)─────────────\n 每个消费插件都把 core 内联进自己的产物,同一页上可能同时挂着**旧版 core** 的同一批\n dshpc-* 规则(v0.35.15 的选项是 4px 圆角、提示条是通栏 0 圆角)。旧规则与本文件同为\n 单类选择器(0,1,0),谁后挂载谁赢 —— 2026-11-10 用户真机:选中行 / 悬停行 / 黄色提示块\n 三处圆角全退回旧值,而搜索框(旧版碰巧同值)看着正常。\n 收进菜单祖先(0,2,0)后,无论新旧 CSS 谁先注入,当前版本都赢。\n 根治是类名跨版本隔离(已知未完成项);在那之前,这层作用域不是可选修饰。 */\n\n/* 键盘游标所在项(无 hover 也要看得见)。 */\n.dshpc-picker__menu .dshpc-picker__option[data-active='true']{background:var(--dshpc-surface-sunken);outline:1px solid var(--dshpc-border)}\n.dshpc-picker__menu .dshpc-picker__option--clear{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__search{\n width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;\n color:var(--dshpc-fg);background:var(--dshpc-surface-sunken);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);outline:none;\n}\n.dshpc-picker__menu .dshpc-picker__search::placeholder{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__group-label{\n padding:6px 8px 2px;color:var(--dshpc-fg-3);font-size:11px;\n}\n/* 圆角只跟全站「框 / 行」那一档走:--dshpc-radius-md。\n 真源是 Surface(surface.css:4-5「容器档 = --dshpc-radius-md,与 Button / Input 同档」),ListRow 的行\n 圆角也是从 Surface 继承的 —— 所以这里不能自己挑 xs/sm 之类更小的档。2026-11-10 用户真机截图:\n 搜索框(md)与被选中的蓝行(xs)圆角明显不齐,同在一个面板里像两套控件。\n 大圆角仍然只归外层菜单(panel.css 的 menu 档 + overflow:hidden)。 */\n.dshpc-picker__menu .dshpc-picker__option{\n display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--dshpc-radius-md);cursor:pointer;\n color:var(--dshpc-fg);white-space:nowrap;\n}\n/* 行与行之间隔 1px(用户 2026-11-10 指名:只要 1px,不要间距四拍里的 4px —— 四档是排版用的,\n 这种「把两条底色分开一点」的细分缝是用户点名的值,按原样写)。 */\n.dshpc-picker__menu .dshpc-picker__option + .dshpc-picker__option{margin-top:1px}\n/* hover / 选中直接借 ListRow 的两条 token —— 同一个「行」语义,与列表条目对齐。\n 选中不染文字色:蓝字是「链接」语义,行选中只换底(list-row.css:44-47 的口径)。\n 2026-11-10 用户:原来蓝底蓝字 + 亮一点的灰,和 ListRow 完全不是一套。 */\n.dshpc-picker__menu .dshpc-picker__option:hover{background:var(--dshpc-listrow-hover-bg)}\n.dshpc-picker__menu .dshpc-picker__option--active{background:var(--dshpc-listrow-selected-bg);color:var(--dshpc-fg)}\n.dshpc-picker__menu .dshpc-picker__option--disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}\n/* 选项文字吃掉剩余宽度:超长省略号(配合 MarqueeText hover 跑马灯),不撑宽菜单。 */\n.dshpc-picker__menu .dshpc-picker__option-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.dshpc-picker__menu .dshpc-picker__tick{width:12px;color:var(--dshpc-business)}\n.dshpc-picker__menu .dshpc-picker__empty{padding:8px;color:var(--dshpc-fg-3);text-align:center}\n/* 提示条(候选不完整 / 已到上限)与列表行同一套「块」:md 圆角 + 行内距,左右对齐搜索框与选项\n (不再靠负 margin 伸到菜单内壁),只是配色换成提示黄。2026-11-10 用户:那条通栏太难看了,\n 要做成下面选中行那种框、用提示色。 */\n.dshpc-picker__menu .dshpc-picker__degraded{\n padding:6px 8px;margin:0 0 4px;border-radius:var(--dshpc-radius-md);\n color:var(--dshpc-warning-label);background:color-mix(in srgb,var(--dshpc-warning) 12%,transparent);\n font-size:11px;\n}\n.dshpc-picker__menu .dshpc-picker__row{display:flex;align-items:center;gap:8px}\n/* 「显示更多」跟在最后一条后面、长得像多一条选项(2026-11-06 用户:翻到底发现不全才会找它)。\n 圆角同样走 md:它视觉上就是列表里多出来的一行,档位与选项一致,别再单独挑一个。 */\n.dshpc-picker__menu .dshpc-picker__more{\n display:block;width:100%;margin-top:1px;padding:6px 8px;\n color:var(--dshpc-business);background:none;\n border:0;border-radius:var(--dshpc-radius-md);cursor:pointer;\n font-size:12px;line-height:20px;text-align:center;\n}\n.dshpc-picker__menu .dshpc-picker__more:hover{background:var(--dshpc-surface-sunken)}\n";
3
+ export const PICKER_CSS = "\n/* 控件占位宽度由根盒吃:width / minWidth / maxWidth 内联在 .dshpc-picker 上。\n 根盒是 inline-block,只给定内层触发器时 shrink-to-fit 会按选中文字的 max-content 撑宽根盒,\n 含百分比的 clamp 在固有尺寸阶段又解不出来 ⇒ 长模型名让控件右侧留白、同排控件被挤(2026-11-10 真机)。\n 根盒定宽后百分比相对父 flex 行解析,超长文字只由 __label 的省略号接住,控件不再跟着内容跳。 */\n.dshpc-picker{position:relative;display:inline-block;max-width:100%;min-width:0;font-size:13px;line-height:20px}\n/* cascade 外层行之前没有布局:两个 inline-block 按基线排 ⇒ 供应商框下沉、两框之间只剩 HTML 空白看着连体。\n 这里只给默认值,:where() 特异性 0,消费方 rowClassName 的任意规则都能盖回来。 */\n:where(.dshpc-picker__cascade){display:flex;align-items:center;gap:8px}\n/* 触发器铺满根盒;hint 态多一层 fieldwrap,那层也铺满、按钮吃剩余宽度给问号让位。 */\n.dshpc-picker > .dshpc-picker__trigger{width:100%;box-sizing:border-box}\n.dshpc-picker > .dshpc-fieldwrap{display:flex;width:100%;box-sizing:border-box}\n.dshpc-picker .dshpc-fieldwrap > .dshpc-picker__trigger{flex:1 1 auto;width:auto;min-width:0}\n.dshpc-picker__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n min-width:120px;max-width:100%;height:28px;padding:0 8px;\n color:var(--dshpc-fg);background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);cursor:pointer;\n}\n.dshpc-picker__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}\n/* 聚焦(键盘或点击选中)时与全站一致的蓝色描边;菜单打开后焦点会进去,触发器自然失去焦点。 */\n.dshpc-picker__trigger:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n/* 文字默认靠左(吃掉剩余宽度),不给 space-between 把短文案推到中间的机会;\n 确实要居中就显式传 align=\"center\"。 */\n.dshpc-picker__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}\n.dshpc-picker__trigger--center .dshpc-picker__label{text-align:center}\n.dshpc-picker__caret{flex:none;color:var(--dshpc-fg-3)}\n.dshpc-picker__icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n.dshpc-picker__option-icon{display:inline-flex;flex:none;color:var(--dshpc-fg-2)}\n/* 下拉面板只留定位 / 裁切 / 字号:底色·描边·圆角·阴影来自 panel.css 的 menu 档。 */\n.dshpc-picker__menu{\n z-index:var(--dshpc-z-popmenu);max-height:280px;overflow:hidden;\n display:flex;flex-direction:column;\n /* 菜单经 FloatingPortal 挂到 body,脱离 .dshpc-picker,须显式字号,否则继承 body 的大字号 */\n font-size:13px;line-height:20px;\n}\n/* 固定头部(提示 + 搜索框),不随列表滚(2026-11-06 用户)。 */\n.dshpc-picker__head{flex:none;padding:4px 4px 0}\n/* 滚动在内层:列表贴满面板内容区,1px 让位由 .dshpc-scroll-thin 统一给\n (不留缝就贴死在边框内壁上,2026-11-06 用户反馈)。上下角溢出由面板 overflow:hidden 裁掉。 */\n.dshpc-picker__list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 4px 4px}\n/* 尺寸档(与 Field 的 sm/md/lg 对应)。 */\n.dshpc-picker__trigger--sm{height:24px;font-size:12px}\n.dshpc-picker__trigger--lg{height:32px}\n/* ── 菜单内部:全部收进 .dshpc-picker__menu 作用域(不要退回裸单类)─────────────\n 每个消费插件都把 core 内联进自己的产物,同一页上可能同时挂着**旧版 core** 的同一批\n dshpc-* 规则(v0.35.15 的选项是 4px 圆角、提示条是通栏 0 圆角)。旧规则与本文件同为\n 单类选择器(0,1,0),谁后挂载谁赢 —— 2026-11-10 用户真机:选中行 / 悬停行 / 黄色提示块\n 三处圆角全退回旧值,而搜索框(旧版碰巧同值)看着正常。\n 收进菜单祖先(0,2,0)后,无论新旧 CSS 谁先注入,当前版本都赢。\n 根治是类名跨版本隔离(已知未完成项);在那之前,这层作用域不是可选修饰。 */\n\n/* 键盘游标所在项(无 hover 也要看得见)。 */\n.dshpc-picker__menu .dshpc-picker__option[data-active='true']{background:var(--dshpc-surface-sunken);outline:1px solid var(--dshpc-border)}\n.dshpc-picker__menu .dshpc-picker__option--clear{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__search{\n width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;\n color:var(--dshpc-fg);background:var(--dshpc-surface-sunken);\n border:1px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);outline:none;\n}\n.dshpc-picker__menu .dshpc-picker__search::placeholder{color:var(--dshpc-fg-3)}\n.dshpc-picker__menu .dshpc-picker__group-label{\n padding:6px 8px 2px;color:var(--dshpc-fg-3);font-size:11px;\n}\n/* 圆角只跟全站「框 / 行」那一档走:--dshpc-radius-md。\n 真源是 Surface(surface.css:4-5「容器档 = --dshpc-radius-md,与 Button / Input 同档」),ListRow 的行\n 圆角也是从 Surface 继承的 —— 所以这里不能自己挑 xs/sm 之类更小的档。2026-11-10 用户真机截图:\n 搜索框(md)与被选中的蓝行(xs)圆角明显不齐,同在一个面板里像两套控件。\n 大圆角仍然只归外层菜单(panel.css 的 menu 档 + overflow:hidden)。 */\n.dshpc-picker__menu .dshpc-picker__option{\n display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--dshpc-radius-md);cursor:pointer;\n color:var(--dshpc-fg);white-space:nowrap;\n}\n/* 行与行之间隔 1px(用户 2026-11-10 指名:只要 1px,不要间距四拍里的 4px —— 四档是排版用的,\n 这种「把两条底色分开一点」的细分缝是用户点名的值,按原样写)。 */\n.dshpc-picker__menu .dshpc-picker__option + .dshpc-picker__option{margin-top:1px}\n/* hover / 选中直接借 ListRow 的两条 token —— 同一个「行」语义,与列表条目对齐。\n 选中不染文字色:蓝字是「链接」语义,行选中只换底(list-row.css:44-47 的口径)。\n 2026-11-10 用户:原来蓝底蓝字 + 亮一点的灰,和 ListRow 完全不是一套。 */\n.dshpc-picker__menu .dshpc-picker__option:hover{background:var(--dshpc-listrow-hover-bg)}\n.dshpc-picker__menu .dshpc-picker__option--active{background:var(--dshpc-listrow-selected-bg);color:var(--dshpc-fg)}\n.dshpc-picker__menu .dshpc-picker__option--disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}\n/* 选项文字吃掉剩余宽度:超长省略号(配合 MarqueeText hover 跑马灯),不撑宽菜单。 */\n.dshpc-picker__menu .dshpc-picker__option-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.dshpc-picker__menu .dshpc-picker__tick{width:12px;color:var(--dshpc-business)}\n.dshpc-picker__menu .dshpc-picker__empty{padding:8px;color:var(--dshpc-fg-3);text-align:center}\n/* 提示条(候选不完整 / 已到上限)与列表行同一套「块」:md 圆角 + 行内距,左右对齐搜索框与选项\n (不再靠负 margin 伸到菜单内壁),只是配色换成提示黄。2026-11-10 用户:那条通栏太难看了,\n 要做成下面选中行那种框、用提示色。 */\n.dshpc-picker__menu .dshpc-picker__degraded{\n padding:6px 8px;margin:0 0 4px;border-radius:var(--dshpc-radius-md);\n color:var(--dshpc-warning-label);background:color-mix(in srgb,var(--dshpc-warning) 12%,transparent);\n font-size:11px;\n}\n.dshpc-picker__menu .dshpc-picker__row{display:flex;align-items:center;gap:8px}\n/* 「显示更多」跟在最后一条后面、长得像多一条选项(2026-11-06 用户:翻到底发现不全才会找它)。\n 圆角同样走 md:它视觉上就是列表里多出来的一行,档位与选项一致,别再单独挑一个。 */\n.dshpc-picker__menu .dshpc-picker__more{\n display:block;width:100%;margin-top:1px;padding:6px 8px;\n color:var(--dshpc-business);background:none;\n border:0;border-radius:var(--dshpc-radius-md);cursor:pointer;\n font-size:12px;line-height:20px;text-align:center;\n}\n.dshpc-picker__menu .dshpc-picker__more:hover{background:var(--dshpc-surface-sunken)}\n";
4
4
  //# sourceMappingURL=picker-css.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-css.generated.js","sourceRoot":"","sources":["../../../src/ui/inputs/picker-css.generated.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,UAAU,GAAG,s4LAAs4L,CAAA"}
1
+ {"version":3,"file":"picker-css.generated.js","sourceRoot":"","sources":["../../../src/ui/inputs/picker-css.generated.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,UAAU,GAAG,klMAAklM,CAAA"}
@@ -55,7 +55,8 @@ export declare function resolveTriggerSizing(opts: PickerSizing): CSSProperties;
55
55
  /** 菜单宽度:至少与触发器同宽;搜索框设了下限时菜单跟着加宽,
56
56
  * 否则 100% 宽的搜索框会被菜单的 overflow:hidden 裁掉。
57
57
  * 8px = .dshpc-picker__head 左右各 4px 内距(改该 CSS 时同步改这里,有自检盯着)。
58
- * min-width 大于 max-width 时浏览器以 min-width 为准,所以显式设宽不会被 480 上限卡住。 */
58
+ * min-width 必须自己带上可用宽度上限:CSS 里 min-width 大于 max-width 时浏览器取 min-width,
59
+ * 靠右的触发器会因此被撑出视口,不能靠 max-width 兜底(2026-11-10 真机)。 */
59
60
  export declare function resolveMenuSizing(referenceWidth: number, availableWidth: number | undefined, searchSizing?: PickerSizing): {
60
61
  minWidth: string;
61
62
  maxWidth: string;
@@ -1 +1 @@
1
- {"version":3,"file":"picker-logic.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,8CAA8C;AAC9C,wBAAgB,QAAQ,CACtB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EACjC,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,GAClC,WAAW,EAAE,CAIf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAIpE;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAOnE;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAShF;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAU/E;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7F;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQnF;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAiB9C;AAED;;kDAEkD;AAClD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAUtE;AAED;;;mEAGmE;AACnE,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,CAAC,EAAE,YAAY,GAC1B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CASxC"}
1
+ {"version":3,"file":"picker-logic.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,8CAA8C;AAC9C,wBAAgB,QAAQ,CACtB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EACjC,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,GAClC,WAAW,EAAE,CAIf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAIpE;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAOnE;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAShF;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAU/E;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7F;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQnF;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EAAE,EACrB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAiB9C;AAED;;kDAEkD;AAClD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAUtE;AAED;;;;qDAIqD;AACrD,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,CAAC,EAAE,YAAY,GAC1B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAWxC"}
@@ -119,15 +119,18 @@ export function resolveTriggerSizing(opts) {
119
119
  /** 菜单宽度:至少与触发器同宽;搜索框设了下限时菜单跟着加宽,
120
120
  * 否则 100% 宽的搜索框会被菜单的 overflow:hidden 裁掉。
121
121
  * 8px = .dshpc-picker__head 左右各 4px 内距(改该 CSS 时同步改这里,有自检盯着)。
122
- * min-width 大于 max-width 时浏览器以 min-width 为准,所以显式设宽不会被 480 上限卡住。 */
122
+ * min-width 必须自己带上可用宽度上限:CSS 里 min-width 大于 max-width 时浏览器取 min-width,
123
+ * 靠右的触发器会因此被撑出视口,不能靠 max-width 兜底(2026-11-10 真机)。 */
123
124
  export function resolveMenuSizing(referenceWidth, availableWidth, searchSizing) {
124
125
  const floor = searchSizing?.width ?? searchSizing?.minWidth;
125
126
  const cssLen = (v) => (typeof v === 'number' ? `${v}px` : v);
127
+ const upper = Math.min(480, availableWidth ?? 480);
128
+ const desired = floor === undefined
129
+ ? `${referenceWidth}px`
130
+ : `max(${referenceWidth}px, calc(${cssLen(floor)} + 8px))`;
126
131
  return {
127
- minWidth: floor === undefined
128
- ? `${referenceWidth}px`
129
- : `max(${referenceWidth}px, calc(${cssLen(floor)} + 8px))`,
130
- maxWidth: `${Math.min(480, availableWidth ?? 480)}px`,
132
+ minWidth: `min(${desired}, ${upper}px)`,
133
+ maxWidth: `${upper}px`,
131
134
  };
132
135
  }
133
136
  //# sourceMappingURL=picker-logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-logic.js","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker-logic.js","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"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"}
@@ -28,10 +28,10 @@
28
28
  2. **必须拿到业务对象(工作区 / 会话 / 文件 / 模型)才能工作吗?** → 落 `src/adv/`,不进 `ui`。
29
29
  3. **按「用户拿它做什么」选类**:
30
30
 
31
- | 类 | 判据 | 成员(2026-11-05) |
31
+ | 类 | 判据 | 成员(2026-11-11) |
32
32
  |---|---|---|
33
33
  | **动作** `actions` | 点它触发一次操作,本身不产生值 | Button、IconButton |
34
- | **录入** `inputs` | 产生或修改一个值 | Input、NumberInput、PrefixedInput、Textarea、Checkbox、Segmented、Picker、DateTimePicker、WorkspacePicker、ModelPicker、InputGroup |
34
+ | **录入** `inputs` | 产生或修改一个值 | Input、NumberInput、PrefixedInput、Textarea、Checkbox、Segmented、Picker、DateTimePicker、WorkspacePicker、ModelPicker、InputGroup、CodeEditor |
35
35
  | **展示** `display` | 只呈现内容,不改变状态 | Card、StripCard、Surface、Chip、Table、ListRow、CodeViewer、MarqueeText、FlipText、LiveText、SectionHead、FieldHint |
36
36
  | **反馈** `feedback` | 表达「正在进行 / 刚完成 / 出错了」 | Modal、SideSheet、AlertModal、ConfirmModal、alertModal、confirmModal、Toast、host-toast、Loader、LoaderBar、Loading |
37
37
  | **布局** `layout` | 只决定内部元素怎么摆、怎么拼 | SplitGroup、PanelDock、QuickToolbar、resizer |
@@ -62,10 +62,10 @@ src/
62
62
  │ ├── inputs/ Field(Input/NumberInput/PrefixedInput)· Textarea · Checkbox
63
63
  │ │ Segmented · Picker(+ picker-logic / picker-icons)
64
64
  │ │ DateTimePicker(+ datetime-logic)· InputGroup
65
- │ │ WorkspacePicker · ModelPicker
65
+ │ │ WorkspacePicker · ModelPicker · CodeEditor
66
66
  │ ├── display/ Card · StripCard · Surface · Chip · Table · ListRow(+ table-logic / table-shared)
67
- │ │ CodeViewer(+ code-viewer-lang / -theme)· MarqueeText · FlipText
68
- │ │ LiveText · SectionHead · FieldHint
67
+ │ │ CodeViewer(+ code-viewer-lang / -theme / 子路径入口 code-viewer)
68
+ │ │ MarqueeText · FlipText · LiveText · SectionHead · FieldHint
69
69
  │ ├── feedback/ Modal · SideSheet · AlertModal · ConfirmModal(+ modal-host)
70
70
  │ │ Toast(+ toast-host)· host-toast · Loader · LoaderBar · Loading
71
71
  │ ├── layout/ SplitGroup · PanelDock(+ panel-dock-logic)· QuickToolbar
@@ -73,6 +73,7 @@ src/
73
73
  │ ├── navigation/ Pagination(+ pagination-logic)
74
74
  │ └── infra/ css · controls-css · locale · tooltip · host-data
75
75
  │ overlay / panel(跨类共用浮层底座 + 皮肤)· thenable · ticker · chevron
76
+ │ code-mirror-surface(只读 / 可编辑共用的渲染底座)
76
77
  │
77
78
  ├── utils/ ③ 纯方法 —— 零 React / 零 DOM(谁都能用,它不依赖谁)
78
79
  │ ├── date 日期 / 相对时间 / 时间区间
@@ -113,13 +114,15 @@ utils(谁都不依赖,谁都可以用)
113
114
  |---|---|---|
114
115
  | `dsh-plugin-core/ui` | 全部控件(唯一主入口,扁平导出) | 单入口是业界共识(AntD / MUI 同);按类开 7 条子路径只增加记忆成本 |
115
116
  | `dsh-plugin-core/ui/official` | L1 官方 adapter | `adv/*` 要直接取官方件,属结构性第二入口 |
116
- | `dsh-plugin-core/ui/code-viewer` | CodeViewer | 直接引 `@uiw/react-codemirror`,重依赖必须可选 |
117
+ | `dsh-plugin-core/ui/code-viewer` | CodeViewer(只读)· CodeEditor(可编辑) | 直接引 `@uiw/react-codemirror`,重依赖必须可选;两个控件共用 `infra/code-mirror-surface`,不另开导出口 |
117
118
  | `dsh-plugin-core/ui/host-toast` | 宿主原生 Toast | 入口静态 import 官方件会让 Node 单测崩(旧坑) |
118
119
  | `dsh-plugin-core/adv/explorer` | 文件浏览 | 应用模块独立子路径 |
119
120
  | `dsh-plugin-core/adv/session` | 会话预览 | 同上 |
120
121
 
121
122
  **不再新增子路径**:想加,先问「是重依赖,还是只是分类?」—— 分类归目录,不归导出口。
122
123
 
124
+ 只读 / 可编辑是同一份 CodeMirror 能力的两种用法,属分类不属新依赖,故共用 `ui/code-viewer` 一条子路径:可编辑件归 `inputs`、只读件归 `display`,两个控件都不进主入口(否则重依赖会拖进所有插件的包)。
125
+
123
126
  ## 七、demo 展示分区(两级,17 页)
124
127
 
125
128
  侧栏与右侧共用 `packages/demo/src/sections/index.tsx` 的 `ALL_SECTIONS`(单一事实源)。
@@ -346,8 +346,43 @@ const doc: DocTopic = {
346
346
  zh: '定制边界:props 就是定制面,要改行为请组合 props,不要 fork 源码;追加 class/style 只允许补布局,皮肤走 token 覆盖;缺控件请先提需求。',
347
347
  en: 'Customization: props are the surface — compose them instead of forking source; appended class/style may only patch layout, skins go through token overrides; raise a request before writing a missing control yourself.',
348
348
  },
349
+ {
350
+ zh: '代码编辑走独立子路径 `dsh-plugin-core/ui/code-viewer`:`CodeViewer` 只读(文件预览源码态用的也是它),`CodeEditor` 可编辑,两者共用一份 CodeMirror 底座。重依赖只挂在这条子路径上,不进 `ui` 主入口,所以不用编辑器的插件不会背上它。',
351
+ en: 'Code editing lives on the separate `dsh-plugin-core/ui/code-viewer` subpath: `CodeViewer` is read-only (also used by file preview source mode) and `CodeEditor` is editable; both share one CodeMirror surface. The heavy dependency stays on this subpath, off the main `ui` entry, so plugins that never edit code do not carry it.',
352
+ },
353
+ ],
354
+ code: [
355
+ { id: 'ui-setup', lang: 'ts', src: setup },
356
+ {
357
+ id: 'ui-code-editor',
358
+ lang: 'ts',
359
+ src: `import { CodeEditor, CodeViewer } from 'dsh-plugin-core/ui/code-viewer'
360
+
361
+ // 可编辑:值由调用方存,改一个字就把全文交回来
362
+ h(CodeEditor, {
363
+ value: draft,
364
+ onChange: (next) => setDraft(next),
365
+ path: 'notes.md',
366
+ })
367
+
368
+ // 只读:原来的查看器(文件预览源码态用的也是它)
369
+ h(CodeViewer, { text: draft, path: 'notes.md', t })`,
370
+ },
371
+ ],
372
+ api: [
373
+ {
374
+ id: 'ui-code-editor-api',
375
+ rows: [
376
+ { name: 'value', type: 'string', def: '—', desc: { zh: 'CodeEditor 受控文本;控件自己不存状态', en: 'Controlled text for CodeEditor; the control keeps no state of its own' } },
377
+ { name: 'onChange', type: '(value: string) => void', def: '—', desc: { zh: '每次编辑回传全文,由调用方决定怎么保存', en: 'Emits the full text on every edit; the caller decides how to persist it' } },
378
+ { name: 'path', type: 'string', def: "''", desc: { zh: '按扩展名选语法高亮;不传即纯文本', en: 'Picks a language by extension; omitted means plain text' } },
379
+ { name: 'height', type: 'string', def: "'100%'", desc: { zh: '编辑器高度;无确定高度上下文传 auto 随内容撑高', en: 'Editor height; pass auto to grow with content when no fixed height exists' } },
380
+ { name: 'lineNumbers', type: 'boolean', def: 'true', desc: { zh: '是否显示行号', en: 'Whether line numbers are shown' } },
381
+ { name: 'focusLine', type: 'number', def: '—', desc: { zh: '挂载 / 换文本后把这一行滚到视口中部', en: 'Scrolls this line into the centre after mount or a text change' } },
382
+ { name: 'className / style', type: 'string / CSSProperties', def: '—', desc: { zh: '透传给根 div,只补布局,皮肤走 token', en: 'Passed to the root div; layout only, skins go through tokens' } },
383
+ ],
384
+ },
349
385
  ],
350
- code: [{ id: 'ui-setup', lang: 'ts', src: setup }],
351
386
  },
352
387
  {
353
388
  id: 'button',
@@ -428,8 +463,8 @@ const doc: DocTopic = {
428
463
  heading: { zh: 'Picker / WorkspacePicker / ModelPicker', en: 'Picker / WorkspacePicker / ModelPicker' },
429
464
  prose: [
430
465
  {
431
- zh: 'Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`。`width` / `minWidth` / `maxWidth` 约束整个控件的占位宽度(落在根盒、触发器自动铺满):定宽忽略另两者;选中文字再长控件位置也不动,超长只省略号 + hover 跑马灯。下拉内搜索框另走 `searchSizing`(同一套宽度三轴),不传就沿用 CSS 的 100% 铺满;菜单会随 `searchSizing` 的下限自动加宽,不会被菜单的 overflow:hidden 裁掉。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。',
432
- en: 'Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`. `width`/`minWidth`/`maxWidth` size the control box (the root; the trigger fills it), so a long label never shifts the control. The search box takes its own `searchSizing` (the same width/minWidth/maxWidth triple) and fills 100% by default; the menu widens with the search box lower bound so it is never clipped by overflow:hidden.',
466
+ zh: 'Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`。`width` / `minWidth` / `maxWidth` 约束整个控件的占位宽度(落在根盒、触发器自动铺满):定宽忽略另两者;选中文字再长控件位置也不动,超长只省略号 + hover 跑马灯。菜单靠视口边缘会自动收窄并内收(左右各留 12px),消费方不必处理贴边。下拉内搜索框另走 `searchSizing`(同一套宽度三轴),不传就沿用 CSS 的 100% 铺满;菜单会随 `searchSizing` 的下限自动加宽,不会被菜单的 overflow:hidden 裁掉。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。',
467
+ en: 'Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`. `width`/`minWidth`/`maxWidth` size the control box (the root; the trigger fills it), so a long label never shifts the control. Near a viewport edge the dropdown narrows and shifts back inside (12px on each side), so callers need no edge handling. The search box takes its own `searchSizing` (the same width/minWidth/maxWidth triple) and fills 100% by default; the menu widens with the search box lower bound so it is never clipped by overflow:hidden.',
433
468
  },
434
469
  {
435
470
  zh: '首屏分页:`limit` 按**选项条数**跨组切片,列表末尾「显示更多」(跟在最后一条后,像多一条选项)每点一次再追加 `limit` 条;搜索结果走同一套分页,换搜索词或重新展开都回到首屏。不传 `limit` 就是全量渲染。`PickerOption.keywords` 是可选的单个字符串(调用方自己拼),只和 `label` 拼起来参与大小写不敏感子串匹配,**绝不渲染**——适合任务 UUID 这种「用户能贴、但不该显示」的搜索词。纯逻辑另可单用 `sliceGroups`。',
package/docs/help/ui.md CHANGED
@@ -22,6 +22,20 @@
22
22
 
23
23
  > EN: Customization: props are the surface — compose them instead of forking source; appended class/style may only patch layout, skins go through token overrides; raise a request before writing a missing control yourself.
24
24
 
25
+ 代码编辑走独立子路径 `dsh-plugin-core/ui/code-viewer`:`CodeViewer` 只读(文件预览源码态用的也是它),`CodeEditor` 可编辑,两者共用一份 CodeMirror 底座。重依赖只挂在这条子路径上,不进 `ui` 主入口,所以不用编辑器的插件不会背上它。
26
+
27
+ > EN: Code editing lives on the separate `dsh-plugin-core/ui/code-viewer` subpath: `CodeViewer` is read-only (also used by file preview source mode) and `CodeEditor` is editable; both share one CodeMirror surface. The heavy dependency stays on this subpath, off the main `ui` entry, so plugins that never edit code do not carry it.
28
+
29
+ | 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
30
+ |---|---|---|---|---|
31
+ | `value` | `string` | — | CodeEditor 受控文本;控件自己不存状态 | Controlled text for CodeEditor; the control keeps no state of its own |
32
+ | `onChange` | `(value: string) => void` | — | 每次编辑回传全文,由调用方决定怎么保存 | Emits the full text on every edit; the caller decides how to persist it |
33
+ | `path` | `string` | '' | 按扩展名选语法高亮;不传即纯文本 | Picks a language by extension; omitted means plain text |
34
+ | `height` | `string` | '100%' | 编辑器高度;无确定高度上下文传 auto 随内容撑高 | Editor height; pass auto to grow with content when no fixed height exists |
35
+ | `lineNumbers` | `boolean` | true | 是否显示行号 | Whether line numbers are shown |
36
+ | `focusLine` | `number` | — | 挂载 / 换文本后把这一行滚到视口中部 | Scrolls this line into the centre after mount or a text change |
37
+ | `className / style` | `string / CSSProperties` | — | 透传给根 div,只补布局,皮肤走 token | Passed to the root div; layout only, skins go through tokens |
38
+
25
39
  ```ts id="ui-setup"
26
40
  import { createStyleKit } from 'dsh-plugin-core/design'
27
41
  import { setStyleKit } from 'dsh-plugin-core/ui'
@@ -31,6 +45,20 @@ setStyleKit(createStyleKit({ id: 'dsh-task-reminder-ui' }))
31
45
  // 用不到的控件其 CSS 也不会进你的包。
32
46
  ```
33
47
 
48
+ ```ts id="ui-code-editor"
49
+ import { CodeEditor, CodeViewer } from 'dsh-plugin-core/ui/code-viewer'
50
+
51
+ // 可编辑:值由调用方存,改一个字就把全文交回来
52
+ h(CodeEditor, {
53
+ value: draft,
54
+ onChange: (next) => setDraft(next),
55
+ path: 'notes.md',
56
+ })
57
+
58
+ // 只读:原来的查看器(文件预览源码态用的也是它)
59
+ h(CodeViewer, { text: draft, path: 'notes.md', t })
60
+ ```
61
+
34
62
  ## Button / IconButton / Segmented
35
63
 
36
64
  > EN: Button / IconButton / Segmented
@@ -99,9 +127,9 @@ Segmented:`items`(必填)支持单选 / 多选,`size`(默认 lg;三
99
127
 
100
128
  > EN: Picker / WorkspacePicker / ModelPicker
101
129
 
102
- Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`。`width` / `minWidth` / `maxWidth` 约束整个控件的占位宽度(落在根盒、触发器自动铺满):定宽忽略另两者;选中文字再长控件位置也不动,超长只省略号 + hover 跑马灯。下拉内搜索框另走 `searchSizing`(同一套宽度三轴),不传就沿用 CSS 的 100% 铺满;菜单会随 `searchSizing` 的下限自动加宽,不会被菜单的 overflow:hidden 裁掉。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。
130
+ Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`。`width` / `minWidth` / `maxWidth` 约束整个控件的占位宽度(落在根盒、触发器自动铺满):定宽忽略另两者;选中文字再长控件位置也不动,超长只省略号 + hover 跑马灯。菜单靠视口边缘会自动收窄并内收(左右各留 12px),消费方不必处理贴边。下拉内搜索框另走 `searchSizing`(同一套宽度三轴),不传就沿用 CSS 的 100% 铺满;菜单会随 `searchSizing` 的下限自动加宽,不会被菜单的 overflow:hidden 裁掉。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。
103
131
 
104
- > EN: Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`. `width`/`minWidth`/`maxWidth` size the control box (the root; the trigger fills it), so a long label never shifts the control. The search box takes its own `searchSizing` (the same width/minWidth/maxWidth triple) and fills 100% by default; the menu widens with the search box lower bound so it is never clipped by overflow:hidden.
132
+ > EN: Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`. `width`/`minWidth`/`maxWidth` size the control box (the root; the trigger fills it), so a long label never shifts the control. Near a viewport edge the dropdown narrows and shifts back inside (12px on each side), so callers need no edge handling. The search box takes its own `searchSizing` (the same width/minWidth/maxWidth triple) and fills 100% by default; the menu widens with the search box lower bound so it is never clipped by overflow:hidden.
105
133
 
106
134
  首屏分页:`limit` 按**选项条数**跨组切片,列表末尾「显示更多」(跟在最后一条后,像多一条选项)每点一次再追加 `limit` 条;搜索结果走同一套分页,换搜索词或重新展开都回到首屏。不传 `limit` 就是全量渲染。`PickerOption.keywords` 是可选的单个字符串(调用方自己拼),只和 `label` 拼起来参与大小写不敏感子串匹配,**绝不渲染**——适合任务 UUID 这种「用户能贴、但不该显示」的搜索词。纯逻辑另可单用 `sliceGroups`。
107
135
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-core",
3
- "version": "0.35.18",
3
+ "version": "0.35.20",
4
4
  "packageManager": "pnpm@12.3.4",
5
5
  "description": "Shared base for DSH plugins: design tokens, UI controls, utils, workspace explorer, session preview",
6
6
  "keywords": [
@@ -33,8 +33,8 @@
33
33
  "default": "./dist/ui/official.js"
34
34
  },
35
35
  "./ui/code-viewer": {
36
- "types": "./dist/ui/display/CodeViewer.d.ts",
37
- "default": "./dist/ui/display/CodeViewer.js"
36
+ "types": "./dist/ui/display/code-viewer.d.ts",
37
+ "default": "./dist/ui/display/code-viewer.js"
38
38
  },
39
39
  "./ui/host-toast": {
40
40
  "types": "./dist/ui/feedback/host-toast.d.ts",