@sdata/web-vue 3.18.0 → 3.19.0

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 (259) hide show
  1. package/dist/sd.css +478 -0
  2. package/dist/sd.min.css +2 -2
  3. package/es/_components/icon-hover.vue.d.ts +1 -1
  4. package/es/_components/input-label/input-label.d.ts +13 -1
  5. package/es/_components/input-label/input-label.js +35 -5
  6. package/es/_components/input-label/style/index.css +6 -0
  7. package/es/_components/input-label/style/input-label.scss +8 -0
  8. package/es/_components/picker/input-range.vue.d.ts +24 -1
  9. package/es/_components/picker/input-range.vue_vue_type_script_setup_true_lang.js +42 -6
  10. package/es/_components/picker/input.vue.d.ts +24 -1
  11. package/es/_components/picker/input.vue_vue_type_script_setup_true_lang.js +31 -4
  12. package/es/_components/picker/style/index.scss +8 -0
  13. package/es/_components/select-view/select-view.d.ts +15 -3
  14. package/es/_components/select-view/select-view.js +10 -1
  15. package/es/_components/select-view/style/index.css +12 -0
  16. package/es/_components/virtual-list/virtual-list.vue.d.ts +6 -6
  17. package/es/_hooks/use-fit-width.d.ts +22 -0
  18. package/es/_hooks/use-fit-width.js +76 -0
  19. package/es/_hooks/use-form-item.d.ts +1 -1
  20. package/es/_hooks/use-size.d.ts +1 -1
  21. package/es/anchor/anchor.vue.d.ts +1 -1
  22. package/es/anchor/index.d.ts +3 -3
  23. package/es/auto-complete/auto-complete.d.ts +20 -2
  24. package/es/auto-complete/auto-complete.js +18 -0
  25. package/es/auto-complete/index.d.ts +36 -6
  26. package/es/basic-crud-table/basic-crud-table.vue.d.ts +2 -2
  27. package/es/basic-crud-table/index.d.ts +5 -5
  28. package/es/button/button.vue.d.ts +2 -2
  29. package/es/button/index.d.ts +6 -6
  30. package/es/card/card.d.ts +3 -3
  31. package/es/card/index.d.ts +6 -6
  32. package/es/carousel/carousel-indicator.vue.d.ts +1 -1
  33. package/es/cascader/base-cascader-panel.d.ts +1 -1
  34. package/es/cascader/cascader-option.d.ts +1 -1
  35. package/es/cascader/cascader-panel.vue.d.ts +1 -1
  36. package/es/cascader/cascader-search-panel.d.ts +1 -1
  37. package/es/cascader/cascader.vue.d.ts +7 -5
  38. package/es/cascader/cascader.vue_vue_type_script_setup_true_lang.js +12 -0
  39. package/es/cascader/types.d.ts +2 -1
  40. package/es/checkbox/checkbox.d.ts +3 -3
  41. package/es/checkbox/index.d.ts +6 -6
  42. package/es/collapse/collapse-item.d.ts +3 -3
  43. package/es/collapse/index.d.ts +3 -3
  44. package/es/color-picker/color-picker.d.ts +2 -2
  45. package/es/color-picker/index.d.ts +6 -6
  46. package/es/components.d.ts +4 -0
  47. package/es/config-provider/config-provider.vue.d.ts +1 -1
  48. package/es/config-provider/index.d.ts +3 -3
  49. package/es/date-picker/index.d.ts +87 -23
  50. package/es/date-picker/interface.d.ts +2 -1
  51. package/es/date-picker/picker-panel.vue.d.ts +1 -1
  52. package/es/date-picker/picker.vue.d.ts +39 -17
  53. package/es/date-picker/picker.vue_vue_type_script_setup_true_lang.js +30 -1
  54. package/es/date-picker/pickers/date-picker.d.ts +18 -0
  55. package/es/date-picker/pickers/date-picker.js +16 -0
  56. package/es/date-picker/range-picker-panel.vue.d.ts +1 -1
  57. package/es/date-picker/range-picker.vue.d.ts +39 -17
  58. package/es/date-picker/range-picker.vue_vue_type_script_setup_true_lang.js +27 -1
  59. package/es/date-picker/style/index.css +6 -0
  60. package/es/descriptions/descriptions.d.ts +3 -3
  61. package/es/descriptions/index.d.ts +9 -9
  62. package/es/divider/divider.d.ts +1 -1
  63. package/es/divider/index.d.ts +3 -3
  64. package/es/drawer/drawer.vue.d.ts +4 -4
  65. package/es/drawer/index.d.ts +11 -11
  66. package/es/dropdown/dropdown-button.vue.d.ts +2 -2
  67. package/es/dropdown/dropdown-option.vue.d.ts +1 -1
  68. package/es/dropdown/dropdown-submenu.vue.d.ts +2 -2
  69. package/es/dropdown/dropdown.vue.d.ts +1 -1
  70. package/es/dropdown/index.d.ts +21 -21
  71. package/es/ellipsis/ellipsis.vue.d.ts +1 -1
  72. package/es/ellipsis/index.d.ts +6 -6
  73. package/es/ellipsis/performant-ellipsis.vue.d.ts +1 -1
  74. package/es/form/form-item.vue.d.ts +1 -1
  75. package/es/form/form.vue.d.ts +1 -1
  76. package/es/form/index.d.ts +9 -9
  77. package/es/grid/grid-row.vue.d.ts +3 -3
  78. package/es/grid/index.d.ts +9 -9
  79. package/es/icon/icon-arrow-up/icon-arrow-up.js +5 -0
  80. package/es/icon/icon-arrow-up/icon-arrow-up.vue_vue_type_script_setup_true_lang.js +52 -0
  81. package/es/icon/icon-arrow-up/index.js +9 -0
  82. package/es/icon/icon-mute/icon-mute.js +5 -0
  83. package/es/icon/icon-mute/icon-mute.vue_vue_type_script_setup_true_lang.js +52 -0
  84. package/es/icon/icon-mute/index.js +9 -0
  85. package/es/icon/icon-voice/icon-voice.js +5 -0
  86. package/es/icon/icon-voice/icon-voice.vue_vue_type_script_setup_true_lang.js +52 -0
  87. package/es/icon/icon-voice/index.js +9 -0
  88. package/es/image/preview-action.d.ts +6 -6
  89. package/es/image/preview-group.vue.d.ts +1 -1
  90. package/es/index.css +478 -0
  91. package/es/index.d.ts +5 -0
  92. package/es/index.js +5 -1
  93. package/es/index.scss +2 -0
  94. package/es/input/index.d.ts +99 -6
  95. package/es/input/input-password.vue.d.ts +18 -0
  96. package/es/input/input-password.vue_vue_type_script_setup_true_lang.js +24 -2
  97. package/es/input/input-search.d.ts +18 -0
  98. package/es/input/input-search.js +20 -2
  99. package/es/input/input.d.ts +29 -2
  100. package/es/input/input.js +45 -3
  101. package/es/input/style/index.css +16 -0
  102. package/es/input/style/index.scss +21 -0
  103. package/es/input-number/index.d.ts +36 -6
  104. package/es/input-number/input-number.d.ts +20 -2
  105. package/es/input-number/input-number.js +19 -0
  106. package/es/input-tag/index.d.ts +36 -6
  107. package/es/input-tag/input-tag.d.ts +20 -2
  108. package/es/input-tag/input-tag.js +35 -4
  109. package/es/input-tag/style/index.css +6 -0
  110. package/es/input-tag/style/input-tag.scss +8 -0
  111. package/es/kv-list/index.d.ts +72 -32
  112. package/es/link/index.d.ts +6 -6
  113. package/es/link/link.vue.d.ts +2 -2
  114. package/es/locale/interface.d.ts +22 -0
  115. package/es/locale/lang/ar-eg.js +21 -1
  116. package/es/locale/lang/de-de.js +21 -1
  117. package/es/locale/lang/en-us.js +21 -1
  118. package/es/locale/lang/es-es.js +21 -1
  119. package/es/locale/lang/fr-fr.js +21 -1
  120. package/es/locale/lang/id-id.js +21 -1
  121. package/es/locale/lang/it-it.js +21 -1
  122. package/es/locale/lang/ja-jp.js +21 -1
  123. package/es/locale/lang/km-kh.js +21 -1
  124. package/es/locale/lang/ko-kr.js +21 -1
  125. package/es/locale/lang/ms-my.js +21 -1
  126. package/es/locale/lang/nl-nl.js +21 -1
  127. package/es/locale/lang/pt-pt.js +21 -1
  128. package/es/locale/lang/ru-ru.js +21 -1
  129. package/es/locale/lang/th-th.js +21 -1
  130. package/es/locale/lang/vi-vn.js +21 -1
  131. package/es/locale/lang/zh-cn.js +21 -1
  132. package/es/locale/lang/zh-tw.js +21 -1
  133. package/es/mention/index.d.ts +39 -9
  134. package/es/mention/mention.d.ts +21 -3
  135. package/es/mention/mention.js +24 -1
  136. package/es/mention/style/index.css +6 -0
  137. package/es/mention/style/index.scss +8 -0
  138. package/es/menu/item.d.ts +1 -1
  139. package/es/message/message-list.d.ts +1 -1
  140. package/es/modal/index.d.ts +9 -9
  141. package/es/modal/modal.vue.d.ts +3 -3
  142. package/es/popconfirm/index.d.ts +3 -3
  143. package/es/popconfirm/popconfirm.vue.d.ts +1 -1
  144. package/es/popover/index.d.ts +6 -6
  145. package/es/popover/popover.vue.d.ts +2 -2
  146. package/es/progress/circle.vue.d.ts +1 -1
  147. package/es/progress/line.vue.d.ts +1 -1
  148. package/es/qr-code/index.d.ts +15 -15
  149. package/es/qr-code/qr-code.vue.d.ts +5 -5
  150. package/es/radio/index.d.ts +6 -6
  151. package/es/radio/radio.d.ts +3 -3
  152. package/es/rate/index.d.ts +3 -3
  153. package/es/rate/rate.d.ts +1 -1
  154. package/es/resize-box/index.d.ts +5 -5
  155. package/es/resize-box/resize-box.vue.d.ts +3 -3
  156. package/es/rich-text-editor/built-in-components.d.ts +5 -0
  157. package/es/rich-text-editor/built-in-components.js +6 -0
  158. package/es/rich-text-editor/index.d.ts +195 -0
  159. package/es/rich-text-editor/index.js +12 -0
  160. package/es/rich-text-editor/nodes/inline-component-node.d.ts +30 -0
  161. package/es/rich-text-editor/nodes/inline-component-node.js +86 -0
  162. package/es/rich-text-editor/rich-text-editor.js +5 -0
  163. package/es/rich-text-editor/rich-text-editor.vue.d.ts +76 -0
  164. package/es/rich-text-editor/rich-text-editor.vue_vue_type_script_setup_true_lang.js +630 -0
  165. package/es/rich-text-editor/rich-text-node-renderer.js +5 -0
  166. package/es/rich-text-editor/rich-text-node-renderer.vue.d.ts +28 -0
  167. package/es/rich-text-editor/rich-text-node-renderer.vue_vue_type_script_setup_true_lang.js +133 -0
  168. package/es/rich-text-editor/style/css.js +2 -0
  169. package/es/rich-text-editor/style/index.css +164 -0
  170. package/es/rich-text-editor/style/index.d.ts +2 -0
  171. package/es/rich-text-editor/style/index.js +2 -0
  172. package/es/rich-text-editor/style/index.scss +193 -0
  173. package/es/rich-text-editor/style/token.scss +36 -0
  174. package/es/rich-text-editor/types.d.ts +148 -0
  175. package/es/sd-vue.js +6 -0
  176. package/es/select/index.d.ts +108 -54
  177. package/es/select/interface.d.ts +2 -1
  178. package/es/select/select.d.ts +55 -25
  179. package/es/select/select.js +18 -0
  180. package/es/sender/context.d.ts +8 -0
  181. package/es/sender/context.js +4 -0
  182. package/es/sender/index.d.ts +119 -0
  183. package/es/sender/index.js +20 -0
  184. package/es/sender/sender-header.js +5 -0
  185. package/es/sender/sender-header.vue.d.ts +28 -0
  186. package/es/sender/sender-header.vue_vue_type_script_setup_true_lang.js +127 -0
  187. package/es/sender/sender-switch.js +5 -0
  188. package/es/sender/sender-switch.vue.d.ts +32 -0
  189. package/es/sender/sender-switch.vue_vue_type_script_setup_true_lang.js +95 -0
  190. package/es/sender/sender.js +5 -0
  191. package/es/sender/sender.vue_vue_type_script_setup_true_lang.js +871 -0
  192. package/es/sender/style/css.js +3 -0
  193. package/es/sender/style/index.css +290 -0
  194. package/es/sender/style/index.d.ts +3 -0
  195. package/es/sender/style/index.js +3 -0
  196. package/es/sender/style/index.scss +346 -0
  197. package/es/sender/style/token.scss +43 -0
  198. package/es/sender/types.d.ts +171 -0
  199. package/es/sender/use-speech.d.ts +9 -0
  200. package/es/sender/use-speech.js +120 -0
  201. package/es/slider/index.d.ts +3 -3
  202. package/es/slider/slider-input.vue.d.ts +1 -1
  203. package/es/slider/slider.vue.d.ts +1 -1
  204. package/es/space/index.d.ts +9 -9
  205. package/es/space/space.d.ts +2 -2
  206. package/es/spin/index.d.ts +3 -3
  207. package/es/spin/spin.d.ts +1 -1
  208. package/es/statistic/index.d.ts +3 -3
  209. package/es/statistic/statistic.vue.d.ts +1 -1
  210. package/es/steps/index.d.ts +5 -5
  211. package/es/steps/step.vue.d.ts +2 -2
  212. package/es/steps/steps.vue.d.ts +1 -1
  213. package/es/table/index.d.ts +17 -17
  214. package/es/table/table-column.d.ts +1 -1
  215. package/es/table/table-operation-td.d.ts +12 -12
  216. package/es/table/table-td.d.ts +2 -2
  217. package/es/table/table.d.ts +5 -5
  218. package/es/tabs/index.d.ts +12 -12
  219. package/es/tabs/tabs-nav.d.ts +1 -1
  220. package/es/tabs/tabs.d.ts +4 -4
  221. package/es/tag/index.d.ts +6 -6
  222. package/es/tag/tag.vue.d.ts +2 -2
  223. package/es/textarea/index.d.ts +38 -8
  224. package/es/textarea/style/index.css +6 -0
  225. package/es/textarea/style/index.scss +8 -0
  226. package/es/textarea/textarea.vue.d.ts +21 -3
  227. package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +36 -3
  228. package/es/time-picker/index.d.ts +36 -6
  229. package/es/time-picker/interface.d.ts +2 -1
  230. package/es/time-picker/range-panel.js +58 -0
  231. package/es/time-picker/time-picker.vue.d.ts +20 -2
  232. package/es/time-picker/time-picker.vue_vue_type_script_setup_true_lang.js +30 -1
  233. package/es/timeline/index.d.ts +6 -6
  234. package/es/timeline/timeline.d.ts +3 -3
  235. package/es/tooltip/index.d.ts +6 -6
  236. package/es/tooltip/tooltip.vue.d.ts +2 -2
  237. package/es/tour/index.d.ts +3 -3
  238. package/es/tour/tour.vue.d.ts +1 -1
  239. package/es/transfer/index.d.ts +3 -3
  240. package/es/transfer/transfer.vue.d.ts +1 -1
  241. package/es/tree/tree.vue.d.ts +4 -4
  242. package/es/tree-select/interface.d.ts +2 -1
  243. package/es/tree-select/tree-select.vue.d.ts +25 -7
  244. package/es/tree-select/tree-select.vue_vue_type_script_setup_true_lang.js +20 -0
  245. package/es/trigger/index.d.ts +12 -12
  246. package/es/trigger/trigger.d.ts +4 -4
  247. package/es/typography/base.d.ts +4 -4
  248. package/es/typography/edit-content.vue.d.ts +2 -2
  249. package/es/upload/index.d.ts +6 -6
  250. package/es/upload/upload-button.d.ts +1 -1
  251. package/es/upload/upload.d.ts +2 -2
  252. package/es/verification-code/index.d.ts +3 -3
  253. package/es/verification-code/verification-code.d.ts +1 -1
  254. package/es/watermark/index.d.ts +3 -3
  255. package/es/watermark/watermark.d.ts +1 -1
  256. package/json/vetur-attributes.json +233 -0
  257. package/json/vetur-tags.json +83 -3
  258. package/json/web-types.json +535 -2
  259. package/package.json +10 -1
@@ -0,0 +1,171 @@
1
+ import type { CSSProperties, Component, VNodeChild } from 'vue';
2
+ import type { TooltipProps } from '../tooltip';
3
+ export type SenderSubmitType = 'enter' | 'shiftEnter';
4
+ export type SenderInsertPosition = 'start' | 'end' | 'cursor';
5
+ export type SenderSemanticType = 'root' | 'prefix' | 'input' | 'suffix' | 'footer' | 'switch' | 'content';
6
+ export interface SenderComponents {
7
+ input?: Component;
8
+ }
9
+ export interface SenderControlledSpeechConfig {
10
+ recording?: boolean;
11
+ onRecordingChange: (recording: boolean) => void;
12
+ }
13
+ export type SenderAllowSpeech = boolean | SenderControlledSpeechConfig;
14
+ export interface SenderSkillClosableConfig {
15
+ closeIcon?: VNodeChild;
16
+ onClose?: (event: MouseEvent) => void;
17
+ disabled?: boolean;
18
+ }
19
+ export interface SenderSkill {
20
+ title?: VNodeChild;
21
+ value: string;
22
+ tooltip?: string | TooltipProps;
23
+ closable?: boolean | SenderSkillClosableConfig;
24
+ }
25
+ export interface SenderSlotConfigBase {
26
+ type: 'text' | 'input' | 'select' | 'tag' | 'custom' | 'content';
27
+ formatResult?: (value: unknown) => string;
28
+ }
29
+ export interface SenderTextSlotConfig extends SenderSlotConfigBase {
30
+ type: 'text';
31
+ value?: string;
32
+ editable?: boolean;
33
+ placeholder?: string;
34
+ key?: string;
35
+ }
36
+ export interface SenderInputSlotConfig extends SenderSlotConfigBase {
37
+ type: 'input';
38
+ key: string;
39
+ props?: {
40
+ defaultValue?: string | number;
41
+ placeholder?: string;
42
+ };
43
+ }
44
+ export interface SenderSelectSlotConfig extends SenderSlotConfigBase {
45
+ type: 'select';
46
+ key: string;
47
+ props?: {
48
+ defaultValue?: string;
49
+ options: string[];
50
+ placeholder?: string;
51
+ };
52
+ }
53
+ export interface SenderTagSlotConfig extends SenderSlotConfigBase {
54
+ type: 'tag';
55
+ key: string;
56
+ props?: {
57
+ label: string | number;
58
+ value?: string;
59
+ };
60
+ }
61
+ export interface SenderContentSlotConfig extends SenderSlotConfigBase {
62
+ type: 'content';
63
+ key: string;
64
+ props?: {
65
+ defaultValue?: unknown;
66
+ placeholder?: string;
67
+ };
68
+ }
69
+ export interface SenderCustomSlotState {
70
+ disabled?: boolean;
71
+ readonly?: boolean;
72
+ }
73
+ export type SenderCustomSlotRender = (value: unknown, onChange: (value: unknown) => void, state: SenderCustomSlotState, item: SenderCustomSlotConfig) => VNodeChild;
74
+ export interface SenderCustomSlotConfig extends SenderSlotConfigBase {
75
+ type: 'custom';
76
+ key: string;
77
+ props?: {
78
+ defaultValue?: unknown;
79
+ [key: string]: unknown;
80
+ };
81
+ customRender?: SenderCustomSlotRender;
82
+ }
83
+ export type SenderSlotConfig = SenderTextSlotConfig | SenderInputSlotConfig | SenderSelectSlotConfig | SenderTagSlotConfig | SenderContentSlotConfig | SenderCustomSlotConfig;
84
+ export type SenderResolvedSlotConfig = SenderSlotConfig & {
85
+ value?: unknown;
86
+ };
87
+ export interface SenderValue {
88
+ value: string;
89
+ slotConfig: SenderResolvedSlotConfig[];
90
+ skill?: SenderSkill;
91
+ }
92
+ export interface SenderFocusOptions {
93
+ preventScroll?: boolean;
94
+ cursor?: 'start' | 'end' | 'all' | 'slot';
95
+ key?: string;
96
+ }
97
+ export interface SenderRef {
98
+ readonly inputElement: HTMLTextAreaElement | HTMLDivElement | null;
99
+ readonly nativeElement: HTMLDivElement | null;
100
+ focus: (options?: SenderFocusOptions) => void;
101
+ blur: () => void;
102
+ insert: (value: string | SenderSlotConfig[], position?: SenderInsertPosition, replaceCharacters?: string, preventScroll?: boolean) => void;
103
+ clear: () => void;
104
+ getValue: () => SenderValue;
105
+ }
106
+ export interface SenderActionContext {
107
+ send: () => void;
108
+ clear: () => void;
109
+ cancel: () => void;
110
+ speech: () => void;
111
+ submitDisabled: boolean;
112
+ clearDisabled: boolean;
113
+ cancelDisabled: boolean;
114
+ speechDisabled: boolean;
115
+ recording: boolean;
116
+ loading: boolean;
117
+ }
118
+ export interface SenderProps {
119
+ modelValue?: string;
120
+ defaultValue?: string;
121
+ loading?: boolean;
122
+ readonly?: boolean | string;
123
+ submitType?: SenderSubmitType;
124
+ disabled?: boolean;
125
+ slotConfig?: readonly SenderSlotConfig[];
126
+ allowSpeech?: SenderAllowSpeech;
127
+ autoSize?: boolean | {
128
+ minRows?: number;
129
+ maxRows?: number;
130
+ };
131
+ skill?: SenderSkill;
132
+ placeholder?: string;
133
+ showActions?: boolean;
134
+ components?: SenderComponents;
135
+ classNames?: Partial<Record<SenderSemanticType, string>>;
136
+ styles?: Partial<Record<SenderSemanticType, CSSProperties>>;
137
+ onKeydown?: (event: KeyboardEvent) => void | false;
138
+ onKeyup?: (event: KeyboardEvent) => void;
139
+ }
140
+ export interface SenderEmits {
141
+ 'update:modelValue': [value: string];
142
+ 'change': [
143
+ value: string,
144
+ event: Event | undefined,
145
+ slotConfig: SenderResolvedSlotConfig[],
146
+ skill: SenderSkill | undefined
147
+ ];
148
+ 'submit': [value: string, slotConfig: SenderResolvedSlotConfig[], skill: SenderSkill | undefined];
149
+ 'cancel': [];
150
+ 'paste': [event: ClipboardEvent];
151
+ 'pasteFile': [files: FileList];
152
+ 'focus': [event: FocusEvent];
153
+ 'blur': [event: FocusEvent];
154
+ }
155
+ export type SenderHeaderSemanticType = 'header' | 'content';
156
+ export interface SenderHeaderProps {
157
+ open?: boolean;
158
+ forceRender?: boolean;
159
+ title?: VNodeChild;
160
+ closable?: boolean;
161
+ classNames?: Partial<Record<SenderHeaderSemanticType, string>>;
162
+ styles?: Partial<Record<SenderHeaderSemanticType, CSSProperties>>;
163
+ }
164
+ export interface SenderSwitchProps {
165
+ modelValue?: boolean;
166
+ defaultValue?: boolean;
167
+ disabled?: boolean;
168
+ loading?: boolean;
169
+ classNames?: Partial<Record<'root' | 'content' | 'icon' | 'title', string>>;
170
+ styles?: Partial<Record<'root' | 'content' | 'icon' | 'title', CSSProperties>>;
171
+ }
@@ -0,0 +1,9 @@
1
+ import { type MaybeRefOrGetter } from 'vue';
2
+ import type { SenderAllowSpeech } from './types';
3
+ export declare function useSpeech(allowSpeech: MaybeRefOrGetter<SenderAllowSpeech | undefined>, onTranscript: (transcript: string) => void): {
4
+ available: import("vue").ComputedRef<boolean>;
5
+ recording: import("vue").ComputedRef<boolean>;
6
+ requesting: import("vue").ShallowRef<boolean, boolean>;
7
+ statusText: import("vue").ComputedRef<string>;
8
+ trigger: (breakRecording?: boolean) => Promise<void>;
9
+ };
@@ -0,0 +1,120 @@
1
+ import { useI18n } from "../locale/index.js";
2
+ import _asyncToGenerator from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/asyncToGenerator.js";
3
+ import { computed, shallowRef, toValue, watch } from "vue";
4
+ import { usePermission, useSpeechRecognition, useUserMedia } from "@vueuse/core";
5
+ //#region components/sender/use-speech.ts
6
+ var isPermissionDeniedError = (error) => error instanceof DOMException ? error.name === "NotAllowedError" || error.name === "SecurityError" : error instanceof Error && (error.name === "NotAllowedError" || error.name === "SecurityError");
7
+ function useSpeech(allowSpeech, onTranscript) {
8
+ const { t } = useI18n();
9
+ const config = computed(() => toValue(allowSpeech));
10
+ const controlled = computed(() => typeof config.value === "object" && typeof config.value.recording === "boolean");
11
+ const forceBreak = shallowRef(false);
12
+ const requesting = shallowRef(false);
13
+ const microphoneAuthorized = shallowRef(false);
14
+ const permissionRequestError = shallowRef();
15
+ const permissionDeniedByRequest = shallowRef(false);
16
+ const permission = usePermission("microphone");
17
+ const { isSupported: isUserMediaSupported, start: requestMicrophone, stop: stopMicrophone } = useUserMedia({ constraints: {
18
+ audio: true,
19
+ video: false
20
+ } });
21
+ const { isSupported: isSpeechSupported, isListening, isFinal, result, error: recognitionError, start: startRecognition, stop: stopRecognition } = useSpeechRecognition({
22
+ continuous: false,
23
+ interimResults: false,
24
+ lang: () => typeof navigator === "undefined" ? "zh-CN" : navigator.language || "zh-CN"
25
+ });
26
+ const permissionDenied = computed(() => permission.value === "denied" || permissionDeniedByRequest.value);
27
+ const recording = computed(() => controlled.value && typeof config.value === "object" ? Boolean(config.value.recording) : isListening.value);
28
+ const available = computed(() => Boolean(config.value) && (controlled.value || Boolean(isSpeechSupported.value && !permissionDenied.value)));
29
+ const statusText = computed(() => {
30
+ var _permissionRequestErr;
31
+ if (requesting.value) return t("sender.speech.requestingPermission");
32
+ if (permissionDenied.value) return t("sender.speech.permissionDenied");
33
+ if (!controlled.value && !isSpeechSupported.value) return t("sender.speech.unsupported");
34
+ if (recording.value) return t("sender.speech.stop");
35
+ if (((_permissionRequestErr = permissionRequestError.value) === null || _permissionRequestErr === void 0 ? void 0 : _permissionRequestErr.name) === "NotFoundError") return t("sender.speech.noMicrophone");
36
+ if (permissionRequestError.value) return t("sender.speech.microphoneUnavailable");
37
+ const recognitionErrorCode = recognitionError.value && "error" in recognitionError.value ? recognitionError.value.error : void 0;
38
+ if (recognitionErrorCode === "audio-capture") return t("sender.speech.noMicrophone");
39
+ if (recognitionErrorCode === "no-speech") return t("sender.speech.noSpeech");
40
+ if (recognitionError.value) return t("sender.speech.recognitionFailed");
41
+ return t("sender.speech.start");
42
+ });
43
+ const ensureMicrophonePermission = function() {
44
+ var _ref = _asyncToGenerator(function* () {
45
+ if (microphoneAuthorized.value || permission.value === "granted" || !isUserMediaSupported.value) return true;
46
+ requesting.value = true;
47
+ permissionRequestError.value = void 0;
48
+ try {
49
+ yield requestMicrophone();
50
+ microphoneAuthorized.value = true;
51
+ permissionDeniedByRequest.value = false;
52
+ return true;
53
+ } catch (error) {
54
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
55
+ permissionRequestError.value = normalizedError;
56
+ permissionDeniedByRequest.value = isPermissionDeniedError(error);
57
+ return false;
58
+ } finally {
59
+ stopMicrophone();
60
+ requesting.value = false;
61
+ }
62
+ });
63
+ return function ensureMicrophonePermission() {
64
+ return _ref.apply(this, arguments);
65
+ };
66
+ }();
67
+ const trigger = function() {
68
+ var _ref2 = _asyncToGenerator(function* (breakRecording = false) {
69
+ if (breakRecording && !recording.value) return;
70
+ forceBreak.value = breakRecording;
71
+ if (controlled.value && typeof config.value === "object") {
72
+ config.value.onRecordingChange(!recording.value);
73
+ return;
74
+ }
75
+ if (recording.value) {
76
+ stopRecognition();
77
+ if (typeof config.value === "object") config.value.onRecordingChange(false);
78
+ return;
79
+ }
80
+ if (requesting.value || !available.value) return;
81
+ if (!(yield ensureMicrophonePermission())) return;
82
+ result.value = "";
83
+ recognitionError.value = void 0;
84
+ startRecognition();
85
+ if (typeof config.value === "object") config.value.onRecordingChange(true);
86
+ });
87
+ return function trigger() {
88
+ return _ref2.apply(this, arguments);
89
+ };
90
+ }();
91
+ watch(result, (transcript) => {
92
+ if (!transcript || !isFinal.value) return;
93
+ if (!forceBreak.value) onTranscript(transcript);
94
+ forceBreak.value = false;
95
+ });
96
+ watch(recognitionError, (nextError) => {
97
+ if (nextError && "error" in nextError && (nextError.error === "not-allowed" || nextError.error === "service-not-allowed")) permissionDeniedByRequest.value = true;
98
+ });
99
+ watch(permission, (nextPermission) => {
100
+ if (nextPermission === "granted") {
101
+ microphoneAuthorized.value = true;
102
+ permissionDeniedByRequest.value = false;
103
+ } else if (nextPermission === "denied") {
104
+ microphoneAuthorized.value = false;
105
+ if (isListening.value) stopRecognition();
106
+ }
107
+ });
108
+ watch(controlled, (nextControlled) => {
109
+ if (nextControlled && isListening.value) stopRecognition();
110
+ });
111
+ return {
112
+ available,
113
+ recording,
114
+ requesting,
115
+ statusText,
116
+ trigger
117
+ };
118
+ }
119
+ //#endregion
120
+ export { useSpeech };
@@ -63,12 +63,12 @@ declare const Slider: {
63
63
  change: (_value: number | [number, number]) => any;
64
64
  "update:modelValue": (_value: number | [number, number]) => any;
65
65
  }, import("vue").PublicProps, {
66
+ range: boolean;
66
67
  disabled: boolean;
67
68
  direction: "horizontal" | "vertical";
68
69
  defaultValue: number | [number, number];
69
70
  modelValue: number | [number, number];
70
71
  max: number;
71
- range: boolean;
72
72
  step: number;
73
73
  min: number;
74
74
  showTooltip: boolean;
@@ -136,12 +136,12 @@ declare const Slider: {
136
136
  onChange?: ((_value: number | [number, number]) => any) | undefined;
137
137
  "onUpdate:modelValue"?: ((_value: number | [number, number]) => any) | undefined;
138
138
  }>, {}, {}, {}, {}, {
139
+ range: boolean;
139
140
  disabled: boolean;
140
141
  direction: "horizontal" | "vertical";
141
142
  defaultValue: number | [number, number];
142
143
  modelValue: number | [number, number];
143
144
  max: number;
144
- range: boolean;
145
145
  step: number;
146
146
  min: number;
147
147
  showTooltip: boolean;
@@ -209,12 +209,12 @@ declare const Slider: {
209
209
  change: (_value: number | [number, number]) => any;
210
210
  "update:modelValue": (_value: number | [number, number]) => any;
211
211
  }, string, {
212
+ range: boolean;
212
213
  disabled: boolean;
213
214
  direction: "horizontal" | "vertical";
214
215
  defaultValue: number | [number, number];
215
216
  modelValue: number | [number, number];
216
217
  max: number;
217
- range: boolean;
218
218
  step: number;
219
219
  min: number;
220
220
  showTooltip: boolean;
@@ -46,8 +46,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
46
46
  onStartChange?: ((_value?: number | undefined) => any) | undefined;
47
47
  onEndChange?: ((_value?: number | undefined) => any) | undefined;
48
48
  }>, {
49
- disabled: boolean;
50
49
  range: boolean;
50
+ disabled: boolean;
51
51
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
52
52
  declare const _default: typeof __VLS_export;
53
53
  export default _default;
@@ -109,12 +109,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
109
109
  onChange?: ((_value: number | [number, number]) => any) | undefined;
110
110
  "onUpdate:modelValue"?: ((_value: number | [number, number]) => any) | undefined;
111
111
  }>, {
112
+ range: boolean;
112
113
  disabled: boolean;
113
114
  direction: "horizontal" | "vertical";
114
115
  defaultValue: number | [number, number];
115
116
  modelValue: number | [number, number];
116
117
  max: number;
117
- range: boolean;
118
118
  step: number;
119
119
  min: number;
120
120
  showTooltip: boolean;
@@ -11,7 +11,7 @@ declare const Space: {
11
11
  default: string;
12
12
  };
13
13
  size: {
14
- type: import("vue").PropType<number | "mini" | "small" | "medium" | "large" | [number | "small" | "mini" | "medium" | "large", number | "small" | "mini" | "medium" | "large"]>;
14
+ type: import("vue").PropType<number | "mini" | "small" | "medium" | "large" | [number | "small" | "medium" | "large" | "mini", number | "small" | "medium" | "large" | "mini"]>;
15
15
  default: string;
16
16
  };
17
17
  wrap: {
@@ -22,9 +22,9 @@ declare const Space: {
22
22
  };
23
23
  }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
24
24
  fill: boolean;
25
- size: number | "small" | "mini" | "medium" | "large" | [number | "small" | "mini" | "medium" | "large", number | "small" | "mini" | "medium" | "large"];
26
- direction: "horizontal" | "vertical";
25
+ size: number | "small" | "medium" | "large" | "mini" | [number | "small" | "medium" | "large" | "mini", number | "small" | "medium" | "large" | "mini"];
27
26
  wrap: boolean;
27
+ direction: "horizontal" | "vertical";
28
28
  }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
29
29
  P: {};
30
30
  B: {};
@@ -41,7 +41,7 @@ declare const Space: {
41
41
  default: string;
42
42
  };
43
43
  size: {
44
- type: import("vue").PropType<number | "mini" | "small" | "medium" | "large" | [number | "small" | "mini" | "medium" | "large", number | "small" | "mini" | "medium" | "large"]>;
44
+ type: import("vue").PropType<number | "mini" | "small" | "medium" | "large" | [number | "small" | "medium" | "large" | "mini", number | "small" | "medium" | "large" | "mini"]>;
45
45
  default: string;
46
46
  };
47
47
  wrap: {
@@ -52,9 +52,9 @@ declare const Space: {
52
52
  };
53
53
  }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, {
54
54
  fill: boolean;
55
- size: number | "small" | "mini" | "medium" | "large" | [number | "small" | "mini" | "medium" | "large", number | "small" | "mini" | "medium" | "large"];
56
- direction: "horizontal" | "vertical";
55
+ size: number | "small" | "medium" | "large" | "mini" | [number | "small" | "medium" | "large" | "mini", number | "small" | "medium" | "large" | "mini"];
57
56
  wrap: boolean;
57
+ direction: "horizontal" | "vertical";
58
58
  }>;
59
59
  __isFragment?: never;
60
60
  __isTeleport?: never;
@@ -68,7 +68,7 @@ declare const Space: {
68
68
  default: string;
69
69
  };
70
70
  size: {
71
- type: import("vue").PropType<number | "mini" | "small" | "medium" | "large" | [number | "small" | "mini" | "medium" | "large", number | "small" | "mini" | "medium" | "large"]>;
71
+ type: import("vue").PropType<number | "mini" | "small" | "medium" | "large" | [number | "small" | "medium" | "large" | "mini", number | "small" | "medium" | "large" | "mini"]>;
72
72
  default: string;
73
73
  };
74
74
  wrap: {
@@ -79,9 +79,9 @@ declare const Space: {
79
79
  };
80
80
  }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
81
81
  fill: boolean;
82
- size: number | "small" | "mini" | "medium" | "large" | [number | "small" | "mini" | "medium" | "large", number | "small" | "mini" | "medium" | "large"];
83
- direction: "horizontal" | "vertical";
82
+ size: number | "small" | "medium" | "large" | "mini" | [number | "small" | "medium" | "large" | "mini", number | "small" | "medium" | "large" | "mini"];
84
83
  wrap: boolean;
84
+ direction: "horizontal" | "vertical";
85
85
  }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & {
86
86
  install: (app: App, options?: SDOptions) => void;
87
87
  };
@@ -38,8 +38,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
38
38
  };
39
39
  }>> & Readonly<{}>, {
40
40
  fill: boolean;
41
- size: number | "small" | "mini" | "medium" | "large" | [SpaceSize, SpaceSize];
42
- direction: "horizontal" | "vertical";
41
+ size: number | "small" | "medium" | "large" | "mini" | [SpaceSize, SpaceSize];
43
42
  wrap: boolean;
43
+ direction: "horizontal" | "vertical";
44
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
45
45
  export default _default;
@@ -14,8 +14,8 @@ declare const Spin: {
14
14
  default: boolean;
15
15
  };
16
16
  }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
17
- loading: boolean;
18
17
  dot: boolean;
18
+ loading: boolean;
19
19
  hideIcon: boolean;
20
20
  }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
21
21
  P: {};
@@ -36,8 +36,8 @@ declare const Spin: {
36
36
  default: boolean;
37
37
  };
38
38
  }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, {
39
- loading: boolean;
40
39
  dot: boolean;
40
+ loading: boolean;
41
41
  hideIcon: boolean;
42
42
  }>;
43
43
  __isFragment?: never;
@@ -55,8 +55,8 @@ declare const Spin: {
55
55
  default: boolean;
56
56
  };
57
57
  }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
58
- loading: boolean;
59
58
  dot: boolean;
59
+ loading: boolean;
60
60
  hideIcon: boolean;
61
61
  }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & {
62
62
  install: (app: App, options?: SDOptions) => void;
package/es/spin/spin.d.ts CHANGED
@@ -21,8 +21,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
21
21
  default: boolean;
22
22
  };
23
23
  }>> & Readonly<{}>, {
24
- loading: boolean;
25
24
  dot: boolean;
25
+ loading: boolean;
26
26
  hideIcon: boolean;
27
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
28
28
  export default _default;
@@ -45,9 +45,9 @@ declare const Statistic: {
45
45
  type: import("vue").PropType<import("vue").CSSProperties>;
46
46
  };
47
47
  }>> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
48
+ start: boolean;
48
49
  animationDuration: number;
49
50
  animation: boolean;
50
- start: boolean;
51
51
  format: string;
52
52
  precision: number;
53
53
  showGroupSeparator: boolean;
@@ -101,9 +101,9 @@ declare const Statistic: {
101
101
  type: import("vue").PropType<import("vue").CSSProperties>;
102
102
  };
103
103
  }>> & Readonly<{}>, {}, {}, {}, {}, {
104
+ start: boolean;
104
105
  animationDuration: number;
105
106
  animation: boolean;
106
- start: boolean;
107
107
  format: string;
108
108
  precision: number;
109
109
  showGroupSeparator: boolean;
@@ -154,9 +154,9 @@ declare const Statistic: {
154
154
  type: import("vue").PropType<import("vue").CSSProperties>;
155
155
  };
156
156
  }>> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
157
+ start: boolean;
157
158
  animationDuration: number;
158
159
  animation: boolean;
159
- start: boolean;
160
160
  format: string;
161
161
  precision: number;
162
162
  showGroupSeparator: boolean;
@@ -92,9 +92,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
92
92
  type: PropType<CSSProperties>;
93
93
  };
94
94
  }>> & Readonly<{}>, {
95
+ start: boolean;
95
96
  animationDuration: number;
96
97
  animation: boolean;
97
- start: boolean;
98
98
  format: string;
99
99
  precision: number;
100
100
  showGroupSeparator: boolean;
@@ -52,7 +52,7 @@ declare const Steps: {
52
52
  type: "default" | "dot" | "arrow" | "navigation";
53
53
  small: boolean;
54
54
  direction: "horizontal" | "vertical";
55
- status: "error" | "wait" | "finish" | "process";
55
+ status: "wait" | "error" | "finish" | "process";
56
56
  current: number;
57
57
  defaultCurrent: number;
58
58
  lineLess: boolean;
@@ -109,7 +109,7 @@ declare const Steps: {
109
109
  type: "default" | "dot" | "arrow" | "navigation";
110
110
  small: boolean;
111
111
  direction: "horizontal" | "vertical";
112
- status: "error" | "wait" | "finish" | "process";
112
+ status: "wait" | "error" | "finish" | "process";
113
113
  current: number;
114
114
  defaultCurrent: number;
115
115
  lineLess: boolean;
@@ -166,7 +166,7 @@ declare const Steps: {
166
166
  type: "default" | "dot" | "arrow" | "navigation";
167
167
  small: boolean;
168
168
  direction: "horizontal" | "vertical";
169
- status: "error" | "wait" | "finish" | "process";
169
+ status: "wait" | "error" | "finish" | "process";
170
170
  current: number;
171
171
  defaultCurrent: number;
172
172
  lineLess: boolean;
@@ -229,12 +229,12 @@ declare const Steps: {
229
229
  $slots: {
230
230
  node?: (props: {
231
231
  step: number;
232
- status: "error" | "wait" | "finish" | "process";
232
+ status: "wait" | "error" | "finish" | "process";
233
233
  }) => any;
234
234
  } & {
235
235
  icon?: (props: {
236
236
  step: number;
237
- status: "error" | "wait" | "finish" | "process";
237
+ status: "wait" | "error" | "finish" | "process";
238
238
  }) => any;
239
239
  } & {
240
240
  default?: (props: {}) => any;
@@ -2,10 +2,10 @@ import { PropType } from 'vue';
2
2
  import { StepStatus } from './interface';
3
3
  declare var __VLS_1: {
4
4
  step: number;
5
- status: "error" | "wait" | "finish" | "process";
5
+ status: "wait" | "error" | "finish" | "process";
6
6
  }, __VLS_3: {
7
7
  step: number;
8
- status: "error" | "wait" | "finish" | "process";
8
+ status: "wait" | "error" | "finish" | "process";
9
9
  }, __VLS_15: {}, __VLS_17: {};
10
10
  type __VLS_Slots = {} & {
11
11
  node?: (props: typeof __VLS_1) => any;
@@ -89,7 +89,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
89
89
  type: "default" | "dot" | "arrow" | "navigation";
90
90
  small: boolean;
91
91
  direction: "horizontal" | "vertical";
92
- status: "error" | "wait" | "finish" | "process";
92
+ status: "wait" | "error" | "finish" | "process";
93
93
  current: number;
94
94
  defaultCurrent: number;
95
95
  lineLess: boolean;