@vunk/plus 1.2.2 → 1.3.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 (119) hide show
  1. package/components/SendOutlined.mjs +2 -2
  2. package/components/agent-chat-provider/index.d.ts +7 -0
  3. package/components/agent-chat-provider/index.mjs +789 -0
  4. package/components/agent-chat-provider/src/api.d.ts +3 -0
  5. package/components/agent-chat-provider/src/const-roles.d.ts +8 -0
  6. package/components/agent-chat-provider/src/const.d.ts +1 -0
  7. package/components/agent-chat-provider/src/index.vue.d.ts +47 -0
  8. package/components/agent-chat-provider/src/types.d.ts +37 -0
  9. package/components/agent-chat-provider/src/use.d.ts +29 -0
  10. package/components/avatar/index.mjs +2 -2
  11. package/components/avatar/src/ctx.d.ts +4 -4
  12. package/components/avatar/src/index.vue.d.ts +66 -125
  13. package/components/broadcasting-markdown/index.css +3 -0
  14. package/components/broadcasting-markdown/index.d.ts +5 -0
  15. package/components/broadcasting-markdown/index.mjs +637 -0
  16. package/components/broadcasting-markdown/src/const.d.ts +18 -0
  17. package/components/broadcasting-markdown/src/ctx.d.ts +93 -0
  18. package/components/broadcasting-markdown/src/custom-speech.vue.d.ts +109 -0
  19. package/components/broadcasting-markdown/src/index.vue.d.ts +477 -0
  20. package/components/broadcasting-markdown/src/paragraph.vue.d.ts +78 -0
  21. package/components/broadcasting-markdown/src/speech-error.vue.d.ts +60 -0
  22. package/components/broadcasting-markdown/src/types.d.ts +17 -0
  23. package/components/broadcasting-markdown/src/use.d.ts +3 -0
  24. package/components/broadcasting-markdown/src/web-speech.vue.d.ts +102 -0
  25. package/components/bubble-list/index.css +18 -0
  26. package/components/bubble-list/index.d.ts +5 -0
  27. package/components/bubble-list/index.mjs +386 -0
  28. package/components/bubble-list/src/ctx.d.ts +30 -0
  29. package/components/bubble-list/src/index.vue.d.ts +927 -0
  30. package/components/bubble-list/src/types.d.ts +4 -0
  31. package/components/bubble-templates/index.css +18 -0
  32. package/components/bubble-templates/index.d.ts +4 -0
  33. package/components/bubble-templates/index.mjs +258 -0
  34. package/components/bubble-templates/src/index.vue.d.ts +631 -0
  35. package/components/bubble-templates/src/types.d.ts +30 -0
  36. package/components/chat-independent/index.css +47 -0
  37. package/components/chat-independent/index.d.ts +4 -0
  38. package/components/chat-independent/index.mjs +184 -0
  39. package/components/chat-independent/src/const.d.ts +13 -0
  40. package/components/chat-independent/src/ctx.d.ts +20 -0
  41. package/components/chat-independent/src/index.vue.d.ts +2388 -0
  42. package/components/chat-independent/src/types.d.ts +13 -0
  43. package/components/index.d.ts +0 -0
  44. package/components/index.mjs +1 -0
  45. package/components/index2.mjs +35980 -0
  46. package/components/lottie-animation/index.mjs +2 -2
  47. package/components/lottie-animation/src/index.vue.d.ts +1 -1
  48. package/components/monaco-editor/index.mjs +2 -2
  49. package/components/monaco-editor/src/ctx.d.ts +3 -3
  50. package/components/monaco-editor/src/index.vue.d.ts +3 -3
  51. package/components/monaco-environment/index.mjs +1 -1
  52. package/components/recorder-button/index.css +7 -10
  53. package/components/recorder-button/index.mjs +115 -83
  54. package/components/recorder-button/src/ctx.d.ts +27 -6
  55. package/components/recorder-button/src/index.vue.d.ts +196 -202
  56. package/components/recorder-button/src/types.d.ts +1 -0
  57. package/components/routes-menu-content/index.mjs +5 -5
  58. package/components/routes-menu-content/src/ctx.d.ts +1 -1
  59. package/components/routes-menu-content/src/index.vue.d.ts +223 -101
  60. package/components/routes-menu-content/src/item/core/ctx.d.ts +1 -1
  61. package/components/routes-menu-content/src/item/core/index.vue.d.ts +175 -53
  62. package/components/routes-menu-content/src/item/index.vue.d.ts +221 -99
  63. package/components/sender/index.css +2 -5
  64. package/components/sender/index.mjs +32 -13
  65. package/components/sender/src/SenderHeader.vue.d.ts +31 -45
  66. package/components/sender/src/ctx.d.ts +23 -3
  67. package/components/sender/src/index.vue.d.ts +170 -124
  68. package/components/sender/src/types.d.ts +1 -1
  69. package/components/speech-button/index.mjs +7 -14
  70. package/components/speech-button/src/ctx.d.ts +1 -1
  71. package/components/speech-button/src/index.vue.d.ts +3 -3
  72. package/components/table-columns/index.d.ts +1 -1
  73. package/components/table-columns/index.mjs +3 -6
  74. package/components/table-columns/src/ctx.d.ts +8 -8
  75. package/components/table-columns/src/el-ctx.d.ts +7 -7
  76. package/components/table-columns/src/index.vue.d.ts +38 -36
  77. package/components/tables-v1/index.mjs +3 -3
  78. package/components/tables-v1/src/ctx.d.ts +66 -68
  79. package/components/tables-v1/src/el-ctx.d.ts +48 -51
  80. package/components/tables-v1/src/index.vue.d.ts +1950 -1933
  81. package/components/tables-v1-checkbox/index.mjs +269 -33
  82. package/components/tables-v1-checkbox/src/ctx.d.ts +65 -67
  83. package/components/tables-v1-checkbox/src/index.vue.d.ts +2167 -2159
  84. package/components/typing-markdown/index.mjs +128 -33
  85. package/components/typing-markdown/src/core.d.ts +2 -3
  86. package/components/typing-markdown/src/ctx.d.ts +5 -5
  87. package/components/typing-markdown/src/index.vue.d.ts +9 -9
  88. package/components/vditor/index.mjs +5 -9
  89. package/components/vditor/src/ctx.d.ts +2 -2
  90. package/components/vditor/src/handle-fullscreen.vue.d.ts +3 -3
  91. package/components/vditor/src/handle-value.vue.d.ts +3 -3
  92. package/components/vditor/src/index.vue.d.ts +11 -11
  93. package/composables/el-breakpoints/index.d.ts +1 -1
  94. package/composables/recorder/index.mjs +751 -182
  95. package/icons/_plugin-vue_export-helper.mjs +9 -0
  96. package/icons/end/index.d.ts +4 -0
  97. package/icons/end/index.mjs +36 -0
  98. package/icons/end/src/avatar.d.ts +12 -0
  99. package/icons/end/src/icon.d.ts +57 -0
  100. package/icons/keyboard/index.d.ts +4 -0
  101. package/icons/keyboard/index.mjs +36 -0
  102. package/icons/keyboard/src/avatar.d.ts +12 -0
  103. package/icons/keyboard/src/icon.d.ts +57 -0
  104. package/icons/start/index.d.ts +4 -0
  105. package/icons/start/index.mjs +36 -0
  106. package/icons/start/src/avatar.d.ts +12 -0
  107. package/icons/start/src/icon.d.ts +57 -0
  108. package/icons/voice/index.d.ts +4 -0
  109. package/icons/voice/index.mjs +51 -0
  110. package/icons/voice/src/avatar.d.ts +12 -0
  111. package/icons/voice/src/icon.d.ts +57 -0
  112. package/icons/voice/src/index.vue.d.ts +4 -0
  113. package/index.css +99 -15
  114. package/package.json +51 -7
  115. package/fetch/PlusFetch/index.d.ts +0 -14
  116. package/fetch/PlusFetch/index.mjs +0 -638
  117. package/fetch/PlusFetch/types.d.ts +0 -54
  118. package/fetch/index.d.ts +0 -1
  119. package/fetch/index.mjs +0 -5
@@ -0,0 +1,386 @@
1
+ import { createElementBlock, openBlock, createStaticVNode, defineComponent, ref, computed, watch, nextTick, normalizeStyle, normalizeClass, createCommentVNode, Fragment, renderList, createBlock, createSlots, withCtx, renderSlot, unref, createVNode, onMounted, onBeforeUnmount, mergeProps } from 'vue';
2
+ import { VkBubbleTemplates } from '@vunk/plus/components/bubble-templates';
3
+ import { VkRenderer } from '@vunk/core/components/renderer';
4
+ import { VkRendererTemplateInstancesProvider } from '@vunk/core/components/renderer-template-instances-provider';
5
+ import { ElAutoResizer } from 'element-plus';
6
+ import { _ as _export_sfc, B as Bubble, E as ElIcon, b as arrow_down_bold_default } from '../index2.mjs';
7
+ import { noop } from '@vunk/shared/function';
8
+ export { Role } from '@vunk/plus/components/agent-chat-provider';
9
+
10
+ const _sfc_main$2 = {};
11
+ const _hoisted_1 = {
12
+ xmlns: "http://www.w3.org/2000/svg",
13
+ "xmlns:xlink": "http://www.w3.org/1999/xlink",
14
+ version: "1.1",
15
+ width: "704",
16
+ height: "704",
17
+ viewBox: "0 0 704 704"
18
+ };
19
+ function _sfc_render(_ctx, _cache) {
20
+ return openBlock(), createElementBlock("svg", _hoisted_1, _cache[0] || (_cache[0] = [createStaticVNode('<defs><filter id="master_svg0_62_10054" filterUnits="objectBoundingBox" color-interpolation-filters="sRGB" x="-0.030120481927710843" y="-0.030120481927710843" width="1.0602409638554218" height="1.0602409638554218"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur stdDeviation="5" result="effect1_foregroundBlur"></feGaussianBlur></filter><linearGradient id="master_svg1_62_10082" x1="0.5" y1="-0.13192443549633026" x2="0.42319029569625854" y2="1.368432641029358"><stop offset="9.145302325487137%" stop-color="currentColor" stop-opacity="1"></stop><stop offset="13.636428117752075%" stop-color="currentColor" stop-opacity="0.07539999485015869"></stop><stop offset="16.968481242656708%" stop-color="currentColor" stop-opacity="0"></stop></linearGradient></defs><g transform="matrix(0,1,-1,0,704,-664)" filter="url(#master_svg0_62_10054)"><path d="M1016,684C1199.359,684,1348,535.359,1348,352C1348,168.641,1199.359,20,1016,20C832.641,20,684,168.641,684,352C684,535.359,832.641,684,1016,684ZM1016,32C1192.731,32,1336,175.269,1336,352C1336,528.731,1192.731,672,1016,672C839.269,672,696,528.731,696,352C696,175.269,839.269,32,1016,32Z" fill-rule="evenodd" fill="url(#master_svg1_62_10082)" fill-opacity="1"></path></g>', 2)]));
21
+ }
22
+ const loadingBg = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render]]);
23
+
24
+ const useScrollDetector = (elementRef) => {
25
+ const hasVertical = ref(false);
26
+ const hasHorizontal = ref(false);
27
+ const check = () => {
28
+ const el = elementRef.value;
29
+ if (!el) return;
30
+ hasVertical.value = el.scrollHeight > el.clientHeight;
31
+ hasHorizontal.value = el.scrollWidth > el.clientWidth;
32
+ };
33
+ onMounted(() => {
34
+ check();
35
+ const observer = new ResizeObserver(check);
36
+ observer.observe(elementRef.value);
37
+ onBeforeUnmount(() => observer.disconnect());
38
+ });
39
+ return {
40
+ hasVertical,
41
+ // 是否有纵向滚动条
42
+ hasHorizontal,
43
+ // 是否有横向滚动条
44
+ check
45
+ // 检查滚动条状态
46
+ };
47
+ };
48
+ const threshold = 20;
49
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
50
+ __name: "index",
51
+ props: {
52
+ list: {
53
+ default: () => []
54
+ },
55
+ maxHeight: {
56
+ default: "500px"
57
+ },
58
+ triggerIndices: {
59
+ default: "only-last"
60
+ },
61
+ alwaysShowScrollbar: {
62
+ type: Boolean,
63
+ default: false
64
+ },
65
+ backButtonThreshold: {
66
+ default: 80
67
+ },
68
+ showBackButton: {
69
+ type: Boolean,
70
+ default: true
71
+ },
72
+ backButtonPosition: {
73
+ default: () => {
74
+ return {
75
+ bottom: "20px",
76
+ left: "calc(50% - 19px)"
77
+ };
78
+ }
79
+ },
80
+ btnLoading: {
81
+ type: Boolean,
82
+ default: true
83
+ },
84
+ btnColor: {
85
+ default: "#409EFF"
86
+ },
87
+ btnIconSize: {
88
+ default: 24
89
+ }
90
+ },
91
+ emits: ["complete"],
92
+ setup(__props, {
93
+ expose: __expose,
94
+ emit: __emit
95
+ }) {
96
+ const props = __props;
97
+ const emits = __emit;
98
+ const scrollContainer = ref(null);
99
+ const {
100
+ hasVertical
101
+ } = useScrollDetector(scrollContainer);
102
+ const stopAutoScrollToBottom = ref(false);
103
+ const lastScrollTop = ref(0);
104
+ const accumulatedScrollUpDistance = ref(0);
105
+ const resizeObserver = ref(null);
106
+ const showBackToBottom = ref(false);
107
+ const effectiveTriggerIndices = computed(() => {
108
+ if (props.triggerIndices === "only-last") {
109
+ const triggerIndices = props.list.filter((item) => item.typing).map((_, index) => index);
110
+ return triggerIndices.length > 0 ? [triggerIndices[triggerIndices.length - 1]] : [];
111
+ } else if (props.triggerIndices === "all") {
112
+ return props.list.map((_, index) => index);
113
+ } else if (Array.isArray(props.triggerIndices)) {
114
+ const validIndices = getValidIndices(props.list, props.triggerIndices);
115
+ return validIndices.length > 0 ? [validIndices[validIndices.length - 1]] : [];
116
+ }
117
+ return [];
118
+ });
119
+ function getValidIndices(list, indices) {
120
+ const validIndices = [];
121
+ for (let i = 0; i < indices.length; i++) {
122
+ const index = indices[i];
123
+ if (index < 0 || index >= list.length || !list[index].typing) ;
124
+ else {
125
+ validIndices.push(index);
126
+ }
127
+ }
128
+ return validIndices;
129
+ }
130
+ watch(() => props.list.length, () => {
131
+ if (props.list && props.list.length > 0) {
132
+ nextTick(() => {
133
+ autoScroll();
134
+ });
135
+ }
136
+ }, {
137
+ immediate: true
138
+ });
139
+ function scrollToTop() {
140
+ stopAutoScrollToBottom.value = true;
141
+ nextTick(() => {
142
+ scrollContainer.value.scrollTop = 0;
143
+ });
144
+ }
145
+ function scrollToBottom() {
146
+ try {
147
+ if (scrollContainer.value && scrollContainer.value.scrollHeight) {
148
+ nextTick(() => {
149
+ scrollContainer.value.scrollTop = scrollContainer.value.scrollHeight;
150
+ });
151
+ }
152
+ } catch (error) {
153
+ }
154
+ }
155
+ function scrollToBubble(index) {
156
+ const container = scrollContainer.value;
157
+ if (!container) return;
158
+ const bubbles = container.querySelectorAll(".el-bubble");
159
+ if (index >= bubbles.length) return;
160
+ stopAutoScrollToBottom.value = true;
161
+ const targetBubble = bubbles[index];
162
+ const containerRect = container.getBoundingClientRect();
163
+ const bubbleRect = targetBubble.getBoundingClientRect();
164
+ const scrollPosition = bubbleRect.top - containerRect.top + container.scrollTop;
165
+ container.scrollTo({
166
+ top: scrollPosition,
167
+ behavior: "smooth"
168
+ });
169
+ }
170
+ function autoScroll() {
171
+ if (scrollContainer.value) {
172
+ const listBubbles = scrollContainer.value.querySelectorAll(".el-bubble-content-wrapper");
173
+ if (resizeObserver.value) {
174
+ resizeObserver.value.disconnect();
175
+ }
176
+ const lastItem = listBubbles[listBubbles.length - 1];
177
+ if (lastItem) {
178
+ resizeObserver.value = new ResizeObserver(() => {
179
+ if (!stopAutoScrollToBottom.value) {
180
+ scrollToBottom();
181
+ }
182
+ });
183
+ resizeObserver.value.observe(lastItem);
184
+ }
185
+ }
186
+ }
187
+ function handleBubbleComplete(index, instance) {
188
+ if (effectiveTriggerIndices.value.includes(index)) {
189
+ emits("complete", instance, index);
190
+ }
191
+ }
192
+ function handleScroll() {
193
+ if (scrollContainer.value) {
194
+ const {
195
+ scrollTop,
196
+ scrollHeight,
197
+ clientHeight
198
+ } = scrollContainer.value;
199
+ const distanceToBottom = scrollHeight - (scrollTop + clientHeight);
200
+ showBackToBottom.value = props.showBackButton && distanceToBottom > props.backButtonThreshold;
201
+ const isCloseToBottom = scrollTop + clientHeight >= scrollHeight - 30;
202
+ const isScrollingUp = lastScrollTop.value > scrollTop;
203
+ const isScrollingDown = lastScrollTop.value < scrollTop;
204
+ const scrollDelta = lastScrollTop.value - scrollTop;
205
+ lastScrollTop.value = scrollTop;
206
+ if (isScrollingUp) {
207
+ accumulatedScrollUpDistance.value += scrollDelta;
208
+ if (accumulatedScrollUpDistance.value >= threshold) {
209
+ if (!stopAutoScrollToBottom.value) {
210
+ stopAutoScrollToBottom.value = true;
211
+ }
212
+ accumulatedScrollUpDistance.value = 0;
213
+ }
214
+ } else {
215
+ accumulatedScrollUpDistance.value = 0;
216
+ }
217
+ if (isScrollingDown && isCloseToBottom) {
218
+ if (stopAutoScrollToBottom.value) {
219
+ stopAutoScrollToBottom.value = false;
220
+ }
221
+ }
222
+ }
223
+ }
224
+ __expose({
225
+ scrollToTop,
226
+ scrollToBottom,
227
+ scrollToBubble
228
+ });
229
+ return (_ctx, _cache) => {
230
+ const _component_el_icon = ElIcon;
231
+ return openBlock(), createElementBlock("div", {
232
+ ref_key: "scrollContainer",
233
+ ref: scrollContainer,
234
+ class: normalizeClass(["el-bubble-list", {
235
+ "always-scrollbar": props.alwaysShowScrollbar
236
+ }]),
237
+ style: normalizeStyle({
238
+ "--el-bubble-list-max-height": `${_ctx.maxHeight}`,
239
+ "--el-bubble-list-btn-size": `${props.btnIconSize}px`
240
+ }),
241
+ onScroll: handleScroll
242
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.list, (item, index) => {
243
+ return openBlock(), createBlock(Bubble, {
244
+ key: index,
245
+ content: item.content,
246
+ placement: item.placement,
247
+ loading: item.loading,
248
+ shape: item.shape,
249
+ variant: item.variant,
250
+ "is-markdown": item.isMarkdown,
251
+ "is-fog": item.isFog,
252
+ typing: item.typing,
253
+ "max-width": item.maxWidth,
254
+ avatar: item.avatar,
255
+ "avatar-size": item.avatarSize,
256
+ "avatar-gap": item.avatarGap,
257
+ "avatar-shape": item.avatarShape,
258
+ "avatar-icon": item.avatarIcon,
259
+ "avatar-src-set": item.avatarSrcSet,
260
+ "avatar-alt": item.avatarAlt,
261
+ "avatar-fit": item.avatarFit,
262
+ "no-style": item.noStyle,
263
+ onFinish: (instance) => handleBubbleComplete(index, instance)
264
+ }, createSlots({
265
+ _: 2
266
+ }, [_ctx.$slots.avatar ? {
267
+ name: "avatar",
268
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "avatar", {
269
+ item
270
+ }, void 0, true)]),
271
+ key: "0"
272
+ } : void 0, _ctx.$slots.header ? {
273
+ name: "header",
274
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "header", {
275
+ item
276
+ }, void 0, true)]),
277
+ key: "1"
278
+ } : void 0, _ctx.$slots.content ? {
279
+ name: "content",
280
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "content", {
281
+ item
282
+ }, void 0, true)]),
283
+ key: "2"
284
+ } : void 0, _ctx.$slots.footer ? {
285
+ name: "footer",
286
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "footer", {
287
+ item
288
+ }, void 0, true)]),
289
+ key: "3"
290
+ } : void 0, _ctx.$slots.loading ? {
291
+ name: "loading",
292
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "loading", {
293
+ item
294
+ }, void 0, true)]),
295
+ key: "4"
296
+ } : void 0]), 1032, ["content", "placement", "loading", "shape", "variant", "is-markdown", "is-fog", "typing", "max-width", "avatar", "avatar-size", "avatar-gap", "avatar-shape", "avatar-icon", "avatar-src-set", "avatar-alt", "avatar-fit", "no-style", "onFinish"]);
297
+ }), 128)), unref(showBackToBottom) && unref(hasVertical) ? (openBlock(), createElementBlock("div", {
298
+ key: 0,
299
+ class: normalizeClass(["el-bubble-list-default-back-button", {
300
+ "el-bubble-list-back-to-bottom-solt": _ctx.$slots.backToBottom
301
+ }]),
302
+ style: normalizeStyle({
303
+ bottom: _ctx.backButtonPosition.bottom,
304
+ left: _ctx.backButtonPosition.left
305
+ }),
306
+ onClick: scrollToBottom
307
+ }, [renderSlot(_ctx.$slots, "backToBottom", {}, () => [createVNode(_component_el_icon, {
308
+ class: "el-bubble-list-back-to-bottom-icon",
309
+ style: normalizeStyle({
310
+ color: props.btnColor
311
+ })
312
+ }, {
313
+ default: withCtx(() => [createVNode(unref(arrow_down_bold_default)), props.btnLoading ? (openBlock(), createBlock(loadingBg, {
314
+ key: 0,
315
+ class: "back-to-bottom-loading-svg-bg"
316
+ })) : createCommentVNode("", true)]),
317
+ _: 1
318
+ }, 8, ["style"])], true)], 6)) : createCommentVNode("", true)], 38);
319
+ };
320
+ }
321
+ });
322
+ const BubbleList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-a7a18fd5"]]);
323
+
324
+ const props = {
325
+ items: {
326
+ type: Array,
327
+ default: () => []
328
+ },
329
+ elRef: {
330
+ type: Function,
331
+ default: noop
332
+ },
333
+ textToSpeech: {
334
+ type: Function
335
+ }
336
+ };
337
+
338
+ var _sfc_main = /* @__PURE__ */ defineComponent({
339
+ ...{
340
+ name: "VkBubbleList",
341
+ inheritAttrs: false
342
+ },
343
+ __name: "index",
344
+ props: props,
345
+ setup(__props) {
346
+ return (_ctx, _cache) => {
347
+ return openBlock(), createBlock(unref(VkRendererTemplateInstancesProvider), null, {
348
+ default: withCtx(() => [
349
+ createVNode(unref(VkBubbleTemplates), { "text-to-speech": _ctx.textToSpeech }, null, 8, ["text-to-speech"]),
350
+ createVNode(unref(ElAutoResizer), null, {
351
+ default: withCtx(({ height }) => [
352
+ createVNode(unref(BubbleList), mergeProps({
353
+ ref: _ctx.elRef,
354
+ "btn-icon-size": 18,
355
+ "max-height": `${height}px`,
356
+ list: _ctx.items
357
+ }, _ctx.$attrs), {
358
+ content: withCtx(({ item }) => [
359
+ createVNode(unref(VkRenderer), {
360
+ source: [item]
361
+ }, null, 8, ["source"])
362
+ ]),
363
+ _: 2
364
+ /* DYNAMIC */
365
+ }, 1040, ["max-height", "list"])
366
+ ]),
367
+ _: 1
368
+ /* STABLE */
369
+ })
370
+ ]),
371
+ _: 1
372
+ /* STABLE */
373
+ });
374
+ };
375
+ }
376
+ });
377
+
378
+ var types = /*#__PURE__*/Object.freeze({
379
+ __proto__: null
380
+ });
381
+
382
+ _sfc_main.install = (app) => {
383
+ app.component(_sfc_main.name || "VkBubbleList", _sfc_main);
384
+ };
385
+
386
+ export { _sfc_main as VkBubbleList, types as __VkBubbleList, _sfc_main as default };
@@ -0,0 +1,30 @@
1
+ import type { __VkBroadcastingMarkdown } from '@vunk/plus/components/broadcasting-markdown';
2
+ import type { AnyFunc } from '@vunk/shared';
3
+ import type { PropType } from 'vue';
4
+ export declare const props: {
5
+ items: {
6
+ type: {
7
+ (arrayLength: number): import("./types").Item[];
8
+ (...items: import("./types").Item[]): import("./types").Item[];
9
+ new (arrayLength: number): import("./types").Item[];
10
+ new (...items: import("./types").Item[]): import("./types").Item[];
11
+ isArray(arg: any): arg is any[];
12
+ readonly prototype: any[];
13
+ from<T>(arrayLike: ArrayLike<T>): T[];
14
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
15
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
16
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
17
+ of<T_4>(...items: T_4[]): T_4[];
18
+ readonly [Symbol.species]: ArrayConstructor;
19
+ };
20
+ default: () => never[];
21
+ };
22
+ elRef: {
23
+ type: PropType<AnyFunc>;
24
+ default: AnyFunc;
25
+ };
26
+ textToSpeech: {
27
+ type: PropType<__VkBroadcastingMarkdown.TextToSpeech>;
28
+ };
29
+ };
30
+ export declare const emits: {};