@ibiz-template-plugin/ai-chat 0.0.117 → 0.0.119
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.
- package/dist/index.es.js +17565 -14324
- package/dist/index.legacy.js +2 -2
- package/dist/style.css +2 -2
- package/dist/types/components/chat-back-bottom/chat-back-bottom.d.ts +5 -3
- package/dist/types/components/chat-file-preview/components/custom-chat-file-preview/custom-chat-file-preview.d.ts +19 -0
- package/dist/types/components/chat-file-preview/components/default-chat-file-preview/default-chat-file-preview.d.ts +19 -0
- package/dist/types/components/chat-messages/chat-messages.d.ts +10 -9
- package/dist/types/components/chat-messages/use-message-renderer.d.ts +89 -0
- package/dist/types/components/chat-net-disk/file-move-panel/file-move-panel.d.ts +27 -0
- package/dist/types/components/chat-net-disk/file-new-panel/file-new-panel.d.ts +27 -0
- package/dist/types/components/chat-search/chat-search.d.ts +4 -0
- package/dist/types/components/common/actions/actions.d.ts +29 -0
- package/dist/types/components/common/breadcrumb/breadcrumb.d.ts +1 -8
- package/dist/types/components/common/context-menu/context-menu.d.ts +34 -0
- package/dist/types/components/common/drawer/drawer.d.ts +6 -1
- package/dist/types/components/common/index.d.ts +9 -0
- package/dist/types/components/common/inline-editor/inline-editor.d.ts +13 -0
- package/dist/types/components/common/lazy-list-tree/lazy-list-tree.d.ts +34 -4
- package/dist/types/components/common/lazy-tree/lazy-tree.d.ts +77 -5
- package/dist/types/components/common/modal/modal.d.ts +37 -0
- package/dist/types/components/flat-chat-container/flat-chat-container.d.ts +5 -1
- package/dist/types/components/popup/popup.d.ts +2 -1
- package/dist/types/controller/file-system/file-system.controller.d.ts +68 -1
- package/dist/types/controller/overlay/drawer-overlay.controller.d.ts +7 -0
- package/dist/types/controller/overlay/index.d.ts +1 -0
- package/dist/types/controller/overlay/modal-overlay.controller.d.ts +47 -0
- package/dist/types/icons/index.d.ts +2 -1
- package/dist/types/icons/move-file-svg.d.ts +2 -0
- package/dist/types/icons/new-folder-svg.d.ts +1 -0
- package/dist/types/icons/system-file/archive.d.ts +7 -0
- package/dist/types/icons/system-file/audio.d.ts +5 -0
- package/dist/types/icons/system-file/excel.d.ts +1 -1
- package/dist/types/icons/system-file/image.d.ts +7 -0
- package/dist/types/icons/system-file/ppt.d.ts +0 -1
- package/dist/types/icons/system-file/program.d.ts +17 -0
- package/dist/types/icons/system-file/text.d.ts +4 -0
- package/dist/types/icons/system-file/video.d.ts +6 -0
- package/dist/types/icons/system-file/word.d.ts +7 -0
- package/dist/types/interface/i-chat-container/i-chat-container.d.ts +6 -0
- package/dist/types/interface/i-chat-options/i-chat-options.d.ts +6 -0
- package/dist/types/interface/i-file-system-options/i-file-system-options.d.ts +156 -3
- package/dist/types/interface/i-remote-resource/i-remote-resource.d.ts +20 -0
- package/dist/types/locale/en/index.d.ts +16 -1
- package/dist/types/locale/zh-CN/index.d.ts +16 -1
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/util/system-file.d.ts +2 -0
- package/package.json +2 -2
- package/dist/types/components/chat-messages/use-virtual-list.d.ts +0 -156
- package/dist/types/components/chat-scrollbar/chat-scrollbar.d.ts +0 -102
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { RefObject } from 'preact';
|
|
2
|
-
import { ReadonlySignal, Signal } from '@preact/signals';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 虚拟列表项
|
|
6
|
-
*
|
|
7
|
-
* @author zpc
|
|
8
|
-
* @date 2026-09-20
|
|
9
|
-
*/
|
|
10
|
-
export interface VirtualItem {
|
|
11
|
-
/**
|
|
12
|
-
* 数据源中的实际索引
|
|
13
|
-
*
|
|
14
|
-
* @type {number}
|
|
15
|
-
*/
|
|
16
|
-
index: number;
|
|
17
|
-
/**
|
|
18
|
-
* 稳定 key(如 messageid),用于测量缓存
|
|
19
|
-
*
|
|
20
|
-
* @type {string}
|
|
21
|
-
*/
|
|
22
|
-
key: string;
|
|
23
|
-
/**
|
|
24
|
-
* 该项在列表中的 top 偏移(累计高度)
|
|
25
|
-
*
|
|
26
|
-
* @type {number}
|
|
27
|
-
*/
|
|
28
|
-
start: number;
|
|
29
|
-
/**
|
|
30
|
-
* 当前高度(实测或预估)
|
|
31
|
-
*
|
|
32
|
-
* @type {number}
|
|
33
|
-
*/
|
|
34
|
-
size: number;
|
|
35
|
-
/**
|
|
36
|
-
* 绑定到项包裹元素的 ref,用于 ResizeObserver 实测高度
|
|
37
|
-
*
|
|
38
|
-
* @type {(el: HTMLElement | null) => void}
|
|
39
|
-
*/
|
|
40
|
-
measureRef: (el: HTMLElement | null) => void;
|
|
41
|
-
}
|
|
42
|
-
export interface UseVirtualListOptions {
|
|
43
|
-
/**
|
|
44
|
-
* 总条数
|
|
45
|
-
*
|
|
46
|
-
* @type {number}
|
|
47
|
-
*/
|
|
48
|
-
count: number;
|
|
49
|
-
/**
|
|
50
|
-
* 根据索引返回稳定 key(用于按 key 缓存实测高度,避免前插/删除时按下标错位)
|
|
51
|
-
*
|
|
52
|
-
* @type {(index: number) => string}
|
|
53
|
-
*/
|
|
54
|
-
getItemKey: (index: number) => string;
|
|
55
|
-
/**
|
|
56
|
-
* 未渲染项的预估高度
|
|
57
|
-
*
|
|
58
|
-
* @type {(index: number) => number}
|
|
59
|
-
*/
|
|
60
|
-
estimateSize: (index: number) => number;
|
|
61
|
-
/**
|
|
62
|
-
* 可视区上下各多渲染的条数
|
|
63
|
-
*
|
|
64
|
-
* @type {number}
|
|
65
|
-
*/
|
|
66
|
-
overscan?: number;
|
|
67
|
-
}
|
|
68
|
-
export interface UseVirtualListResult {
|
|
69
|
-
/**
|
|
70
|
-
* 挂到滚动容器上的 ref
|
|
71
|
-
*
|
|
72
|
-
* @type {RefObject<HTMLDivElement>}
|
|
73
|
-
*/
|
|
74
|
-
containerRef: RefObject<HTMLDivElement>;
|
|
75
|
-
/**
|
|
76
|
-
* 当前可视区内的虚拟项
|
|
77
|
-
*
|
|
78
|
-
* @type {VirtualItem[]}
|
|
79
|
-
*/
|
|
80
|
-
virtualItems: VirtualItem[];
|
|
81
|
-
/**
|
|
82
|
-
* 整个列表的总高度(spacer 高度)
|
|
83
|
-
*
|
|
84
|
-
* @type {number}
|
|
85
|
-
*/
|
|
86
|
-
totalSize: number;
|
|
87
|
-
/**
|
|
88
|
-
* 每项起始偏移的前缀和(长度 count + 1,最后一项为总高度)
|
|
89
|
-
*
|
|
90
|
-
* @type {number[]}
|
|
91
|
-
*/
|
|
92
|
-
offsets: number[];
|
|
93
|
-
/**
|
|
94
|
-
* 取某下标的起始偏移(供滚动锚定使用)
|
|
95
|
-
*
|
|
96
|
-
* @type {(index: number) => number}
|
|
97
|
-
*/
|
|
98
|
-
getOffset: (index: number) => number;
|
|
99
|
-
/**
|
|
100
|
-
* @description 恢复滚动条位置
|
|
101
|
-
* @memberof UseVirtualListResult
|
|
102
|
-
*/
|
|
103
|
-
restoreScrollPosition: () => void;
|
|
104
|
-
/**
|
|
105
|
-
* 响应式总高度:依赖测量版本号(实测高度回填)与条数,供自定义滚动条订阅
|
|
106
|
-
*
|
|
107
|
-
* @type {ReadonlySignal<number>}
|
|
108
|
-
*/
|
|
109
|
-
totalSizeSignal: ReadonlySignal<number>;
|
|
110
|
-
/**
|
|
111
|
-
* 容器 scrollTop 信号(供自定义滚动条计算 thumb 位置)
|
|
112
|
-
*
|
|
113
|
-
* @type {Signal<number>}
|
|
114
|
-
*/
|
|
115
|
-
scrollTopSignal: Signal<number>;
|
|
116
|
-
/**
|
|
117
|
-
* 容器可视高度信号
|
|
118
|
-
*
|
|
119
|
-
* @type {Signal<number>}
|
|
120
|
-
*/
|
|
121
|
-
clientHeightSignal: Signal<number>;
|
|
122
|
-
/**
|
|
123
|
-
* 自定义滚动条拖动状态:拖动中跳过头部前插的 scrollTop 补偿,由滚动条按指针比例重映射接管
|
|
124
|
-
*
|
|
125
|
-
* @type {Signal<boolean>}
|
|
126
|
-
*/
|
|
127
|
-
isDragging: Signal<boolean>;
|
|
128
|
-
/**
|
|
129
|
-
* 程序化设置滚动位置:同步 scrollTop 信号 + 直接写容器 scrollTop(clamp 到当前可滚动范围)
|
|
130
|
-
*
|
|
131
|
-
* @type {(top: number) => void}
|
|
132
|
-
*/
|
|
133
|
-
setScrollTop: (top: number) => void;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* 动态高度虚拟列表 Hook
|
|
137
|
-
*
|
|
138
|
-
* ## 核心思想
|
|
139
|
-
* 消息列表里每条消息高度都不同(markdown、代码块、图片、折叠、流式增长),
|
|
140
|
-
* 若全部渲染 DOM 节点会随消息数线性增长导致卡顿。本 Hook 只渲染「视口内 + overscan」的消息:
|
|
141
|
-
* - 用一条 `height: totalSize` 的 spacer div 撑起可滚动总高度;
|
|
142
|
-
* - 每条消息用 `position:absolute + transform:translateY(start)` 定位到对应偏移;
|
|
143
|
-
* - 已渲染项用 ResizeObserver 实测真实高度,未渲染项用 `estimateSize` 预估占位。
|
|
144
|
-
*
|
|
145
|
-
* ## 为什么按 key 缓存而非按下标
|
|
146
|
-
* 消息会「头部前插」(加载历史)和「删除」,导致已有消息的数组下标整体平移。
|
|
147
|
-
* 若按下标缓存实测高度,前插后所有测量值会错位。因此用 `getItemKey`(messageid)作为测量缓存的键。
|
|
148
|
-
*
|
|
149
|
-
* ## 数据流
|
|
150
|
-
* scrollTop / clientHeight / measureVersion 三个信号变化 → useMemo 重算 offsets(前缀和)
|
|
151
|
-
* → 二分查找可视区间 → 产出 virtualItems → 组件只渲染这些项。
|
|
152
|
-
*
|
|
153
|
-
* @author zpc
|
|
154
|
-
* @date 2026-09-20
|
|
155
|
-
*/
|
|
156
|
-
export declare const useVirtualList: (options: UseVirtualListOptions) => UseVirtualListResult;
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { RefObject } from 'preact';
|
|
2
|
-
import { ReadonlySignal, Signal } from '@preact/signals';
|
|
3
|
-
|
|
4
|
-
export interface ChatScrollbarProps {
|
|
5
|
-
/**
|
|
6
|
-
* 滚动容器 ref(与 useVirtualList 的 containerRef 同源)
|
|
7
|
-
*
|
|
8
|
-
* @type {RefObject<HTMLDivElement | null>}
|
|
9
|
-
*/
|
|
10
|
-
containerRef: RefObject<HTMLDivElement | null>;
|
|
11
|
-
/**
|
|
12
|
-
* 容器 scrollTop 信号
|
|
13
|
-
*
|
|
14
|
-
* @type {Signal<number>}
|
|
15
|
-
*/
|
|
16
|
-
scrollTop: Signal<number>;
|
|
17
|
-
/**
|
|
18
|
-
* 容器可视高度信号
|
|
19
|
-
*
|
|
20
|
-
* @type {Signal<number>}
|
|
21
|
-
*/
|
|
22
|
-
clientHeight: Signal<number>;
|
|
23
|
-
/**
|
|
24
|
-
* 内容总高度信号(依赖实测高度回填)
|
|
25
|
-
*
|
|
26
|
-
* @type {ReadonlySignal<number>}
|
|
27
|
-
*/
|
|
28
|
-
totalSize: ReadonlySignal<number>;
|
|
29
|
-
/**
|
|
30
|
-
* 程序化写滚动位置(同步信号 + 写容器 scrollTop)
|
|
31
|
-
*
|
|
32
|
-
* @type {(top: number) => void}
|
|
33
|
-
*/
|
|
34
|
-
setScrollTop: (top: number) => void;
|
|
35
|
-
/**
|
|
36
|
-
* 拖动到顶部附近的通知(触发加载更早历史)
|
|
37
|
-
*
|
|
38
|
-
* 拖到顶部且前插补偿被跳过时,scrollTop 值可能不变导致浏览器不派发 scroll 事件,
|
|
39
|
-
* 因此不能只依赖 scroll 事件,需在此处直接通知
|
|
40
|
-
*
|
|
41
|
-
* @type {() => void}
|
|
42
|
-
*/
|
|
43
|
-
onNearTop?: () => void;
|
|
44
|
-
/**
|
|
45
|
-
* 拖动状态回调(父组件转发给 useVirtualList 的 setIsDragging)
|
|
46
|
-
*
|
|
47
|
-
* @type {(dragging: boolean) => void}
|
|
48
|
-
*/
|
|
49
|
-
onDragStateChange?: (dragging: boolean) => void;
|
|
50
|
-
/**
|
|
51
|
-
* thumb 最小高度,避免内容过长时不可抓取
|
|
52
|
-
*
|
|
53
|
-
* @type {number}
|
|
54
|
-
*/
|
|
55
|
-
minThumbSize?: number;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* 自定义虚拟滚动条
|
|
59
|
-
*
|
|
60
|
-
* ## 为什么不用原生滚动条
|
|
61
|
-
* 动态高度虚拟列表中未测量的项用预估高度占位,快速拖动原生滚动条时新项不断被实测,
|
|
62
|
-
* totalSize(scrollHeight)持续变化,原生 thumb 按比例重定位导致滚动条乱跳。
|
|
63
|
-
*
|
|
64
|
-
* ## 核心策略
|
|
65
|
-
* 隐藏原生滚动条绘制,保留原生 scrollTop 驱动内容(wheel/键盘/触摸不变),自绘 thumb:
|
|
66
|
-
* - 拖动期间 thumb 定位用指针比例(dragRatio),不依赖异步的 scroll 事件回读,无滞后抖动;
|
|
67
|
-
* - 拖动期间 totalSize 变化(测量回填/历史前插)时,按指针比例重映射 scrollTop,
|
|
68
|
-
* thumb 始终钉在指针下方,内容坐标系在其下方重排。
|
|
69
|
-
*
|
|
70
|
-
* ## 与 useVirtualList 的数据流交联
|
|
71
|
-
* 本组件不持有滚动状态,全部通过 props 注入 useVirtualList 暴露的信号与回调,
|
|
72
|
-
* 二者是「显示层 ↔ 驱动层」的关系:
|
|
73
|
-
*
|
|
74
|
-
* ```
|
|
75
|
-
* useVirtualList ChatScrollbar
|
|
76
|
-
* ──────────── ──────────────
|
|
77
|
-
* totalSizeSignal ─────────────────────► totalSize (thumb 高度/比例)
|
|
78
|
-
* clientHeightSignal ──────────────────► clientHeight (thumb 高度/比例)
|
|
79
|
-
* scrollTopSignal ─────────────────────► scrollTop (非拖动期 thumb 位置)
|
|
80
|
-
* setScrollTop ◄──────────────────────── 拖动/翻页 (程序化写滚动位置)
|
|
81
|
-
* onDragStateChange ──► isDragging ──► 前插补偿跳过
|
|
82
|
-
* onNearTop ──────────────────────────► 加载更早历史
|
|
83
|
-
* ```
|
|
84
|
-
*
|
|
85
|
-
* 正向(useVirtualList → 本组件):
|
|
86
|
-
* - 滚动/测量回填/历史前插 → totalSize、scrollTop 信号变化 → 本组件重渲染更新 thumb;
|
|
87
|
-
* - totalSizeSignal 是懒求值信号(只依赖测量版本号),滚动过程中零额外计算。
|
|
88
|
-
*
|
|
89
|
-
* 反向(本组件 → useVirtualList):
|
|
90
|
-
* - 拖动/点击翻页 → setScrollTop:同步写 scrollTop 信号 + 写容器 DOM,
|
|
91
|
-
* 信号先行避免下一帧用旧值闪跳;虚拟列表据此重算可视区;
|
|
92
|
-
* - onDragStateChange → 虚拟列表的 isDragging 信号置 true:
|
|
93
|
-
* 拖动期间「头部前插补偿」被跳过(use-virtual-list.ts:373),
|
|
94
|
-
* 前插导致的 totalSize 变化改由本组件的重锚定 effect 按指针比例重映射 scrollTop 接管,
|
|
95
|
-
* 两端不会同时争抢滚动位置;
|
|
96
|
-
* - onNearTop:拖到顶部时直接通知父级加载历史——前插补偿被跳过后 scrollTop 可能不变,
|
|
97
|
-
* 浏览器不派发 scroll 事件,不能只依赖滚动事件触发加载。
|
|
98
|
-
*
|
|
99
|
-
* @author zpc
|
|
100
|
-
* @date 2026-10-12
|
|
101
|
-
*/
|
|
102
|
-
export declare const ChatScrollbar: (props: ChatScrollbarProps) => import("preact").JSX.Element | null;
|