@linker-design-plus/timeline-track 1.0.7 → 1.0.9
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/README.md +1 -0
- package/dist/components/Timeline.d.ts +0 -1
- package/dist/core/constants.d.ts +1 -0
- package/dist/core/timelineManager.d.ts +37 -4
- package/dist/core/types.d.ts +8 -1
- package/dist/index.cjs.js +3 -3
- package/dist/index.es.js +2646 -2493
- package/dist/utils/KonvaUtils.d.ts +12 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -362,6 +362,7 @@ new TimelineManager(config?: Partial<TimelineConfig>)
|
|
|
362
362
|
| `zoom_change` | 缩放比例变化 | `{ zoom: number }` |
|
|
363
363
|
| `history_change` | 历史记录变更 | `{ canUndo: boolean, canRedo: boolean }` |
|
|
364
364
|
| `track_duration_change` | 轨道总时长变化 | `{ duration: number }` |
|
|
365
|
+
| `buffering_state_change` | 视频缓冲状态变化 | `{ isBuffering: boolean }` |
|
|
365
366
|
|
|
366
367
|
### ClipConfig 接口
|
|
367
368
|
|
package/dist/core/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TimelineConfig, Clip, ClipConfig, TimeMs, PlayState, Action, TimelineEvent, EventListener, VideoPreviewConfig, TimelineExportData, ThumbnailProvider } from './types';
|
|
1
|
+
import { TimelineConfig, Clip, ClipConfig, TimeMs, PlayState, Action, TimelineEvent, EventListener as TimelineEventListener, VideoPreviewConfig, TimelineExportData, ThumbnailProvider } from './types';
|
|
2
2
|
export declare class TimelineManager {
|
|
3
3
|
private timeline;
|
|
4
4
|
private tracks;
|
|
@@ -20,6 +20,11 @@ export declare class TimelineManager {
|
|
|
20
20
|
private lastTrackDuration;
|
|
21
21
|
private thumbnailProvider;
|
|
22
22
|
private canPlay;
|
|
23
|
+
private isBuffering;
|
|
24
|
+
private sourceLoadingCount;
|
|
25
|
+
private playStateBeforeBuffering;
|
|
26
|
+
private isPausingForBuffering;
|
|
27
|
+
private videoBufferingListeners;
|
|
23
28
|
constructor(config?: Partial<TimelineConfig>);
|
|
24
29
|
init(container: HTMLElement): void;
|
|
25
30
|
play(): void;
|
|
@@ -29,6 +34,11 @@ export declare class TimelineManager {
|
|
|
29
34
|
setCurrentTime(time: TimeMs): void;
|
|
30
35
|
getCurrentTime(): TimeMs;
|
|
31
36
|
setZoom(zoom: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* 以游标(playhead)为中心设置缩放,用于外置 slider 等非幕布上的缩放操作
|
|
39
|
+
* 调整 scrollLeft 使游标在屏幕上的位置保持不变
|
|
40
|
+
*/
|
|
41
|
+
setZoomCenteredOnPlayhead(zoom: number): void;
|
|
32
42
|
getZoom(): number;
|
|
33
43
|
/**
|
|
34
44
|
* 设置播放倍速
|
|
@@ -45,6 +55,17 @@ export declare class TimelineManager {
|
|
|
45
55
|
* @returns 是否可以播放
|
|
46
56
|
*/
|
|
47
57
|
getCanPlay(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 当前是否存在视频源加载任务(例如 addClip 期间读取视频时长)
|
|
60
|
+
*/
|
|
61
|
+
isSourceLoading(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* 获取视频源加载状态
|
|
64
|
+
*/
|
|
65
|
+
getSourceLoadingState(): {
|
|
66
|
+
isLoading: boolean;
|
|
67
|
+
pending: number;
|
|
68
|
+
};
|
|
48
69
|
/**
|
|
49
70
|
* 设置缩略图提供器
|
|
50
71
|
* @param provider 缩略图提供器
|
|
@@ -68,6 +89,11 @@ export declare class TimelineManager {
|
|
|
68
89
|
*/
|
|
69
90
|
refreshAllClipThumbnails(): Promise<boolean[]>;
|
|
70
91
|
addClip(clipConfig: ClipConfig): Promise<string>;
|
|
92
|
+
/**
|
|
93
|
+
* 批量添加片段。批量模式下仅维护一段连续的视频源加载状态。
|
|
94
|
+
*/
|
|
95
|
+
addClips(clipConfigs: ClipConfig[]): Promise<string[]>;
|
|
96
|
+
private addClipInternal;
|
|
71
97
|
removeClip(clipId: string): void;
|
|
72
98
|
updateClip(clipId: string, updates: Partial<Clip>): void;
|
|
73
99
|
splitClip(clipId: string, time: TimeMs): void;
|
|
@@ -109,9 +135,11 @@ export declare class TimelineManager {
|
|
|
109
135
|
private handleClipSelect;
|
|
110
136
|
private handleActionUndo;
|
|
111
137
|
private handleActionRedo;
|
|
112
|
-
on(event: TimelineEvent, listener:
|
|
113
|
-
off(event: TimelineEvent, listener:
|
|
138
|
+
on(event: TimelineEvent, listener: TimelineEventListener): void;
|
|
139
|
+
off(event: TimelineEvent, listener: TimelineEventListener): void;
|
|
114
140
|
private emitEvent;
|
|
141
|
+
private beginSourceLoading;
|
|
142
|
+
private endSourceLoading;
|
|
115
143
|
getPlayState(): PlayState;
|
|
116
144
|
setDuration(duration: TimeMs): void;
|
|
117
145
|
getDuration(): TimeMs;
|
|
@@ -168,12 +196,17 @@ export declare class TimelineManager {
|
|
|
168
196
|
/** 清除历史堆栈 */
|
|
169
197
|
clearHistory(): void;
|
|
170
198
|
private handleVideoTimeUpdate;
|
|
199
|
+
private getLastClipByEndTime;
|
|
171
200
|
private handlePlayStateChange;
|
|
172
201
|
private handleClipChange;
|
|
173
202
|
private findClipAtTime;
|
|
174
203
|
private loadClipToVideo;
|
|
204
|
+
private attachVideoBufferingListeners;
|
|
205
|
+
private detachVideoBufferingListeners;
|
|
206
|
+
private enterBuffering;
|
|
207
|
+
private exitBuffering;
|
|
175
208
|
/**
|
|
176
|
-
*
|
|
209
|
+
* 检查轨道总时长是否变化,如果变化则触发事件并更新时间轴时长
|
|
177
210
|
*/
|
|
178
211
|
private checkTrackDurationChange;
|
|
179
212
|
}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -123,7 +123,7 @@ export interface HistoryState {
|
|
|
123
123
|
past: Action[];
|
|
124
124
|
future: Action[];
|
|
125
125
|
}
|
|
126
|
-
export type TimelineEvent = 'time_change' | 'play_state_change' | 'clip_added' | 'clip_removed' | 'clip_updated' | 'zoom_change' | 'history_change' | 'track_duration_change' | 'clip_selected' | 'speed_change' | 'can_play_change';
|
|
126
|
+
export type TimelineEvent = 'time_change' | 'play_state_change' | 'clip_added' | 'clip_removed' | 'clip_updated' | 'zoom_change' | 'history_change' | 'track_duration_change' | 'clip_selected' | 'speed_change' | 'can_play_change' | 'buffering_state_change' | 'source_loading_change';
|
|
127
127
|
export interface TimeChangeData {
|
|
128
128
|
time: TimeMs;
|
|
129
129
|
}
|
|
@@ -142,6 +142,13 @@ export interface ClipRemovedEventData {
|
|
|
142
142
|
export interface CanPlayChangeData {
|
|
143
143
|
canPlay: boolean;
|
|
144
144
|
}
|
|
145
|
+
export interface BufferingStateChangeData {
|
|
146
|
+
isBuffering: boolean;
|
|
147
|
+
}
|
|
148
|
+
export interface SourceLoadingChangeData {
|
|
149
|
+
isLoading: boolean;
|
|
150
|
+
pending: number;
|
|
151
|
+
}
|
|
145
152
|
export interface EventListener {
|
|
146
153
|
(event: TimelineEvent, data?: any): void;
|
|
147
154
|
}
|