@king-design/vue 3.7.0 → 3.8.0-beta.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 (227) hide show
  1. package/__tests__/__snapshots__/Vue Next Demos.md +399 -0
  2. package/components/bubble/bubble.d.ts +61 -0
  3. package/components/bubble/bubble.js +81 -0
  4. package/components/bubble/bubble.vdt.js +85 -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 +771 -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 +18 -0
  12. package/components/bubble/useBubbleDisplay.js +300 -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 +143 -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 +1268 -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 +455 -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 +1096 -0
  39. package/components/fileCard/list.d.ts +29 -0
  40. package/components/fileCard/list.js +46 -0
  41. package/components/fileCard/list.vdt.js +71 -0
  42. package/components/fileCard/styles.d.ts +5 -0
  43. package/components/fileCard/styles.js +83 -0
  44. package/components/fileCard/useFileCard.d.ts +45 -0
  45. package/components/fileCard/useFileCard.js +330 -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 +1691 -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 +202 -0
  61. package/components/media/mediaAssets.d.ts +4 -0
  62. package/components/media/mediaAssets.js +9 -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 +52 -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 +70 -0
  70. package/components/media/useMedia.js +471 -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 +1597 -0
  85. package/components/sender/sender.d.ts +104 -0
  86. package/components/sender/sender.js +111 -0
  87. package/components/sender/sender.vdt.js +230 -0
  88. package/components/sender/styles.d.ts +5 -0
  89. package/components/sender/styles.js +56 -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 +320 -0
  94. package/components/sender/useSenderInput.d.ts +16 -0
  95. package/components/sender/useSenderInput.js +101 -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 +395 -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 +1666 -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 +513 -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 +26 -0
  149. package/components/xmarkdown/useXMarkdownDisplay.js +569 -0
  150. package/components/xmarkdown/xmarkdown.d.ts +61 -0
  151. package/components/xmarkdown/xmarkdown.js +109 -0
  152. package/components/xmarkdown/xmarkdown.vdt.js +43 -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 +29 -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 +100506 -37457
  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 +27 -0
  222. package/i18n/en-US.js +29 -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,16 @@
1
+ import { Component, TypeDefs } from 'intact-vue-next';
2
+ import type { BubbleRenderSlots } from '../bubble';
3
+ import type { BubbleList, BubbleListItem as BubbleListItemData } from './bubbleList';
4
+ export interface BubbleListItemProps {
5
+ item: BubbleListItemData;
6
+ index: number;
7
+ list: BubbleList;
8
+ slotRenderers?: BubbleRenderSlots;
9
+ }
10
+ export interface BubbleListItemBlocks {
11
+ }
12
+ export declare class BubbleListItem extends Component<BubbleListItemProps, {}, BubbleListItemBlocks> {
13
+ static template: string | import('intact-vue-next').Template<any>;
14
+ static typeDefs: Required<TypeDefs<BubbleListItemProps>>;
15
+ private config;
16
+ }
@@ -0,0 +1,27 @@
1
+ import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
2
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/concat";
3
+ import { Component } from 'intact-vue-next';
4
+ import template from './item.vdt';
5
+ import { useConfigContext } from '../config';
6
+ var typeDefs = {
7
+ item: Object,
8
+ index: Number,
9
+ list: Object,
10
+ slotRenderers: Object
11
+ };
12
+ export var BubbleListItem = /*#__PURE__*/function (_Component) {
13
+ _inheritsLoose(BubbleListItem, _Component);
14
+ function BubbleListItem() {
15
+ var _context;
16
+ var _this;
17
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18
+ args[_key] = arguments[_key];
19
+ }
20
+ _this = _Component.call.apply(_Component, _concatInstanceProperty(_context = [this]).call(_context, args)) || this;
21
+ _this.config = useConfigContext();
22
+ return _this;
23
+ }
24
+ return BubbleListItem;
25
+ }(Component);
26
+ BubbleListItem.template = template;
27
+ BubbleListItem.typeDefs = typeDefs;
@@ -0,0 +1,36 @@
1
+ import { createElementVNode as _$ce, createUnknownComponentVNode as _$cc, className as _$cn } from 'intact-vue-next';
2
+ import { Bubble } from '../bubble';
3
+ export default function ($props, $blocks, $__proto__) {
4
+ $blocks || ($blocks = {});
5
+ $props || ($props = {});
6
+ var $this = this;
7
+ var _this$get = this.get(),
8
+ item = _this$get.item,
9
+ index = _this$get.index,
10
+ list = _this$get.list,
11
+ slotRenderers = _this$get.slotRenderers;
12
+ var _list$bubbleList = list.bubbleList,
13
+ getBubbleProps = _list$bubbleList.getBubbleProps,
14
+ getBubbleTypingHandler = _list$bubbleList.getBubbleTypingHandler,
15
+ getBubbleTypingCompleteHandler = _list$bubbleList.getBubbleTypingCompleteHandler;
16
+ var k = this.config.k;
17
+ var bubbleProps = getBubbleProps(item, index);
18
+ return _$ce(2, 'div', _$cc(Bubble, {
19
+ 'className': _$cn(bubbleProps.className),
20
+ 'style': bubbleProps.style,
21
+ 'content': bubbleProps.content,
22
+ 'placement': bubbleProps.placement,
23
+ 'avatar': bubbleProps.avatar,
24
+ 'roleName': bubbleProps.roleName,
25
+ 'loading': bubbleProps.loading,
26
+ 'streaming': bubbleProps.streaming,
27
+ 'variant': bubbleProps.variant,
28
+ 'shape': bubbleProps.shape,
29
+ 'maxWidthString': bubbleProps.maxWidthString,
30
+ 'typing': bubbleProps.typing,
31
+ 'slotRenderers': slotRenderers,
32
+ 'ev-typing': getBubbleTypingHandler(item, index),
33
+ 'ev-typingComplete': getBubbleTypingCompleteHandler(item, index)
34
+ }), 2, _$cn(k + "-bubble-list-item"));
35
+ }
36
+ ;
@@ -0,0 +1,5 @@
1
+ import '../../styles/global';
2
+ export declare const makeStyles: {
3
+ (k: string): string;
4
+ clearCache(): {};
5
+ };
@@ -0,0 +1,33 @@
1
+ import { css } from '@emotion/css';
2
+ import { theme, setDefault } from '../../styles/theme';
3
+ import { deepDefaults, setAlpha } from '../../styles/utils';
4
+ import '../../styles/global';
5
+ import { cache } from '../utils';
6
+ var defaults = {
7
+ gap: '12px',
8
+ paddingInline: '8px',
9
+ scrollToBottomBg: '#fff',
10
+ scrollToBottomColor: '#97A3B6',
11
+ scrollToBottomBorder: "1px solid " + setAlpha(theme.color.border, 0.72),
12
+ scrollToBottomShadow: "0 10px 28px " + setAlpha('#000', 0.12),
13
+ scrollToBottomHoverBg: '#fff',
14
+ scrollToBottomHoverColor: theme.color.primary,
15
+ scrollToBottomHoverBorder: "1px solid " + setAlpha(theme.color.primary, 0.22),
16
+ scrollToBottomSize: '32px',
17
+ scrollToBottomIconSize: '20px',
18
+ scrollbarTrack: 'transparent',
19
+ scrollThumb: 'rgba(90, 108, 129, 0.34)',
20
+ scrollThumbHover: 'rgba(90, 108, 129, 0.5)',
21
+ auxiliaryColor: theme.color.placeholder,
22
+ auxiliaryBg: 'transparent'
23
+ };
24
+ var bubbleList;
25
+ setDefault(function () {
26
+ bubbleList = deepDefaults(theme, {
27
+ bubbleList: defaults
28
+ }).bubbleList;
29
+ makeStyles == null || makeStyles.clearCache();
30
+ });
31
+ export var makeStyles = cache(function makeStyles(k) {
32
+ return /*#__PURE__*/css("position:relative;display:flex;flex-direction:column;gap:", bubbleList.gap, ";width:100%;min-height:0;.", k, "-bubble-list-scroll{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;width:100%;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:", bubbleList.scrollThumb, " ", bubbleList.scrollbarTrack, ";}.", k, "-bubble-list-scroll::-webkit-scrollbar{width:10px;height:10px;}.", k, "-bubble-list-scroll::-webkit-scrollbar-track{background:", bubbleList.scrollbarTrack, ";}.", k, "-bubble-list-scroll::-webkit-scrollbar-thumb{background:", bubbleList.scrollThumb, ";border-radius:999px;border:2px solid transparent;background-clip:content-box;transition:background ", theme.transition.small, ";}.", k, "-bubble-list-scroll::-webkit-scrollbar-thumb:hover{background:", bubbleList.scrollThumbHover, ";background-clip:content-box;}.", k, "-bubble-list-scroll-content{min-height:100%;display:flex;flex-direction:column;box-sizing:border-box;padding-inline:", bubbleList.paddingInline, ";}.", k, "-bubble-list-history{display:flex;justify-content:center;color:", bubbleList.auxiliaryColor, ";font-size:12px;line-height:1.5;padding:4px 0 8px;flex:0 0 auto;}.", k, "-bubble-list-items{display:flex;flex-direction:column;gap:", bubbleList.gap, ";width:100%;}.", k, "-bubble-list-item{width:100%;min-width:0;}.", k, "-bubble-list-empty{min-height:100%;display:flex;align-items:center;justify-content:center;color:", bubbleList.auxiliaryColor, ";padding:24px 16px;text-align:center;box-sizing:border-box;}.", k, "-bubble-list-scroll-to-bottom{position:absolute;right:16px;bottom:16px;z-index:1;}.", k, "-bubble-list-scroll-to-bottom-button{border:", bubbleList.scrollToBottomBorder, ";background:", bubbleList.scrollToBottomBg, ";color:", bubbleList.scrollToBottomColor, ";border-radius:999px;box-shadow:", bubbleList.scrollToBottomShadow, ";width:", bubbleList.scrollToBottomSize, ";height:", bubbleList.scrollToBottomSize, ";display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:18px;line-height:1;cursor:pointer;transition:background ", theme.transition.small, ",border-color ", theme.transition.small, ",color ", theme.transition.small, ",transform ", theme.transition.small, ",box-shadow ", theme.transition.small, ";}.", k, "-bubble-list-scroll-to-bottom-button:hover{background:", bubbleList.scrollToBottomHoverBg, ";color:", bubbleList.scrollToBottomHoverColor, ";border:", bubbleList.scrollToBottomHoverBorder, ";transform:translateY(-1px);box-shadow:0 14px 30px ", setAlpha('#000', 0.16), ";}.", k, "-bubble-list-scroll-to-bottom-button:focus-visible{outline:0;color:", bubbleList.scrollToBottomHoverColor, ";border:", bubbleList.scrollToBottomHoverBorder, ";box-shadow:0 0 0 4px ", setAlpha(theme.color.primary, 0.14), ",0 10px 28px ", setAlpha('#000', 0.12), ";}.", k, "-bubble-list-scroll-to-bottom-icon{pointer-events:none;font-size:", bubbleList.scrollToBottomIconSize, ";}");
33
+ });
@@ -0,0 +1,28 @@
1
+ import type { BubbleProps } from '../bubble';
2
+ import type { BubbleListItem, BubbleListKey, BubbleListSlotParams } from './bubbleList';
3
+ export declare function useBubbleList(): {
4
+ scrollBoxRef: import('intact-vue-next').RefObject<HTMLDivElement>;
5
+ scrollContentRef: import('intact-vue-next').RefObject<HTMLDivElement>;
6
+ getItems: () => BubbleListItem[];
7
+ getItemKey: (item: BubbleListItem, index: number) => BubbleListKey;
8
+ getBubbleProps: (item: BubbleListItem, index: number) => Partial<BubbleProps> & {
9
+ className?: string | undefined;
10
+ style?: any;
11
+ };
12
+ getSlotParams: (item: BubbleListItem, index: number) => BubbleListSlotParams;
13
+ getItemRef: (item: BubbleListItem, index: number) => (element: HTMLDivElement | null) => void;
14
+ handleScroll: (e: Event) => void;
15
+ shouldShowEmpty: () => boolean;
16
+ shouldShowHistoryLoading: () => boolean;
17
+ shouldShowScrollToBottom: () => boolean;
18
+ getDefaultHistoryLoadingText: () => string;
19
+ onScrollToBottomClick: () => void;
20
+ onBubbleTyping: (item: BubbleListItem, index: number, renderedContent: string, currentContent: string) => void;
21
+ onBubbleTypingComplete: (item: BubbleListItem, index: number, content: string) => void;
22
+ getBubbleTypingHandler: (item: BubbleListItem, index: number) => (renderedContent: string, currentContent: string) => void;
23
+ getBubbleTypingCompleteHandler: (item: BubbleListItem, index: number) => (content: string) => void;
24
+ scrollToTop: (behavior?: ScrollBehavior) => void;
25
+ scrollToBottom: (behavior?: ScrollBehavior) => void;
26
+ scrollToKey: (key: BubbleListKey, behavior?: ScrollBehavior) => void;
27
+ isAtBottom: () => boolean;
28
+ };
@@ -0,0 +1,455 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/extends";
2
+ import _Map from "@babel/runtime-corejs3/core-js/map";
3
+ import _WeakMap from "@babel/runtime-corejs3/core-js/weak-map";
4
+ import { createRef, nextTick, onBeforeUnmount, onMounted, useInstance } from 'intact-vue-next';
5
+ import ResizeObserver from 'resize-observer-polyfill';
6
+ var BUBBLE_PROP_KEYS = ['content', 'placement', 'avatar', 'roleName', 'loading', 'streaming', 'variant', 'shape', 'maxWidthString', 'typing'];
7
+ function toItemArray(items) {
8
+ return Array.isArray(items) ? items : [];
9
+ }
10
+ // 管理列表数据到 DOM 滚动的协作:key、角色合并、贴底、历史前插和滚动方法都依赖同一组状态。
11
+ export function useBubbleList() {
12
+ var instance = useInstance();
13
+ var scrollBoxRef = createRef();
14
+ var scrollContentRef = createRef();
15
+ var itemElements = new _Map();
16
+ var internalItemKeys = new _WeakMap();
17
+ var resizeObserver = null;
18
+ var resizeFrame = 0;
19
+ var historyRequestLocked = false;
20
+ var anchorSnapshot = null;
21
+ var internalItemKeySeed = 0;
22
+ var warnedMissingItemKey = false;
23
+ function getItems() {
24
+ return toItemArray(instance.get('items'));
25
+ }
26
+ function warnMissingItemKey() {
27
+ if (process.env.NODE_ENV === 'production' || warnedMissingItemKey) return;
28
+ warnedMissingItemKey = true;
29
+ console.warn('BubbleList: each item should provide a stable `key`, or configure `itemKey`. ' + 'The component is falling back to an internal temporary key, which is only suitable ' + 'for basic rendering and may be unstable across recreated item objects.');
30
+ }
31
+ function getInternalItemKey(item) {
32
+ warnMissingItemKey();
33
+ if (item && typeof item === 'object') {
34
+ var cachedKey = internalItemKeys.get(item);
35
+ if (cachedKey !== undefined) return cachedKey;
36
+ internalItemKeySeed += 1;
37
+ var internalKey = "__bubble_list_internal_" + internalItemKeySeed;
38
+ internalItemKeys.set(item, internalKey);
39
+ return internalKey;
40
+ }
41
+ internalItemKeySeed += 1;
42
+ return "__bubble_list_internal_" + internalItemKeySeed;
43
+ }
44
+ // 优先使用业务稳定 key;内部 key 只保证同一对象引用下的基础渲染稳定。
45
+ function getItemKey(item, index) {
46
+ var itemKey = instance.get('itemKey');
47
+ if (typeof itemKey === 'function') {
48
+ return itemKey(item, index);
49
+ }
50
+ if (typeof itemKey === 'string' && itemKey) {
51
+ var fromField = item[itemKey];
52
+ if (fromField !== undefined && fromField !== null) return fromField;
53
+ }
54
+ if (item.key !== undefined && item.key !== null) return item.key;
55
+ return getInternalItemKey(item);
56
+ }
57
+ function getAutoScrollThreshold() {
58
+ return Math.max(instance.get('autoScrollThreshold') || 0, 0);
59
+ }
60
+ function getHistoryTriggerOffset() {
61
+ return Math.max(instance.get('historyTriggerOffset') || 0, 0);
62
+ }
63
+ function isAutoScrollEnabled() {
64
+ return !!instance.get('autoScroll');
65
+ }
66
+ function getScrollBehavior() {
67
+ return instance.get('scrollBehavior') || 'auto';
68
+ }
69
+ function getScrollBox() {
70
+ return scrollBoxRef.value || null;
71
+ }
72
+ function getScrollContent() {
73
+ return scrollContentRef.value || null;
74
+ }
75
+ function setInternalState(key, value) {
76
+ if (instance.get(key) === value) return;
77
+ instance.set(key, value);
78
+ }
79
+ function setIsAtBottom(value) {
80
+ if (instance.get('$isAtBottom') === value) return;
81
+ setInternalState('$isAtBottom', value);
82
+ instance.trigger('scrollBottomChange', value);
83
+ }
84
+ function setAutoScrollActive(value) {
85
+ var nextValue = isAutoScrollEnabled() ? value : false;
86
+ if (instance.get('$autoScrollActive') === nextValue) return;
87
+ setInternalState('$autoScrollActive', nextValue);
88
+ instance.trigger('autoScrollChange', nextValue);
89
+ }
90
+ function isAtBottom() {
91
+ var scrollBox = getScrollBox();
92
+ if (!scrollBox) return true;
93
+ return scrollBox.scrollHeight - scrollBox.scrollTop - scrollBox.clientHeight <= getAutoScrollThreshold();
94
+ }
95
+ function isAutoScrollActive() {
96
+ return !!instance.get('$autoScrollActive');
97
+ }
98
+ function shouldStickToBottom() {
99
+ return isAutoScrollEnabled() && isAutoScrollActive();
100
+ }
101
+ function getRoleConfig(item, index) {
102
+ var roles = instance.get('roles');
103
+ var role = item.role;
104
+ if (!roles || !role) return;
105
+ var roleConfig = roles[role];
106
+ if (!roleConfig) return;
107
+ return typeof roleConfig === 'function' ? roleConfig(item, index) : roleConfig;
108
+ }
109
+ // 单条消息配置覆盖角色默认配置,保持 role 只负责默认值。
110
+ function getMergedItem(item, index) {
111
+ var roleConfig = getRoleConfig(item, index);
112
+ if (!roleConfig) return item;
113
+ return _extends({}, roleConfig, item);
114
+ }
115
+ function getBubbleProps(item, index) {
116
+ var mergedItem = getMergedItem(item, index);
117
+ var bubbleProps = {};
118
+ BUBBLE_PROP_KEYS.forEach(function (key) {
119
+ if (mergedItem[key] !== undefined) {
120
+ bubbleProps[key] = mergedItem[key];
121
+ }
122
+ });
123
+ if (mergedItem.className !== undefined) {
124
+ bubbleProps.className = mergedItem.className;
125
+ }
126
+ if (mergedItem.style !== undefined) {
127
+ bubbleProps.style = mergedItem.style;
128
+ }
129
+ return bubbleProps;
130
+ }
131
+ function getSlotParams(item, index) {
132
+ var key = getItemKey(item, index);
133
+ var mergedItem = getMergedItem(item, index);
134
+ return {
135
+ item: item,
136
+ mergedItem: mergedItem,
137
+ index: index,
138
+ key: key,
139
+ isFirst: index === 0,
140
+ isLast: index === getItems().length - 1,
141
+ isAtBottom: isAtBottom()
142
+ };
143
+ }
144
+ function setItemElement(key, element) {
145
+ if (!element) {
146
+ itemElements.delete(key);
147
+ return;
148
+ }
149
+ itemElements.set(key, element);
150
+ }
151
+ function getItemRef(item, index) {
152
+ var key = getItemKey(item, index);
153
+ return function (element) {
154
+ setItemElement(key, element);
155
+ };
156
+ }
157
+ function getContentTop() {
158
+ var scrollBox = getScrollBox();
159
+ var scrollContent = getScrollContent();
160
+ if (!scrollBox || !scrollContent) return 0;
161
+ var scrollBoxRect = scrollBox.getBoundingClientRect();
162
+ var scrollContentRect = scrollContent.getBoundingClientRect();
163
+ return scrollContentRect.top - scrollBoxRect.top;
164
+ }
165
+ // 记录当前视口顶部的首个可见项,用于历史消息前插后恢复阅读位置。
166
+ function updateAnchorSnapshot() {
167
+ var scrollBox = getScrollBox();
168
+ if (!scrollBox) {
169
+ anchorSnapshot = null;
170
+ return;
171
+ }
172
+ var scrollBoxRect = scrollBox.getBoundingClientRect();
173
+ var topBoundary = scrollBoxRect.top + getContentTop();
174
+ var items = getItems();
175
+ for (var i = 0; i < items.length; i++) {
176
+ var key = getItemKey(items[i], i);
177
+ var element = itemElements.get(key);
178
+ if (!element) continue;
179
+ var rect = element.getBoundingClientRect();
180
+ if (rect.bottom > topBoundary) {
181
+ anchorSnapshot = {
182
+ key: key,
183
+ top: rect.top - scrollBoxRect.top
184
+ };
185
+ return;
186
+ }
187
+ }
188
+ anchorSnapshot = null;
189
+ }
190
+ // prepend 或内容高度变化后,把锚点项拉回原来的视口位置。
191
+ function restoreAnchorSnapshot() {
192
+ if (!anchorSnapshot) return;
193
+ var scrollBox = getScrollBox();
194
+ if (!scrollBox) return;
195
+ var element = itemElements.get(anchorSnapshot.key);
196
+ if (!element) return;
197
+ var scrollBoxRect = scrollBox.getBoundingClientRect();
198
+ var currentTop = element.getBoundingClientRect().top - scrollBoxRect.top;
199
+ var delta = currentTop - anchorSnapshot.top;
200
+ if (Math.abs(delta) < 1) return;
201
+ scrollBox.scrollTop += delta;
202
+ }
203
+ function syncScrollState() {
204
+ var atBottom = isAtBottom();
205
+ setIsAtBottom(atBottom);
206
+ setAutoScrollActive(atBottom);
207
+ if (atBottom) {
208
+ anchorSnapshot = null;
209
+ } else {
210
+ updateAnchorSnapshot();
211
+ }
212
+ }
213
+ // 顶部触发历史加载时先锁住,等待 loadingHistory 结束或 items 更新后释放。
214
+ function triggerLoadHistory() {
215
+ if (!instance.get('hasMoreHistory')) return;
216
+ if (instance.get('loadingHistory')) return;
217
+ if (historyRequestLocked) return;
218
+ historyRequestLocked = true;
219
+ updateAnchorSnapshot();
220
+ instance.trigger('loadHistory');
221
+ }
222
+ function handleScroll(e) {
223
+ syncScrollState();
224
+ var scrollBox = getScrollBox();
225
+ if (scrollBox && scrollBox.scrollTop <= getHistoryTriggerOffset()) {
226
+ triggerLoadHistory();
227
+ }
228
+ instance.trigger('scroll', e);
229
+ }
230
+ function scrollTo(top, behavior) {
231
+ if (behavior === void 0) {
232
+ behavior = getScrollBehavior();
233
+ }
234
+ var scrollBox = getScrollBox();
235
+ if (!scrollBox) return;
236
+ // 兼容不支持 ScrollToOptions 的旧浏览器,smooth 会自动降级为即时滚动。
237
+ if (typeof scrollBox.scrollTo === 'function') {
238
+ try {
239
+ scrollBox.scrollTo({
240
+ top: top,
241
+ behavior: behavior
242
+ });
243
+ return;
244
+ } catch (e) {
245
+ scrollBox.scrollTo(0, top);
246
+ return;
247
+ }
248
+ }
249
+ scrollBox.scrollTop = top;
250
+ }
251
+ function scrollToTop(behavior) {
252
+ if (behavior === void 0) {
253
+ behavior = getScrollBehavior();
254
+ }
255
+ setAutoScrollActive(false);
256
+ scrollTo(0, behavior);
257
+ nextTick(syncScrollState);
258
+ }
259
+ function scrollToBottom(behavior) {
260
+ if (behavior === void 0) {
261
+ behavior = getScrollBehavior();
262
+ }
263
+ var scrollBox = getScrollBox();
264
+ if (!scrollBox) return;
265
+ setAutoScrollActive(true);
266
+ scrollTo(scrollBox.scrollHeight, behavior);
267
+ nextTick(syncScrollState);
268
+ }
269
+ function scrollToKey(key, behavior) {
270
+ if (behavior === void 0) {
271
+ behavior = getScrollBehavior();
272
+ }
273
+ var scrollBox = getScrollBox();
274
+ var element = itemElements.get(key);
275
+ if (!scrollBox || !element) return;
276
+ var scrollBoxRect = scrollBox.getBoundingClientRect();
277
+ var elementRect = element.getBoundingClientRect();
278
+ var currentTop = scrollBox.scrollTop + (elementRect.top - scrollBoxRect.top);
279
+ var targetTop = currentTop;
280
+ if (Math.abs(targetTop - (scrollBox.scrollHeight - scrollBox.clientHeight)) <= getAutoScrollThreshold()) {
281
+ setAutoScrollActive(true);
282
+ } else {
283
+ setAutoScrollActive(false);
284
+ }
285
+ scrollTo(Math.max(targetTop, 0), behavior);
286
+ nextTick(syncScrollState);
287
+ }
288
+ function shouldShowScrollToBottom() {
289
+ return !!instance.get('showScrollToBottom') && !instance.get('$isAtBottom') && getItems().length > 0;
290
+ }
291
+ function shouldShowEmpty() {
292
+ return getItems().length === 0;
293
+ }
294
+ function shouldShowHistoryLoading() {
295
+ var _instance$get = instance.get(),
296
+ blocks = _instance$get.$blocks;
297
+ // 自定义 historyLoading 时需在「没有更多」且非加载时仍保留区域,否则 slot 无法展示收尾文案
298
+ if (blocks && blocks.historyLoading && getItems().length > 0) {
299
+ return true;
300
+ }
301
+ return !!instance.get('loadingHistory');
302
+ }
303
+ function onBubbleTyping(item, index, renderedContent, currentContent) {
304
+ var mergedItem = getMergedItem(item, index);
305
+ mergedItem.onTyping == null || mergedItem.onTyping(renderedContent, currentContent, item, index);
306
+ instance.trigger('typing', item, renderedContent, currentContent, index);
307
+ }
308
+ function onBubbleTypingComplete(item, index, content) {
309
+ var mergedItem = getMergedItem(item, index);
310
+ mergedItem.onTypingComplete == null || mergedItem.onTypingComplete(content, item, index);
311
+ instance.trigger('typingComplete', item, content, index);
312
+ }
313
+ function getBubbleTypingHandler(item, index) {
314
+ return function (renderedContent, currentContent) {
315
+ onBubbleTyping(item, index, renderedContent, currentContent);
316
+ };
317
+ }
318
+ function getBubbleTypingCompleteHandler(item, index) {
319
+ return function (content) {
320
+ onBubbleTypingComplete(item, index, content);
321
+ };
322
+ }
323
+ function getDefaultHistoryLoadingText() {
324
+ return '加载历史中...';
325
+ }
326
+ function onScrollToBottomClick() {
327
+ scrollToBottom('smooth');
328
+ }
329
+ function watchItems() {
330
+ instance.watch('items', function () {
331
+ var shouldKeepBottom = shouldStickToBottom();
332
+ if (!shouldKeepBottom) {
333
+ updateAnchorSnapshot();
334
+ }
335
+ historyRequestLocked = false;
336
+ nextTick(function () {
337
+ if (instance.$unmounted) return;
338
+ // 新消息增长时贴底;用户离开底部时优先恢复锚点,避免阅读位置跳动。
339
+ if (shouldKeepBottom) {
340
+ scrollToBottom('auto');
341
+ } else {
342
+ restoreAnchorSnapshot();
343
+ syncScrollState();
344
+ }
345
+ });
346
+ }, {
347
+ inited: true
348
+ });
349
+ }
350
+ function watchLoadingHistory() {
351
+ instance.watch('loadingHistory', function (value, oldValue) {
352
+ if (!value && oldValue) {
353
+ historyRequestLocked = false;
354
+ nextTick(function () {
355
+ restoreAnchorSnapshot();
356
+ syncScrollState();
357
+ });
358
+ }
359
+ }, {
360
+ inited: true
361
+ });
362
+ }
363
+ function watchAutoScroll() {
364
+ instance.watch('autoScroll', function (value) {
365
+ if (!value) {
366
+ setAutoScrollActive(false);
367
+ syncScrollState();
368
+ return;
369
+ }
370
+ nextTick(function () {
371
+ setAutoScrollActive(isAtBottom());
372
+ if (isAtBottom()) {
373
+ scrollToBottom('auto');
374
+ } else {
375
+ syncScrollState();
376
+ }
377
+ });
378
+ }, {
379
+ inited: true
380
+ });
381
+ }
382
+ function mountResizeObserver() {
383
+ var scrollContent = getScrollContent();
384
+ if (!scrollContent) return;
385
+ resizeObserver = new ResizeObserver(function () {
386
+ if (resizeFrame) {
387
+ cancelAnimationFrame(resizeFrame);
388
+ }
389
+ resizeFrame = requestAnimationFrame(function () {
390
+ resizeFrame = 0;
391
+ if (instance.$unmounted) return;
392
+ // 图片、Markdown、typing 等高度变化也要参与贴底或锚点恢复。
393
+ if (shouldStickToBottom()) {
394
+ scrollToBottom('auto');
395
+ return;
396
+ }
397
+ restoreAnchorSnapshot();
398
+ syncScrollState();
399
+ });
400
+ });
401
+ resizeObserver.observe(scrollContent);
402
+ }
403
+ function onMountedCallback() {
404
+ nextTick(function () {
405
+ mountResizeObserver();
406
+ if (isAutoScrollEnabled()) {
407
+ scrollToBottom('auto');
408
+ requestAnimationFrame(function () {
409
+ if (instance.$unmounted) return;
410
+ scrollToBottom('auto');
411
+ });
412
+ return;
413
+ }
414
+ syncScrollState();
415
+ });
416
+ }
417
+ function onBeforeUnmountCallback() {
418
+ if (resizeFrame) {
419
+ cancelAnimationFrame(resizeFrame);
420
+ resizeFrame = 0;
421
+ }
422
+ if (resizeObserver) {
423
+ resizeObserver.disconnect();
424
+ resizeObserver = null;
425
+ }
426
+ }
427
+ watchItems();
428
+ watchLoadingHistory();
429
+ watchAutoScroll();
430
+ onMounted(onMountedCallback);
431
+ onBeforeUnmount(onBeforeUnmountCallback);
432
+ return {
433
+ scrollBoxRef: scrollBoxRef,
434
+ scrollContentRef: scrollContentRef,
435
+ getItems: getItems,
436
+ getItemKey: getItemKey,
437
+ getBubbleProps: getBubbleProps,
438
+ getSlotParams: getSlotParams,
439
+ getItemRef: getItemRef,
440
+ handleScroll: handleScroll,
441
+ shouldShowEmpty: shouldShowEmpty,
442
+ shouldShowHistoryLoading: shouldShowHistoryLoading,
443
+ shouldShowScrollToBottom: shouldShowScrollToBottom,
444
+ getDefaultHistoryLoadingText: getDefaultHistoryLoadingText,
445
+ onScrollToBottomClick: onScrollToBottomClick,
446
+ onBubbleTyping: onBubbleTyping,
447
+ onBubbleTypingComplete: onBubbleTypingComplete,
448
+ getBubbleTypingHandler: getBubbleTypingHandler,
449
+ getBubbleTypingCompleteHandler: getBubbleTypingCompleteHandler,
450
+ scrollToTop: scrollToTop,
451
+ scrollToBottom: scrollToBottom,
452
+ scrollToKey: scrollToKey,
453
+ isAtBottom: isAtBottom
454
+ };
455
+ }
@@ -1,6 +1,6 @@
1
1
  import { Component, TypeDefs } from 'intact-vue-next';
2
- import { CommonInputHTMLAttributes, Events } from '../types';
3
- export interface CheckboxProps<V = boolean> extends CommonInputHTMLAttributes {
2
+ import { CommonFormElementAttributes, Events } from '../types';
3
+ export interface CheckboxProps<V = boolean> extends CommonFormElementAttributes {
4
4
  disabled?: boolean;
5
5
  value?: V;
6
6
  trueValue?: any;
@@ -13,7 +13,7 @@ export interface CheckboxEvents<V = boolean> {
13
13
  }
14
14
  export declare class Checkbox<V = boolean> extends Component<CheckboxProps<V>, CheckboxEvents<V>> {
15
15
  static template: string | import('intact-vue-next').Template<any>;
16
- static typeDefs: Required<TypeDefs<Omit<CheckboxProps<boolean>, keyof CommonInputHTMLAttributes>>>;
16
+ static typeDefs: Required<TypeDefs<Omit<CheckboxProps<boolean>, keyof CommonFormElementAttributes>>>;
17
17
  static defaults: () => Partial<CheckboxProps<boolean>>;
18
18
  static events: Events<CheckboxEvents<boolean>>;
19
19
  private inputRef;