@king-design/vue 3.7.0 → 3.8.0-beta.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 (227) hide show
  1. package/__tests__/__snapshots__/Vue Next Demos.md +399 -0
  2. package/components/bubble/bubble.d.ts +62 -0
  3. package/components/bubble/bubble.js +81 -0
  4. package/components/bubble/bubble.vdt.js +89 -0
  5. package/components/bubble/index.d.ts +1 -0
  6. package/components/bubble/index.js +1 -0
  7. package/components/bubble/index.spec.d.ts +1 -0
  8. package/components/bubble/index.spec.js +824 -0
  9. package/components/bubble/styles.d.ts +5 -0
  10. package/components/bubble/styles.js +53 -0
  11. package/components/bubble/useBubbleDisplay.d.ts +19 -0
  12. package/components/bubble/useBubbleDisplay.js +308 -0
  13. package/components/bubbleList/bubbleList.d.ts +87 -0
  14. package/components/bubbleList/bubbleList.js +75 -0
  15. package/components/bubbleList/bubbleList.vdt.js +145 -0
  16. package/components/bubbleList/index.d.ts +1 -0
  17. package/components/bubbleList/index.js +1 -0
  18. package/components/bubbleList/index.spec.d.ts +1 -0
  19. package/components/bubbleList/index.spec.js +1332 -0
  20. package/components/bubbleList/item.d.ts +16 -0
  21. package/components/bubbleList/item.js +27 -0
  22. package/components/bubbleList/item.vdt.js +36 -0
  23. package/components/bubbleList/styles.d.ts +5 -0
  24. package/components/bubbleList/styles.js +33 -0
  25. package/components/bubbleList/useBubbleList.d.ts +28 -0
  26. package/components/bubbleList/useBubbleList.js +462 -0
  27. package/components/checkbox/index.d.ts +3 -3
  28. package/components/fileCard/fileCard.d.ts +65 -0
  29. package/components/fileCard/fileCard.js +72 -0
  30. package/components/fileCard/fileCard.vdt.js +161 -0
  31. package/components/fileCard/fileCardAssets.d.ts +1 -0
  32. package/components/fileCard/fileCardAssets.js +54 -0
  33. package/components/fileCard/fileCardUtils.d.ts +14 -0
  34. package/components/fileCard/fileCardUtils.js +94 -0
  35. package/components/fileCard/index.d.ts +2 -0
  36. package/components/fileCard/index.js +2 -0
  37. package/components/fileCard/index.spec.d.ts +1 -0
  38. package/components/fileCard/index.spec.js +1168 -0
  39. package/components/fileCard/list.d.ts +30 -0
  40. package/components/fileCard/list.js +46 -0
  41. package/components/fileCard/list.vdt.js +73 -0
  42. package/components/fileCard/styles.d.ts +5 -0
  43. package/components/fileCard/styles.js +85 -0
  44. package/components/fileCard/useFileCard.d.ts +45 -0
  45. package/components/fileCard/useFileCard.js +301 -0
  46. package/components/fileCard/useFileCardList.d.ts +14 -0
  47. package/components/fileCard/useFileCardList.js +49 -0
  48. package/components/form/form.js +2 -1
  49. package/components/media/context.d.ts +6 -0
  50. package/components/media/context.js +2 -0
  51. package/components/media/group.d.ts +12 -0
  52. package/components/media/group.js +32 -0
  53. package/components/media/group.vdt.js +50 -0
  54. package/components/media/index.d.ts +2 -0
  55. package/components/media/index.js +2 -0
  56. package/components/media/index.spec.d.ts +1 -0
  57. package/components/media/index.spec.js +1880 -0
  58. package/components/media/media.d.ts +37 -0
  59. package/components/media/media.js +67 -0
  60. package/components/media/media.vdt.js +213 -0
  61. package/components/media/mediaAssets.d.ts +6 -0
  62. package/components/media/mediaAssets.js +13 -0
  63. package/components/media/mediaUtils.d.ts +6 -0
  64. package/components/media/mediaUtils.js +66 -0
  65. package/components/media/styles.d.ts +13 -0
  66. package/components/media/styles.js +54 -0
  67. package/components/media/types.d.ts +37 -0
  68. package/components/media/types.js +1 -0
  69. package/components/media/useMedia.d.ts +74 -0
  70. package/components/media/useMedia.js +493 -0
  71. package/components/media/useMediaGroup.d.ts +15 -0
  72. package/components/media/useMediaGroup.js +136 -0
  73. package/components/media/useMediaViewer.d.ts +14 -0
  74. package/components/media/useMediaViewer.js +129 -0
  75. package/components/media/viewer.d.ts +24 -0
  76. package/components/media/viewer.js +54 -0
  77. package/components/media/viewer.vdt.js +100 -0
  78. package/components/radio/index.d.ts +3 -3
  79. package/components/sender/icons.d.ts +3 -0
  80. package/components/sender/icons.js +17 -0
  81. package/components/sender/index.d.ts +1 -0
  82. package/components/sender/index.js +1 -0
  83. package/components/sender/index.spec.d.ts +1 -0
  84. package/components/sender/index.spec.js +2201 -0
  85. package/components/sender/sender.d.ts +127 -0
  86. package/components/sender/sender.js +122 -0
  87. package/components/sender/sender.vdt.js +302 -0
  88. package/components/sender/styles.d.ts +5 -0
  89. package/components/sender/styles.js +65 -0
  90. package/components/sender/useAutoResize.d.ts +4 -0
  91. package/components/sender/useAutoResize.js +99 -0
  92. package/components/sender/useSenderDrag.d.ts +6 -0
  93. package/components/sender/useSenderDrag.js +329 -0
  94. package/components/sender/useSenderInput.d.ts +19 -0
  95. package/components/sender/useSenderInput.js +118 -0
  96. package/components/sender/useSenderPaste.d.ts +5 -0
  97. package/components/sender/useSenderPaste.js +36 -0
  98. package/components/sender/useSenderUpload.d.ts +11 -0
  99. package/components/sender/useSenderUpload.js +404 -0
  100. package/components/skeleton/skeleton.d.ts +2 -1
  101. package/components/skeleton/skeleton.js +1 -1
  102. package/components/think/index.d.ts +1 -0
  103. package/components/think/index.js +1 -0
  104. package/components/think/index.spec.d.ts +1 -0
  105. package/components/think/index.spec.js +345 -0
  106. package/components/think/index.vdt.js +82 -0
  107. package/components/think/styles.d.ts +5 -0
  108. package/components/think/styles.js +25 -0
  109. package/components/think/think.d.ts +28 -0
  110. package/components/think/think.js +48 -0
  111. package/components/think/useThinkExpand.d.ts +10 -0
  112. package/components/think/useThinkExpand.js +56 -0
  113. package/components/types.d.ts +4 -2
  114. package/components/upload/ajaxUploader.d.ts +1 -0
  115. package/components/upload/ajaxUploader.js +6 -0
  116. package/components/xmarkdown/index.d.ts +2 -0
  117. package/components/xmarkdown/index.js +1 -0
  118. package/components/xmarkdown/index.spec.d.ts +1 -0
  119. package/components/xmarkdown/index.spec.js +1797 -0
  120. package/components/xmarkdown/markdown/codeBlockRenderer.d.ts +8 -0
  121. package/components/xmarkdown/markdown/codeBlockRenderer.js +52 -0
  122. package/components/xmarkdown/markdown/codeblock.d.ts +8 -0
  123. package/components/xmarkdown/markdown/codeblock.js +74 -0
  124. package/components/xmarkdown/markdown/highlight.d.ts +17 -0
  125. package/components/xmarkdown/markdown/highlight.js +83 -0
  126. package/components/xmarkdown/markdown/index.d.ts +14 -0
  127. package/components/xmarkdown/markdown/index.js +14 -0
  128. package/components/xmarkdown/markdown/mermaid.d.ts +8 -0
  129. package/components/xmarkdown/markdown/mermaid.js +104 -0
  130. package/components/xmarkdown/markdown/renderTree.d.ts +54 -0
  131. package/components/xmarkdown/markdown/renderTree.js +386 -0
  132. package/components/xmarkdown/markdown/renderer.d.ts +18 -0
  133. package/components/xmarkdown/markdown/renderer.js +461 -0
  134. package/components/xmarkdown/markdown/streaming.d.ts +24 -0
  135. package/components/xmarkdown/markdown/streaming.js +546 -0
  136. package/components/xmarkdown/markdown/types.d.ts +124 -0
  137. package/components/xmarkdown/markdown/types.js +6 -0
  138. package/components/xmarkdown/markdown/utils.d.ts +7 -0
  139. package/components/xmarkdown/markdown/utils.js +9 -0
  140. package/components/xmarkdown/markdown.d.ts +1 -0
  141. package/components/xmarkdown/markdown.js +1 -0
  142. package/components/xmarkdown/styles.d.ts +5 -0
  143. package/components/xmarkdown/styles.js +50 -0
  144. package/components/xmarkdown/useMermaid.d.ts +27 -0
  145. package/components/xmarkdown/useMermaid.js +745 -0
  146. package/components/xmarkdown/useXMarkdownContent.d.ts +14 -0
  147. package/components/xmarkdown/useXMarkdownContent.js +218 -0
  148. package/components/xmarkdown/useXMarkdownDisplay.d.ts +27 -0
  149. package/components/xmarkdown/useXMarkdownDisplay.js +577 -0
  150. package/components/xmarkdown/xmarkdown.d.ts +62 -0
  151. package/components/xmarkdown/xmarkdown.js +109 -0
  152. package/components/xmarkdown/xmarkdown.vdt.js +47 -0
  153. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  154. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  155. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  156. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  157. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  158. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  159. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  160. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  161. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  162. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  163. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  164. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  165. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  166. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  167. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  168. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  169. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  170. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  171. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  172. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  173. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  174. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  175. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  176. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  177. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  178. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  179. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  180. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  181. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  182. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  183. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  184. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  185. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  186. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  187. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  188. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  189. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  190. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  191. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  192. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  193. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  194. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  195. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  196. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  197. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  198. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  199. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  200. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  201. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  202. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  203. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  204. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  205. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  206. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  207. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  208. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  209. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  210. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  211. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  212. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  213. package/dist/i18n/en-US.js +30 -1
  214. package/dist/i18n/en-US.js.map +1 -1
  215. package/dist/i18n/en-US.min.js +1 -1
  216. package/dist/index.js +100694 -37438
  217. package/dist/index.js.map +1 -1
  218. package/dist/index.min.js +1569 -1
  219. package/dist/kpc.css +4 -0
  220. package/dist/ksyun.css +4 -0
  221. package/i18n/en-US.d.ts +28 -0
  222. package/i18n/en-US.js +30 -1
  223. package/index.d.ts +9 -2
  224. package/index.js +9 -2
  225. package/package.json +8 -2
  226. package/styles/global.js +12 -6
  227. package/yarn-error.log +0 -1012
@@ -0,0 +1,127 @@
1
+ import { Component, TypeDefs } from 'intact-vue-next';
2
+ import type { Events } from '../types';
3
+ import type { FileCardListItem } from '../fileCard';
4
+ import type { RequestError } from '../upload';
5
+ export type SenderFileView = 'card' | 'media';
6
+ export type SenderUploadButton = 'toolbar' | 'list' | 'none';
7
+ export type SenderButtonTooltip = string | false;
8
+ export interface SenderButtonTooltipConfig {
9
+ send?: SenderButtonTooltip;
10
+ stop?: SenderButtonTooltip;
11
+ upload?: SenderButtonTooltip;
12
+ listUpload?: SenderButtonTooltip;
13
+ }
14
+ export interface SenderAttachment extends FileCardListItem {
15
+ uid?: number | string;
16
+ raw?: File;
17
+ relativePath?: string;
18
+ /** 进行中的 XHR,用于删除时 abort */
19
+ request?: {
20
+ abort(): void;
21
+ } | null;
22
+ }
23
+ export interface SenderUploadProps {
24
+ accept?: string;
25
+ multiple?: boolean;
26
+ directory?: boolean;
27
+ limit?: number;
28
+ maxSize?: number;
29
+ autoUpload?: boolean;
30
+ action?: string;
31
+ timeout?: number;
32
+ name?: string;
33
+ headers?: Record<string | number, string>;
34
+ data?: Record<string, any> | ((file: SenderAttachment) => Record<string, any>);
35
+ mapAttachment?: (file: File, attachment: SenderAttachment) => Partial<SenderAttachment>;
36
+ withCredentials?: boolean;
37
+ beforeUpload?: (file: SenderAttachment, files: SenderAttachment[]) => boolean | Promise<boolean>;
38
+ beforeRemove?: (file: SenderAttachment, files: SenderAttachment[]) => boolean | Promise<boolean>;
39
+ }
40
+ export interface SendButtonSlotParams {
41
+ generating: boolean;
42
+ disabled: boolean;
43
+ stopDisabled: boolean;
44
+ loading: boolean;
45
+ send: () => void;
46
+ stopGenerate: () => void;
47
+ }
48
+ export interface UploadButtonSlotParams {
49
+ disabled: boolean;
50
+ reachLimit: boolean;
51
+ position: SenderUploadButton;
52
+ addFiles: (files: FileList | File[]) => void;
53
+ pickFiles: () => void;
54
+ }
55
+ export interface MessageSendPayload {
56
+ value: string;
57
+ attachments: SenderAttachment[];
58
+ }
59
+ export interface SenderProps {
60
+ value?: string;
61
+ placeholder?: string;
62
+ disabled?: boolean;
63
+ inputDisabled?: boolean;
64
+ sendDisabled?: boolean;
65
+ stopDisabled?: boolean;
66
+ readonly?: boolean;
67
+ generating?: boolean;
68
+ loading?: boolean;
69
+ fileView?: SenderFileView;
70
+ uploadButton?: SenderUploadButton;
71
+ buttonTooltip?: SenderButtonTooltipConfig;
72
+ dragFile?: boolean;
73
+ pasteFile?: boolean;
74
+ /** 整个输入外框 `k-sender` 的宽度,数字会按 `px` 处理 */
75
+ width?: number | string;
76
+ /** 整个输入外框 `k-sender-shell` 的最大高度(非文本域单宽),未传时默认 300 */
77
+ maxHeight?: number | string;
78
+ attachments?: SenderAttachment[];
79
+ uploadProps?: SenderUploadProps;
80
+ submitOnEnter?: boolean;
81
+ clearOnSend?: boolean;
82
+ }
83
+ export interface SenderEvents {
84
+ messageSend: [MessageSendPayload];
85
+ stopGenerate: [];
86
+ pressEnter: [KeyboardEvent];
87
+ focus: [FocusEvent];
88
+ blur: [FocusEvent];
89
+ attachmentClick: [SenderAttachment, MouseEvent];
90
+ attachmentDelete: [SenderAttachment, MouseEvent];
91
+ uploadProgress: [ProgressEvent, SenderAttachment];
92
+ uploadSuccess: [any, SenderAttachment];
93
+ uploadError: [Error | RequestError, SenderAttachment];
94
+ }
95
+ export interface SenderBlocks {
96
+ header: null;
97
+ prefix: null;
98
+ beforeInput: null;
99
+ footer: null;
100
+ configure: null;
101
+ uploadButton: UploadButtonSlotParams;
102
+ sendButton: SendButtonSlotParams;
103
+ }
104
+ export declare class Sender extends Component<SenderProps, SenderEvents, SenderBlocks> {
105
+ static template: string | import('intact-vue-next').Template<any>;
106
+ static typeDefs: Required<TypeDefs<SenderProps>>;
107
+ static defaults: () => Partial<SenderProps>;
108
+ static events: Events<SenderEvents>;
109
+ private config;
110
+ private textareaRef;
111
+ private fileInputRef;
112
+ private input;
113
+ private autoResize;
114
+ private upload;
115
+ private dragController;
116
+ private pasteController;
117
+ focus(): void;
118
+ blur(): void;
119
+ /** 主动触发发送,等价于点击发送按钮。生成中时不会触发。 */
120
+ submit(): void;
121
+ /** 清空输入框与附件列表,并中止进行中的上传;不影响 generating / loading 等受控状态。 */
122
+ clear(): void;
123
+ /** 复用 Sender 内置上传逻辑添加本地文件,适合自定义附件弹窗确认后调用。 */
124
+ addFiles(files: FileList | File[]): void;
125
+ /** 主动触发停止生成,等价于点击生成中的停止按钮。 */
126
+ stopGenerate(): void;
127
+ }
@@ -0,0 +1,122 @@
1
+ import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
2
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/concat";
3
+ import { Component, createRef } from 'intact-vue-next';
4
+ import template from './sender.vdt';
5
+ import { useConfigContext } from '../config';
6
+ import { useSenderInput } from './useSenderInput';
7
+ import { useSenderUpload } from './useSenderUpload';
8
+ import { useAutoResize } from './useAutoResize';
9
+ import { useSenderDrag } from './useSenderDrag';
10
+ import { useSenderPaste } from './useSenderPaste';
11
+ var typeDefs = {
12
+ value: String,
13
+ placeholder: String,
14
+ disabled: Boolean,
15
+ inputDisabled: Boolean,
16
+ sendDisabled: Boolean,
17
+ stopDisabled: Boolean,
18
+ readonly: Boolean,
19
+ generating: Boolean,
20
+ loading: Boolean,
21
+ fileView: ['card', 'media'],
22
+ uploadButton: ['toolbar', 'list', 'none'],
23
+ buttonTooltip: Object,
24
+ dragFile: Boolean,
25
+ pasteFile: Boolean,
26
+ width: [String, Number],
27
+ maxHeight: [String, Number],
28
+ attachments: Array,
29
+ uploadProps: Object,
30
+ submitOnEnter: Boolean,
31
+ clearOnSend: Boolean
32
+ };
33
+ var defaults = function defaults() {
34
+ return {
35
+ value: '',
36
+ placeholder: undefined,
37
+ disabled: false,
38
+ inputDisabled: false,
39
+ sendDisabled: false,
40
+ stopDisabled: false,
41
+ readonly: false,
42
+ generating: false,
43
+ loading: false,
44
+ fileView: 'card',
45
+ uploadButton: 'toolbar',
46
+ buttonTooltip: undefined,
47
+ dragFile: false,
48
+ pasteFile: false,
49
+ width: 640,
50
+ maxHeight: undefined,
51
+ attachments: undefined,
52
+ uploadProps: undefined,
53
+ submitOnEnter: true,
54
+ clearOnSend: true
55
+ };
56
+ };
57
+ var events = {
58
+ messageSend: true,
59
+ stopGenerate: true,
60
+ pressEnter: true,
61
+ focus: true,
62
+ blur: true,
63
+ attachmentClick: true,
64
+ attachmentDelete: true,
65
+ uploadProgress: true,
66
+ uploadSuccess: true,
67
+ uploadError: true
68
+ };
69
+ export var Sender = /*#__PURE__*/function (_Component) {
70
+ _inheritsLoose(Sender, _Component);
71
+ function Sender() {
72
+ var _context;
73
+ var _this;
74
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
75
+ args[_key] = arguments[_key];
76
+ }
77
+ _this = _Component.call.apply(_Component, _concatInstanceProperty(_context = [this]).call(_context, args)) || this;
78
+ _this.config = useConfigContext();
79
+ _this.textareaRef = createRef();
80
+ _this.fileInputRef = createRef();
81
+ _this.input = useSenderInput(_this.textareaRef);
82
+ _this.autoResize = useAutoResize(_this.textareaRef);
83
+ _this.upload = useSenderUpload(_this.fileInputRef);
84
+ _this.dragController = useSenderDrag(_this.upload.addFiles);
85
+ _this.pasteController = useSenderPaste(_this.upload.addFiles);
86
+ return _this;
87
+ }
88
+ var _proto = Sender.prototype;
89
+ _proto.focus = function focus() {
90
+ var _this$textareaRef$val;
91
+ (_this$textareaRef$val = this.textareaRef.value) == null || _this$textareaRef$val.focus();
92
+ };
93
+ _proto.blur = function blur() {
94
+ var _this$textareaRef$val2;
95
+ (_this$textareaRef$val2 = this.textareaRef.value) == null || _this$textareaRef$val2.blur();
96
+ }
97
+ /** 主动触发发送,等价于点击发送按钮。生成中时不会触发。 */;
98
+ _proto.submit = function submit() {
99
+ this.input.send();
100
+ }
101
+ /** 清空输入框与附件列表,并中止进行中的上传;不影响 generating / loading 等受控状态。 */;
102
+ _proto.clear = function clear() {
103
+ this.set('value', '');
104
+ var attachments = this.get('attachments');
105
+ if (attachments && attachments.length > 0) {
106
+ void this.upload.clearAttachments();
107
+ }
108
+ }
109
+ /** 复用 Sender 内置上传逻辑添加本地文件,适合自定义附件弹窗确认后调用。 */;
110
+ _proto.addFiles = function addFiles(files) {
111
+ void this.upload.addFiles(files);
112
+ }
113
+ /** 主动触发停止生成,等价于点击生成中的停止按钮。 */;
114
+ _proto.stopGenerate = function stopGenerate() {
115
+ this.input.stopGenerate();
116
+ };
117
+ return Sender;
118
+ }(Component);
119
+ Sender.template = template;
120
+ Sender.typeDefs = typeDefs;
121
+ Sender.defaults = defaults;
122
+ Sender.events = events;
@@ -0,0 +1,302 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/extends";
2
+ import _trimInstanceProperty from "@babel/runtime-corejs3/core-js/instance/trim";
3
+ import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js/instance/starts-with";
4
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js/instance/map";
5
+ import { createUnknownComponentVNode as _$cc, className as _$cn, createElementVNode as _$ce, createVNode as _$cv, extend as _$ex, EMPTY_OBJ as _$em, noop as _$no, createCommentVNode as _$ccv } from 'intact-vue-next';
6
+ import { FileCardList } from '../fileCard';
7
+ import { Icon } from '../icon';
8
+ import { Tooltip } from '../tooltip';
9
+ import { addStyle, getRestProps } from '../utils';
10
+ import { makeStyles } from './styles';
11
+ import { senderSendIcon, senderStopIcon, senderAttachSvg } from './icons';
12
+ import { _$ } from '../../i18n';
13
+ import { isInvalid, isNumber, noop } from 'intact-shared';
14
+ var _$tmp0 = {
15
+ 'aria-hidden': 'true'
16
+ };
17
+ export default function ($props, $blocks, $__proto__) {
18
+ var _this = this,
19
+ _classNameObj,
20
+ _$cn2,
21
+ _$cn3,
22
+ _$cn4;
23
+ $blocks || ($blocks = {});
24
+ $props || ($props = {});
25
+ var $this = this;
26
+ var _$blocks = {};
27
+ var __$blocks = {};
28
+ var _this$input = this.input,
29
+ isFocus = _this$input.isFocus,
30
+ isDisabled = _this$input.isDisabled,
31
+ isInputDisabled = _this$input.isInputDisabled,
32
+ isGenerating = _this$input.isGenerating,
33
+ isLoading = _this$input.isLoading,
34
+ isSendButtonDisabled = _this$input.isSendButtonDisabled,
35
+ isStopButtonDisabled = _this$input.isStopButtonDisabled,
36
+ handleKeydown = _this$input.handleKeydown,
37
+ handleInput = _this$input.handleInput,
38
+ handleFocus = _this$input.handleFocus,
39
+ handleBlur = _this$input.handleBlur,
40
+ handleSendClick = _this$input.handleSendClick,
41
+ send = _this$input.send,
42
+ stopGenerate = _this$input.stopGenerate;
43
+ var _this$upload = this.upload,
44
+ getAcceptAttr = _this$upload.getAcceptAttr,
45
+ isMultiple = _this$upload.isMultiple,
46
+ addFiles = _this$upload.addFiles,
47
+ onInputChange = _this$upload.onInputChange,
48
+ pickFiles = _this$upload.pickFiles,
49
+ removeAttachment = _this$upload.removeAttachment;
50
+ var dragController = this.dragController;
51
+ var handlePaste = this.pasteController.handlePaste;
52
+ var _this$get = this.get(),
53
+ className = _this$get.className,
54
+ style = _this$get.style,
55
+ value = _this$get.value,
56
+ placeholder = _this$get.placeholder,
57
+ readonly = _this$get.readonly,
58
+ width = _this$get.width,
59
+ maxHeight = _this$get.maxHeight,
60
+ fileView = _this$get.fileView,
61
+ uploadButton = _this$get.uploadButton,
62
+ enableDragFile = _this$get.dragFile,
63
+ attachments = _this$get.attachments,
64
+ uploadProps = _this$get.uploadProps,
65
+ buttonTooltip = _this$get.buttonTooltip;
66
+ var k = this.config.k;
67
+ var isEmptySlot = function isEmptySlot(value) {
68
+ if (isInvalid(value) || value === undefined || value === null || value === '') return true;
69
+ if (Array.isArray(value)) return value.every(function (item) {
70
+ return isEmptySlot(item);
71
+ });
72
+ if (value && value.type === 1) return isEmptySlot(value.children);
73
+ return false;
74
+ };
75
+ var renderSlot = function renderSlot(name, params) {
76
+ return $blocks[name] ? $blocks[name](noop, params) : undefined;
77
+ };
78
+ var headerSlot = renderSlot('header');
79
+ var footerSlot = renderSlot('footer');
80
+ var prefixSlot = renderSlot('prefix');
81
+ var beforeInputSlot = renderSlot('beforeInput');
82
+ var configureSlot = renderSlot('configure');
83
+ var hasHeaderSlot = !isEmptySlot(headerSlot);
84
+ var hasFooterSlot = !isEmptySlot(footerSlot);
85
+ var hasPrefixSlot = !isEmptySlot(prefixSlot);
86
+ var hasBeforeInputSlot = !isEmptySlot(beforeInputSlot);
87
+ var hasConfigureSlot = !isEmptySlot(configureSlot);
88
+ var disabled = isDisabled();
89
+ var inputDisabled = isInputDisabled();
90
+ var generating = isGenerating();
91
+ var loading = isLoading();
92
+ var sendButtonDisabled = isSendButtonDisabled();
93
+ var stopButtonDisabled = isStopButtonDisabled();
94
+ var list = attachments || [];
95
+ var hasAttachments = list.length > 0;
96
+ var limit = uploadProps && uploadProps.limit;
97
+ var reachLimit = limit !== undefined && limit !== null && list.length >= Number(limit);
98
+ var isMediaView = fileView === 'media';
99
+ var isDirectory = !!(uploadProps && uploadProps.directory);
100
+ var showToolbarUploadButton = uploadButton === 'toolbar';
101
+ var showListUploadButton = uploadButton === 'list';
102
+ var getMediaItemType = function getMediaItemType(type) {
103
+ var _context;
104
+ var value = _trimInstanceProperty(_context = (type || '').toLowerCase()).call(_context);
105
+ if (value === 'image' || value === 'video' || value === 'audio' || _startsWithInstanceProperty(value).call(value, 'image/') || _startsWithInstanceProperty(value).call(value, 'video/') || _startsWithInstanceProperty(value).call(value, 'audio/')) {
106
+ return type;
107
+ }
108
+ return undefined;
109
+ };
110
+
111
+ // card 视图下,所有附件统一按「文件卡」呈现,避免引入额外的文件夹展示语义。
112
+ // media 视图下保留明确媒体类型,但忽略 application/octet-stream 等泛 MIME,继续交给 FileCard 基于 name/src 识别。
113
+ var renderItems = isMediaView ? _mapInstanceProperty(list).call(list, function (it) {
114
+ return _extends({}, it, {
115
+ type: getMediaItemType(it.type)
116
+ });
117
+ }) : _mapInstanceProperty(list).call(list, function (it) {
118
+ return _extends({}, it, {
119
+ type: 'file'
120
+ });
121
+ });
122
+
123
+ // 列表入口即便没有附件也要展示 FileCardList,用来承载前置上传按钮。
124
+ var showAttachmentsArea = showListUploadButton || hasAttachments;
125
+ var onAttachmentClick = function onAttachmentClick(item, e) {
126
+ _this.trigger('attachmentClick', item, e);
127
+ };
128
+ var onAttachmentDelete = function onAttachmentDelete(item, e) {
129
+ _this.trigger('attachmentDelete', item, e);
130
+ removeAttachment(item);
131
+ };
132
+ var classNameObj = (_classNameObj = {}, _classNameObj[k + "-sender"] = true, _classNameObj[k + "-sender-file-view-" + fileView] = true, _classNameObj[k + "-sender-disabled"] = disabled, _classNameObj[k + "-sender-input-disabled"] = inputDisabled, _classNameObj[className] = className, _classNameObj[makeStyles(k)] = true, _classNameObj);
133
+
134
+ // 整个输入外框 k-sender 的宽度
135
+ if (width != null) {
136
+ style = addStyle(style, {
137
+ width: isNumber(width) ? width + "px" : width
138
+ });
139
+ }
140
+
141
+ // 整个输入外框 k-sender-shell 的最大高度(与 props maxHeight 一致);未传时走 styles 中默认 300
142
+ var shellStyle = maxHeight != null ? {
143
+ maxHeight: isNumber(maxHeight) ? maxHeight + "px" : maxHeight
144
+ } : undefined;
145
+ var placeholderText = placeholder != null ? placeholder : _$('输入对话内容(Enter发送, Shift + Enter 换行)');
146
+ var getButtonTooltip = function getButtonTooltip(name) {
147
+ var value = buttonTooltip && buttonTooltip[name];
148
+ return value;
149
+ };
150
+ var renderButtonWithTooltip = function renderButtonWithTooltip(button, content, className) {
151
+ return _$cc(Tooltip, {
152
+ 'content': content,
153
+ 'className': _$cn(className),
154
+ 'children': button
155
+ });
156
+ };
157
+ var sendButtonText = _$('发送');
158
+ var stopButtonText = _$('停止生成');
159
+ var uploadButtonText = isDirectory ? _$('上传文件夹') : _$('上传附件');
160
+ var listUploadButtonText = _$('参考内容');
161
+ var currentSendButtonTooltip = getButtonTooltip(generating ? 'stop' : 'send');
162
+ var currentSendButtonAriaLabel = generating ? stopButtonText : sendButtonText;
163
+ var currentUploadButtonTooltip = getButtonTooltip('upload');
164
+ var currentListUploadButtonTooltip = getButtonTooltip('listUpload');
165
+ var sendButtonTitle = currentSendButtonTooltip === undefined ? currentSendButtonAriaLabel : undefined;
166
+ var uploadButtonTitle = currentUploadButtonTooltip === undefined ? uploadButtonText : undefined;
167
+ var listUploadButtonTitle = currentListUploadButtonTooltip === undefined ? listUploadButtonText : undefined;
168
+ var defaultSendButtonInner = _$ce(2, 'button', _$ce(2, 'img', null, 1, _$cn(k + "-sender-send-icon"), {
169
+ 'src': generating ? senderStopIcon : senderSendIcon,
170
+ 'alt': '',
171
+ 'draggable': false
172
+ }), 2, _$cn(k + "-sender-send-btn"), {
173
+ 'type': 'button',
174
+ 'disabled': generating ? stopButtonDisabled : sendButtonDisabled,
175
+ 'ev-click': handleSendClick,
176
+ 'title': sendButtonTitle,
177
+ 'aria-label': currentSendButtonAriaLabel
178
+ });
179
+ var defaultSendButton = typeof currentSendButtonTooltip === 'string' ? renderButtonWithTooltip(defaultSendButtonInner, currentSendButtonTooltip, k + "-sender-send-tooltip") : defaultSendButtonInner;
180
+ var defaultAttachButtonInner = _$ce(2, 'button', null, 1, _$cn(k + "-sender-attach-btn"), {
181
+ 'type': 'button',
182
+ 'disabled': inputDisabled || reachLimit,
183
+ 'ev-click': pickFiles,
184
+ 'title': uploadButtonTitle,
185
+ 'aria-label': uploadButtonText,
186
+ 'innerHTML': senderAttachSvg
187
+ });
188
+ var defaultAttachButton = typeof currentUploadButtonTooltip === 'string' ? renderButtonWithTooltip(defaultAttachButtonInner, currentUploadButtonTooltip, k + "-sender-upload-tooltip") : defaultAttachButtonInner;
189
+ var getUploadButtonSlotParams = function getUploadButtonSlotParams(position) {
190
+ return {
191
+ disabled: inputDisabled,
192
+ reachLimit: reachLimit,
193
+ position: position,
194
+ addFiles: addFiles,
195
+ pickFiles: pickFiles
196
+ };
197
+ };
198
+ var renderUploadButtonSlot = function renderUploadButtonSlot(position) {
199
+ var slot = renderSlot('uploadButton', getUploadButtonSlotParams(position));
200
+ return isEmptySlot(slot) ? undefined : slot;
201
+ };
202
+
203
+ // 附件列表末尾的虚线 + 框
204
+ var listUploadButtonInner = _$ce(2, 'div', [_$cc(Icon, {
205
+ 'className': _$cn(k + "-icon-add-bold")
206
+ }), _$ce(2, 'div', listUploadButtonText, 0, _$cn(k + "-sender-list-upload-text"))], 4, _$cn((_$cn2 = {}, _$cn2[k + "-sender-list-upload"] = true, _$cn2[k + "-sender-list-upload-disabled"] = inputDisabled, _$cn2)), {
207
+ 'ev-click': inputDisabled ? undefined : pickFiles,
208
+ 'role': 'button',
209
+ 'title': listUploadButtonTitle,
210
+ 'aria-label': listUploadButtonText
211
+ });
212
+ var listUploadButton = typeof currentListUploadButtonTooltip === 'string' ? renderButtonWithTooltip(listUploadButtonInner, currentListUploadButtonTooltip, k + "-sender-list-upload-tooltip") : listUploadButtonInner;
213
+ var toolbarUploadButtonSlot = showToolbarUploadButton ? renderUploadButtonSlot('toolbar') : undefined;
214
+ var listUploadButtonSlot = showListUploadButton ? renderUploadButtonSlot('list') : undefined;
215
+ var showDefaultToolbarUploadButton = showToolbarUploadButton && !toolbarUploadButtonSlot;
216
+ var showToolbarLeft = showToolbarUploadButton;
217
+ var sendButtonSlotParams = {
218
+ generating: generating,
219
+ disabled: sendButtonDisabled,
220
+ stopDisabled: stopButtonDisabled,
221
+ loading: loading,
222
+ send: send,
223
+ stopGenerate: stopGenerate
224
+ };
225
+ return _$cv('div', _extends({
226
+ 'className': _$cn(classNameObj)
227
+ }, getRestProps(this), {
228
+ 'style': style
229
+ }), [hasHeaderSlot ? _$ce(2, 'div', headerSlot, 0, _$cn(k + "-sender-header")) : undefined, _$ce(2, 'div', [showAttachmentsArea ? _$ce(2, 'div', isMediaView ? _$cc(FileCardList, {
230
+ 'items': renderItems,
231
+ 'deleteable': true,
232
+ 'overflow': 'scrollY',
233
+ 'showNameTooltip': true,
234
+ 'ev-click': onAttachmentClick,
235
+ 'ev-delete': onAttachmentDelete,
236
+ '$blocks': function ($blocks) {
237
+ var _$blocks = {},
238
+ __$blocks = _$ex({}, $blocks);
239
+ return (_$blocks['prefix'] = function ($super) {
240
+ return showListUploadButton && !reachLimit ? listUploadButtonSlot || listUploadButton : undefined;
241
+ }, __$blocks['prefix'] = function ($super, data) {
242
+ var block = $blocks['prefix'];
243
+ var callBlock = function callBlock() {
244
+ return _$blocks['prefix'].call($this, $super, data);
245
+ };
246
+ return block ? block.call($this, callBlock, data) : callBlock();
247
+ }), __$blocks;
248
+ }.call($this, _$em)
249
+ }) : _$cc(FileCardList, {
250
+ 'items': renderItems,
251
+ 'deleteable': true,
252
+ 'overflow': 'scrollY',
253
+ 'showNameTooltip': true,
254
+ 'ev-click': onAttachmentClick,
255
+ 'ev-delete': onAttachmentDelete,
256
+ '$blocks': function ($blocks) {
257
+ var _$blocks = {},
258
+ __$blocks = _$ex({}, $blocks);
259
+ return (_$blocks['prefix'] = function ($super) {
260
+ return showListUploadButton && !reachLimit ? listUploadButtonSlot || listUploadButton : undefined;
261
+ }, __$blocks['prefix'] = function ($super, data) {
262
+ var block = $blocks['prefix'];
263
+ var callBlock = function callBlock() {
264
+ return _$blocks['prefix'].call($this, $super, data);
265
+ };
266
+ return block ? block.call($this, callBlock, data) : callBlock();
267
+ }), __$blocks;
268
+ }.call($this, _$em)
269
+ }), 2, _$cn((_$cn3 = {}, _$cn3[k + "-sender-attachments"] = true, _$cn3[k + "-sender-attachments-" + fileView] = true, _$cn3))) : undefined, hasBeforeInputSlot ? _$ce(2, 'div', beforeInputSlot, 0, _$cn(k + "-sender-before-input")) : undefined, _$ce(2, 'div', [hasPrefixSlot ? _$ce(2, 'div', prefixSlot, 0, _$cn(k + "-sender-prefix")) : undefined, _$ce(256, 'textarea', null, 1, _$cn(k + "-sender-input"), {
270
+ 'rows': 1,
271
+ 'value': value,
272
+ 'placeholder': placeholderText,
273
+ 'disabled': inputDisabled,
274
+ 'readOnly': readonly,
275
+ 'ev-input': handleInput,
276
+ 'ev-keydown': handleKeydown,
277
+ 'ev-paste': handlePaste,
278
+ 'ev-focus': handleFocus,
279
+ 'ev-blur': handleBlur
280
+ }, null, this.textareaRef)], 0, _$cn(k + "-sender-input-area")), _$ce(2, 'div', [showToolbarLeft ? _$ce(2, 'div', toolbarUploadButtonSlot ? toolbarUploadButtonSlot : showDefaultToolbarUploadButton ? defaultAttachButton : undefined, 0, _$cn(k + "-sender-toolbar-left")) : undefined, hasConfigureSlot ? _$ce(2, 'div', configureSlot, 0, _$cn(k + "-sender-toolbar-middle")) : undefined, _$ce(2, 'div', $blocks.sendButton ? (_$blocks['sendButton'] = function ($super) {
281
+ return null;
282
+ }, __$blocks['sendButton'] = function ($super, data) {
283
+ var block = $blocks['sendButton'];
284
+ var callBlock = function callBlock() {
285
+ return _$blocks['sendButton'].call($this, $super, data);
286
+ };
287
+ return block ? block.call($this, callBlock, data) : callBlock();
288
+ }, __$blocks['sendButton'](_$no, sendButtonSlotParams)) : defaultSendButton, 0, _$cn(k + "-sender-toolbar-right"))], 0, _$cn(k + "-sender-toolbar")), _$ccv(' 放末尾,避免挡住 attachments + input-area 等相邻选择器,且 absolute 不影响布局 '), _$ce(64, 'input', null, 1, _$cn(k + "-sender-file-input"), {
289
+ 'type': 'file',
290
+ 'accept': getAcceptAttr(),
291
+ 'multiple': isMultiple(),
292
+ 'directory': isDirectory ? '' : undefined,
293
+ 'webkitdirectory': isDirectory ? '' : undefined,
294
+ 'ev-change': onInputChange
295
+ }, null, this.fileInputRef)], 0, _$cn((_$cn4 = {}, _$cn4[k + "-sender-shell"] = true, _$cn4[k + "-sender-active"] = isFocus.value && !inputDisabled, _$cn4)), {
296
+ 'style': shellStyle
297
+ }), hasFooterSlot ? _$ce(2, 'div', footerSlot, 0, _$cn(k + "-sender-footer")) : undefined, enableDragFile && dragController.dragOver.value ? _$ce(2, 'div', _$ce(2, 'div', [_$cc(Icon, {
298
+ 'className': _$cn(k + "-icon-upload"),
299
+ 'size': 'large'
300
+ }), _$ce(2, 'div', _$('文件拖动到此处即可上传'), 0, _$cn(k + "-sender-drag-text"))], 4, _$cn(k + "-sender-drag-card")), 2, _$cn(k + "-sender-drag-mask"), _$tmp0) : undefined]);
301
+ }
302
+ ;
@@ -0,0 +1,5 @@
1
+ import '../../styles/global';
2
+ export declare const makeStyles: {
3
+ (k: string): string;
4
+ clearCache(): {};
5
+ };
@@ -0,0 +1,65 @@
1
+ import { css } from '@emotion/css';
2
+ import { theme, setDefault } from '../../styles/theme';
3
+ import { deepDefaults } from '../../styles/utils';
4
+ import '../../styles/global';
5
+ import { cache } from '../utils';
6
+ // 用于复用的渐变色:默认态半透明,hover/active 实色,与设计稿一致。
7
+ var SENDER_GRADIENT_DEFAULT = 'linear-gradient(101.07deg, rgba(0, 221, 221, 0.5) -7.07%, rgba(83, 112, 255, 0.5) 48.92%, rgba(113, 47, 255, 0.5) 104.92%)';
8
+ var SENDER_GRADIENT_ACTIVE = 'linear-gradient(101.07deg, #00DDDD -7.07%, #5370FF 48.92%, #712FFF 104.92%)';
9
+ var defaults = {
10
+ radius: '12px',
11
+ // 输入框外框(k-sender-shell)统一 12,区块间距在下方用 margin 控制
12
+ padding: '12px',
13
+ // 与 useAutoResize 中 SHELL_MAX_FALLBACK 一致
14
+ shellMaxH: '300px',
15
+ gapHeaderToShell: '4px',
16
+ gapShellToFooter: '4px',
17
+ // 区块间距:附件↔上插槽 8;附件/上插槽↔文字区 16;文字区↔工具条 8
18
+ gapAttachToTop: '8px',
19
+ gapTopToInput: '16px',
20
+ gapInputToToolbar: '8px',
21
+ bg: '#FFFFFF',
22
+ color: theme.color.text,
23
+ placeholderColor: theme.color.placeholder,
24
+ disabledBg: theme.color.bg,
25
+ disabledColor: theme.color.disabled,
26
+ fontSize: theme.fontSize,
27
+ lineHeight: 1.5,
28
+ prefixGap: '8px',
29
+ prefixColor: '#868A9C',
30
+ gradientDefault: SENDER_GRADIENT_DEFAULT,
31
+ gradientActive: SENDER_GRADIENT_ACTIVE,
32
+ activeBackdropFilter: 'blur(4px)',
33
+ activeShadow: ['0px 4px 6px -4px rgba(0, 0, 0, 0.102)', '3px -3px 16px -5px rgba(113, 47, 255, 0.102)', '-3px 3px 14px -4px rgba(83, 112, 255, 0.102)'].join(', '),
34
+ sendButtonSize: '32px',
35
+ attachButtonSize: '16px',
36
+ attachIconColor: '#868A9C',
37
+ get attachIconHoverColor() {
38
+ return theme.color.primary;
39
+ },
40
+ // 附件列表末尾上传入口,尺寸和 FileCard media default 对齐
41
+ listUploadSize: '64px',
42
+ listUploadRadius: '6px',
43
+ listUploadBg: '#FFFFFF',
44
+ listUploadBorder: '1px dashed #E5E8EE',
45
+ listUploadColor: '#868A9C',
46
+ listUploadIconSize: '16px',
47
+ listUploadTextFontSize: '12px',
48
+ listUploadIconToTextGap: '8px',
49
+ dragMaskBg: 'rgba(255, 255, 255, 0.72)',
50
+ dragCardColor: '#5370FF',
51
+ dragCardTextColor: theme.color.text,
52
+ // 与 FileCardList 一致的滚动条样式
53
+ scrollbarThumb: 'rgba(63, 68, 81, 0.26)',
54
+ scrollbarThumbHover: 'rgba(63, 68, 81, 0.42)'
55
+ };
56
+ var sender;
57
+ setDefault(function () {
58
+ sender = deepDefaults(theme, {
59
+ sender: defaults
60
+ }).sender;
61
+ makeStyles == null || makeStyles.clearCache();
62
+ });
63
+ export var makeStyles = cache(function makeStyles(k) {
64
+ return /*#__PURE__*/css("position:relative;display:flex;flex-direction:column;box-sizing:border-box;.", k, "-sender-header,.", k, "-sender-footer{box-sizing:border-box;flex:0 0 auto;}.", k, "-sender-header{margin-bottom:", sender.gapHeaderToShell, ";}.", k, "-sender-footer{margin-top:", sender.gapShellToFooter, ";}.", k, "-sender-shell{position:relative;display:flex;flex-direction:column;box-sizing:border-box;max-height:", sender.shellMaxH, ";padding:", sender.padding, ";background:", sender.bg, ";border-radius:", sender.radius, ";transition:background ", theme.transition.middle, ",box-shadow ", theme.transition.middle, ";min-width:0;overflow:hidden;}.", k, "-sender-shell::before{content:'';position:absolute;inset:0;padding:1px;border-radius:inherit;background:", sender.gradientDefault, ";-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;pointer-events:none;transition:background ", theme.transition.middle, ",opacity ", theme.transition.middle, ";}&:not(.", k, "-sender-disabled) .", k, "-sender-shell:hover::before,.", k, "-sender-shell.", k, "-sender-active::before{background:", sender.gradientActive, ";}.", k, "-sender-shell.", k, "-sender-active{backdrop-filter:", sender.activeBackdropFilter, ";-webkit-backdrop-filter:", sender.activeBackdropFilter, ";box-shadow:", sender.activeShadow, ";}&.", k, "-sender-disabled .", k, "-sender-shell::before{opacity:0.5;}&.", k, "-sender-disabled .", k, "-sender-shell{background:", sender.disabledBg, ";}&.", k, "-sender-input-disabled .", k, "-sender-shell{background:", sender.disabledBg, ";}.", k, "-sender-attachments{padding:0;box-sizing:border-box;min-width:0;flex:0 0 auto;}.", k, "-sender-attachments-media .", k, "-file-card-list{min-width:0;}.", k, "-sender-before-input{margin-bottom:", sender.gapTopToInput, ";padding:0;box-sizing:border-box;flex:0 0 auto;}.", k, "-sender-attachments+.", k, "-sender-before-input{margin-top:", sender.gapAttachToTop, ";}.", k, "-sender-attachments+.", k, "-sender-input-area{margin-top:", sender.gapTopToInput, ";}.", k, "-sender-input-area{position:relative;display:flex;align-items:flex-start;flex:0 0 auto;min-height:0;margin-bottom:", sender.gapInputToToolbar, ";padding:0;box-sizing:border-box;}.", k, "-sender-prefix{display:inline-flex;align-items:center;flex:0 0 auto;min-height:calc(", sender.fontSize, " * ", sender.lineHeight, ");margin-right:", sender.prefixGap, ";color:", sender.prefixColor, ";line-height:", sender.lineHeight, ";}.", k, "-sender-input{flex:1 1 auto;width:0;min-width:0;min-height:0;border:none;outline:none;resize:none;background:transparent;color:", sender.color, ";font-family:inherit;font-size:", sender.fontSize, ";line-height:", sender.lineHeight, ";padding:0;scrollbar-width:thin;scrollbar-color:transparent transparent;}.", k, "-sender-input::-webkit-scrollbar{width:8px;}.", k, "-sender-input::-webkit-scrollbar-track{background:transparent;}.", k, "-sender-input::-webkit-scrollbar-thumb{border-radius:999px;border:2px solid transparent;background:transparent;background-clip:content-box;}.", k, "-sender-input:hover{scrollbar-color:", sender.scrollbarThumb, " transparent;}.", k, "-sender-input:hover::-webkit-scrollbar-thumb{background:", sender.scrollbarThumb, ";background-clip:content-box;}.", k, "-sender-input:hover::-webkit-scrollbar-thumb:hover{background:", sender.scrollbarThumbHover, ";background-clip:content-box;}.", k, "-sender-input::placeholder{color:", sender.placeholderColor, ";}&.", k, "-sender-disabled .", k, "-sender-input,&.", k, "-sender-input-disabled .", k, "-sender-input{color:", sender.disabledColor, ";cursor:not-allowed;}.", k, "-sender-toolbar{display:flex;gap:8px;padding:0;box-sizing:border-box;flex:0 0 auto;}.", k, "-sender-toolbar-left{display:flex;align-items:center;gap:8px;margin-top:8px;flex:0 0 auto;}.", k, "-sender-toolbar-right{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin-left:auto;}.", k, "-sender-toolbar-middle{flex:1 1 auto;min-width:0;display:flex;align-items:flex-end;gap:8px;}.", k, "-sender-attach-btn{display:inline-flex;align-items:center;justify-content:center;width:", sender.attachButtonSize, ";height:", sender.attachButtonSize, ";border-radius:50%;background:transparent;border:none;padding:0;cursor:pointer;color:", sender.attachIconColor, ";transition:color ", theme.transition.small, ",background ", theme.transition.small, ";}.", k, "-sender-attach-btn:hover{color:", sender.attachIconHoverColor, ";}.", k, "-sender-attach-btn:disabled,&.", k, "-sender-disabled .", k, "-sender-attach-btn,&.", k, "-sender-input-disabled .", k, "-sender-attach-btn{color:", theme.color.disabled, ";cursor:not-allowed;background:transparent;}.", k, "-sender-attach-btn svg{display:block;}.", k, "-sender-send-btn{display:inline-flex;align-items:center;justify-content:center;width:", sender.sendButtonSize, ";height:", sender.sendButtonSize, ";background:transparent;border:none;padding:0;cursor:pointer;transition:filter ", theme.transition.small, ";}.", k, "-sender-send-btn:disabled{cursor:not-allowed;filter:opacity(0.5);}.", k, "-sender-send-btn:not(:disabled):hover{filter:opacity(0.85);}.", k, "-sender-send-icon{display:block;width:32px;height:32px;pointer-events:none;filter:drop-shadow(0 4px 8px rgba(83, 112, 255, 0.32));}.", k, "-sender-list-upload{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:", sender.listUploadIconToTextGap, ";width:", sender.listUploadSize, ";height:", sender.listUploadSize, ";box-sizing:border-box;flex:0 0 auto;padding:0;border-radius:", sender.listUploadRadius, ";border:", sender.listUploadBorder, ";background:", sender.listUploadBg, ";color:", sender.listUploadColor, ";cursor:pointer;transition:border-color ", theme.transition.small, ",color ", theme.transition.small, ";}.", k, "-sender-list-upload .", k, "-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:", sender.listUploadIconSize, ";height:", sender.listUploadIconSize, ";color:inherit;font-size:", sender.listUploadIconSize, ";line-height:1;transition:color ", theme.transition.small, ";}.", k, "-sender-list-upload-text{flex:0 0 auto;font-size:", sender.listUploadTextFontSize, ";line-height:1;color:inherit;transition:color ", theme.transition.small, ";}.", k, "-sender-list-upload:hover{border-color:", theme.color.primary, ";color:", theme.color.primary, ";}.", k, "-sender-list-upload:hover .", k, "-icon,.", k, "-sender-list-upload:hover .", k, "-sender-list-upload-text{color:inherit;}.", k, "-sender-list-upload-disabled,.", k, "-sender-list-upload-disabled:hover{cursor:not-allowed;border:", sender.listUploadBorder, ";color:", theme.color.disabled, ";}.", k, "-sender-file-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;top:-9999px;left:-9999px;}.", k, "-sender-drag-mask{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box;background:", sender.dragMaskBg, ";backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}.", k, "-sender-drag-card{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:", sender.dragCardColor, ";}.", k, "-sender-drag-card .", k, "-icon{color:", sender.dragCardColor, ";font-size:32px;line-height:1;}.", k, "-sender-drag-text{color:", sender.dragCardTextColor, ";font-size:14px;font-weight:500;line-height:20px;}");
65
+ });
@@ -0,0 +1,4 @@
1
+ import { RefObject } from 'intact-vue-next';
2
+ export declare function useAutoResize(textareaRef: RefObject<HTMLTextAreaElement>): {
3
+ adjust: () => void;
4
+ };