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.
- package/LICENSE +21 -0
- package/README.md +224 -0
- package/dist/.dist-D4zXwUWp.js +81 -0
- package/dist/assets/audio-waveform.worker-DiTI_wJb.js +353 -0
- package/dist/assets/fonts/alibaba-puhuiti-2-regular.woff2 +0 -0
- package/dist/assets/fonts/licenses/source-han-sans-OFL-1.1.txt +96 -0
- package/dist/assets/fonts/licenses/zcool-gaoduanhei-usage-statement.txt +52 -0
- package/dist/assets/fonts/source-han-sans-cn-regular.otf +0 -0
- package/dist/assets/fonts/zcool-canger-yuyang-w03.ttf +0 -0
- package/dist/assets/fonts/zcool-gaoduanhei.ttf +0 -0
- package/dist/assets/fonts/zcool-kuaile.ttf +0 -0
- package/dist/assets/fonts/zcool-kuhei.ttf +0 -0
- package/dist/assets/fonts/zcool-wenyi.ttf +0 -0
- package/dist/assets/fonts/zcool-xiaowei-logo.otf +0 -0
- package/dist/assets/frame-preview.worker-ruBHl77w.js +345 -0
- package/dist/assets/soundtouch-processor-BKTidsbT.js +2062 -0
- package/dist/index.js +10802 -0
- package/dist/styles.css +1 -0
- package/dist/types/editor/EaseCut.d.ts +4 -0
- package/dist/types/editor/EaseCut.d.ts.map +1 -0
- package/dist/types/editor/api/create-easecut-api.d.ts +12 -0
- package/dist/types/editor/api/create-easecut-api.d.ts.map +1 -0
- package/dist/types/editor/api/easecut-api-context.d.ts +12 -0
- package/dist/types/editor/api/easecut-api-context.d.ts.map +1 -0
- package/dist/types/editor/api/errors.d.ts +6 -0
- package/dist/types/editor/api/errors.d.ts.map +1 -0
- package/dist/types/editor/api/index.d.ts +3 -0
- package/dist/types/editor/api/index.d.ts.map +1 -0
- package/dist/types/editor/api/source-input.d.ts +7 -0
- package/dist/types/editor/api/source-input.d.ts.map +1 -0
- package/dist/types/editor/api/source-store.d.ts +16 -0
- package/dist/types/editor/api/source-store.d.ts.map +1 -0
- package/dist/types/editor/api/types.d.ts +78 -0
- package/dist/types/editor/api/types.d.ts.map +1 -0
- package/dist/types/editor/components/AudioFloatingInspector.d.ts +10 -0
- package/dist/types/editor/components/AudioFloatingInspector.d.ts.map +1 -0
- package/dist/types/editor/components/CanvasRatioPanel.d.ts +2 -0
- package/dist/types/editor/components/CanvasRatioPanel.d.ts.map +1 -0
- package/dist/types/editor/components/ExportMenu.d.ts +8 -0
- package/dist/types/editor/components/ExportMenu.d.ts.map +1 -0
- package/dist/types/editor/components/FloatingInspector.d.ts +11 -0
- package/dist/types/editor/components/FloatingInspector.d.ts.map +1 -0
- package/dist/types/editor/components/FloatingInspectorBasicPanel.d.ts +10 -0
- package/dist/types/editor/components/FloatingInspectorBasicPanel.d.ts.map +1 -0
- package/dist/types/editor/components/FloatingInspectorShell.d.ts +15 -0
- package/dist/types/editor/components/FloatingInspectorShell.d.ts.map +1 -0
- package/dist/types/editor/components/FloatingInspectorSpeedPanel.d.ts +7 -0
- package/dist/types/editor/components/FloatingInspectorSpeedPanel.d.ts.map +1 -0
- package/dist/types/editor/components/FormDialog.d.ts +16 -0
- package/dist/types/editor/components/FormDialog.d.ts.map +1 -0
- package/dist/types/editor/components/PreviewPanel.d.ts +9 -0
- package/dist/types/editor/components/PreviewPanel.d.ts.map +1 -0
- package/dist/types/editor/components/TextFloatingInspector.d.ts +12 -0
- package/dist/types/editor/components/TextFloatingInspector.d.ts.map +1 -0
- package/dist/types/editor/components/TimelineToolbar.d.ts +8 -0
- package/dist/types/editor/components/TimelineToolbar.d.ts.map +1 -0
- package/dist/types/editor/components/TitleContentTextarea.d.ts +8 -0
- package/dist/types/editor/components/TitleContentTextarea.d.ts.map +1 -0
- package/dist/types/editor/components/VideoFloatingInspector.d.ts +12 -0
- package/dist/types/editor/components/VideoFloatingInspector.d.ts.map +1 -0
- package/dist/types/editor/components/ui/ColorInput.d.ts +15 -0
- package/dist/types/editor/components/ui/ColorInput.d.ts.map +1 -0
- package/dist/types/editor/components/ui/IconButton.d.ts +15 -0
- package/dist/types/editor/components/ui/IconButton.d.ts.map +1 -0
- package/dist/types/editor/components/ui/InputNumber.d.ts +13 -0
- package/dist/types/editor/components/ui/InputNumber.d.ts.map +1 -0
- package/dist/types/editor/components/ui/Select.d.ts +14 -0
- package/dist/types/editor/components/ui/Select.d.ts.map +1 -0
- package/dist/types/editor/components/ui/TextInput.d.ts +10 -0
- package/dist/types/editor/components/ui/TextInput.d.ts.map +1 -0
- package/dist/types/editor/core/audio-waveform-bars.d.ts +50 -0
- package/dist/types/editor/core/audio-waveform-bars.d.ts.map +1 -0
- package/dist/types/editor/core/canvas-size.d.ts +44 -0
- package/dist/types/editor/core/canvas-size.d.ts.map +1 -0
- package/dist/types/editor/core/clip-speed.d.ts +11 -0
- package/dist/types/editor/core/clip-speed.d.ts.map +1 -0
- package/dist/types/editor/core/collision.d.ts +96 -0
- package/dist/types/editor/core/collision.d.ts.map +1 -0
- package/dist/types/editor/core/composition.d.ts +47 -0
- package/dist/types/editor/core/composition.d.ts.map +1 -0
- package/dist/types/editor/core/export-schema.d.ts +5 -0
- package/dist/types/editor/core/export-schema.d.ts.map +1 -0
- package/dist/types/editor/core/index.d.ts +11 -0
- package/dist/types/editor/core/index.d.ts.map +1 -0
- package/dist/types/editor/core/model.d.ts +187 -0
- package/dist/types/editor/core/model.d.ts.map +1 -0
- package/dist/types/editor/core/preview-snapping.d.ts +27 -0
- package/dist/types/editor/core/preview-snapping.d.ts.map +1 -0
- package/dist/types/editor/core/text-fonts.d.ts +76 -0
- package/dist/types/editor/core/text-fonts.d.ts.map +1 -0
- package/dist/types/editor/core/time.d.ts +15 -0
- package/dist/types/editor/core/time.d.ts.map +1 -0
- package/dist/types/editor/core/timeline-commands.d.ts +143 -0
- package/dist/types/editor/core/timeline-commands.d.ts.map +1 -0
- package/dist/types/editor/core/timeline-layout.d.ts +25 -0
- package/dist/types/editor/core/timeline-layout.d.ts.map +1 -0
- package/dist/types/editor/core/timeline-math.d.ts +22 -0
- package/dist/types/editor/core/timeline-math.d.ts.map +1 -0
- package/dist/types/editor/core/timeline-tracks.d.ts +47 -0
- package/dist/types/editor/core/timeline-tracks.d.ts.map +1 -0
- package/dist/types/editor/media/audio-waveform-peaks.d.ts +17 -0
- package/dist/types/editor/media/audio-waveform-peaks.d.ts.map +1 -0
- package/dist/types/editor/media/audio-waveform.d.ts +8 -0
- package/dist/types/editor/media/audio-waveform.d.ts.map +1 -0
- package/dist/types/editor/media/frame-preview.d.ts +25 -0
- package/dist/types/editor/media/frame-preview.d.ts.map +1 -0
- package/dist/types/editor/media/index.d.ts +6 -0
- package/dist/types/editor/media/index.d.ts.map +1 -0
- package/dist/types/editor/media/media-runtime.d.ts +47 -0
- package/dist/types/editor/media/media-runtime.d.ts.map +1 -0
- package/dist/types/editor/media/mediabunny-audio-waveform.d.ts +8 -0
- package/dist/types/editor/media/mediabunny-audio-waveform.d.ts.map +1 -0
- package/dist/types/editor/media/mediabunny-frame-preview.d.ts +21 -0
- package/dist/types/editor/media/mediabunny-frame-preview.d.ts.map +1 -0
- package/dist/types/editor/media/preview-audio-engine.d.ts +23 -0
- package/dist/types/editor/media/preview-audio-engine.d.ts.map +1 -0
- package/dist/types/editor/media/preview-playback-controller.d.ts +26 -0
- package/dist/types/editor/media/preview-playback-controller.d.ts.map +1 -0
- package/dist/types/editor/media/single-frame-preview.d.ts +30 -0
- package/dist/types/editor/media/single-frame-preview.d.ts.map +1 -0
- package/dist/types/editor/media/text-layout-runtime.d.ts +27 -0
- package/dist/types/editor/media/text-layout-runtime.d.ts.map +1 -0
- package/dist/types/editor/store/index.d.ts +3 -0
- package/dist/types/editor/store/index.d.ts.map +1 -0
- package/dist/types/editor/store/timeline-store-context.d.ts +14 -0
- package/dist/types/editor/store/timeline-store-context.d.ts.map +1 -0
- package/dist/types/editor/store/timeline-store.d.ts +115 -0
- package/dist/types/editor/store/timeline-store.d.ts.map +1 -0
- package/dist/types/editor/timeline/AudioWaveformCanvas.d.ts +13 -0
- package/dist/types/editor/timeline/AudioWaveformCanvas.d.ts.map +1 -0
- package/dist/types/editor/timeline/TimelineClip.d.ts +41 -0
- package/dist/types/editor/timeline/TimelineClip.d.ts.map +1 -0
- package/dist/types/editor/timeline/TimelineDragGhost.d.ts +9 -0
- package/dist/types/editor/timeline/TimelineDragGhost.d.ts.map +1 -0
- package/dist/types/editor/timeline/TimelinePanel.d.ts +11 -0
- package/dist/types/editor/timeline/TimelinePanel.d.ts.map +1 -0
- package/dist/types/editor/timeline/TimelineRuler.d.ts +14 -0
- package/dist/types/editor/timeline/TimelineRuler.d.ts.map +1 -0
- package/dist/types/editor/timeline/TimelineTrimHandle.d.ts +12 -0
- package/dist/types/editor/timeline/TimelineTrimHandle.d.ts.map +1 -0
- package/dist/types/editor/timeline/TimelineViewport.d.ts +8 -0
- package/dist/types/editor/timeline/TimelineViewport.d.ts.map +1 -0
- package/dist/types/editor/timeline/clip-reveal.d.ts +29 -0
- package/dist/types/editor/timeline/clip-reveal.d.ts.map +1 -0
- package/dist/types/editor/timeline/timeline-interaction.d.ts +79 -0
- package/dist/types/editor/timeline/timeline-interaction.d.ts.map +1 -0
- package/dist/types/editor/timeline/useTimelineController.d.ts +22 -0
- package/dist/types/editor/timeline/useTimelineController.d.ts.map +1 -0
- package/dist/types/editor/types.d.ts +52 -0
- package/dist/types/editor/types.d.ts.map +1 -0
- package/dist/types/editor/util/abort-error.d.ts +3 -0
- package/dist/types/editor/util/abort-error.d.ts.map +1 -0
- package/dist/types/editor/util/browser.d.ts +5 -0
- package/dist/types/editor/util/browser.d.ts.map +1 -0
- package/dist/types/editor/util/format-canvas-font.d.ts +7 -0
- package/dist/types/editor/util/format-canvas-font.d.ts.map +1 -0
- package/dist/types/editor/util/format-media-label.d.ts +4 -0
- package/dist/types/editor/util/format-media-label.d.ts.map +1 -0
- package/dist/types/editor/util/format-text-color.d.ts +4 -0
- package/dist/types/editor/util/format-text-color.d.ts.map +1 -0
- package/dist/types/editor/util/format-timeline-time.d.ts +6 -0
- package/dist/types/editor/util/format-timeline-time.d.ts.map +1 -0
- package/dist/types/editor/util/id.d.ts +2 -0
- package/dist/types/editor/util/id.d.ts.map +1 -0
- package/dist/types/editor/util/media-file-format.d.ts +6 -0
- package/dist/types/editor/util/media-file-format.d.ts.map +1 -0
- package/dist/types/editor/util/number.d.ts +6 -0
- package/dist/types/editor/util/number.d.ts.map +1 -0
- package/dist/types/editor/util/text.d.ts +2 -0
- package/dist/types/editor/util/text.d.ts.map +1 -0
- package/dist/types/editor/util/url.d.ts +5 -0
- package/dist/types/editor/util/url.d.ts.map +1 -0
- package/dist/types/editor/util/value.d.ts +3 -0
- package/dist/types/editor/util/value.d.ts.map +1 -0
- package/dist/types/editor/workers/audio-waveform-protocol.d.ts +24 -0
- package/dist/types/editor/workers/audio-waveform-protocol.d.ts.map +1 -0
- package/dist/types/editor/workers/audio-waveform.worker.d.ts +2 -0
- package/dist/types/editor/workers/audio-waveform.worker.d.ts.map +1 -0
- package/dist/types/editor/workers/frame-preview-protocol.d.ts +35 -0
- package/dist/types/editor/workers/frame-preview-protocol.d.ts.map +1 -0
- package/dist/types/editor/workers/frame-preview.worker.d.ts +2 -0
- package/dist/types/editor/workers/frame-preview.worker.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- 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":"AA4BA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACd,MAAM,UAAU,CAAC;AAGlB,KAAK,YAAY,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,YAAY,GACZ,WAAW,GACX,aAAa,CAAC;AAElB,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAO/C,eAAO,MAAM,eAAe,GAC1B,UAAU,cAAc,GAAG,IAAI,EAC/B,SAAS,MAAM,EACf,SAAS,MAAM,KACd,YAAY,GAAG,IAkBjB,CAAC;AAkCF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,aAAa,EAAE,EACvB,MAAM,YAAY,CAAC,MAAM,CAAC,EAC1B,UAAU,MAAM,EAChB,iBAAgB,iBAAiB,GAAG,IAAW,6BAqBhD,CAAC;AAyEF,eAAO,MAAM,YAAY,GACvB,SAAS,WAAW,EACpB,OAAO,YAAY,EACnB,kBAAiB,eAAe,GAAG,IAAW,KAC7C,eA2EF,CAAC;AAiCF,eAAO,MAAM,YAAY,GACvB,SAAS,WAAW,EACpB,eAAe,MAAM,KACpB,WA2CF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,KAAK,CAAC,EAC9C,SAAS,MAAM,WAQhB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,OAAO,YAAY,EAAE,WAI/D,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|