@clipkit/editor-core 1.0.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 +201 -0
- package/README.md +20 -0
- package/dist/asset-store.d.ts +40 -0
- package/dist/asset-store.d.ts.map +1 -0
- package/dist/asset-store.js +181 -0
- package/dist/asset-store.js.map +1 -0
- package/dist/context.d.ts +17 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +23 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/node-graph.d.ts +42 -0
- package/dist/node-graph.d.ts.map +1 -0
- package/dist/node-graph.js +123 -0
- package/dist/node-graph.js.map +1 -0
- package/dist/registry/build.d.ts +3 -0
- package/dist/registry/build.d.ts.map +1 -0
- package/dist/registry/build.js +84 -0
- package/dist/registry/build.js.map +1 -0
- package/dist/registry/configuration.d.ts +51 -0
- package/dist/registry/configuration.d.ts.map +1 -0
- package/dist/registry/configuration.js +92 -0
- package/dist/registry/configuration.js.map +1 -0
- package/dist/registry/derive.d.ts +30 -0
- package/dist/registry/derive.d.ts.map +1 -0
- package/dist/registry/derive.js +212 -0
- package/dist/registry/derive.js.map +1 -0
- package/dist/registry/overrides.d.ts +7 -0
- package/dist/registry/overrides.d.ts.map +1 -0
- package/dist/registry/overrides.js +322 -0
- package/dist/registry/overrides.js.map +1 -0
- package/dist/registry/types.d.ts +58 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +7 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/source-diff.d.ts +8 -0
- package/dist/source-diff.d.ts.map +1 -0
- package/dist/source-diff.js +148 -0
- package/dist/source-diff.js.map +1 -0
- package/dist/stage-utils.d.ts +170 -0
- package/dist/stage-utils.d.ts.map +1 -0
- package/dist/stage-utils.js +476 -0
- package/dist/stage-utils.js.map +1 -0
- package/dist/store.d.ts +123 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +234 -0
- package/dist/store.js.map +1 -0
- package/dist/timeline-utils.d.ts +69 -0
- package/dist/timeline-utils.d.ts.map +1 -0
- package/dist/timeline-utils.js +211 -0
- package/dist/timeline-utils.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/useEditor.d.ts +77 -0
- package/dist/useEditor.d.ts.map +1 -0
- package/dist/useEditor.js +74 -0
- package/dist/useEditor.js.map +1 -0
- package/dist/useEditorStore.d.ts +3 -0
- package/dist/useEditorStore.d.ts.map +1 -0
- package/dist/useEditorStore.js +15 -0
- package/dist/useEditorStore.js.map +1 -0
- package/dist/usePlaybackSession.d.ts +20 -0
- package/dist/usePlaybackSession.d.ts.map +1 -0
- package/dist/usePlaybackSession.js +120 -0
- package/dist/usePlaybackSession.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-utils.js","sourceRoot":"","sources":["../src/stage-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { Source, Element } from '@clipkit/protocol';
|
|
2
|
+
import type { ToolId } from './types.js';
|
|
3
|
+
export interface EditorPlaybackState {
|
|
4
|
+
time: number;
|
|
5
|
+
duration: number;
|
|
6
|
+
playing: boolean;
|
|
7
|
+
ready: boolean;
|
|
8
|
+
error: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface EditorUiState {
|
|
11
|
+
leftPanelOpen: boolean;
|
|
12
|
+
rightPanelOpen: boolean;
|
|
13
|
+
jsonViewOpen: boolean;
|
|
14
|
+
timelineHeight: number;
|
|
15
|
+
timelineScale: number;
|
|
16
|
+
isScrubbing: boolean;
|
|
17
|
+
/** When true, playback wraps to 0 at the end instead of pausing. */
|
|
18
|
+
loop: boolean;
|
|
19
|
+
/** Toggleable perf HUD (engine stats overlay). Bound to Shift+P. */
|
|
20
|
+
perfHudOpen: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The animated property whose curve is open in the graph drawer
|
|
23
|
+
* (editor state — the lens rule). Null = drawer closed.
|
|
24
|
+
*/
|
|
25
|
+
curveTarget: {
|
|
26
|
+
elementId: string;
|
|
27
|
+
property: string;
|
|
28
|
+
} | null;
|
|
29
|
+
/**
|
|
30
|
+
* Color theme. The Editor's `theme` prop is the initial value;
|
|
31
|
+
* after mount the user can toggle via the header button and the
|
|
32
|
+
* store becomes the live source of truth.
|
|
33
|
+
*/
|
|
34
|
+
theme: 'light' | 'dark';
|
|
35
|
+
/**
|
|
36
|
+
* Stage preview projection (CKP/1.0 camera). 'camera' renders through
|
|
37
|
+
* the scene camera (true framing); 'flat' ignores it for orthographic,
|
|
38
|
+
* gizmo-correct editing — AE's Camera vs Front view. The LENS RULE:
|
|
39
|
+
* preview-only, NEVER serialized; the stored source keeps its camera.
|
|
40
|
+
* Only meaningful when the source declares a `camera`.
|
|
41
|
+
*/
|
|
42
|
+
stageView: 'camera' | 'flat';
|
|
43
|
+
/** Active stage tool: 'select' (click/marquee) or 'hand' (drag to pan). */
|
|
44
|
+
tool: 'select' | 'hand';
|
|
45
|
+
/** Group drill-down: ids of the groups entered (breadcrumb trail, root = []).
|
|
46
|
+
* The timeline scopes to the deepest entered group's children. */
|
|
47
|
+
groupPath: string[];
|
|
48
|
+
/** A group id to briefly flash on the stage (set on enter, auto-cleared). */
|
|
49
|
+
groupFlashId: string | null;
|
|
50
|
+
/** Stage zoom factor — 1.0 = 1px source pixel = 1 screen pixel. */
|
|
51
|
+
stageZoom: number;
|
|
52
|
+
/** Stage pan offset, in screen pixels relative to the viewport top-left. */
|
|
53
|
+
stagePan: {
|
|
54
|
+
x: number;
|
|
55
|
+
y: number;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Preview-only audio mute/solo (element ids). The LENS RULE: these
|
|
59
|
+
* compute engine preview gains and are NEVER serialized. Shared by
|
|
60
|
+
* the mixer rail and the inspector's volume knob.
|
|
61
|
+
*/
|
|
62
|
+
audioMuted: readonly string[];
|
|
63
|
+
audioSolo: readonly string[];
|
|
64
|
+
}
|
|
65
|
+
export interface EditorState {
|
|
66
|
+
source: Source;
|
|
67
|
+
history: {
|
|
68
|
+
past: Source[];
|
|
69
|
+
future: Source[];
|
|
70
|
+
};
|
|
71
|
+
selection: string[];
|
|
72
|
+
tool: ToolId | null;
|
|
73
|
+
ui: EditorUiState;
|
|
74
|
+
playback: EditorPlaybackState;
|
|
75
|
+
_setSource: (source: Source, opts?: {
|
|
76
|
+
skipHistory?: boolean;
|
|
77
|
+
}) => void;
|
|
78
|
+
_updateElement: (id: string, patch: Partial<Element>) => void;
|
|
79
|
+
/**
|
|
80
|
+
* Patch SOURCE-LEVEL fields (width, duration, background_color,
|
|
81
|
+
* camera, …). `skipHistory` follows the _moveElements contract for
|
|
82
|
+
* live scrubs that snapshotted once via `_pushHistory()`.
|
|
83
|
+
*/
|
|
84
|
+
_patchSource: (patch: Record<string, unknown>, opts?: {
|
|
85
|
+
skipHistory?: boolean;
|
|
86
|
+
}) => void;
|
|
87
|
+
_addElement: (element: Element) => void;
|
|
88
|
+
_removeElement: (id: string) => void;
|
|
89
|
+
/**
|
|
90
|
+
* Batched element update. When `opts.skipHistory` is true, history
|
|
91
|
+
* is not pushed — used during live drag dispatches after the caller
|
|
92
|
+
* has already snapshotted once via `_pushHistory()`.
|
|
93
|
+
*/
|
|
94
|
+
_moveElements: (updates: ReadonlyArray<{
|
|
95
|
+
id: string;
|
|
96
|
+
patch: Partial<Element>;
|
|
97
|
+
}>, opts?: {
|
|
98
|
+
skipHistory?: boolean;
|
|
99
|
+
}) => void;
|
|
100
|
+
/**
|
|
101
|
+
* Snapshot the current source into history.past — used at the start
|
|
102
|
+
* of a multi-tick interactive operation (drag, etc.) so the whole
|
|
103
|
+
* operation collapses into a single undoable entry.
|
|
104
|
+
*/
|
|
105
|
+
_pushHistory: () => void;
|
|
106
|
+
_setSelection: (ids: string[]) => void;
|
|
107
|
+
_setTool: (tool: ToolId | null) => void;
|
|
108
|
+
_undo: () => void;
|
|
109
|
+
_redo: () => void;
|
|
110
|
+
_setPlaybackState: (patch: Partial<EditorPlaybackState>) => void;
|
|
111
|
+
_setUiState: (patch: Partial<EditorUiState>) => void;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Create an editor store. Callers (the `Editor` root) construct one per
|
|
115
|
+
* editing session and pass it through context. Components read it via
|
|
116
|
+
* the `useEditorStore` hook re-exported by the root.
|
|
117
|
+
*/
|
|
118
|
+
export declare function createEditorStore(initialSource: Source, initialTheme?: 'light' | 'dark'): import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<EditorState>, "setState"> & {
|
|
119
|
+
setState(nextStateOrUpdater: EditorState | Partial<EditorState> | ((state: import("immer").WritableDraft<EditorState>) => void), shouldReplace?: false): void;
|
|
120
|
+
setState(nextStateOrUpdater: EditorState | ((state: import("immer").WritableDraft<EditorState>) => void), shouldReplace: true): void;
|
|
121
|
+
}>;
|
|
122
|
+
export type EditorStore = ReturnType<typeof createEditorStore>;
|
|
123
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
// useEditorStore — the canonical state for an editing session.
|
|
2
|
+
//
|
|
3
|
+
// Sections (one store, organized internally):
|
|
4
|
+
// source — the canonical Source being edited
|
|
5
|
+
// history — past + future Source snapshots for undo/redo
|
|
6
|
+
// selection — selected element ids
|
|
7
|
+
// tool — active dock tool, or null
|
|
8
|
+
// ui — panel layout + transient interaction state
|
|
9
|
+
// playback — mirror of PlaybackEngine state (time, playing, …)
|
|
10
|
+
//
|
|
11
|
+
// Mutator actions are underscore-prefixed; they're low-level and don't
|
|
12
|
+
// know about the engine. The `useEditor()` facade wraps them with the
|
|
13
|
+
// engine-aware behavior (e.g., updateElement triggers engine.setSource
|
|
14
|
+
// via the Editor root's useEffect on source).
|
|
15
|
+
import { create } from 'zustand';
|
|
16
|
+
import { immer } from 'zustand/middleware/immer';
|
|
17
|
+
import { current } from 'immer';
|
|
18
|
+
import { elementLayer } from './timeline-utils.js';
|
|
19
|
+
const HISTORY_LIMIT = 50;
|
|
20
|
+
const defaultUi = {
|
|
21
|
+
leftPanelOpen: true,
|
|
22
|
+
rightPanelOpen: true,
|
|
23
|
+
jsonViewOpen: true,
|
|
24
|
+
timelineHeight: 280,
|
|
25
|
+
timelineScale: 100,
|
|
26
|
+
isScrubbing: false,
|
|
27
|
+
loop: true,
|
|
28
|
+
perfHudOpen: false,
|
|
29
|
+
curveTarget: null,
|
|
30
|
+
theme: 'dark',
|
|
31
|
+
// 0 sentinel for stageZoom means "auto-fit on first viewport measurement";
|
|
32
|
+
// the Stage's mount effect computes a real number once it has dimensions.
|
|
33
|
+
stageView: 'camera',
|
|
34
|
+
tool: 'select',
|
|
35
|
+
groupPath: [],
|
|
36
|
+
groupFlashId: null,
|
|
37
|
+
stageZoom: 0,
|
|
38
|
+
stagePan: { x: 0, y: 0 },
|
|
39
|
+
audioMuted: [],
|
|
40
|
+
audioSolo: [],
|
|
41
|
+
};
|
|
42
|
+
const defaultPlayback = {
|
|
43
|
+
time: 0,
|
|
44
|
+
duration: 0,
|
|
45
|
+
playing: false,
|
|
46
|
+
ready: false,
|
|
47
|
+
error: null,
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Create an editor store. Callers (the `Editor` root) construct one per
|
|
51
|
+
* editing session and pass it through context. Components read it via
|
|
52
|
+
* the `useEditorStore` hook re-exported by the root.
|
|
53
|
+
*/
|
|
54
|
+
export function createEditorStore(initialSource, initialTheme = 'dark') {
|
|
55
|
+
return create()(immer((set) => ({
|
|
56
|
+
source: initialSource,
|
|
57
|
+
history: { past: [], future: [] },
|
|
58
|
+
selection: [],
|
|
59
|
+
tool: null,
|
|
60
|
+
ui: { ...defaultUi, theme: initialTheme },
|
|
61
|
+
playback: defaultPlayback,
|
|
62
|
+
_setSource: (source, opts) => set((state) => {
|
|
63
|
+
if (!opts?.skipHistory)
|
|
64
|
+
pushHistory(state);
|
|
65
|
+
state.source = source;
|
|
66
|
+
// External source swap clears selection — ids may no longer
|
|
67
|
+
// exist in the new tree.
|
|
68
|
+
state.selection = [];
|
|
69
|
+
}),
|
|
70
|
+
_updateElement: (id, patch) => set((state) => {
|
|
71
|
+
const el = findElementById(state.source.elements, id);
|
|
72
|
+
if (!el)
|
|
73
|
+
return;
|
|
74
|
+
pushHistory(state);
|
|
75
|
+
Object.assign(el, patch);
|
|
76
|
+
alignSourceDuration(state);
|
|
77
|
+
}),
|
|
78
|
+
_patchSource: (patch, opts) => set((state) => {
|
|
79
|
+
if (!opts?.skipHistory)
|
|
80
|
+
pushHistory(state);
|
|
81
|
+
Object.assign(state.source, patch);
|
|
82
|
+
alignSourceDuration(state);
|
|
83
|
+
}),
|
|
84
|
+
_addElement: (element) => set((state) => {
|
|
85
|
+
pushHistory(state);
|
|
86
|
+
const els = state.source.elements;
|
|
87
|
+
// New elements (incl. duplicates) go ON TOP — layer 1 — and the
|
|
88
|
+
// existing siblings renumber to 2..N+1 so the container stays
|
|
89
|
+
// uniquely layered. Correct-by-construction at EDIT time (not a
|
|
90
|
+
// load-time normalize); element array order is preserved.
|
|
91
|
+
[...els]
|
|
92
|
+
.sort((a, b) => elementLayer(a) - elementLayer(b))
|
|
93
|
+
.forEach((el, i) => { el.layer = i + 2; });
|
|
94
|
+
element.layer = 1;
|
|
95
|
+
els.push(element);
|
|
96
|
+
if (element.id)
|
|
97
|
+
state.selection = [element.id];
|
|
98
|
+
alignSourceDuration(state);
|
|
99
|
+
}),
|
|
100
|
+
_removeElement: (id) => set((state) => {
|
|
101
|
+
const elements = state.source.elements;
|
|
102
|
+
const idx = elements.findIndex((e) => e.id === id);
|
|
103
|
+
if (idx < 0)
|
|
104
|
+
return;
|
|
105
|
+
pushHistory(state);
|
|
106
|
+
elements.splice(idx, 1);
|
|
107
|
+
state.selection = state.selection.filter((s) => s !== id);
|
|
108
|
+
alignSourceDuration(state);
|
|
109
|
+
}),
|
|
110
|
+
_moveElements: (updates, opts) => set((state) => {
|
|
111
|
+
if (updates.length === 0)
|
|
112
|
+
return;
|
|
113
|
+
if (!opts?.skipHistory)
|
|
114
|
+
pushHistory(state);
|
|
115
|
+
for (const { id, patch } of updates) {
|
|
116
|
+
const el = findElementById(state.source.elements, id);
|
|
117
|
+
if (!el)
|
|
118
|
+
continue;
|
|
119
|
+
Object.assign(el, patch);
|
|
120
|
+
}
|
|
121
|
+
alignSourceDuration(state);
|
|
122
|
+
}),
|
|
123
|
+
_pushHistory: () => set((state) => {
|
|
124
|
+
pushHistory(state);
|
|
125
|
+
}),
|
|
126
|
+
_setSelection: (ids) => set((state) => {
|
|
127
|
+
state.selection = ids;
|
|
128
|
+
}),
|
|
129
|
+
_setTool: (tool) => set((state) => {
|
|
130
|
+
state.tool = tool;
|
|
131
|
+
}),
|
|
132
|
+
_undo: () => set((state) => {
|
|
133
|
+
const previous = state.history.past.shift();
|
|
134
|
+
if (!previous)
|
|
135
|
+
return;
|
|
136
|
+
// current() unwraps the Immer draft to a plain snapshot
|
|
137
|
+
// suitable for storing in the future stack.
|
|
138
|
+
state.history.future.unshift(current(state.source));
|
|
139
|
+
state.source = previous;
|
|
140
|
+
// Preserve selection. Selection state is UI state, not
|
|
141
|
+
// source state, and undo/redo should only roll the Source.
|
|
142
|
+
// Drop any ids that no longer exist in the restored source
|
|
143
|
+
// (e.g. undoing an addElement that the selection pointed at)
|
|
144
|
+
// so the panel doesn't try to render a missing element.
|
|
145
|
+
pruneStaleSelection(state);
|
|
146
|
+
}),
|
|
147
|
+
_redo: () => set((state) => {
|
|
148
|
+
const next = state.history.future.shift();
|
|
149
|
+
if (!next)
|
|
150
|
+
return;
|
|
151
|
+
state.history.past.unshift(current(state.source));
|
|
152
|
+
state.source = next;
|
|
153
|
+
pruneStaleSelection(state);
|
|
154
|
+
}),
|
|
155
|
+
_setPlaybackState: (patch) => set((state) => {
|
|
156
|
+
Object.assign(state.playback, patch);
|
|
157
|
+
}),
|
|
158
|
+
_setUiState: (patch) => set((state) => {
|
|
159
|
+
Object.assign(state.ui, patch);
|
|
160
|
+
}),
|
|
161
|
+
})));
|
|
162
|
+
}
|
|
163
|
+
// ── Invariant: source.duration === max(element.time + element.duration) ─
|
|
164
|
+
//
|
|
165
|
+
// The schema treats source.duration as the authoritative playback
|
|
166
|
+
// duration (engine pauses there; the runtime stops rendering past it).
|
|
167
|
+
// Without an invariant, the timeline UI's derived extent and the
|
|
168
|
+
// engine's source.duration can disagree — the user drags a clip past
|
|
169
|
+
// the original end, hits play, and playback pauses where the source
|
|
170
|
+
// USED to end while the ruler/clip both say there's more.
|
|
171
|
+
//
|
|
172
|
+
// Solution: every editor mutation re-syncs source.duration to the
|
|
173
|
+
// authored content extent (bumping up AND shrinking down). One number,
|
|
174
|
+
// one truth, no UI/engine drift. If the user wants empty trailing
|
|
175
|
+
// time, they add a transparent element to fill it; explicit-duration
|
|
176
|
+
// authoring is still possible via `duration: 'auto'` (leaves it
|
|
177
|
+
// derived) or via direct JSON edits between mutations.
|
|
178
|
+
//
|
|
179
|
+
// Composition recursion: nested elements contribute to the parent's
|
|
180
|
+
// extent only via the composition's own time + duration, which the
|
|
181
|
+
// composition author controls explicitly. We still walk into
|
|
182
|
+
// compositions to find the top-level extent in case the top-level
|
|
183
|
+
// container is a composition.
|
|
184
|
+
function alignSourceDuration(state) {
|
|
185
|
+
let maxExtent = 0;
|
|
186
|
+
for (const el of state.source.elements) {
|
|
187
|
+
const t = typeof el.time === 'number' ? el.time : 0;
|
|
188
|
+
const d = typeof el.duration === 'number' ? el.duration : 0;
|
|
189
|
+
if (t + d > maxExtent)
|
|
190
|
+
maxExtent = t + d;
|
|
191
|
+
}
|
|
192
|
+
if (typeof state.source.duration === 'number') {
|
|
193
|
+
state.source.duration = maxExtent;
|
|
194
|
+
}
|
|
195
|
+
// 'auto' / unset: engine already derives from elements; leave it.
|
|
196
|
+
}
|
|
197
|
+
// ── History helpers ──────────────────────────────────────────────────
|
|
198
|
+
function pushHistory(state) {
|
|
199
|
+
// `state.source` is an Immer draft proxy. structuredClone can't
|
|
200
|
+
// clone proxies; `current()` unwraps to a plain immutable snapshot
|
|
201
|
+
// that's safe to keep in history.
|
|
202
|
+
state.history.past.unshift(current(state.source));
|
|
203
|
+
if (state.history.past.length > HISTORY_LIMIT) {
|
|
204
|
+
state.history.past.length = HISTORY_LIMIT;
|
|
205
|
+
}
|
|
206
|
+
// Any forward history is invalidated by a new mutation.
|
|
207
|
+
state.history.future = [];
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Drop any selected ids that don't exist in the current source. Used
|
|
211
|
+
* after undo/redo to avoid showing the Edit panel for an element that
|
|
212
|
+
* was just un-added.
|
|
213
|
+
*/
|
|
214
|
+
function pruneStaleSelection(state) {
|
|
215
|
+
if (state.selection.length === 0)
|
|
216
|
+
return;
|
|
217
|
+
const next = state.selection.filter((id) => findElementById(state.source.elements, id) !== null);
|
|
218
|
+
if (next.length !== state.selection.length)
|
|
219
|
+
state.selection = next;
|
|
220
|
+
}
|
|
221
|
+
// ── Element lookup (recurses into compositions) ──────────────────────
|
|
222
|
+
function findElementById(elements, id) {
|
|
223
|
+
for (const el of elements) {
|
|
224
|
+
if (el.id === id)
|
|
225
|
+
return el;
|
|
226
|
+
if (el.type === 'group') {
|
|
227
|
+
const nested = findElementById(el.elements, id);
|
|
228
|
+
if (nested)
|
|
229
|
+
return nested;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { Element, Source } from '@clipkit/protocol';
|
|
2
|
+
export declare function elementTime(el: Element): number;
|
|
3
|
+
export declare function elementLayer(el: Element): number;
|
|
4
|
+
export declare function elementDuration(el: Element, sourceDuration: number): number;
|
|
5
|
+
export declare function elementLabel(el: Element): string;
|
|
6
|
+
export declare function listUsedLayers(source: Source): number[];
|
|
7
|
+
/** A container's elements sorted FRONT-TO-BACK (layer ascending; layer 1 = front). */
|
|
8
|
+
export declare function byLayer<T extends Element>(elements: readonly T[]): T[];
|
|
9
|
+
/**
|
|
10
|
+
* Stamp dense, unique `layer` values onto a container from its desired
|
|
11
|
+
* FRONT-TO-BACK order: index 0 → layer 1 (front / on top), last → layer N.
|
|
12
|
+
* Run on add / reorder / delete so the editor always writes valid, uniquely
|
|
13
|
+
* layered sources — correct-by-construction at edit time, NOT a load pass.
|
|
14
|
+
* Returns new element objects (all other fields untouched).
|
|
15
|
+
*/
|
|
16
|
+
export declare function reassignLayers<T extends Element>(frontToBack: readonly T[]): T[];
|
|
17
|
+
/**
|
|
18
|
+
* Snap `value` to the nearest target within `threshold`. Returns the
|
|
19
|
+
* snapped value AND the target that won, so callers can render a
|
|
20
|
+
* visual snap indicator. If no target wins, returns the input
|
|
21
|
+
* unchanged with `target: null`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function snapTo(value: number, targets: readonly number[], threshold: number): {
|
|
24
|
+
value: number;
|
|
25
|
+
target: number | null;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Build the snap target list — composition bounds, the playhead, whole
|
|
29
|
+
* seconds, and every non-dragged element's start + end. Recurses into
|
|
30
|
+
* compositions.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildSnapTargets(source: Source, sourceDuration: number, excludeIds: ReadonlySet<string>, playhead: number): number[];
|
|
33
|
+
/**
|
|
34
|
+
* Returns true if `[start, end)` on `layer` overlaps any non-excluded
|
|
35
|
+
* element on the same layer. Used to reject invalid drops.
|
|
36
|
+
*/
|
|
37
|
+
export declare function hasOverlapOnLayer(source: Source, sourceDuration: number, layer: number, start: number, end: number, excludeIds: ReadonlySet<string>): boolean;
|
|
38
|
+
export declare function computeSourceDuration(source: Source): number;
|
|
39
|
+
/**
|
|
40
|
+
* Pick the smallest tick interval whose labels stay at least
|
|
41
|
+
* `minLabelPx` apart at the current zoom. `minor` subdivides each
|
|
42
|
+
* major span into 5 for unlabeled sub-ticks.
|
|
43
|
+
*/
|
|
44
|
+
export declare function chooseTickInterval(pxPerSec: number, minLabelPx?: number): {
|
|
45
|
+
major: number;
|
|
46
|
+
minor: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Format a time for display. The UNIT is chosen from `unitFor`
|
|
50
|
+
* (default: the value itself) so a readout pair like "0:02.57 /
|
|
51
|
+
* 1:46.00" stays in one consistent format — pass the larger value
|
|
52
|
+
* (total duration) as `unitFor` for both sides.
|
|
53
|
+
*
|
|
54
|
+
* < 60s → "2.57s"
|
|
55
|
+
* < 1h → "1:46.00"
|
|
56
|
+
* ≥ 1h → "1:02:03.00"
|
|
57
|
+
*/
|
|
58
|
+
export declare function formatTimecode(t: number, unitFor?: number): string;
|
|
59
|
+
/**
|
|
60
|
+
* Format a ruler tick label. Whole-unit display (no trailing
|
|
61
|
+
* decimals): "5s" / "2.5s" below a minute, "1:30" / "1:02:30" above
|
|
62
|
+
* (unit again chosen by `unitFor`, normally the source duration).
|
|
63
|
+
*/
|
|
64
|
+
export declare function formatTickLabel(t: number, unitFor?: number,
|
|
65
|
+
/** The tick interval. When sub-second, labels gain decimals so a
|
|
66
|
+
* zoomed-in long composition shows 0.5s / 1:02.50 instead of
|
|
67
|
+
* repeating whole seconds. */
|
|
68
|
+
step?: number): string;
|
|
69
|
+
//# sourceMappingURL=timeline-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline-utils.d.ts","sourceRoot":"","sources":["../src/timeline-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIzD,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAE/C;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAuBhD;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAIvD;AAID,sFAAsF;AACtF,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhF;AAID;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAY1C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CAKV;AAyBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAC9B,OAAO,CAST;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS5D;AAcD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,SAAK,GACd;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKlC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,MAAM,CASrE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,MAAM,EACT,OAAO,GAAE,MAAU;AACnB;;8BAE8B;AAC9B,IAAI,SAAI,GACP,MAAM,CAiBR"}
|