one-design-next 0.0.21 → 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/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。 */
|
|
@@ -147,7 +147,7 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
147
147
|
controlledSyncTick = _useState4[0],
|
|
148
148
|
setControlledSyncTick = _useState4[1];
|
|
149
149
|
var controlledSyncRafRef = useRef(null);
|
|
150
|
-
/** 输入模态:键盘操作时置为 keyboard
|
|
150
|
+
/** 输入模态:键盘操作时置为 keyboard,用于抑制"鼠标隐藏但 hover 仍生效"的视觉残留。 */
|
|
151
151
|
var _useState5 = useState('pointer'),
|
|
152
152
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
153
153
|
inputModality = _useState6[0],
|
|
@@ -199,9 +199,14 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
199
199
|
}, [minHeightPx, maxHeightPx]);
|
|
200
200
|
var shouldShowPlaceholder = useCallback(function (el) {
|
|
201
201
|
if (!isEditorEmpty(el)) return false;
|
|
202
|
-
// placeholder
|
|
203
|
-
var
|
|
204
|
-
|
|
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;
|
|
205
210
|
}, []);
|
|
206
211
|
var scheduleControlledSync = useCallback(function () {
|
|
207
212
|
if (!isControlled) return;
|
|
@@ -313,7 +318,7 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
313
318
|
var el = editorRef.current;
|
|
314
319
|
if (!el) return;
|
|
315
320
|
// 优先恢复缓存光标到真实 selection;菜单点击时 selection 已经离开 editor,
|
|
316
|
-
// 直接走 useChipManager 的 fallback 会落到 editor
|
|
321
|
+
// 直接走 useChipManager 的 fallback 会落到 editor 末尾,导致"飞到第一/末行"。
|
|
317
322
|
var cached = lastEditorRangeRef.current;
|
|
318
323
|
if (cached && cached.startContainer.isConnected && cached.endContainer.isConnected && el.contains(cached.startContainer) && el.contains(cached.endContainer)) {
|
|
319
324
|
var sel = window.getSelection();
|
|
@@ -452,8 +457,8 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
452
457
|
/* ─────────────────────────────────────
|
|
453
458
|
* 受控同步:仅在外部 value 变化,或输入后延迟校验 tick 变化时校验 DOM。
|
|
454
459
|
* contenteditable 不像原生 input 会被 React 自动回写 value;如果父组件
|
|
455
|
-
* 在 onChange 里不回写,DOM
|
|
456
|
-
* 实际脱离 valueProp
|
|
460
|
+
* 在 onChange 里不回写,DOM 会继续保留用户刚输入的内容,造成"看起来受控,
|
|
461
|
+
* 实际脱离 valueProp"的假受控状态。
|
|
457
462
|
*
|
|
458
463
|
* 不能每次 render 都同步:输入换行会触发高度测量等内部 render,若此时父组件
|
|
459
464
|
* 正常回写 value 尚未完成,就会被旧 valueProp 抢先覆盖 DOM,导致光标跳回行首。
|
|
@@ -568,7 +573,7 @@ export var ComposerEditor = /*#__PURE__*/forwardRef(function ComposerEditor(_ref
|
|
|
568
573
|
var node = range.startContainer,
|
|
569
574
|
offset = range.startOffset;
|
|
570
575
|
|
|
571
|
-
// 用户换行生成的 "<br> + CARET_SPACER":一次 Backspace
|
|
576
|
+
// 用户换行生成的 "<br> + CARET_SPACER":一次 Backspace 应合并删除,避免看起来"卡一下"
|
|
572
577
|
{
|
|
573
578
|
var spacerText = null;
|
|
574
579
|
var br = null;
|
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,
|
|
@@ -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"
|