one-design-next 0.0.20 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chart/index.d.ts +2 -2
- package/dist/composer/editor.js +61 -19
- package/dist/composer/index.d.ts +6 -0
- package/dist/composer/index.js +30 -11
- package/dist/drawer/index.d.ts +4 -0
- package/dist/drawer/index.js +5 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/preview-panel/index.d.ts +3 -1
- package/dist/preview-panel/index.js +9 -0
- package/package.json +4 -1
package/dist/chart/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import './style';
|
|
3
|
-
export interface
|
|
3
|
+
export interface ChartProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
4
|
/**
|
|
5
5
|
* @description 是否禁用
|
|
6
6
|
* @default false
|
|
@@ -10,5 +10,5 @@ export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
10
10
|
/**
|
|
11
11
|
* Chart 图表
|
|
12
12
|
*/
|
|
13
|
-
declare const Chart: React.FC<
|
|
13
|
+
declare const Chart: React.FC<ChartProps>;
|
|
14
14
|
export default Chart;
|
package/dist/composer/editor.js
CHANGED
|
@@ -129,7 +129,7 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
129
129
|
var lastEditorRangeRef = useRef(null);
|
|
130
130
|
/** 抑制换行后短窗口内的 selection 二次校正,避免首次 chip 后换行闪烁。 */
|
|
131
131
|
var suppressSelectionNormalizeCountRef = useRef(0);
|
|
132
|
-
/**
|
|
132
|
+
/** 用户刚执行"主动换行"时,允许 empty 判定在一次变更内保持非空。 */
|
|
133
133
|
var forceNonEmptyOnceRef = useRef(false);
|
|
134
134
|
|
|
135
135
|
/** 派生:编辑器是否完全空(无文本 + 无 chip),驱动 placeholder。 */
|
|
@@ -137,17 +137,27 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
137
137
|
_useState2 = _slicedToArray(_useState, 2),
|
|
138
138
|
empty = _useState2[0],
|
|
139
139
|
setEmpty = _useState2[1];
|
|
140
|
-
/**
|
|
141
|
-
|
|
140
|
+
/**
|
|
141
|
+
* contenteditable 的 DOM 由浏览器直接改写。受控模式下,输入后延后一帧校验:
|
|
142
|
+
* - 父组件已回写 value:DOM 与 valueProp 一致,不做事
|
|
143
|
+
* - 父组件未回写 value:把 DOM 拉回 valueProp,维持受控语义
|
|
144
|
+
*/
|
|
145
|
+
var _useState3 = useState(0),
|
|
142
146
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
controlledSyncTick = _useState4[0],
|
|
148
|
+
setControlledSyncTick = _useState4[1];
|
|
149
|
+
var controlledSyncRafRef = useRef(null);
|
|
150
|
+
/** 输入模态:键盘操作时置为 keyboard,用于抑制"鼠标隐藏但 hover 仍生效"的视觉残留。 */
|
|
151
|
+
var _useState5 = useState('pointer'),
|
|
152
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
153
|
+
inputModality = _useState6[0],
|
|
154
|
+
setInputModality = _useState6[1];
|
|
145
155
|
|
|
146
156
|
/** ScrollArea root 显式高度。Base UI viewport=100%,root 必须有确定 height。 */
|
|
147
|
-
var
|
|
148
|
-
|
|
149
|
-
scrollHeight =
|
|
150
|
-
setScrollHeight =
|
|
157
|
+
var _useState7 = useState(null),
|
|
158
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
159
|
+
scrollHeight = _useState8[0],
|
|
160
|
+
setScrollHeight = _useState8[1];
|
|
151
161
|
|
|
152
162
|
/** onHeightChange 用 ref 稳定,避免 ResizeObserver effect 反复 cleanup/重建。 */
|
|
153
163
|
var onHeightChangeRef = useRef(onHeightChange);
|
|
@@ -189,9 +199,33 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
189
199
|
}, [minHeightPx, maxHeightPx]);
|
|
190
200
|
var shouldShowPlaceholder = useCallback(function (el) {
|
|
191
201
|
if (!isEditorEmpty(el)) return false;
|
|
192
|
-
// placeholder
|
|
193
|
-
var
|
|
194
|
-
|
|
202
|
+
// 编辑器文本为空时,清理浏览器残留的 <br> 以确保 placeholder 正常显示
|
|
203
|
+
var brs = el.querySelectorAll('br');
|
|
204
|
+
if (brs.length > 0) {
|
|
205
|
+
brs.forEach(function (br) {
|
|
206
|
+
return br.remove();
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
210
|
+
}, []);
|
|
211
|
+
var scheduleControlledSync = useCallback(function () {
|
|
212
|
+
if (!isControlled) return;
|
|
213
|
+
if (controlledSyncRafRef.current != null) {
|
|
214
|
+
cancelAnimationFrame(controlledSyncRafRef.current);
|
|
215
|
+
}
|
|
216
|
+
controlledSyncRafRef.current = requestAnimationFrame(function () {
|
|
217
|
+
controlledSyncRafRef.current = null;
|
|
218
|
+
setControlledSyncTick(function (v) {
|
|
219
|
+
return v + 1;
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
}, [isControlled]);
|
|
223
|
+
useEffect(function () {
|
|
224
|
+
return function () {
|
|
225
|
+
if (controlledSyncRafRef.current != null) {
|
|
226
|
+
cancelAnimationFrame(controlledSyncRafRef.current);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
195
229
|
}, []);
|
|
196
230
|
var fireChange = useCallback(function () {
|
|
197
231
|
var el = editorRef.current;
|
|
@@ -205,9 +239,10 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
205
239
|
}
|
|
206
240
|
forceNonEmptyOnceRef.current = false;
|
|
207
241
|
onChange === null || onChange === void 0 || onChange(getPlainText(el));
|
|
242
|
+
scheduleControlledSync();
|
|
208
243
|
// editor.height 锁定时 RO 不触发,主动同步一次,确保升格判定能拿到 scrollHeight
|
|
209
244
|
syncHeight();
|
|
210
|
-
}, [onChange, shouldShowPlaceholder, syncHeight]);
|
|
245
|
+
}, [onChange, scheduleControlledSync, shouldShowPlaceholder, syncHeight]);
|
|
211
246
|
|
|
212
247
|
/* ─────────────────────────────────────
|
|
213
248
|
* chip 管理
|
|
@@ -283,7 +318,7 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
283
318
|
var el = editorRef.current;
|
|
284
319
|
if (!el) return;
|
|
285
320
|
// 优先恢复缓存光标到真实 selection;菜单点击时 selection 已经离开 editor,
|
|
286
|
-
// 直接走 useChipManager 的 fallback 会落到 editor
|
|
321
|
+
// 直接走 useChipManager 的 fallback 会落到 editor 末尾,导致"飞到第一/末行"。
|
|
287
322
|
var cached = lastEditorRangeRef.current;
|
|
288
323
|
if (cached && cached.startContainer.isConnected && cached.endContainer.isConnected && el.contains(cached.startContainer) && el.contains(cached.endContainer)) {
|
|
289
324
|
var sel = window.getSelection();
|
|
@@ -420,15 +455,21 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
420
455
|
}, [syncHeight]);
|
|
421
456
|
|
|
422
457
|
/* ─────────────────────────────────────
|
|
423
|
-
*
|
|
424
|
-
*
|
|
458
|
+
* 受控同步:仅在外部 value 变化,或输入后延迟校验 tick 变化时校验 DOM。
|
|
459
|
+
* contenteditable 不像原生 input 会被 React 自动回写 value;如果父组件
|
|
460
|
+
* 在 onChange 里不回写,DOM 会继续保留用户刚输入的内容,造成"看起来受控,
|
|
461
|
+
* 实际脱离 valueProp"的假受控状态。
|
|
462
|
+
*
|
|
463
|
+
* 不能每次 render 都同步:输入换行会触发高度测量等内部 render,若此时父组件
|
|
464
|
+
* 正常回写 value 尚未完成,就会被旧 valueProp 抢先覆盖 DOM,导致光标跳回行首。
|
|
465
|
+
* 因此输入后用 requestAnimationFrame 延后一拍,只在父组件没回写时兜底。
|
|
425
466
|
*
|
|
426
467
|
* 注:当前阶段还未实现「从 marker 反序列化 chip」,所以重置 DOM 时
|
|
427
468
|
* 只是 textContent= 写入;marker 字符会进入 DOM 当作不可见文本。
|
|
428
469
|
* 同时必须 resetChips(),否则旧的 chip host 已被销毁,但 React state
|
|
429
470
|
* 里残留的 chip 数据会让 portal 渲染挂在 detached node(沉默泄漏)。
|
|
430
471
|
* ───────────────────────────────────── */
|
|
431
|
-
|
|
472
|
+
useLayoutEffect(function () {
|
|
432
473
|
if (!isControlled) return;
|
|
433
474
|
var el = editorRef.current;
|
|
434
475
|
if (!el) return;
|
|
@@ -441,8 +482,9 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
441
482
|
triggerRef.current = null;
|
|
442
483
|
onTriggerChange === null || onTriggerChange === void 0 || onTriggerChange(null);
|
|
443
484
|
}
|
|
485
|
+
syncHeight();
|
|
444
486
|
}
|
|
445
|
-
}, [
|
|
487
|
+
}, [controlledSyncTick, isControlled, onTriggerChange, resetChips, shouldShowPlaceholder, syncHeight, valueProp]);
|
|
446
488
|
|
|
447
489
|
/* ─────────────────────────────────────
|
|
448
490
|
* 输入事件
|
|
@@ -531,7 +573,7 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
531
573
|
var node = range.startContainer,
|
|
532
574
|
offset = range.startOffset;
|
|
533
575
|
|
|
534
|
-
// 用户换行生成的 "<br> + CARET_SPACER":一次 Backspace
|
|
576
|
+
// 用户换行生成的 "<br> + CARET_SPACER":一次 Backspace 应合并删除,避免看起来"卡一下"
|
|
535
577
|
{
|
|
536
578
|
var spacerText = null;
|
|
537
579
|
var br = null;
|
package/dist/composer/index.d.ts
CHANGED
|
@@ -55,6 +55,12 @@ export interface ComposerProps {
|
|
|
55
55
|
* - 返回 `false` 或 `Promise<false>` → 发送失败,**不清空**输入框与附件。
|
|
56
56
|
* - 返回 `void` / `true` 或 `Promise<void | true>` → 发送成功,正常清空。
|
|
57
57
|
* - 不返回(旧用法)→ 视为成功,保持向后兼容。
|
|
58
|
+
*
|
|
59
|
+
* **清空范围(重要)**:组件只清空它自己拥有的内部状态。
|
|
60
|
+
* - `value` / `attachments` 受控时,发送后组件**不会**自动清空也不会
|
|
61
|
+
* 代抛 onChange('') / onAttachmentsChange([]);如需清空,请在 onSend
|
|
62
|
+
* 内自行 `setValue('')` / `setAttachments([])`。
|
|
63
|
+
* - `value` / `attachments` 非受控时,组件按上述返回值语义自动清空。
|
|
58
64
|
*/
|
|
59
65
|
onSend: (segments: ComposerSegment[], meta?: SendMeta) => void | boolean | Promise<void | boolean>;
|
|
60
66
|
onStop?: () => void;
|
package/dist/composer/index.js
CHANGED
|
@@ -268,10 +268,24 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
|
|
|
268
268
|
* - meta:attachments / webSearch 等非正文数据;都为空时不传
|
|
269
269
|
*
|
|
270
270
|
* 需要单串文本的业务方在 onSend 内自行调 segmentsToReadableText。
|
|
271
|
-
* onSend 返回 false 或 Promise<false> 时视为发送失败,不清空;否则正常清空。
|
|
271
|
+
* onSend 返回 false 或 Promise<false> 时视为发送失败,不清空;否则正常清空。
|
|
272
|
+
*
|
|
273
|
+
* 清空策略按受控/非受控分两条路径——受控时**完全不动** value / attachments,
|
|
274
|
+
* 把决策权留给业务方(在 onSend 内自行 setValue('') / setAttachments([])):
|
|
275
|
+
*
|
|
276
|
+
* - 受控 value:editor.clear() 会直接 innerHTML='' + resetChips(),
|
|
277
|
+
* 若业务方未立即把 valueProp 回写为 '',editor 的受控同步 effect 会用
|
|
278
|
+
* 旧 valueProp 重置 textContent,但 chip host 已销毁、chip state 已清,
|
|
279
|
+
* 导致 chip 永久丢失 + 文本闪一下又回来。
|
|
280
|
+
* 也不能由组件代抛 onChange('')——常见写法 `onChange={setValue}` 会被
|
|
281
|
+
* 立即回写,等于组件强行清空 value,违反受控合约。
|
|
282
|
+
* - 受控 attachments:useControlledState 的 setter 写不进 mergedValue;
|
|
283
|
+
* 也不能代抛 onAttachmentsChange([])——同样会被业务方常见的
|
|
284
|
+
* `onAttachmentsChange={setAttachments}` 直接回写。
|
|
285
|
+
* - webSearch 无受控接口,直接清。 */
|
|
272
286
|
var handleSend = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
273
|
-
var _editorRef$current$ge2, _editorRef$current10
|
|
274
|
-
var chips, segments, hasAttachments, meta, hasMeta, result;
|
|
287
|
+
var _editorRef$current$ge2, _editorRef$current10;
|
|
288
|
+
var chips, segments, hasAttachments, meta, hasMeta, result, _editorRef$current11;
|
|
275
289
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
276
290
|
while (1) switch (_context.prev = _context.next) {
|
|
277
291
|
case 0:
|
|
@@ -305,15 +319,19 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
|
|
|
305
319
|
return _context.abrupt("return");
|
|
306
320
|
case 16:
|
|
307
321
|
closeParamPanel();
|
|
308
|
-
(
|
|
309
|
-
|
|
322
|
+
if (valueProp === undefined) {
|
|
323
|
+
(_editorRef$current11 = editorRef.current) === null || _editorRef$current11 === void 0 || _editorRef$current11.clear();
|
|
324
|
+
}
|
|
325
|
+
if (attachmentsProp === undefined) {
|
|
326
|
+
setAttachments([]);
|
|
327
|
+
}
|
|
310
328
|
setWebSearch(false);
|
|
311
329
|
case 20:
|
|
312
330
|
case "end":
|
|
313
331
|
return _context.stop();
|
|
314
332
|
}
|
|
315
333
|
}, _callee);
|
|
316
|
-
})), [text, attachments, webSearch, onSend, disabled, closeParamPanel]);
|
|
334
|
+
})), [text, attachments, webSearch, onSend, disabled, closeParamPanel, valueProp, attachmentsProp, setAttachments]);
|
|
317
335
|
|
|
318
336
|
/* ---- File upload ----
|
|
319
337
|
* 三入口(按钮 / 拖入 / 粘贴)共用此函数。先做内置校验(数量、单文件体积、重名),
|
|
@@ -459,6 +477,10 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
|
|
|
459
477
|
});
|
|
460
478
|
}, [skills, triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.query]);
|
|
461
479
|
|
|
480
|
+
/* trigger 浮层渲染条件:editor 处于 `/` 触发态 + 业务方传了 skills。
|
|
481
|
+
* `@` 触发本轮不接(mention 数据源待业务接入),onTriggerChange 拿到也不弹。 */
|
|
482
|
+
var triggerMenuVisible = !!(triggerInfo && triggerInfo.trigger === '/' && skills && skills.length > 0);
|
|
483
|
+
|
|
462
484
|
/* query 变化或浮层关闭 → 高亮项重置到第一项。
|
|
463
485
|
* 用 query 而不是 triggerInfo 整体当依赖:rect 变化(光标移位)不应该 reset。 */
|
|
464
486
|
useEffect(function () {
|
|
@@ -470,6 +492,7 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
|
|
|
470
492
|
* - Enter / Tab 选中当前高亮项
|
|
471
493
|
* - Escape 关 menu,焦点保留在 editor */
|
|
472
494
|
var handleTriggerKeyDown = useCallback(function (e) {
|
|
495
|
+
if (!triggerMenuVisible) return false;
|
|
473
496
|
var list = filteredSkills;
|
|
474
497
|
var max = list ? list.length - 1 : -1;
|
|
475
498
|
if (e.key === 'ArrowDown') {
|
|
@@ -500,7 +523,7 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
|
|
|
500
523
|
return true;
|
|
501
524
|
}
|
|
502
525
|
return false;
|
|
503
|
-
}, [filteredSkills, triggerActiveIndex]);
|
|
526
|
+
}, [filteredSkills, handleSelectSkill, triggerActiveIndex, triggerMenuVisible]);
|
|
504
527
|
|
|
505
528
|
/* trigger 浮 anchor:跟随 caret 的 0×0 隐形元素,给 Popover 当 children。
|
|
506
529
|
* Popover 需要 DOM children 当 reference,没有"虚拟 anchor" API,只能这么搞。 */
|
|
@@ -730,10 +753,6 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
|
|
|
730
753
|
"data-odn-composer-file-input": true,
|
|
731
754
|
onChange: handleFileChange
|
|
732
755
|
});
|
|
733
|
-
|
|
734
|
-
/* trigger 浮层渲染条件:editor 处于 `/` 触发态 + 业务方传了 skills。
|
|
735
|
-
* `@` 触发本轮不接(mention 数据源待业务接入),onTriggerChange 拿到也不弹。 */
|
|
736
|
-
var triggerMenuVisible = !!(triggerInfo && triggerInfo.trigger === '/' && skills && skills.length > 0);
|
|
737
756
|
var paramPanelNode = function (_editorRef$current$ge3, _editorRef$current16, _boxRef$current) {
|
|
738
757
|
if (!paramEdit || !renderParamPanel) return null;
|
|
739
758
|
var chips = (_editorRef$current$ge3 = (_editorRef$current16 = editorRef.current) === null || _editorRef$current16 === void 0 ? void 0 : _editorRef$current16.getChips()) !== null && _editorRef$current$ge3 !== void 0 ? _editorRef$current$ge3 : [];
|
package/dist/drawer/index.d.ts
CHANGED
package/dist/drawer/index.js
CHANGED
|
@@ -53,6 +53,7 @@ var Drawer = function Drawer(_ref) {
|
|
|
53
53
|
_ref$stepTransitionTy = _ref.stepTransitionType,
|
|
54
54
|
stepTransitionType = _ref$stepTransitionTy === void 0 ? defaultProps.stepTransitionType : _ref$stepTransitionTy,
|
|
55
55
|
style = _ref.style,
|
|
56
|
+
width = _ref.width,
|
|
56
57
|
className = _ref.className,
|
|
57
58
|
zIndex = _ref.zIndex,
|
|
58
59
|
container = _ref.container,
|
|
@@ -146,9 +147,11 @@ var Drawer = function Drawer(_ref) {
|
|
|
146
147
|
}
|
|
147
148
|
}, 0);
|
|
148
149
|
}, [steps, step]);
|
|
149
|
-
var drawerStyle = _objectSpread(_objectSpread({
|
|
150
|
+
var drawerStyle = _objectSpread(_objectSpread(_objectSpread({
|
|
150
151
|
zIndex: zIndex ? Number(zIndex) : undefined
|
|
151
|
-
},
|
|
152
|
+
}, placement === 'left' || placement === 'right' ? {
|
|
153
|
+
width: width
|
|
154
|
+
} : undefined), style), elevated ? {} : paddingStylePack);
|
|
152
155
|
return /*#__PURE__*/React.createElement(ModalRoot, {
|
|
153
156
|
open: visible,
|
|
154
157
|
onOpenChange: onVisibleChange,
|
package/dist/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export { default as Button, type ButtonProps } from './button';
|
|
|
14
14
|
export { default as Calendar, type CalendarProps } from './calendar';
|
|
15
15
|
export { default as Cascader, type CascaderProps } from './cascader';
|
|
16
16
|
export { default as Card, type CardProps, type CardElevation, type CardHeaderProps, type CardHeaderSize } from './card';
|
|
17
|
-
export { default as Chart } from './chart';
|
|
17
|
+
export { default as Chart, type ChartProps } from './chart';
|
|
18
18
|
export { default as Checkbox, type CheckboxGroupProps, type CheckboxProps } from './checkbox';
|
|
19
19
|
export { default as Collapse, type CollapseProps, type CollapseItem } from './collapse';
|
|
20
20
|
export { default as ColorPicker, type ColorPickerProps } from './color-picker';
|
|
@@ -70,6 +70,7 @@ export { default as Fab, type FabProps } from './fab';
|
|
|
70
70
|
export { default as MessageImage, type MessageImageProps, type MessageImageItem } from './message-image';
|
|
71
71
|
export { default as PreviewPanel, type PreviewPanelProps } from './preview-panel';
|
|
72
72
|
export { default as Sources, type SourcesProps } from './sources';
|
|
73
|
+
export { default as Provenance, type ProvenanceProps, type ProvenanceType } from './provenance';
|
|
73
74
|
export { default as StreamText, type StreamTextProps, type TypographyOverrides } from './stream-text';
|
|
74
75
|
export { default as Suggestions, type SuggestionsProps } from './suggestions';
|
|
75
76
|
export { default as UserBubble, type UserBubbleProps } from './user-bubble';
|
package/dist/index.js
CHANGED
|
@@ -75,6 +75,7 @@ export { default as Fab } from "./fab";
|
|
|
75
75
|
export { default as MessageImage } from "./message-image";
|
|
76
76
|
export { default as PreviewPanel } from "./preview-panel";
|
|
77
77
|
export { default as Sources } from "./sources";
|
|
78
|
+
export { default as Provenance } from "./provenance";
|
|
78
79
|
export { default as StreamText } from "./stream-text";
|
|
79
80
|
export { default as Suggestions } from "./suggestions";
|
|
80
81
|
export { default as UserBubble } from "./user-bubble";
|
|
@@ -7,6 +7,8 @@ export interface PreviewPanelProps {
|
|
|
7
7
|
onTabChange?: (id: string) => void;
|
|
8
8
|
onTabClose?: (id: string) => void;
|
|
9
9
|
onCloseAll?: () => void;
|
|
10
|
+
/** 关闭外层容器(如关闭整个 Drawer) */
|
|
11
|
+
onCloseContainer?: () => void;
|
|
10
12
|
/**
|
|
11
13
|
* 下载当前激活标签。传入时在 header 右侧渲染下载按钮,点击时回调会收到当前激活 tab;
|
|
12
14
|
* 未传则不渲染下载按钮(向后兼容)。
|
|
@@ -31,7 +33,7 @@ export interface PreviewPanelProps {
|
|
|
31
33
|
*/
|
|
32
34
|
widthMode?: 'half' | 'fill';
|
|
33
35
|
}
|
|
34
|
-
export declare function PreviewPanel({ tabs, activeTabId, onTabChange, onTabClose, onCloseAll, onDownload, onOpenInBrowser, open, emptyTitle, emptyDescription, widthMode, }: PreviewPanelProps): import("react").JSX.Element;
|
|
36
|
+
export declare function PreviewPanel({ tabs, activeTabId, onTabChange, onTabClose, onCloseAll, onCloseContainer, onDownload, onOpenInBrowser, open, emptyTitle, emptyDescription, widthMode, }: PreviewPanelProps): import("react").JSX.Element;
|
|
35
37
|
export declare namespace PreviewPanel {
|
|
36
38
|
var displayName: string;
|
|
37
39
|
}
|
|
@@ -11,6 +11,7 @@ export function PreviewPanel(_ref) {
|
|
|
11
11
|
onTabChange = _ref.onTabChange,
|
|
12
12
|
onTabClose = _ref.onTabClose,
|
|
13
13
|
onCloseAll = _ref.onCloseAll,
|
|
14
|
+
onCloseContainer = _ref.onCloseContainer,
|
|
14
15
|
onDownload = _ref.onDownload,
|
|
15
16
|
onOpenInBrowser = _ref.onOpenInBrowser,
|
|
16
17
|
open = _ref.open,
|
|
@@ -132,6 +133,14 @@ export function PreviewPanel(_ref) {
|
|
|
132
133
|
"data-odn-preview-panel-close-all": true,
|
|
133
134
|
title: "\u6536\u8D77\u9884\u89C8",
|
|
134
135
|
"aria-label": "\u6536\u8D77\u9884\u89C8"
|
|
136
|
+
}), onCloseContainer && /*#__PURE__*/React.createElement(Button, {
|
|
137
|
+
light: true,
|
|
138
|
+
size: "medium",
|
|
139
|
+
icon: "cancel",
|
|
140
|
+
onClick: onCloseContainer,
|
|
141
|
+
"data-odn-preview-panel-close-container": true,
|
|
142
|
+
title: "\u5173\u95ED\u62BD\u5C49",
|
|
143
|
+
"aria-label": "\u5173\u95ED\u62BD\u5C49"
|
|
135
144
|
}))), isEmpty ? /*#__PURE__*/React.createElement("div", {
|
|
136
145
|
"data-odn-preview-panel-empty-state": true,
|
|
137
146
|
role: "status"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one-design-next",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"description": "One Design Next from TAD@tencent.com",
|
|
5
5
|
"packageManager": "pnpm@10.33.0",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"lint:es": "eslint \"{components,test}/**/*.{js,jsx,ts,tsx}\"",
|
|
25
25
|
"prepublishOnly": "father doctor && npm run build",
|
|
26
26
|
"create-component": "node scripts/create-component.js",
|
|
27
|
+
"gen:test": "node scripts/gen-test.mjs",
|
|
27
28
|
"test": "vitest",
|
|
28
29
|
"test:ci": "vitest run",
|
|
29
30
|
"test:visual:update": "UPDATE_VISUAL=1 vitest run",
|
|
@@ -84,6 +85,8 @@
|
|
|
84
85
|
"devDependencies": {
|
|
85
86
|
"@commitlint/cli": "^17.1.2",
|
|
86
87
|
"@commitlint/config-conventional": "^17.1.0",
|
|
88
|
+
"@fontsource/jetbrains-mono": "^5.2.8",
|
|
89
|
+
"@fontsource/noto-sans-sc": "^5.2.9",
|
|
87
90
|
"@tailwindcss/postcss": "^4",
|
|
88
91
|
"@tailwindcss/vite": "^4.3.0",
|
|
89
92
|
"@testing-library/dom": "^10.4.1",
|