easecut-react 1.1.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 (185) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +224 -0
  3. package/dist/.dist-D4zXwUWp.js +81 -0
  4. package/dist/assets/audio-waveform.worker-DiTI_wJb.js +353 -0
  5. package/dist/assets/fonts/alibaba-puhuiti-2-regular.woff2 +0 -0
  6. package/dist/assets/fonts/licenses/source-han-sans-OFL-1.1.txt +96 -0
  7. package/dist/assets/fonts/licenses/zcool-gaoduanhei-usage-statement.txt +52 -0
  8. package/dist/assets/fonts/source-han-sans-cn-regular.otf +0 -0
  9. package/dist/assets/fonts/zcool-canger-yuyang-w03.ttf +0 -0
  10. package/dist/assets/fonts/zcool-gaoduanhei.ttf +0 -0
  11. package/dist/assets/fonts/zcool-kuaile.ttf +0 -0
  12. package/dist/assets/fonts/zcool-kuhei.ttf +0 -0
  13. package/dist/assets/fonts/zcool-wenyi.ttf +0 -0
  14. package/dist/assets/fonts/zcool-xiaowei-logo.otf +0 -0
  15. package/dist/assets/frame-preview.worker-ruBHl77w.js +345 -0
  16. package/dist/assets/soundtouch-processor-BKTidsbT.js +2062 -0
  17. package/dist/index.js +10802 -0
  18. package/dist/styles.css +1 -0
  19. package/dist/types/editor/EaseCut.d.ts +4 -0
  20. package/dist/types/editor/EaseCut.d.ts.map +1 -0
  21. package/dist/types/editor/api/create-easecut-api.d.ts +12 -0
  22. package/dist/types/editor/api/create-easecut-api.d.ts.map +1 -0
  23. package/dist/types/editor/api/easecut-api-context.d.ts +12 -0
  24. package/dist/types/editor/api/easecut-api-context.d.ts.map +1 -0
  25. package/dist/types/editor/api/errors.d.ts +6 -0
  26. package/dist/types/editor/api/errors.d.ts.map +1 -0
  27. package/dist/types/editor/api/index.d.ts +3 -0
  28. package/dist/types/editor/api/index.d.ts.map +1 -0
  29. package/dist/types/editor/api/source-input.d.ts +7 -0
  30. package/dist/types/editor/api/source-input.d.ts.map +1 -0
  31. package/dist/types/editor/api/source-store.d.ts +16 -0
  32. package/dist/types/editor/api/source-store.d.ts.map +1 -0
  33. package/dist/types/editor/api/types.d.ts +78 -0
  34. package/dist/types/editor/api/types.d.ts.map +1 -0
  35. package/dist/types/editor/components/AudioFloatingInspector.d.ts +10 -0
  36. package/dist/types/editor/components/AudioFloatingInspector.d.ts.map +1 -0
  37. package/dist/types/editor/components/CanvasRatioPanel.d.ts +2 -0
  38. package/dist/types/editor/components/CanvasRatioPanel.d.ts.map +1 -0
  39. package/dist/types/editor/components/ExportMenu.d.ts +8 -0
  40. package/dist/types/editor/components/ExportMenu.d.ts.map +1 -0
  41. package/dist/types/editor/components/FloatingInspector.d.ts +11 -0
  42. package/dist/types/editor/components/FloatingInspector.d.ts.map +1 -0
  43. package/dist/types/editor/components/FloatingInspectorBasicPanel.d.ts +10 -0
  44. package/dist/types/editor/components/FloatingInspectorBasicPanel.d.ts.map +1 -0
  45. package/dist/types/editor/components/FloatingInspectorShell.d.ts +15 -0
  46. package/dist/types/editor/components/FloatingInspectorShell.d.ts.map +1 -0
  47. package/dist/types/editor/components/FloatingInspectorSpeedPanel.d.ts +7 -0
  48. package/dist/types/editor/components/FloatingInspectorSpeedPanel.d.ts.map +1 -0
  49. package/dist/types/editor/components/FormDialog.d.ts +16 -0
  50. package/dist/types/editor/components/FormDialog.d.ts.map +1 -0
  51. package/dist/types/editor/components/PreviewPanel.d.ts +9 -0
  52. package/dist/types/editor/components/PreviewPanel.d.ts.map +1 -0
  53. package/dist/types/editor/components/TextFloatingInspector.d.ts +12 -0
  54. package/dist/types/editor/components/TextFloatingInspector.d.ts.map +1 -0
  55. package/dist/types/editor/components/TimelineToolbar.d.ts +8 -0
  56. package/dist/types/editor/components/TimelineToolbar.d.ts.map +1 -0
  57. package/dist/types/editor/components/TitleContentTextarea.d.ts +8 -0
  58. package/dist/types/editor/components/TitleContentTextarea.d.ts.map +1 -0
  59. package/dist/types/editor/components/VideoFloatingInspector.d.ts +12 -0
  60. package/dist/types/editor/components/VideoFloatingInspector.d.ts.map +1 -0
  61. package/dist/types/editor/components/ui/ColorInput.d.ts +15 -0
  62. package/dist/types/editor/components/ui/ColorInput.d.ts.map +1 -0
  63. package/dist/types/editor/components/ui/IconButton.d.ts +15 -0
  64. package/dist/types/editor/components/ui/IconButton.d.ts.map +1 -0
  65. package/dist/types/editor/components/ui/InputNumber.d.ts +13 -0
  66. package/dist/types/editor/components/ui/InputNumber.d.ts.map +1 -0
  67. package/dist/types/editor/components/ui/Select.d.ts +14 -0
  68. package/dist/types/editor/components/ui/Select.d.ts.map +1 -0
  69. package/dist/types/editor/components/ui/TextInput.d.ts +10 -0
  70. package/dist/types/editor/components/ui/TextInput.d.ts.map +1 -0
  71. package/dist/types/editor/core/audio-waveform-bars.d.ts +50 -0
  72. package/dist/types/editor/core/audio-waveform-bars.d.ts.map +1 -0
  73. package/dist/types/editor/core/canvas-size.d.ts +44 -0
  74. package/dist/types/editor/core/canvas-size.d.ts.map +1 -0
  75. package/dist/types/editor/core/clip-speed.d.ts +11 -0
  76. package/dist/types/editor/core/clip-speed.d.ts.map +1 -0
  77. package/dist/types/editor/core/collision.d.ts +96 -0
  78. package/dist/types/editor/core/collision.d.ts.map +1 -0
  79. package/dist/types/editor/core/composition.d.ts +47 -0
  80. package/dist/types/editor/core/composition.d.ts.map +1 -0
  81. package/dist/types/editor/core/export-schema.d.ts +5 -0
  82. package/dist/types/editor/core/export-schema.d.ts.map +1 -0
  83. package/dist/types/editor/core/index.d.ts +11 -0
  84. package/dist/types/editor/core/index.d.ts.map +1 -0
  85. package/dist/types/editor/core/model.d.ts +187 -0
  86. package/dist/types/editor/core/model.d.ts.map +1 -0
  87. package/dist/types/editor/core/preview-snapping.d.ts +27 -0
  88. package/dist/types/editor/core/preview-snapping.d.ts.map +1 -0
  89. package/dist/types/editor/core/text-fonts.d.ts +76 -0
  90. package/dist/types/editor/core/text-fonts.d.ts.map +1 -0
  91. package/dist/types/editor/core/time.d.ts +15 -0
  92. package/dist/types/editor/core/time.d.ts.map +1 -0
  93. package/dist/types/editor/core/timeline-commands.d.ts +143 -0
  94. package/dist/types/editor/core/timeline-commands.d.ts.map +1 -0
  95. package/dist/types/editor/core/timeline-layout.d.ts +25 -0
  96. package/dist/types/editor/core/timeline-layout.d.ts.map +1 -0
  97. package/dist/types/editor/core/timeline-math.d.ts +22 -0
  98. package/dist/types/editor/core/timeline-math.d.ts.map +1 -0
  99. package/dist/types/editor/core/timeline-tracks.d.ts +47 -0
  100. package/dist/types/editor/core/timeline-tracks.d.ts.map +1 -0
  101. package/dist/types/editor/media/audio-waveform-peaks.d.ts +17 -0
  102. package/dist/types/editor/media/audio-waveform-peaks.d.ts.map +1 -0
  103. package/dist/types/editor/media/audio-waveform.d.ts +8 -0
  104. package/dist/types/editor/media/audio-waveform.d.ts.map +1 -0
  105. package/dist/types/editor/media/frame-preview.d.ts +25 -0
  106. package/dist/types/editor/media/frame-preview.d.ts.map +1 -0
  107. package/dist/types/editor/media/index.d.ts +6 -0
  108. package/dist/types/editor/media/index.d.ts.map +1 -0
  109. package/dist/types/editor/media/media-runtime.d.ts +47 -0
  110. package/dist/types/editor/media/media-runtime.d.ts.map +1 -0
  111. package/dist/types/editor/media/mediabunny-audio-waveform.d.ts +8 -0
  112. package/dist/types/editor/media/mediabunny-audio-waveform.d.ts.map +1 -0
  113. package/dist/types/editor/media/mediabunny-frame-preview.d.ts +21 -0
  114. package/dist/types/editor/media/mediabunny-frame-preview.d.ts.map +1 -0
  115. package/dist/types/editor/media/preview-audio-engine.d.ts +23 -0
  116. package/dist/types/editor/media/preview-audio-engine.d.ts.map +1 -0
  117. package/dist/types/editor/media/preview-playback-controller.d.ts +26 -0
  118. package/dist/types/editor/media/preview-playback-controller.d.ts.map +1 -0
  119. package/dist/types/editor/media/single-frame-preview.d.ts +30 -0
  120. package/dist/types/editor/media/single-frame-preview.d.ts.map +1 -0
  121. package/dist/types/editor/media/text-layout-runtime.d.ts +27 -0
  122. package/dist/types/editor/media/text-layout-runtime.d.ts.map +1 -0
  123. package/dist/types/editor/store/index.d.ts +3 -0
  124. package/dist/types/editor/store/index.d.ts.map +1 -0
  125. package/dist/types/editor/store/timeline-store-context.d.ts +14 -0
  126. package/dist/types/editor/store/timeline-store-context.d.ts.map +1 -0
  127. package/dist/types/editor/store/timeline-store.d.ts +115 -0
  128. package/dist/types/editor/store/timeline-store.d.ts.map +1 -0
  129. package/dist/types/editor/timeline/AudioWaveformCanvas.d.ts +13 -0
  130. package/dist/types/editor/timeline/AudioWaveformCanvas.d.ts.map +1 -0
  131. package/dist/types/editor/timeline/TimelineClip.d.ts +41 -0
  132. package/dist/types/editor/timeline/TimelineClip.d.ts.map +1 -0
  133. package/dist/types/editor/timeline/TimelineDragGhost.d.ts +9 -0
  134. package/dist/types/editor/timeline/TimelineDragGhost.d.ts.map +1 -0
  135. package/dist/types/editor/timeline/TimelinePanel.d.ts +11 -0
  136. package/dist/types/editor/timeline/TimelinePanel.d.ts.map +1 -0
  137. package/dist/types/editor/timeline/TimelineRuler.d.ts +14 -0
  138. package/dist/types/editor/timeline/TimelineRuler.d.ts.map +1 -0
  139. package/dist/types/editor/timeline/TimelineTrimHandle.d.ts +12 -0
  140. package/dist/types/editor/timeline/TimelineTrimHandle.d.ts.map +1 -0
  141. package/dist/types/editor/timeline/TimelineViewport.d.ts +8 -0
  142. package/dist/types/editor/timeline/TimelineViewport.d.ts.map +1 -0
  143. package/dist/types/editor/timeline/clip-reveal.d.ts +29 -0
  144. package/dist/types/editor/timeline/clip-reveal.d.ts.map +1 -0
  145. package/dist/types/editor/timeline/timeline-interaction.d.ts +79 -0
  146. package/dist/types/editor/timeline/timeline-interaction.d.ts.map +1 -0
  147. package/dist/types/editor/timeline/useTimelineController.d.ts +22 -0
  148. package/dist/types/editor/timeline/useTimelineController.d.ts.map +1 -0
  149. package/dist/types/editor/types.d.ts +52 -0
  150. package/dist/types/editor/types.d.ts.map +1 -0
  151. package/dist/types/editor/util/abort-error.d.ts +3 -0
  152. package/dist/types/editor/util/abort-error.d.ts.map +1 -0
  153. package/dist/types/editor/util/browser.d.ts +5 -0
  154. package/dist/types/editor/util/browser.d.ts.map +1 -0
  155. package/dist/types/editor/util/format-canvas-font.d.ts +7 -0
  156. package/dist/types/editor/util/format-canvas-font.d.ts.map +1 -0
  157. package/dist/types/editor/util/format-media-label.d.ts +4 -0
  158. package/dist/types/editor/util/format-media-label.d.ts.map +1 -0
  159. package/dist/types/editor/util/format-text-color.d.ts +4 -0
  160. package/dist/types/editor/util/format-text-color.d.ts.map +1 -0
  161. package/dist/types/editor/util/format-timeline-time.d.ts +6 -0
  162. package/dist/types/editor/util/format-timeline-time.d.ts.map +1 -0
  163. package/dist/types/editor/util/id.d.ts +2 -0
  164. package/dist/types/editor/util/id.d.ts.map +1 -0
  165. package/dist/types/editor/util/media-file-format.d.ts +6 -0
  166. package/dist/types/editor/util/media-file-format.d.ts.map +1 -0
  167. package/dist/types/editor/util/number.d.ts +6 -0
  168. package/dist/types/editor/util/number.d.ts.map +1 -0
  169. package/dist/types/editor/util/text.d.ts +2 -0
  170. package/dist/types/editor/util/text.d.ts.map +1 -0
  171. package/dist/types/editor/util/url.d.ts +5 -0
  172. package/dist/types/editor/util/url.d.ts.map +1 -0
  173. package/dist/types/editor/util/value.d.ts +3 -0
  174. package/dist/types/editor/util/value.d.ts.map +1 -0
  175. package/dist/types/editor/workers/audio-waveform-protocol.d.ts +24 -0
  176. package/dist/types/editor/workers/audio-waveform-protocol.d.ts.map +1 -0
  177. package/dist/types/editor/workers/audio-waveform.worker.d.ts +2 -0
  178. package/dist/types/editor/workers/audio-waveform.worker.d.ts.map +1 -0
  179. package/dist/types/editor/workers/frame-preview-protocol.d.ts +35 -0
  180. package/dist/types/editor/workers/frame-preview-protocol.d.ts.map +1 -0
  181. package/dist/types/editor/workers/frame-preview.worker.d.ts +2 -0
  182. package/dist/types/editor/workers/frame-preview.worker.d.ts.map +1 -0
  183. package/dist/types/index.d.ts +7 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/package.json +74 -0
@@ -0,0 +1,115 @@
1
+ import { type StoreApi } from 'zustand/vanilla';
2
+ import { type AddMediaClipParams, type AddTextClipParams, type MoveClipParams, type ChangeTextClipPropertiesParams, type ChangeTextClipTimingParams, type ChangeClipSpeedParams, type ChangeClipHiddenParams, type TrimClipParams, type UpdateTimelineClipParams } from '../core/timeline-commands';
3
+ export { COMPOSITION_CANVAS_PRESETS, DEFAULT_COMPOSITION_CANVAS_SIZE, getOriginalCanvasSize, type CompositionCanvasPreset, type CompositionCanvasSelection, } from '../core/canvas-size';
4
+ export { AUDIO_SOURCE_TRACK_ID_PREFIX, AUDIO_TRACK_ID_PREFIX, DYNAMIC_VIDEO_TRACK_ID_PREFIX, MAIN_VIDEO_TRACK_ID, TEXT_TRACK_ID_PREFIX, isDynamicVideoTrack, normalizeTimelineTracks, type TrackDropTarget, type TrackInsertTarget, } from '../core/timeline-tracks';
5
+ export { canSplitClipAtTime, createDefaultClipTransform, getTrimmedClip, getTrimmedTimelineClips, MIN_CLIP_TRANSFORM_SIZE, normalizeClipVolume, normalizeClipTransform, normalizeTimelineClips, } from '../core/timeline-commands';
6
+ import type { CompositionExportPayload, TimelineCanvasSize, TimelineClip, TimelineClipPosition, TimelineClipTransform, TimelineSnapshot, TimelineTrack, VideoTimelineDraft, VideoTimelineSource } from '../types';
7
+ import { type TimelineCanvasSelection } from '../core/model';
8
+ export declare const VIDEO_TIMELINE_DRAFT_SCHEMA_VERSION = 12;
9
+ export declare const DEFAULT_VIDEO_SOURCE_DURATION_US: number;
10
+ export declare const MIN_SPLIT_CLIP_DURATION_US: number;
11
+ export type CommitClipDropParams = MoveClipParams;
12
+ export type CommitClipSpeedParams = ChangeClipSpeedParams;
13
+ export type CommitClipHiddenParams = ChangeClipHiddenParams;
14
+ export type CommitClipTrimParams = TrimClipParams;
15
+ export type AddTextClipCommand = Pick<AddTextClipParams, 'layoutSize' | 'startUs' | 'text'>;
16
+ export type AddMediaClipCommand = Omit<AddMediaClipParams, 'canvasSize'>;
17
+ export type CommitClipPositionParams = {
18
+ clipId: string;
19
+ position: TimelineClipPosition;
20
+ };
21
+ export type CommitMediaClipTransformParams = {
22
+ clipId: string;
23
+ transform: TimelineClipTransform;
24
+ };
25
+ export type TimelineContinuousEdit = {
26
+ clipId: string;
27
+ kind: 'text-style';
28
+ phase: 'active' | 'awaiting-change';
29
+ preview: {
30
+ fontColor: string;
31
+ };
32
+ token: number;
33
+ };
34
+ type TimelineHistorySnapshot = TimelineSnapshot & {
35
+ canvasLayoutReferenceSize: TimelineCanvasSize;
36
+ };
37
+ export type ResetTimelineParams = {
38
+ draft?: VideoTimelineDraft;
39
+ sources?: VideoTimelineSource[];
40
+ };
41
+ export type TimelineState = {
42
+ canvasLayoutReferenceSize: TimelineCanvasSize;
43
+ canvasSnappingEnabled: boolean;
44
+ canvasSelection: TimelineCanvasSelection | null;
45
+ canvasSize: TimelineCanvasSize;
46
+ clipInfoVisible: boolean;
47
+ clips: TimelineClip[];
48
+ continuousEdit: TimelineContinuousEdit | null;
49
+ copiedClip: TimelineClip | null;
50
+ currentTimeUs: number;
51
+ future: TimelineHistorySnapshot[];
52
+ isPlaying: boolean;
53
+ layoutRevision: number;
54
+ originalCanvasSize: TimelineCanvasSize | null;
55
+ past: TimelineHistorySnapshot[];
56
+ pendingClipRevealId: string | null;
57
+ pixelsPerSecond: number;
58
+ playheadFollowEnabled: boolean;
59
+ selectedClipId: string | null;
60
+ snappingEnabled: boolean;
61
+ tracks: TimelineTrack[];
62
+ };
63
+ export type TimelineDraftSource = Pick<TimelineState, 'canvasSize' | 'clips' | 'tracks'>;
64
+ export type TimelineActions = {
65
+ acknowledgeClipReveal: (clipId: string) => void;
66
+ addMediaClip: (params: AddMediaClipCommand) => string | null;
67
+ addTextClip: (params: AddTextClipCommand) => string | null;
68
+ beginTextStyleEdit: (clipId: string) => number | null;
69
+ cancelTextStyleEdit: (clipId: string, token?: number) => void;
70
+ commitCanvasSize: (selection: TimelineCanvasSelection) => void;
71
+ commitClipDrop: (params: CommitClipDropParams) => void;
72
+ commitClipPosition: (params: CommitClipPositionParams) => void;
73
+ commitClipSpeed: (params: CommitClipSpeedParams) => void;
74
+ commitMediaClipTransform: (params: CommitMediaClipTransformParams) => void;
75
+ commitClipTrim: (params: CommitClipTrimParams) => void;
76
+ commitClipVolume: (clipId: string, previousVolume: number, volume: number) => void;
77
+ commitTextClipProperties: (params: ChangeTextClipPropertiesParams) => void;
78
+ commitTextStyleEdit: (clipId: string, token: number, fontColor: string) => void;
79
+ commitTextClipTiming: (params: ChangeTextClipTimingParams) => void;
80
+ copySelectedClip: () => void;
81
+ createExportPayload: () => CompositionExportPayload;
82
+ deleteSelectedClip: () => void;
83
+ discardSourceFromHistory: (sourceId: string) => void;
84
+ pasteCopiedClip: () => void;
85
+ previewTextStyleEdit: (clipId: string, token: number, fontColor: string) => void;
86
+ redo: () => void;
87
+ refreshSources: (sources: VideoTimelineSource[]) => void;
88
+ removeClip: (clipId: string) => boolean;
89
+ resetTimeline: (params?: ResetTimelineParams) => void;
90
+ restoreClipTrim: (clipId: string) => void;
91
+ selectClip: (clipId: string | null) => void;
92
+ setCurrentTimeUs: (timeUs: number) => void;
93
+ setIsPlaying: (isPlaying: boolean) => void;
94
+ setPixelsPerSecond: (pixelsPerSecond: number) => void;
95
+ setClipVolume: (clipId: string, volume: number) => void;
96
+ setClipHidden: (clipId: string, hidden: boolean) => void;
97
+ splitAtPlayhead: () => void;
98
+ splitClipAtTime: (clipId: string, timeUs: number) => void;
99
+ suspendTextStyleEdit: (clipId: string, token: number) => void;
100
+ toggleCanvasSnapping: () => void;
101
+ toggleClipInfoVisibility: () => void;
102
+ togglePlayheadFollow: () => void;
103
+ toggleSnapping: () => void;
104
+ toggleTrackMute: (trackId: string) => void;
105
+ undo: () => void;
106
+ updateClip: (params: UpdateTimelineClipParams) => boolean;
107
+ };
108
+ export type TimelineStore = TimelineState & TimelineActions;
109
+ export type TimelineStoreApi = StoreApi<TimelineStore>;
110
+ export declare const createTimelineClipsFromSources: (sources: readonly VideoTimelineSource[], canvasSize: TimelineCanvasSize) => TimelineClip[];
111
+ export declare const createVideoTimelineDraft: (state: TimelineDraftSource) => VideoTimelineDraft;
112
+ export declare const createTimelineStore: (params?: ResetTimelineParams) => TimelineStoreApi;
113
+ export declare const selectTimelineDuration: (state: Pick<TimelineState, "clips">) => number;
114
+ export declare const selectHasAudibleMedia: (state: Pick<TimelineState, "clips" | "tracks">) => boolean;
115
+ //# sourceMappingURL=timeline-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-store.d.ts","sourceRoot":"","sources":["../../../../src/editor/store/timeline-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ type AudioWaveformCanvasProps = {
2
+ left: number;
3
+ pixelsPerSecond: number;
4
+ samples: readonly number[];
5
+ sourceDurationUs: number;
6
+ sourceStartUs: number;
7
+ tileIndex: number;
8
+ volume: number;
9
+ width: number;
10
+ };
11
+ export declare function AudioWaveformCanvas({ left, pixelsPerSecond, samples, sourceDurationUs, sourceStartUs, tileIndex, volume, width, }: AudioWaveformCanvasProps): import("react").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=AudioWaveformCanvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioWaveformCanvas.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/AudioWaveformCanvas.tsx"],"names":[],"mappings":"AAOA,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAmBF,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,MAAM,EACN,KAAK,GACN,EAAE,wBAAwB,+BAwJ1B"}
@@ -0,0 +1,41 @@
1
+ import { type PointerEvent } from 'react';
2
+ import type { TimelineClip, TimelineClipTrimEdge } from '../types';
3
+ export type TimelineClipViewProps = {
4
+ canPaste: boolean;
5
+ canSplitAt: (timeUs: number) => boolean;
6
+ clip: TimelineClip;
7
+ activeTrimEdge: TimelineClipTrimEdge | null;
8
+ isSelected: boolean;
9
+ left: number;
10
+ onCopy: () => void;
11
+ onDelete: () => void;
12
+ onDownload: () => void | Promise<void>;
13
+ onHiddenChange: (hidden: boolean) => void;
14
+ onMoveStart: (event: PointerEvent<HTMLElement>, clip: TimelineClip) => void;
15
+ onPaste: () => void;
16
+ onSelect: (clipId: string) => void;
17
+ onSplit: (timeUs: number) => void;
18
+ onTrimStart: (event: PointerEvent<HTMLElement>, clip: TimelineClip, edge: TimelineClipTrimEdge) => void;
19
+ onVolumeStart: (event: PointerEvent<HTMLElement>, clip: TimelineClip) => void;
20
+ pixelsPerSecond: number;
21
+ showClipInfo: boolean;
22
+ visibleTimeEndUs: number;
23
+ visibleTimeStartUs: number;
24
+ width: number;
25
+ };
26
+ export declare function TimelineClipView({ activeTrimEdge, canPaste, canSplitAt, clip, isSelected, left, onCopy, onDelete, onDownload, onHiddenChange, onMoveStart, onPaste, onSelect, onSplit, onTrimStart, onVolumeStart, pixelsPerSecond, showClipInfo, visibleTimeEndUs, visibleTimeStartUs, width, }: TimelineClipViewProps): import("react").JSX.Element;
27
+ type TimelineClipDragOverlayProps = {
28
+ clip: TimelineClip;
29
+ height: number;
30
+ left: number;
31
+ pixelsPerSecond: number;
32
+ showClipInfo: boolean;
33
+ timelineStartUs: number;
34
+ top: number;
35
+ visibleTimeEndUs: number;
36
+ visibleTimeStartUs: number;
37
+ width: number;
38
+ };
39
+ export declare function TimelineClipDragOverlay({ clip, height, left, pixelsPerSecond, showClipInfo, timelineStartUs, top, visibleTimeEndUs, visibleTimeStartUs, width, }: TimelineClipDragOverlayProps): import("react").JSX.Element;
40
+ export {};
41
+ //# sourceMappingURL=TimelineClip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineClip.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/TimelineClip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAsCf,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAYnE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,CACX,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,EAChC,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,oBAAoB,KACvB,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC9E,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA2PF,wBAAgB,gBAAgB,CAAC,EAC/B,cAAc,EACd,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,cAAc,EACd,WAAW,EACX,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,GACN,EAAE,qBAAqB,+BAgLvB;AAED,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,eAAe,EACf,YAAY,EACZ,eAAe,EACf,GAAG,EACH,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,GACN,EAAE,4BAA4B,+BA+C9B"}
@@ -0,0 +1,9 @@
1
+ type TimelineDragGhostProps = {
2
+ left: number;
3
+ snapped: boolean;
4
+ trackChanged: boolean;
5
+ width: number;
6
+ };
7
+ export declare function TimelineDragGhost({ left, snapped, trackChanged, width, }: TimelineDragGhostProps): import("react").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=TimelineDragGhost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineDragGhost.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/TimelineDragGhost.tsx"],"names":[],"mappings":"AAEA,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,KAAK,GACN,EAAE,sBAAsB,+BAUxB"}
@@ -0,0 +1,11 @@
1
+ import type { TimelineClip, TimelineClipTimingPreview } from '../types';
2
+ type TimelinePanelProps = {
3
+ onRequestAddTitle: () => void;
4
+ onClipTimingPreviewChange?: (preview: TimelineClipTimingPreview | null) => void;
5
+ onDownloadClip: (clip: TimelineClip) => void | Promise<void>;
6
+ onRequestImport?: () => void;
7
+ onRequestPreviewFullscreen: () => void;
8
+ };
9
+ export declare function TimelinePanel({ onRequestAddTitle, onClipTimingPreviewChange, onDownloadClip, onRequestImport, onRequestPreviewFullscreen, }: TimelinePanelProps): import("react").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=TimelinePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelinePanel.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/TimelinePanel.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAiDxE,KAAK,kBAAkB,GAAG;IACxB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,yBAAyB,CAAC,EAAE,CAC1B,OAAO,EAAE,yBAAyB,GAAG,IAAI,KACtC,IAAI,CAAC;IACV,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,0BAA0B,EAAE,MAAM,IAAI,CAAC;CACxC,CAAC;AAgOF,wBAAgB,aAAa,CAAC,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,0BAA0B,GAC3B,EAAE,kBAAkB,+BAcpB"}
@@ -0,0 +1,14 @@
1
+ import type { PointerEvent } from 'react';
2
+ import type { CompositionVideoGap } from '../core/composition';
3
+ type TimelineRulerProps = {
4
+ currentTimeUs: number;
5
+ durationUs: number;
6
+ gaps: readonly CompositionVideoGap[];
7
+ onPointerDown: (event: PointerEvent<HTMLElement>) => void;
8
+ pixelsPerSecond: number;
9
+ visibleTimeEndUs: number;
10
+ visibleTimeStartUs: number;
11
+ };
12
+ export declare function TimelineRuler({ currentTimeUs, durationUs, gaps, onPointerDown, pixelsPerSecond, visibleTimeEndUs, visibleTimeStartUs, }: TimelineRulerProps): import("react").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=TimelineRuler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineRuler.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/TimelineRuler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAQzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM/D,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,UAAU,EACV,IAAI,EACJ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,EAAE,kBAAkB,+BAyFpB"}
@@ -0,0 +1,12 @@
1
+ import { type PointerEvent } from 'react';
2
+ import type { TimelineClip, TimelineClipTrimEdge } from '../types';
3
+ export type TimelineTrimHandleProps = {
4
+ active: boolean;
5
+ clip: TimelineClip;
6
+ edge: TimelineClipTrimEdge;
7
+ label: string;
8
+ onPointerDown: (event: PointerEvent<HTMLButtonElement>) => void;
9
+ trimmed: boolean;
10
+ };
11
+ export declare function TimelineTrimHandle({ active, clip, edge, label, onPointerDown, trimmed, }: TimelineTrimHandleProps): import("react").JSX.Element;
12
+ //# sourceMappingURL=TimelineTrimHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineTrimHandle.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/TimelineTrimHandle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAWnE,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAChE,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,aAAa,EACb,OAAO,GACR,EAAE,uBAAuB,+BA8IzB"}
@@ -0,0 +1,8 @@
1
+ import type { TimelineClip, TimelineClipTimingPreview } from '../types';
2
+ type TimelineViewportProps = {
3
+ onClipTimingPreviewChange?: (preview: TimelineClipTimingPreview | null) => void;
4
+ onDownloadClip?: (clip: TimelineClip) => void | Promise<void>;
5
+ };
6
+ export declare function TimelineViewport({ onClipTimingPreviewChange, onDownloadClip, }: TimelineViewportProps): import("react").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=TimelineViewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineViewport.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/TimelineViewport.tsx"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAaxE,KAAK,qBAAqB,GAAG;IAC3B,yBAAyB,CAAC,EAAE,CAC1B,OAAO,EAAE,yBAAyB,GAAG,IAAI,KACtC,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,yBAAyB,EACzB,cAAc,GACf,EAAE,qBAAqB,+BA+nBvB"}
@@ -0,0 +1,29 @@
1
+ type Bounds = {
2
+ bottom: number;
3
+ left: number;
4
+ right: number;
5
+ top: number;
6
+ };
7
+ type TrackBounds = Pick<Bounds, 'bottom' | 'top'>;
8
+ type TimelineViewportGeometry = {
9
+ height: number;
10
+ left: number;
11
+ scrollHeight: number;
12
+ scrollLeft: number;
13
+ scrollTop: number;
14
+ scrollWidth: number;
15
+ top: number;
16
+ width: number;
17
+ };
18
+ export type ClipRevealGeometry = {
19
+ clip: Bounds;
20
+ track: TrackBounds;
21
+ viewport: TimelineViewportGeometry;
22
+ };
23
+ export type ClipRevealScrollPosition = {
24
+ left: number;
25
+ top: number;
26
+ };
27
+ export declare const getClipRevealScrollPosition: ({ clip, track, viewport, }: ClipRevealGeometry) => ClipRevealScrollPosition;
28
+ export {};
29
+ //# sourceMappingURL=clip-reveal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clip-reveal.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/clip-reveal.ts"],"names":[],"mappings":"AAAA,KAAK,MAAM,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;AAElD,KAAK,wBAAwB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAeF,eAAO,MAAM,2BAA2B,GAAI,4BAIzC,kBAAkB,KAAG,wBAiCvB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { TrackDropTarget, TrackInsertTarget } from '../core/timeline-tracks';
2
+ import type { TimelineClip, TimelineClipTrimEdge, TimelineTrack } from '../types';
3
+ type ContentPoint = {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ export type MoveGesture = {
8
+ clip: TimelineClip;
9
+ clips: TimelineClip[];
10
+ currentTimeUs: number;
11
+ grabOffsetTimeUs: number;
12
+ grabOffsetY: number;
13
+ initialClientX: number;
14
+ initialClientY: number;
15
+ kind: 'move';
16
+ pixelsPerSecond: number;
17
+ pointerId: number;
18
+ snappingEnabled: boolean;
19
+ tracks: TimelineTrack[];
20
+ };
21
+ export type TrimGesture = {
22
+ clip: TimelineClip;
23
+ clips: TimelineClip[];
24
+ edge: TimelineClipTrimEdge;
25
+ initialPointerTimeUs: number;
26
+ kind: 'trim';
27
+ pixelsPerSecond: number;
28
+ pointerId: number;
29
+ snapCandidates: number[];
30
+ snappingEnabled: boolean;
31
+ };
32
+ export type ScrubGesture = {
33
+ kind: 'scrub';
34
+ pixelsPerSecond: number;
35
+ pointerId: number;
36
+ snapCandidates: number[];
37
+ snappingEnabled: boolean;
38
+ };
39
+ export type VolumeGesture = {
40
+ clipId: string;
41
+ height: number;
42
+ kind: 'volume';
43
+ pointerId: number;
44
+ previousVolume: number;
45
+ top: number;
46
+ };
47
+ export type TimelineGesture = MoveGesture | ScrubGesture | TrimGesture | VolumeGesture;
48
+ export type ClipDropPreview = {
49
+ clipId: string;
50
+ clips: TimelineClip[];
51
+ dragTop: number;
52
+ insertionIndex: number;
53
+ insertLineY: number | null;
54
+ originStartUs: number;
55
+ originTrackId: string;
56
+ rawStartUs: number;
57
+ snapTimeUs: number | null;
58
+ startUs: number;
59
+ target: TrackDropTarget | null;
60
+ };
61
+ export type TrimPreview = {
62
+ clipId: string;
63
+ durationUs: number;
64
+ edge: TimelineClipTrimEdge;
65
+ snapTimeUs: number | null;
66
+ startUs: number;
67
+ timeUs: number;
68
+ };
69
+ export declare const DRAG_ACTIVATION_DISTANCE = 4;
70
+ export declare const TRACK_INSERT_ACQUIRE_DISTANCE = 4;
71
+ export declare const TRACK_INSERT_RELEASE_DISTANCE = 6;
72
+ export declare const getContentPoint: (viewport: HTMLDivElement | null, clientX: number, clientY: number) => ContentPoint | null;
73
+ export declare const getTrackInsertTargetAtY: (tracks: TimelineTrack[], type: TimelineClip["type"], pointerY: number, previousInsert?: TrackInsertTarget | null) => TrackInsertTarget | null;
74
+ export declare const planClipDrop: (gesture: MoveGesture, point: ContentPoint, previousPreview?: ClipDropPreview | null) => ClipDropPreview;
75
+ export declare const planClipTrim: (gesture: TrimGesture, pointerTimeUs: number) => TrimPreview;
76
+ export declare const getVolumeAtPointer: (gesture: Pick<VolumeGesture, "height" | "top">, clientY: number) => number;
77
+ export declare const getTimelineContentDurationUs: (clips: TimelineClip[]) => number;
78
+ export {};
79
+ //# sourceMappingURL=timeline-interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-interaction.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/timeline-interaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type PointerEvent as ReactPointerEvent, type RefObject } from 'react';
2
+ import type { TimelineClip, TimelineClipTimingPreview, TimelineClipTrimEdge } from '../types';
3
+ import { type ClipDropPreview, type TrimPreview } from './timeline-interaction';
4
+ type TimelineControllerOptions = {
5
+ gridRef: RefObject<HTMLDivElement | null>;
6
+ onClipTimingPreviewChange?: (preview: TimelineClipTimingPreview | null) => void;
7
+ viewportRef: RefObject<HTMLDivElement | null>;
8
+ };
9
+ export declare function useTimelineController({ gridRef, onClipTimingPreviewChange, viewportRef, }: TimelineControllerOptions): {
10
+ beginMove: (event: ReactPointerEvent<HTMLElement>, clip: TimelineClip) => void;
11
+ beginPlayheadScrub: (event: ReactPointerEvent<HTMLElement>) => void;
12
+ beginScrub: (event: ReactPointerEvent<HTMLElement>, preserveSelection?: boolean) => void;
13
+ beginTrim: (event: ReactPointerEvent<HTMLElement>, clip: TimelineClip, edge: TimelineClipTrimEdge) => void;
14
+ beginVolume: (event: ReactPointerEvent<HTMLElement>, clip: TimelineClip) => void;
15
+ displayClips: TimelineClip[];
16
+ dropPreview: ClipDropPreview | null;
17
+ isInteracting: boolean;
18
+ isScrubbing: boolean;
19
+ trimPreview: TrimPreview | null;
20
+ };
21
+ export {};
22
+ //# sourceMappingURL=useTimelineController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimelineController.d.ts","sourceRoot":"","sources":["../../../../src/editor/timeline/useTimelineController.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,IAAI,iBAAiB,EACtC,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAuBf,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAML,KAAK,eAAe,EAGpB,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC1C,yBAAyB,CAAC,EAAE,CAC1B,OAAO,EAAE,yBAAyB,GAAG,IAAI,KACtC,IAAI,CAAC;IACV,WAAW,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAC/C,CAAC;AASF,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,yBAAyB,EACzB,WAAW,GACZ,EAAE,yBAAyB;uBAoMjB,iBAAiB,CAAC,WAAW,CAAC,QAC/B,YAAY;gCA8Ie,iBAAiB,CAAC,WAAW,CAAC;wBApCxD,iBAAiB,CAAC,WAAW,CAAC;uBA9C9B,iBAAiB,CAAC,WAAW,CAAC,QAC/B,YAAY,QACZ,oBAAoB;yBAqFnB,iBAAiB,CAAC,WAAW,CAAC,QAC/B,YAAY;;;;;;EAqCrB"}
@@ -0,0 +1,52 @@
1
+ import type { CSSProperties } from 'react';
2
+ import type { CompositionExportPayload, TimelineCanvasSize, TimelineClip, TimelineClipSpeed, TimelineClipTransform, TimelineMediaType, TimelineProject, TimelineTrack, TimelineClipVolume, TimelineSource } from './core/model';
3
+ export type { TimelineCanvasSize, TimelineClip, TimelineClipType, TimelineMediaClip, TimelineTimedMediaType, TimelineAudioClip, TimelineImageClip, TimelineTimedMediaClip, TimelineVideoClip, TimelineVisualMediaClip, TimelineClipPosition, TimelineClipSpeed, TimelineClipTimingPreview, TimelineClipTransform, TimelineMediaType, TimelineProject, TimelineTextClip, TimelineTextLayoutSize, TimelineSnapshot, TimelineTrack, TimelineTrackType, TimelineClipVolume, } from './core/model';
4
+ export type VideoTimelineMediaType = TimelineMediaType;
5
+ export type { TimelineTextFontPreset, TimelineTextFontType, } from './core/text-fonts';
6
+ export type VideoTimelineClipTrimEdge = 'start' | 'end';
7
+ export type VideoTimelineClipSpeed = TimelineClipSpeed;
8
+ export type VideoTimelineClipVolume = TimelineClipVolume;
9
+ export type VideoTimelineTrack = TimelineTrack;
10
+ export type VideoTimelineTrackDraft = TimelineTrack;
11
+ export type VideoTimelineClipTransform = TimelineClipTransform;
12
+ export type VideoTimelineClip = TimelineClip;
13
+ export type VideoTimelineClipDraft = TimelineClip;
14
+ export type VideoTimelineCanvasSize = TimelineCanvasSize;
15
+ export type VideoTimelineSource = TimelineSource;
16
+ export type VideoTimelineDraft = TimelineProject;
17
+ export type EaseCutMediaMetadata = {
18
+ durationUs?: number;
19
+ height?: number;
20
+ width?: number;
21
+ };
22
+ export interface EaseCutMediaLoader {
23
+ loadBlob(url: string, options: {
24
+ signal: AbortSignal;
25
+ source?: VideoTimelineSource;
26
+ }): Promise<Blob>;
27
+ loadMetadata?(source: VideoTimelineSource, options: {
28
+ signal: AbortSignal;
29
+ }): Promise<EaseCutMediaMetadata | null>;
30
+ }
31
+ export type { CompositionExportCanvas, CompositionExportClip, CompositionExportImageClip, CompositionExportMediaClip, CompositionExportPayload, CompositionExportSpeed, CompositionExportTransform, CompositionExportTrim, CompositionExportTextClip, CompositionExportTimedMediaClip, CompositionExportVolume, } from './core/model';
32
+ export type EaseCutExportRequest = {
33
+ draft: VideoTimelineDraft;
34
+ payload: CompositionExportPayload;
35
+ };
36
+ export type EaseCutProps = {
37
+ initialDraft?: VideoTimelineDraft;
38
+ title?: string;
39
+ className?: string;
40
+ style?: CSSProperties;
41
+ jsonFileName?: string;
42
+ mediaLoader?: EaseCutMediaLoader;
43
+ onSourcesChange?: (sources: VideoTimelineSource[]) => void;
44
+ onDraftChange?: (draft: VideoTimelineDraft) => void;
45
+ onExport?: (request: EaseCutExportRequest) => void | Promise<void>;
46
+ onClose?: () => void;
47
+ };
48
+ /** Internal aliases retained to keep the timeline implementation concise. */
49
+ export type TimelineClipTrimEdge = VideoTimelineClipTrimEdge;
50
+ export type TimelineTrackDraft = VideoTimelineTrackDraft;
51
+ export type TimelineClipDraft = VideoTimelineClipDraft;
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/editor/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const createAbortError: (message: string) => DOMException;
2
+ export declare const isAbortError: (error: unknown) => boolean;
3
+ //# sourceMappingURL=abort-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-error.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/abort-error.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,iBACP,CAAC;AAE1C,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,YAGS,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const isJsdomEnvironment: () => boolean;
2
+ export declare const supportsPopover: () => boolean;
3
+ export declare const supportsAnchorPositioning: () => boolean;
4
+ export declare const shouldIgnoreShortcutTarget: (target: EventTarget | null) => boolean;
5
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/browser.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,eAEsB,CAAC;AAEtD,eAAO,MAAM,eAAe,eAE6B,CAAC;AAE1D,eAAO,MAAM,yBAAyB,eAIO,CAAC;AAE9C,eAAO,MAAM,0BAA0B,GAAI,QAAQ,WAAW,GAAG,IAAI,YAO/D,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type CanvasFontStyle = Readonly<{
2
+ bold: boolean;
3
+ fontSize: number;
4
+ italic: boolean;
5
+ }>;
6
+ export declare const createTextCanvasFont: (style: CanvasFontStyle, fontFamily: string) => string;
7
+ //# sourceMappingURL=format-canvas-font.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-canvas-font.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/format-canvas-font.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC;AAEH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,eAAe,EACtB,YAAY,MAAM,WAE0F,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TimelineClip, TimelineMediaType } from '../core/model';
2
+ export declare const getTimelineClipLabel: (clip: TimelineClip) => string;
3
+ export declare const formatTimelineMediaType: (type: TimelineMediaType) => "视频" | "图片" | "音频";
4
+ //# sourceMappingURL=format-media-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-media-label.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/format-media-label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAErE,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,WACT,CAAC;AAE/C,eAAO,MAAM,uBAAuB,GAAI,MAAM,iBAAiB,uBACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const getRgbHexColor: (rgbaHexColor: string) => string;
2
+ export declare const replaceRgbHexColor: (rgbaHexColor: string, rgbHexColor: string) => string;
3
+ export declare const formatHexRgbaColor: (rgbaHexColor: string) => string;
4
+ //# sourceMappingURL=format-text-color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-text-color.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/format-text-color.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,cAAc,MAAM,WACzB,CAAC;AAE3B,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,aAAa,MAAM,WACsC,CAAC;AAE5D,eAAO,MAAM,kBAAkB,GAAI,cAAc,MAAM,WAMtD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Formats microseconds as minutes, seconds, and centiseconds (MM:SS:CC). */
2
+ export declare const formatTimelineTime: (timeUs: number) => string;
3
+ export declare const formatTimelineRulerTime: (timeUs: number) => string;
4
+ export declare const formatTimelineDateTime: (timeUs: number) => string;
5
+ export declare const formatTimelineSeconds: (timeUs: number, fractionDigits?: number) => string;
6
+ //# sourceMappingURL=format-timeline-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-timeline-time.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/format-timeline-time.ts"],"names":[],"mappings":"AAYA,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,WAiBhD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,WAWrD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,WACd,CAAC;AAExC,eAAO,MAAM,qBAAqB,GAChC,QAAQ,MAAM,EACd,uBAAkB,WAC6C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getNextNumberedId: (existingIds: Iterable<string>, prefix: string) => string;
2
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/id.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,GAC5B,aAAa,QAAQ,CAAC,MAAM,CAAC,EAC7B,QAAQ,MAAM,WAMf,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TimelineMediaType } from '../core/model';
2
+ export type DetectedImageFileFormat = 'jpeg' | 'png';
3
+ export declare const inferMediaTypeFromExtension: (extension: string) => TimelineMediaType | null;
4
+ export declare const inferMediaTypeFromUrl: (url: URL) => TimelineMediaType | null;
5
+ export declare const detectImageFileFormat: (header: Uint8Array) => DetectedImageFileFormat | null;
6
+ //# sourceMappingURL=media-file-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-file-format.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/media-file-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAavD,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,eAAO,MAAM,2BAA2B,GACtC,WAAW,MAAM,KAChB,iBAAiB,GAAG,IAMtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAK,GAAG,6BAG7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,UAAU,KACjB,uBAAuB,GAAG,IAmB5B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const clampNumber: (value: number, min?: number, max?: number) => number;
2
+ export declare const addDecimalStep: (value: number, step: number, direction: 1 | -1) => number;
3
+ export declare const isPositiveFiniteNumber: (value: number | undefined) => value is number;
4
+ export declare const isNonNegativeFiniteNumber: (value: unknown) => value is number;
5
+ export declare const normalizeNonNegativeFiniteNumber: (value: number) => number;
6
+ //# sourceMappingURL=number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/number.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,MAAM,WAIlE,CAAC;AASJ,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,WAAW,CAAC,GAAG,CAAC,CAAC,WAalB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,GAAG,SAAS,KACxB,KAAK,IAAI,MACsD,CAAC;AAEnE,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACD,CAAC;AAEpE,eAAO,MAAM,gCAAgC,GAAI,OAAO,MAAM,WAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const replaceLineBreaksWithSpaces: (value: string) => string;
2
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/text.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,GAAI,OAAO,MAAM,WACzB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const tryParseUrl: (value: string, baseUrl?: string) => URL | null;
2
+ export declare const isHttpUrl: (url: URL) => boolean;
3
+ export declare const getUrlFileName: (url: URL) => string | null;
4
+ export declare const getUrlFileExtension: (url: URL) => string | null;
5
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/url.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,eAM1D,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,GAAG,YACqB,CAAC;AAExD,eAAO,MAAM,cAAc,GAAI,KAAK,GAAG,kBAGtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,KAAK,GAAG,kBAC6B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
2
+ export declare const areStringRecordsEqual: (left: Readonly<Record<string, string>>, right: Readonly<Record<string, string>>) => boolean;
3
+ //# sourceMappingURL=value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/editor/util/value.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAC5B,CAAC;AAE9C,eAAO,MAAM,qBAAqB,GAChC,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,YAMxC,CAAC"}