@baishuyun/ui-base 6.12.0 → 6.13.1

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 (153) hide show
  1. package/dist/Amap/AmapCircle/index.js +1 -1
  2. package/dist/Amap/AmapMarker/index.js +1 -1
  3. package/dist/Amap/AmapMarkerCluster/index.js +1 -1
  4. package/dist/Amap/AmapProvider/index.js +4 -4
  5. package/dist/Amap/{AmapProvider-CvRHhN42.js → AmapProvider-BwyzXpEj.js} +1 -1
  6. package/dist/Amap/hooks/index.js +1 -1
  7. package/dist/Amap/index.js +4 -4
  8. package/dist/Calendar/{AllDaySection-CTaXpCmK.js → AllDaySection-D9YHhwIa.js} +1 -1
  9. package/dist/Calendar/{Calendar-BOLbbip1.js → Calendar-BnhRvSrX.js} +5 -5
  10. package/dist/Calendar/{TimeGrid-Ci8Dfama.js → TimeGrid-5zMy9Hks.js} +1 -1
  11. package/dist/Calendar/context/index.js +1 -1
  12. package/dist/Calendar/index.js +8 -8
  13. package/dist/Calendar/subcomponents/AllDaySection/index.js +3 -3
  14. package/dist/Calendar/subcomponents/CurrentTimeIndicator/index.js +1 -1
  15. package/dist/Calendar/subcomponents/EventCard/index.js +1 -1
  16. package/dist/Calendar/subcomponents/TimeAxis/index.js +1 -1
  17. package/dist/Calendar/subcomponents/TimeGrid/index.js +3 -3
  18. package/dist/Calendar/utils/index.js +1 -1
  19. package/dist/Calendar/utils/layout/index.js +1 -1
  20. package/dist/Calendar/utils/theme/index.js +1 -1
  21. package/dist/Card/{Card-C8A4XaJZ.js → Card-DDbQQsCc.js} +1 -1
  22. package/dist/Card/index.js +3 -3
  23. package/dist/CheckBox/{CheckBox-DBzTOuRy.js → CheckBox-CwfrMEFb.js} +1 -1
  24. package/dist/CheckBox/{CheckBox-Dt4x6IqH.js → CheckBox-DFfNiPGM.js} +1 -1
  25. package/dist/CheckBox/index.js +4 -4
  26. package/dist/ColorPicker/{ColorPicker-Buku806Y.js → ColorPicker-Cm_-e0Hz.js} +34 -31
  27. package/dist/ColorPicker/index.js +5 -5
  28. package/dist/ConfigProvider/index.js +3 -3
  29. package/dist/DatePicker/{DatePicker-Vi3wfsfz.js → DatePicker-CWMePqTh.js} +9 -9
  30. package/dist/DatePicker/{DatePickerPanel-Cwmb-4UR.js → DatePickerPanel-D1nt3h5X.js} +4 -4
  31. package/dist/DatePicker/index.js +4 -4
  32. package/dist/DatePicker/style/index.js +1 -1
  33. package/dist/DropDown/DropDown-DV1IuuQD.js +290 -0
  34. package/dist/DropDown/index.js +7 -7
  35. package/dist/DropDown/style/index.js +1 -1
  36. package/dist/Editor/Buttons-C6whbXgn.js +1740 -0
  37. package/dist/Editor/ToolbarPlugin/Buttons/index.js +12 -12
  38. package/dist/Editor/constants/index.js +10 -3
  39. package/dist/Editor/index.js +1572 -909
  40. package/dist/Gantt/GanttChart/index.js +9 -9
  41. package/dist/Gantt/{GanttChart-WIrD6Z7O.js → GanttChart-DEGOIgRD.js} +3 -3
  42. package/dist/Gantt/GanttTable/index.js +5 -5
  43. package/dist/Gantt/{GanttTable-CdXhMHF6.js → GanttTable-Dwb00N8Z.js} +1 -1
  44. package/dist/Gantt/GanttToolBar/index.js +8 -8
  45. package/dist/Gantt/{GanttToolBar-C1gAS9v2.js → GanttToolBar-BcJB6sKY.js} +3 -3
  46. package/dist/Gantt/index.js +11 -11
  47. package/dist/Gantt/utils/index.js +1 -1
  48. package/dist/Gantt/utils/theme/index.js +1 -1
  49. package/dist/Icon/{Icon-oQ_uBooE.js → Icon-DDHx0R18.js} +1 -1
  50. package/dist/Icon/index.js +2 -2
  51. package/dist/InputTag/{InputTag-BQpIRPtc.js → InputTag-CBnG1R7g.js} +2 -2
  52. package/dist/InputTag/index.js +5 -5
  53. package/dist/Loading/{Loading-CiRe7i2R.js → Loading-DYayeRbT.js} +1 -1
  54. package/dist/Loading/index.js +4 -4
  55. package/dist/Modal/{Modal-17rLsxN4.js → Modal-BnF6CUrn.js} +20 -17
  56. package/dist/Modal/index.js +3 -3
  57. package/dist/NotFoundContent/index.js +1 -1
  58. package/dist/Overlay/index.js +1 -1
  59. package/dist/Radio/index.js +1 -1
  60. package/dist/ScrollBar/index.js +1 -1
  61. package/dist/Segmented/index.js +1 -1
  62. package/dist/Select/{Select-p_ly7xmz.js → Select-CG5wFTL4.js} +13 -13
  63. package/dist/Select/{SelectInputSearch-BBwVIb8u.js → SelectInputSearch-DiuwwOWz.js} +2 -2
  64. package/dist/Select/index.js +10 -10
  65. package/dist/Table/{Table-CSPdFGYn.js → Table-B7J-IK2_.js} +1 -1
  66. package/dist/Table/hooks/index.js +1 -1
  67. package/dist/Table/index.js +4 -4
  68. package/dist/Table/style/index.js +1 -1
  69. package/dist/Table/utils/index.js +1 -1
  70. package/dist/Tabs/{Tabs-D2A8nJl8.js → Tabs-CObQtF37.js} +7 -7
  71. package/dist/Tabs/index.js +6 -6
  72. package/dist/Tooltip/index.js +1 -1
  73. package/dist/Tree/index.js +4 -4
  74. package/dist/Tree/utils/index.js +1 -1
  75. package/dist/components/ColorPicker/ColorPicker.type.d.ts +2 -0
  76. package/dist/components/ColorPicker/useFloatingColorPicker.d.ts +1 -1
  77. package/dist/components/DropDown/DropDownOpenContext.d.ts +4 -0
  78. package/dist/components/DropDown/MenuItem/MenuItem.d.ts +4 -0
  79. package/dist/components/DropDown/interface.d.ts +5 -1
  80. package/dist/components/Editor/Preview/EditorPreview.d.ts +9 -0
  81. package/dist/components/Editor/Preview/HtmlPreview.d.ts +5 -0
  82. package/dist/components/Editor/Preview/PolishModal.d.ts +14 -0
  83. package/dist/components/Editor/Preview/Thinking.d.ts +23 -0
  84. package/dist/components/Editor/Preview/TypesetModal.d.ts +12 -0
  85. package/dist/components/Editor/ToolbarPlugin/BaseButton/BaseButton.d.ts +5 -1
  86. package/dist/components/Editor/ToolbarPlugin/Buttons/AiButton.d.ts +3 -0
  87. package/dist/components/Editor/ToolbarPlugin/Buttons/AlignButton.d.ts +2 -1
  88. package/dist/components/Editor/ToolbarPlugin/Buttons/BoldButton.d.ts +2 -1
  89. package/dist/components/Editor/ToolbarPlugin/Buttons/BulletListButton.d.ts +2 -1
  90. package/dist/components/Editor/ToolbarPlugin/Buttons/ClearFormatButton.d.ts +3 -0
  91. package/dist/components/Editor/ToolbarPlugin/Buttons/CodeButton.d.ts +2 -1
  92. package/dist/components/Editor/ToolbarPlugin/Buttons/FillButton.d.ts +2 -1
  93. package/dist/components/Editor/ToolbarPlugin/Buttons/FontColorButton.d.ts +2 -1
  94. package/dist/components/Editor/ToolbarPlugin/Buttons/FontSizeButton.d.ts +2 -1
  95. package/dist/components/Editor/ToolbarPlugin/Buttons/HeadingButton.d.ts +2 -1
  96. package/dist/components/Editor/ToolbarPlugin/Buttons/IndentButton.d.ts +2 -1
  97. package/dist/components/Editor/ToolbarPlugin/Buttons/ItalicButton.d.ts +2 -1
  98. package/dist/components/Editor/ToolbarPlugin/Buttons/LinkButton.d.ts +2 -1
  99. package/dist/components/Editor/ToolbarPlugin/Buttons/NumberListButton.d.ts +2 -1
  100. package/dist/components/Editor/ToolbarPlugin/Buttons/OutdentButton.d.ts +2 -1
  101. package/dist/components/Editor/ToolbarPlugin/Buttons/PictureButton/PictureButton.d.ts +2 -1
  102. package/dist/components/Editor/ToolbarPlugin/Buttons/PictureButton/UploadImage.d.ts +1 -0
  103. package/dist/components/Editor/ToolbarPlugin/Buttons/RedoButton.d.ts +2 -1
  104. package/dist/components/Editor/ToolbarPlugin/Buttons/SourceButton.d.ts +2 -1
  105. package/dist/components/Editor/ToolbarPlugin/Buttons/StrikeThroughButton.d.ts +2 -1
  106. package/dist/components/Editor/ToolbarPlugin/Buttons/SubscriptButton.d.ts +2 -1
  107. package/dist/components/Editor/ToolbarPlugin/Buttons/SuperscriptButton.d.ts +2 -1
  108. package/dist/components/Editor/ToolbarPlugin/Buttons/TableButton.d.ts +2 -1
  109. package/dist/components/Editor/ToolbarPlugin/Buttons/UnLinkButton.d.ts +2 -1
  110. package/dist/components/Editor/ToolbarPlugin/Buttons/UnderLineButton.d.ts +2 -1
  111. package/dist/components/Editor/ToolbarPlugin/Buttons/UndoButton.d.ts +2 -1
  112. package/dist/components/Editor/ToolbarPlugin/Buttons/index.d.ts +26 -23
  113. package/dist/components/Editor/ToolbarPlugin/Buttons/registry.d.ts +4 -1
  114. package/dist/components/Editor/ToolbarPlugin/context/TextFormatsContext.d.ts +1 -0
  115. package/dist/components/Editor/ToolbarPlugin/interface.d.ts +2 -2
  116. package/dist/components/Editor/constants/ai.d.ts +12 -0
  117. package/dist/components/Editor/constants/index.d.ts +3 -0
  118. package/dist/components/Editor/constants/portableEditorStyles.d.ts +11 -0
  119. package/dist/components/Editor/constants/toolbarSize.d.ts +12 -0
  120. package/dist/components/Editor/context/EditorContainerContext.d.ts +27 -1
  121. package/dist/components/Editor/index.d.ts +2 -2
  122. package/dist/components/Editor/interface.d.ts +60 -13
  123. package/dist/components/Editor/utils/applyAiPolish.d.ts +8 -0
  124. package/dist/components/Editor/utils/applyAiTypeset.d.ts +5 -0
  125. package/dist/components/Editor/utils/clearInlineTextFormat.d.ts +1 -0
  126. package/dist/components/Editor/utils/computeToolbarOverflowSplit.d.ts +12 -0
  127. package/dist/components/Editor/utils/extractCodePlaceholders.d.ts +6 -0
  128. package/dist/components/Editor/utils/formatEditorHtml.d.ts +1 -1
  129. package/dist/components/Editor/utils/htmlText.d.ts +2 -0
  130. package/dist/components/Editor/utils/prepareTypesetProposed.d.ts +2 -0
  131. package/dist/components/Editor/utils/readEditorAiSnapshot.d.ts +9 -0
  132. package/dist/components/Editor/utils/resolveEditorAlign.d.ts +3 -0
  133. package/dist/components/Editor/utils/resolveEditorImageUpload.d.ts +8 -0
  134. package/dist/components/Editor/utils/resolveEditorToolbarThemeVars.d.ts +5 -5
  135. package/dist/components/Editor/utils/stitchCodePlaceholders.d.ts +6 -0
  136. package/dist/components/Editor/utils/toPortableEditorHtml.d.ts +1 -0
  137. package/dist/components/Editor/utils/unwrapTypesetFence.d.ts +5 -0
  138. package/dist/components/Modal/Modal.type.d.ts +1 -0
  139. package/dist/hooks/useFloatingPortal.d.ts +2 -0
  140. package/dist/index.js +24 -24
  141. package/dist/locale/lang/en-US.json.d.ts +22 -2
  142. package/dist/locale/lang/zh-CN.json.d.ts +22 -2
  143. package/dist/locale/lang/zh-TW.json.d.ts +22 -2
  144. package/dist/style.css +1 -1
  145. package/dist/vendors/{ConfigProvider-4xHyyeop.js → ConfigProvider-BDyxjj6K.js} +45 -5
  146. package/dist/vendors/{LocaleContext-I4PW9j4M.js → LocaleContext-w5ODGcJX.js} +22 -2
  147. package/dist/vendors/{Tree-B8cR9y6U.js → Tree-B7XeC9Mi.js} +2 -2
  148. package/dist/vendors/{useFloatingPortal-CmVJbuRm.js → useFloatingPortal-B3N1viK2.js} +8 -7
  149. package/dist/vendors/{useLocale-FGYsRWSe.js → useLocale-CEDl6cUK.js} +1 -1
  150. package/dist/vendors/{version-CJyzNHuS.js → version-BlinfPSN.js} +1 -1
  151. package/package.json +2 -3
  152. package/dist/DropDown/DropDown-CuL1Qq25.js +0 -178
  153. package/dist/Editor/Buttons-CMkFTv6y.js +0 -1016
@@ -3,6 +3,10 @@ interface MenuItemProps {
3
3
  item: MenuItemType;
4
4
  onClick: (item: MenuItemType) => void;
5
5
  isActive?: boolean;
6
+ isSubmenuOpen?: boolean;
7
+ onSubmenuOpen?: () => void;
8
+ onSubmenuLeave?: () => void;
9
+ activeKey?: string[];
6
10
  }
7
11
  declare const MenuItem: React.FC<MenuItemProps>;
8
12
  export { MenuItem };
@@ -36,6 +36,10 @@ export interface MenuItemType {
36
36
  * @default false
37
37
  */
38
38
  disabled?: boolean;
39
+ /**
40
+ * 子菜单项。存在非空数组时该行作为分组:悬停或点击从右侧飞出,不触发 onClick
41
+ */
42
+ children?: MenuItemType[];
39
43
 
40
44
  /**
41
45
  * 是否是系统字段
@@ -144,7 +148,7 @@ export interface DropDownProps {
144
148
  */
145
149
  offset?: OffsetType;
146
150
  /**
147
- * 自定义下拉菜单的样式
151
+ * 每一级菜单面板的样式(根面板与子菜单)
148
152
  */
149
153
  style?: React.CSSProperties;
150
154
 
@@ -0,0 +1,9 @@
1
+ import { EditorAiStatus } from '../interface';
2
+ /** loading 时把 LCS 预览合到下一帧;ready/error 立刻算,避免应用按钮闪一下。 */
3
+ export declare function usePolishProposedHtml(enabled: boolean, originalHtml: string, text: string, status: EditorAiStatus | undefined): string;
4
+ type EditorPreviewProps = {
5
+ maxLength?: number;
6
+ onMaxLengthExceed?: () => void;
7
+ };
8
+ declare const EditorPreview: React.FC<EditorPreviewProps>;
9
+ export default EditorPreview;
@@ -0,0 +1,5 @@
1
+ type HtmlPreviewProps = {
2
+ html: string;
3
+ };
4
+ declare const HtmlPreview: React.FC<HtmlPreviewProps>;
5
+ export default HtmlPreview;
@@ -0,0 +1,14 @@
1
+ import { EditorAiPreset, EditorAiStatus } from '../interface';
2
+ type PolishModalProps = {
3
+ status: EditorAiStatus;
4
+ reasoning?: string;
5
+ errorMessage?: string;
6
+ originalHtml: string;
7
+ proposedHtml: string;
8
+ preset: EditorAiPreset;
9
+ onPresetChange: (preset: EditorAiPreset) => void;
10
+ onCancel: () => void;
11
+ onApply: () => boolean;
12
+ };
13
+ declare const PolishModal: React.FC<PolishModalProps>;
14
+ export default PolishModal;
@@ -0,0 +1,23 @@
1
+ import { EditorAiStatus } from '../interface';
2
+ type ThinkingModel = {
3
+ visible: boolean;
4
+ thinking: boolean;
5
+ open: boolean;
6
+ label: string;
7
+ reasoning: string;
8
+ toggle: () => void;
9
+ onViewportScroll: () => void;
10
+ };
11
+ export declare function useThinking(source: {
12
+ status: EditorAiStatus;
13
+ reasoning?: string;
14
+ }, hasAnswer: boolean, scrollViewportRef?: {
15
+ readonly current: HTMLElement | null;
16
+ }): ThinkingModel;
17
+ export declare const ThinkingHead: React.FC<{
18
+ model: ThinkingModel;
19
+ }>;
20
+ export declare const ThinkingBody: React.FC<{
21
+ model: ThinkingModel;
22
+ }>;
23
+ export {};
@@ -0,0 +1,12 @@
1
+ import { EditorAiStatus } from '../interface';
2
+ type TypesetModalProps = {
3
+ status: EditorAiStatus;
4
+ reasoning?: string;
5
+ errorMessage?: string;
6
+ originalHtml: string;
7
+ proposedHtml: string;
8
+ onCancel: () => void;
9
+ onApply: () => boolean;
10
+ };
11
+ declare const TypesetModal: React.FC<TypesetModalProps>;
12
+ export default TypesetModal;
@@ -21,7 +21,11 @@ interface ToolbarButtonProps {
21
21
  */
22
22
  active?: boolean;
23
23
  /**
24
- * 大小;未传时使用 toolbar theme.iconSize(默认 14)
24
+ * 强调色(如「更多」展开);只改图标色,不加灰底
25
+ */
26
+ highlight?: boolean;
27
+ /**
28
+ * 大小;未传时使用 toolbar theme.iconSize(跟 size 档位,default 为 16)
25
29
  */
26
30
  size?: number;
27
31
  }
@@ -0,0 +1,3 @@
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const AiButton: React.FC<RegisteredToolbarButtonProps>;
3
+ export default AiButton;
@@ -1,2 +1,3 @@
1
- declare const AlignButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const AlignButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default AlignButton;
@@ -1,2 +1,3 @@
1
- declare const BoldButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const BoldButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default BoldButton;
@@ -1,2 +1,3 @@
1
- declare const BulletListButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const BulletListButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default BulletListButton;
@@ -0,0 +1,3 @@
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const ClearFormatButton: React.FC<RegisteredToolbarButtonProps>;
3
+ export default ClearFormatButton;
@@ -1,2 +1,3 @@
1
- declare const CodeButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const CodeButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default CodeButton;
@@ -1,2 +1,3 @@
1
- declare const BackgroundColorButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const BackgroundColorButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default BackgroundColorButton;
@@ -1,2 +1,3 @@
1
- declare const FontColorButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const FontColorButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default FontColorButton;
@@ -1,2 +1,3 @@
1
- declare const FontSizeButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const FontSizeButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default FontSizeButton;
@@ -1,2 +1,3 @@
1
- declare const HeadingButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const HeadingButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default HeadingButton;
@@ -1,2 +1,3 @@
1
- declare const IndentButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const IndentButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default IndentButton;
@@ -1,2 +1,3 @@
1
- declare const ItalicButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const ItalicButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default ItalicButton;
@@ -1,2 +1,3 @@
1
- declare const LinkButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const LinkButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default LinkButton;
@@ -1,2 +1,3 @@
1
- declare const NumberListButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const NumberListButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default NumberListButton;
@@ -1,2 +1,3 @@
1
- declare const OutdentButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const OutdentButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default OutdentButton;
@@ -1,2 +1,3 @@
1
- declare const PictureButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from '../registry';
2
+ declare const PictureButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default PictureButton;
@@ -1,6 +1,7 @@
1
1
  export interface UploadImageItem {
2
2
  src: string;
3
3
  fileName: string;
4
+ attachment?: unknown;
4
5
  }
5
6
  export interface UploadImageRef {
6
7
  getValue: () => Promise<UploadImageItem[]>;
@@ -1,2 +1,3 @@
1
- declare const RedoButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const RedoButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default RedoButton;
@@ -1,2 +1,3 @@
1
- declare const SourceButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const SourceButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default SourceButton;
@@ -1,2 +1,3 @@
1
- declare const StrikeThroughButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const StrikeThroughButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default StrikeThroughButton;
@@ -1,2 +1,3 @@
1
- declare const SubscriptButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const SubscriptButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default SubscriptButton;
@@ -1,2 +1,3 @@
1
- declare const SuperscriptButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const SuperscriptButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default SuperscriptButton;
@@ -1,2 +1,3 @@
1
- declare const TableButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const TableButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default TableButton;
@@ -1,2 +1,3 @@
1
- declare const UnLinkButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const UnLinkButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default UnLinkButton;
@@ -1,2 +1,3 @@
1
- declare const UnderLineButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const UnderLineButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default UnderLineButton;
@@ -1,2 +1,3 @@
1
- declare const UndoButton: React.FC;
1
+ import { RegisteredToolbarButtonProps } from './registry';
2
+ declare const UndoButton: React.FC<RegisteredToolbarButtonProps>;
2
3
  export default UndoButton;
@@ -1,30 +1,33 @@
1
1
  import { getToolbarButton, listRegisteredToolbarButtons, registerToolbarButton, unregisterToolbarButton } from './registry';
2
2
  declare const builtinButtons: {
3
- undo: import('react').FC<{}>;
4
- redo: import('react').FC<{}>;
5
- bold: import('react').FC<{}>;
6
- underline: import('react').FC<{}>;
7
- italic: import('react').FC<{}>;
8
- strikethrough: import('react').FC<{}>;
9
- superscript: import('react').FC<{}>;
10
- subscript: import('react').FC<{}>;
11
- heading: import('react').FC<{}>;
12
- fontSize: import('react').FC<{}>;
13
- fontColor: import('react').FC<{}>;
14
- fill: import('react').FC<{}>;
15
- bullet: import('react').FC<{}>;
16
- number: import('react').FC<{}>;
17
- outdent: import('react').FC<{}>;
18
- indent: import('react').FC<{}>;
19
- align: import('react').FC<{}>;
20
- link: import('react').FC<{}>;
21
- unLink: import('react').FC<{}>;
22
- picture: import('react').FC<{}>;
23
- code: import('react').FC<{}>;
24
- table: import('react').FC<{}>;
25
- source: import('react').FC<{}>;
3
+ undo: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
4
+ redo: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
5
+ bold: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
6
+ underline: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
7
+ italic: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
8
+ strikethrough: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
9
+ superscript: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
10
+ subscript: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
11
+ heading: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
12
+ fontSize: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
13
+ fontColor: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
14
+ fill: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
15
+ clearFormat: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
16
+ bullet: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
17
+ number: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
18
+ outdent: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
19
+ indent: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
20
+ align: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
21
+ link: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
22
+ unLink: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
23
+ picture: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
24
+ code: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
25
+ table: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
26
+ source: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
27
+ ai: import('react').FC<import('./registry').RegisteredToolbarButtonProps>;
26
28
  };
27
29
  export type BuiltinButtonName = keyof typeof builtinButtons;
28
30
  export type ToolbarButtonName = BuiltinButtonName | (string & {});
29
31
  export { registerToolbarButton, unregisterToolbarButton, getToolbarButton, listRegisteredToolbarButtons, };
32
+ export type { RegisteredToolbarButtonProps } from './registry';
30
33
  export default builtinButtons;
@@ -1,5 +1,8 @@
1
1
  import { ComponentType } from 'react';
2
- export type ToolbarButtonComponent = ComponentType<any>;
2
+ export type RegisteredToolbarButtonProps = {
3
+ disabled?: boolean;
4
+ };
5
+ export type ToolbarButtonComponent = ComponentType<RegisteredToolbarButtonProps & Record<string, any>>;
3
6
  export declare const registerToolbarButton: (name: string, component: ToolbarButtonComponent) => void;
4
7
  export declare const unregisterToolbarButton: (name: string) => void;
5
8
  export declare const getToolbarButton: (name: string) => ToolbarButtonComponent | undefined;
@@ -16,6 +16,7 @@ export type TextFormatsState = {
16
16
  isInTable: boolean;
17
17
  headingTag: 'h1' | 'h2' | 'h3' | false;
18
18
  codeLanguage: CodeLanguageId;
19
+ hasEditorText: boolean;
19
20
  link?: {
20
21
  link?: string;
21
22
  linkText?: string;
@@ -18,9 +18,9 @@ export interface ToolbarButtonProps {
18
18
  | {
19
19
  name: ToolbarButtonName;
20
20
  /**
21
- * @description 各个 button 组件的 props
21
+ * 传给按钮的 props。内置按钮目前只认 `disabled`,与内部禁用或运算。
22
22
  */
23
- props?: Record<string, any>;
23
+ props?: { disabled?: boolean } & Record<string, any>;
24
24
  }
25
25
  >;
26
26
  }>;
@@ -0,0 +1,12 @@
1
+ import { EditorAiPreset } from '../interface';
2
+ export declare const EDITOR_AI_CODE_PLACEHOLDER: (index: number) => string;
3
+ export declare const EDITOR_AI_CODE_PLACEHOLDER_RE: RegExp;
4
+ export declare const EDITOR_AI_PRESETS: EditorAiPreset[];
5
+ export declare const EDITOR_AI_PRESET_I18N: {
6
+ readonly quick: "editor.aiPresetQuick";
7
+ readonly formal: "editor.aiPresetFormal";
8
+ readonly colloquial: "editor.aiPresetColloquial";
9
+ readonly lively: "editor.aiPresetLively";
10
+ readonly literary: "editor.aiPresetLiterary";
11
+ readonly retro: "editor.aiPresetRetro";
12
+ };
@@ -38,7 +38,10 @@ export declare const FONT_SIZES: readonly [{
38
38
  export declare const DEFAULT_FONT_SIZE = "16px";
39
39
  export declare const DEFAULT_FONT_COLOR = "#000";
40
40
  export declare const DEFAULT_BACKGROUND_COLOR = "transparent";
41
+ /** 与业务 BsyImageUpload 一致,不开放外部 maxSize / accept */
41
42
  export declare const IMAGE_MAX_BYTES: number;
42
43
  export declare const IMAGE_MAX_COUNT = 10;
44
+ export declare const EDITOR_IMAGE_FILE_TYPES: readonly ["jpg", "jpeg", "png", "gif", "bmp", "tif"];
45
+ export declare const EDITOR_IMAGE_ACCEPT: string;
43
46
  export declare const TABLE_GRID_SIZE = 10;
44
47
  export type FontSize = (typeof FONT_SIZES)[number]['value'];
@@ -0,0 +1,11 @@
1
+ /** 与 theme.scss 编辑态可见皮肤对齐;导出 HTML 写成 inline。不含 hover / ::marker。 */
2
+ export declare const PORTABLE_HEADING_STYLES: Record<string, Record<string, string>>;
3
+ export declare const PORTABLE_LINK_STYLES: Record<string, string>;
4
+ export declare const PORTABLE_LIST_BASE_STYLES: Record<string, string>;
5
+ export declare const PORTABLE_UL_MARKERS: readonly ["disc", "circle", "square"];
6
+ export declare const PORTABLE_LI_STYLES: Record<string, string>;
7
+ export declare const PORTABLE_NESTED_LI_STYLES: Record<string, string>;
8
+ export declare const PORTABLE_CODE_STYLES: Record<string, string>;
9
+ export declare const PORTABLE_TABLE_STYLES: Record<string, string>;
10
+ export declare const PORTABLE_CELL_STYLES: Record<string, string>;
11
+ export declare const PORTABLE_HEADER_CELL_STYLES: Record<string, string>;
@@ -0,0 +1,12 @@
1
+ import { EditorToolbarSize } from '../interface';
2
+ export declare const DEFAULT_EDITOR_TOOLBAR_SIZE: EditorToolbarSize;
3
+ /** 工具栏按钮打开的浮层相对触发器下移 */
4
+ export declare const EDITOR_TOOLBAR_POPOVER_OFFSET: {
5
+ readonly x: 0;
6
+ readonly y: 5;
7
+ };
8
+ /** itemHeight 同时是按钮高度和最小宽度。 */
9
+ export declare const EDITOR_TOOLBAR_SIZE_PRESETS: Record<EditorToolbarSize, {
10
+ itemHeight: number;
11
+ iconSize: number;
12
+ }>;
@@ -1,8 +1,34 @@
1
- import { RefObject } from 'react';
1
+ import { Dispatch, MutableRefObject, RefObject, SetStateAction } from 'react';
2
+ import { EditorAi, EditorAiMode, EditorAiPreset, EditorAiStatus, EditorUpload } from '../interface';
3
+ export type EditorAiSession = {
4
+ originalHtml: string;
5
+ originalText?: string;
6
+ codeBlocks?: string[];
7
+ preset?: EditorAiPreset;
8
+ };
2
9
  interface EditorContainerContextType {
3
10
  containerRef: RefObject<HTMLDivElement | null>;
4
11
  toolbarRef: RefObject<HTMLDivElement>;
12
+ upload?: EditorUpload;
13
+ aiOpen: EditorAiMode | null;
14
+ setAiOpen: Dispatch<SetStateAction<EditorAiMode | null>>;
15
+ aiSessionRef: MutableRefObject<EditorAiSession | null>;
16
+ attachmentsBySrcRef: MutableRefObject<Map<string, unknown>>;
17
+ typeset?: EditorAi['typeset'];
18
+ polish?: EditorAi['polish'];
19
+ stop?: EditorAi['stop'];
20
+ canTypeset: boolean;
21
+ canPolish: boolean;
5
22
  }
23
+ export type EditorAiStream = {
24
+ text: string;
25
+ reasoning?: string;
26
+ status?: EditorAiStatus;
27
+ errorMessage?: string;
28
+ };
6
29
  declare const EditorContainerContext: import('react').Context<EditorContainerContextType | null>;
30
+ declare const EditorAiStreamContext: import('react').Context<EditorAiStream>;
7
31
  export declare const useEditorContainer: () => EditorContainerContextType;
32
+ export declare const useEditorAiStream: () => EditorAiStream;
33
+ export { EditorAiStreamContext };
8
34
  export default EditorContainerContext;
@@ -1,7 +1,7 @@
1
1
  export { Editor as default } from './Editor';
2
- export type { EditorProps, EditorTheme, EditorToolbarFloating, EditorToolbarMode, EditorToolbarOffset, EditorToolbarPlacement, EditorToolbarProps, EditorToolbarTheme, } from './interface';
2
+ export type { EditorUpload, EditorUploadContext, EditorUploadResult, EditorAi, EditorAiMode, EditorAiPreset, EditorAiStatus, EditorProps, EditorTheme, EditorToolbarFloating, EditorToolbarMode, EditorToolbarOffset, EditorToolbarPlacement, EditorToolbarProps, EditorToolbarSize, EditorToolbarTheme, } from './interface';
3
3
  export { registerToolbarButton, unregisterToolbarButton, listRegisteredToolbarButtons, } from './ToolbarPlugin/Buttons';
4
- export type { ToolbarButtonName } from './ToolbarPlugin/Buttons';
4
+ export type { ToolbarButtonName, RegisteredToolbarButtonProps } from './ToolbarPlugin/Buttons';
5
5
  export { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
6
6
  export { $getRoot } from 'lexical';
7
7
  export { default as BaseButton } from './ToolbarPlugin/BaseButton/BaseButton';
@@ -6,7 +6,7 @@ export interface EditorToolbarTheme {
6
6
  bg?: string;
7
7
  /** 工具栏底部分割线 @default #e0e0e0 */
8
8
  borderColor?: string;
9
- /** 工具栏内边距 @default 5px 6px */
9
+ /** 工具栏内边距 @default 4px 6px */
10
10
  padding?: string;
11
11
  /**
12
12
  * 工具栏容器 flex gap。
@@ -15,10 +15,8 @@ export interface EditorToolbarTheme {
15
15
  gap?: string | number;
16
16
  /** 组内按钮间距 @default 6px */
17
17
  groupGap?: string | number;
18
- /** 组分隔线颜色 @default #e0e0e0 */
18
+ /** 组分隔线颜色;高度固定 14px @default #e0e0e0 */
19
19
  dividerColor?: string;
20
- /** 组分隔线高度 @default 20px */
21
- dividerSize?: string | number;
22
20
  /** 组分隔线水平外边距 @default 5px */
23
21
  dividerMargin?: string | number;
24
22
  /** 按钮默认图标/文字色 @default #666 */
@@ -31,11 +29,15 @@ export interface EditorToolbarTheme {
31
29
  itemActiveBg?: string;
32
30
  /** active 前景 @default #121211 */
33
31
  itemActiveColor?: string;
32
+ /** 「更多」展开等强调色 @default #0265ff */
33
+ itemHighlightColor?: string;
34
34
  /** 按钮内边距 @default 3px */
35
35
  itemPadding?: string | number;
36
36
  /** 按钮圆角 @default 2px */
37
37
  itemBorderRadius?: string | number;
38
- /** 图标尺寸 @default 14 */
38
+ /** 按钮高度与最小宽度;未传时跟 toolbar.size 档位 */
39
+ itemHeight?: string | number;
40
+ /** 图标字号,不含按钮内文字;未传时跟 toolbar.size 档位 */
39
41
  iconSize?: string | number;
40
42
  }
41
43
 
@@ -43,6 +45,8 @@ export interface EditorTheme {
43
45
  toolbar?: EditorToolbarTheme;
44
46
  }
45
47
 
48
+ export type EditorToolbarSize = 'small' | 'default';
49
+
46
50
  export type EditorToolbarMode = 'embedded' | 'floating';
47
51
 
48
52
  export type EditorToolbarPlacement = 'top' | 'bottom';
@@ -61,6 +65,11 @@ export interface EditorToolbarFloating {
61
65
 
62
66
  export interface EditorToolbarProps {
63
67
  config?: ToolbarButtonProps['config'];
68
+ /**
69
+ * 按钮档位。`small` 为 20×20(图标 14),`default` 为 30×30(图标 16);按钮内文字固定 14。
70
+ * @default 'default'
71
+ */
72
+ size?: EditorToolbarSize;
64
73
  /** 覆盖工具栏视觉样式;floating 下 `left`/`top` 等定位字段会被忽略,`width` 可覆盖默认宽度(自定义后靠左) */
65
74
  style?: React.CSSProperties;
66
75
  /** @default 'embedded' */
@@ -84,7 +93,7 @@ export type EditorProps = {
84
93
  * 编辑器内容变化回调
85
94
  */
86
95
  onChange: (
87
- { text, html }: { text: string; html: string | null },
96
+ { text, html, attachment }: { text: string; html: string | null; attachment: unknown[] },
88
97
  editorState: EditorState
89
98
  ) => void;
90
99
 
@@ -134,12 +143,50 @@ export type EditorProps = {
134
143
  onError?: (error: Error) => void;
135
144
 
136
145
  /**
137
- * @description 图片上传配置
138
- * @todo 待实现
146
+ * 上传配置。未传 `customRequest` 时,弹窗选图仍写入 data URL。
139
147
  */
140
- imageUpload?: {
141
- maxSize?: number; // 最大文件大小
142
- accept?: string[]; // 支持的文件类型
143
- customUpload?: (file: File) => Promise<string>; // 自定义上传函数
144
- };
148
+ upload?: EditorUpload;
149
+
150
+ /**
151
+ * AI 排版 / 润色。未传 `typeset` / `polish` 时对应菜单项禁用。
152
+ * 预览由组件自管;业务绑定流式 `text` / `reasoning` / `status`。
153
+ */
154
+ ai?: EditorAi;
155
+ };
156
+
157
+ export type EditorAiPreset = 'quick' | 'formal' | 'colloquial' | 'lively' | 'literary' | 'retro';
158
+
159
+ export type EditorAiMode = 'typeset' | 'polish';
160
+
161
+ export type EditorAiStatus = 'idle' | 'loading' | 'ready' | 'error';
162
+
163
+ export type EditorAi = {
164
+ /** 点「智能排版」;`html` 已抽掉代码块为占位注释 */
165
+ typeset?: (input: { text: string; html: string }) => void;
166
+ /** 点润色预设;弹窗内切换预设会再调一次。`text` 为按块分隔的可润色纯文本(不含代码块) */
167
+ polish?: (input: { text: string; preset: EditorAiPreset }) => void;
168
+ /** 放弃或应用后中止请求 */
169
+ stop?: () => void;
170
+ /** 流式正文:排版为 HTML,润色为纯文本 */
171
+ text?: string;
172
+ /** 可选思维链 */
173
+ reasoning?: string;
174
+ status?: EditorAiStatus;
175
+ errorMessage?: string;
176
+ };
177
+
178
+ export type EditorUploadContext = {
179
+ onProgress?: (percent: number) => void;
180
+ signal?: AbortSignal;
181
+ };
182
+
183
+ export type EditorUploadResult = {
184
+ url: string;
185
+ /** 厂商原始文件对象(如接口 `data.file`),原样回传到 onChange.attachment */
186
+ attachment?: unknown;
187
+ };
188
+
189
+ export type EditorUpload = {
190
+ /** 业务上传:成功返回 URL,或 `{ url, attachment }` 以便 onChange 带回原始文件对象 */
191
+ customRequest?: (file: File, ctx: EditorUploadContext) => Promise<string | EditorUploadResult>;
145
192
  };
@@ -0,0 +1,8 @@
1
+ import { LexicalEditor } from 'lexical';
2
+ export declare const POLISH_BLOCK_MARKER = "<!--bsy-block-->";
3
+ export declare function joinPolishBlocks(blocks: string[]): string;
4
+ export declare function hasPolishContent(text: string): boolean;
5
+ export declare function collectPolishHtmlBlocks(html: string): string[];
6
+ /** 只改块内文字,不重建标签。 */
7
+ export declare function applyAiPolishToHtml(html: string, proposed: string): string;
8
+ export declare function applyAiPolish(editor: LexicalEditor, proposed: string): boolean;
@@ -0,0 +1,5 @@
1
+ import { LexicalEditor } from 'lexical';
2
+ export declare function applyAiTypeset(editor: LexicalEditor, proposedHtml: string, codeBlocks: string[], maxLength?: number): {
3
+ applied: boolean;
4
+ truncated: boolean;
5
+ };
@@ -0,0 +1 @@
1
+ export declare function $clearInlineTextFormat(): void;