one-design-next 0.0.84 → 0.0.85

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.
@@ -187,27 +187,35 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
187
187
  setTriggerActiveIndex = _useState8[1];
188
188
  /** trigger menu 的命令式句柄:导航语义在 SkillSlot 内,composer 只转发 ↑↓。 */
189
189
  var triggerSkillSlotRef = useRef(null);
190
- /** lite 模式下由内容高度驱动的单行 / 多行布局状态。 */
190
+ /** 同步标记:handleTriggerKeyDown 已在本轮事件中取消了 trigger,
191
+ * onPressEnter 检测此标记以跳过 stale triggerMenuVisible 拦截。 */
192
+ var triggerDismissedRef = useRef(false);
193
+ /** 当 trigger 被 dismiss(无匹配 skill 按 Enter)时跳过 Popover 关闭动画 */
191
194
  var _useState9 = useState(false),
192
195
  _useState10 = _slicedToArray(_useState9, 2),
193
- expanded = _useState10[0],
194
- setExpanded = _useState10[1];
195
- /** full 模式下由右上角按钮控制的 50vh 展开态。 */
196
+ skipTriggerTransition = _useState10[0],
197
+ setSkipTriggerTransition = _useState10[1];
198
+ /** lite 模式下由内容高度驱动的单行 / 多行布局状态。 */
196
199
  var _useState11 = useState(false),
197
200
  _useState12 = _slicedToArray(_useState11, 2),
198
- fullExpanded = _useState12[0],
199
- setFullExpanded = _useState12[1];
200
- /** ComposerEditor 反馈的 editor 自然高度(offsetHeight,未 clamp),用于 lite 升格判断 */
201
- var _useState13 = useState(0),
201
+ expanded = _useState12[0],
202
+ setExpanded = _useState12[1];
203
+ /** full 模式下由右上角按钮控制的 50vh 展开态。 */
204
+ var _useState13 = useState(false),
202
205
  _useState14 = _slicedToArray(_useState13, 2),
203
- editorHeight = _useState14[0],
204
- setEditorHeight = _useState14[1];
206
+ fullExpanded = _useState14[0],
207
+ setFullExpanded = _useState14[1];
208
+ /** ComposerEditor 反馈的 editor 自然高度(offsetHeight,未 clamp),用于 lite 升格判断 */
209
+ var _useState15 = useState(0),
210
+ _useState16 = _slicedToArray(_useState15, 2),
211
+ editorHeight = _useState16[0],
212
+ setEditorHeight = _useState16[1];
205
213
  /** editor 内容是否真正达到 maxRows 触顶——配合 SCSS 控制 viewport overflow,
206
214
  * 阻止升格 transition / 换行未触顶时的 scrollbar 闪现 */
207
- var _useState15 = useState(false),
208
- _useState16 = _slicedToArray(_useState15, 2),
209
- atMax = _useState16[0],
210
- setAtMax = _useState16[1];
215
+ var _useState17 = useState(false),
216
+ _useState18 = _slicedToArray(_useState17, 2),
217
+ atMax = _useState18[0],
218
+ setAtMax = _useState18[1];
211
219
  var fileInputRef = useRef(null);
212
220
  var editorRef = useRef(null);
213
221
  var boxRef = useRef(null);
@@ -226,10 +234,10 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
226
234
  preventScroll: true
227
235
  });
228
236
  }, [disabled]);
229
- var _useState17 = useState(null),
230
- _useState18 = _slicedToArray(_useState17, 2),
231
- paramEdit = _useState18[0],
232
- setParamEdit = _useState18[1];
237
+ var _useState19 = useState(null),
238
+ _useState20 = _slicedToArray(_useState19, 2),
239
+ paramEdit = _useState20[0],
240
+ setParamEdit = _useState20[1];
233
241
  var openParamPanel = useCallback(function (chipId) {
234
242
  if (!renderParamPanel) return;
235
243
  requestAnimationFrame(function () {
@@ -564,10 +572,10 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
564
572
  * 不夺回焦点时 Enter 会再次激活按钮而不是发送 */
565
573
  (_editorRef$current15 = editorRef.current) === null || _editorRef$current15 === void 0 || _editorRef$current15.focus();
566
574
  };
567
- var _useState19 = useState(false),
568
- _useState20 = _slicedToArray(_useState19, 2),
569
- fileDragOver = _useState20[0],
570
- setFileDragOver = _useState20[1];
575
+ var _useState21 = useState(false),
576
+ _useState22 = _slicedToArray(_useState21, 2),
577
+ fileDragOver = _useState22[0],
578
+ setFileDragOver = _useState22[1];
571
579
  var composerBoxFileDragAttrs = fileDragOver ? {
572
580
  'data-odn-composer-file-drag': ''
573
581
  } : {};
@@ -686,18 +694,26 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
686
694
  return true;
687
695
  }
688
696
  if (e.key === 'Enter' && !e.shiftKey || e.key === 'Tab') {
689
- var _ref6, _triggerSkillSlotRef$3, _triggerSkillSlotRef$4;
690
- e.preventDefault();
697
+ var _ref6, _triggerSkillSlotRef$3, _triggerSkillSlotRef$4, _editorRef$current19;
691
698
  var _skill = (_ref6 = (_triggerSkillSlotRef$3 = (_triggerSkillSlotRef$4 = triggerSkillSlotRef.current) === null || _triggerSkillSlotRef$4 === void 0 ? void 0 : _triggerSkillSlotRef$4.getActiveSkill()) !== null && _triggerSkillSlotRef$3 !== void 0 ? _triggerSkillSlotRef$3 : filteredSkills === null || filteredSkills === void 0 ? void 0 : filteredSkills[triggerActiveIndex]) !== null && _ref6 !== void 0 ? _ref6 : filteredSkillGroups === null || filteredSkillGroups === void 0 ? void 0 : filteredSkillGroups.flatMap(function (g) {
692
699
  return g.skills;
693
700
  })[triggerActiveIndex];
694
- if (_skill) handleSelectSkill(_skill, 'trigger');
695
- return true;
701
+ if (_skill) {
702
+ e.preventDefault();
703
+ handleSelectSkill(_skill, 'trigger');
704
+ return true;
705
+ }
706
+ /* 过滤后列表为空(无匹配 skill):取消 trigger,让 Enter 继续走发送流程 */
707
+ (_editorRef$current19 = editorRef.current) === null || _editorRef$current19 === void 0 || _editorRef$current19.cancelTrigger();
708
+ setTriggerInfo(null);
709
+ setSkipTriggerTransition(true);
710
+ triggerDismissedRef.current = true;
711
+ return false;
696
712
  }
697
713
  if (e.key === 'Escape') {
698
- var _editorRef$current19;
714
+ var _editorRef$current20;
699
715
  e.preventDefault();
700
- (_editorRef$current19 = editorRef.current) === null || _editorRef$current19 === void 0 || _editorRef$current19.cancelTrigger();
716
+ (_editorRef$current20 = editorRef.current) === null || _editorRef$current20 === void 0 || _editorRef$current20.cancelTrigger();
701
717
  setTriggerInfo(null);
702
718
  return true;
703
719
  }
@@ -1036,9 +1052,9 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
1036
1052
  "data-odn-composer-file-input": true,
1037
1053
  onChange: handleFileChange
1038
1054
  });
1039
- var paramPanelNode = function (_editorRef$current$ge4, _editorRef$current20, _boxRef$current) {
1055
+ var paramPanelNode = function (_editorRef$current$ge4, _editorRef$current21, _boxRef$current) {
1040
1056
  if (!paramEdit || !renderParamPanel) return null;
1041
- var chips = (_editorRef$current$ge4 = (_editorRef$current20 = editorRef.current) === null || _editorRef$current20 === void 0 ? void 0 : _editorRef$current20.getChips()) !== null && _editorRef$current$ge4 !== void 0 ? _editorRef$current$ge4 : [];
1057
+ var chips = (_editorRef$current$ge4 = (_editorRef$current21 = editorRef.current) === null || _editorRef$current21 === void 0 ? void 0 : _editorRef$current21.getChips()) !== null && _editorRef$current$ge4 !== void 0 ? _editorRef$current$ge4 : [];
1042
1058
  var chip = chips.find(function (c) {
1043
1059
  return c.id === paramEdit.chipId;
1044
1060
  });
@@ -1048,8 +1064,8 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
1048
1064
  chip: chip,
1049
1065
  anchor: paramEdit.anchor,
1050
1066
  onApply: function onApply(patch) {
1051
- var _editorRef$current21;
1052
- (_editorRef$current21 = editorRef.current) === null || _editorRef$current21 === void 0 || _editorRef$current21.updateChipData(chip.id, patch);
1067
+ var _editorRef$current22;
1068
+ (_editorRef$current22 = editorRef.current) === null || _editorRef$current22 === void 0 || _editorRef$current22.updateChipData(chip.id, patch);
1053
1069
  },
1054
1070
  onClose: closeParamPanel
1055
1071
  };
@@ -1078,7 +1094,10 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
1078
1094
  onInlineRefClick: renderParamPanel ? handleInlineRefClick : undefined
1079
1095
  /* 本轮只接 `/`,`@` 留给业务接 mention 搜索时再加 */,
1080
1096
  triggers: ['/'],
1081
- onTriggerChange: setTriggerInfo,
1097
+ onTriggerChange: function onTriggerChange(info) {
1098
+ setTriggerInfo(info);
1099
+ if (info) setSkipTriggerTransition(false);
1100
+ },
1082
1101
  onTriggerKeyDown: handleTriggerKeyDown,
1083
1102
  onPasteFiles: addFilesFromList,
1084
1103
  onHeightChange: function onHeightChange(height, overflow) {
@@ -1090,9 +1109,14 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
1090
1109
  onPressEnter: function onPressEnter(e) {
1091
1110
  if (e.nativeEvent.isComposing || e.keyCode === 229) return;
1092
1111
  // trigger 浮层激活时,普通 Enter 留给浮层做选择;Shift+Enter 继续换行
1112
+ // 但若 handleTriggerKeyDown 已在本轮事件中取消了 trigger(列表为空),则放行
1093
1113
  if (triggerMenuVisible && !e.shiftKey) {
1094
- e.preventDefault();
1095
- return false;
1114
+ if (triggerDismissedRef.current) {
1115
+ triggerDismissedRef.current = false;
1116
+ } else {
1117
+ e.preventDefault();
1118
+ return false;
1119
+ }
1096
1120
  }
1097
1121
  var isSubmitKey = submitType === 'enter' ? !e.shiftKey : e.shiftKey;
1098
1122
  if (!isSubmitKey) return; // 不阻止 → 让 editor 走默认 <br>
@@ -1114,11 +1138,14 @@ export var Composer = /*#__PURE__*/forwardRef(function Composer(_ref, ref) {
1114
1138
  placement: "topLeft",
1115
1139
  offset: 4,
1116
1140
  visible: triggerMenuVisible,
1141
+ transitionDuration: skipTriggerTransition ? 0 : undefined,
1117
1142
  onVisibleChange: function onVisibleChange(v) {
1118
1143
  if (!v) {
1119
- var _editorRef$current22;
1120
- (_editorRef$current22 = editorRef.current) === null || _editorRef$current22 === void 0 || _editorRef$current22.cancelTrigger();
1144
+ var _editorRef$current23;
1145
+ (_editorRef$current23 = editorRef.current) === null || _editorRef$current23 === void 0 || _editorRef$current23.cancelTrigger();
1121
1146
  setTriggerInfo(null);
1147
+ } else {
1148
+ setSkipTriggerTransition(false);
1122
1149
  }
1123
1150
  },
1124
1151
  popupClassName: "odn-composer-skill-popup",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one-design-next",
3
- "version": "0.0.84",
3
+ "version": "0.0.85",
4
4
  "description": "One Design Next from TAD@tencent.com",
5
5
  "license": "MIT",
6
6
  "type": "module",