@hyperframes/studio 0.7.86 → 0.7.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{hyperframes-player-BL3qfGEQ.js → hyperframes-player-BFqB5AWJ.js} +1 -1
- package/dist/assets/{index-B5QGai9B.js → index-B1Vf4vCl.js} +1 -1
- package/dist/assets/index-BXkzp_OU.css +1 -0
- package/dist/assets/{index-CISVI7UC.js → index-BblzZ6Av.js} +221 -221
- package/dist/assets/{index-C0Vr8jjc.js → index-D_JU4EeH.js} +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.html +2 -2
- package/dist/index.js +6265 -4922
- package/dist/index.js.map +1 -1
- package/package.json +11 -8
- package/src/components/TimelineToolbar.tsx +14 -5
- package/src/components/nle/NLEContext.tsx +4 -1
- package/src/components/nle/TimelinePane.tsx +2 -0
- package/src/hooks/studioTestMode.test.ts +35 -0
- package/src/hooks/studioTestMode.ts +23 -0
- package/src/hooks/useGestureRecording.test.tsx +120 -0
- package/src/hooks/useGestureRecording.ts +49 -40
- package/src/hooks/useStudioTestHooks.test.tsx +161 -0
- package/src/hooks/useStudioTestHooks.ts +54 -7
- package/src/player/components/BeatStrip.tsx +21 -5
- package/src/player/components/CompositionThumbnail.test.ts +96 -2
- package/src/player/components/CompositionThumbnail.tsx +29 -16
- package/src/player/components/Timeline.test.ts +104 -0
- package/src/player/components/Timeline.tsx +141 -131
- package/src/player/components/Timeline.virtualization.test.tsx +400 -0
- package/src/player/components/TimelineCanvas.tsx +18 -10
- package/src/player/components/TimelineClip.tsx +4 -0
- package/src/player/components/TimelineClipDiamonds.test.tsx +85 -5
- package/src/player/components/TimelineClipDiamonds.tsx +53 -13
- package/src/player/components/TimelineLanes.test.tsx +15 -4
- package/src/player/components/TimelineLanes.tsx +81 -26
- package/src/player/components/TimelinePropertyLanes.test.tsx +16 -20
- package/src/player/components/TimelinePropertyLanes.tsx +1 -0
- package/src/player/components/TimelineRuler.tsx +21 -5
- package/src/player/components/TimelineTrackRow.tsx +46 -0
- package/src/player/components/TimelineTypes.ts +2 -0
- package/src/player/components/timelineClipDragGestureLifecycle.test.ts +97 -0
- package/src/player/components/timelineClipDragGestureLifecycle.ts +261 -0
- package/src/player/components/timelineDiamondTypes.ts +5 -0
- package/src/player/components/timelineDragDrop.ts +5 -5
- package/src/player/components/timelineEditing.test.ts +32 -0
- package/src/player/components/timelineEditing.ts +47 -5
- package/src/player/components/timelineFocusIdentity.test.ts +21 -0
- package/src/player/components/timelineFocusIdentity.ts +21 -0
- package/src/player/components/timelineLaneProps.ts +9 -0
- package/src/player/components/timelineLayout.test.ts +59 -0
- package/src/player/components/timelineLayout.ts +202 -176
- package/src/player/components/timelineRowVirtualizationFlag.test.ts +23 -0
- package/src/player/components/timelineRowVirtualizationFlag.ts +10 -0
- package/src/player/components/timelineRulerGeometry.ts +142 -0
- package/src/player/components/timelineViewModel.ts +44 -0
- package/src/player/components/timelineViewportGeometry.ts +51 -0
- package/src/player/components/timelineZoom.test.ts +42 -28
- package/src/player/components/timelineZoom.ts +42 -25
- package/src/player/components/useTimelineActiveClips.test.ts +82 -79
- package/src/player/components/useTimelineActiveClips.ts +49 -55
- package/src/player/components/useTimelineClipDrag.ts +40 -230
- package/src/player/components/useTimelineClipRenderWindow.ts +95 -0
- package/src/player/components/useTimelineGeometry.ts +4 -11
- package/src/player/components/useTimelinePlayhead.ts +30 -14
- package/src/player/components/useTimelineRangeSelection.ts +5 -4
- package/src/player/components/useTimelineRangeSelectionScrub.test.tsx +3 -2
- package/src/player/components/useTimelineRevealClip.test.tsx +139 -0
- package/src/player/components/useTimelineRevealClip.ts +171 -47
- package/src/player/components/useTimelineRowVirtualization.ts +140 -0
- package/src/player/components/useTimelineScrollViewport.test.tsx +202 -0
- package/src/player/components/useTimelineScrollViewport.ts +87 -9
- package/src/player/components/useTimelineSelectionLifecycle.ts +29 -0
- package/src/player/components/useTimelineShiftModifier.ts +20 -0
- package/src/player/components/useTimelineTicks.ts +22 -0
- package/src/player/components/useTimelineTrackLayout.test.ts +32 -26
- package/src/player/components/useTimelineTrackLayout.ts +35 -18
- package/src/player/components/useTimelineVirtualRows.test.tsx +174 -0
- package/src/player/components/useTimelineVirtualRows.ts +126 -0
- package/src/player/hooks/timelinePlayerSync.ts +20 -0
- package/src/player/hooks/useTimelinePlayer.seek.test.ts +90 -51
- package/src/player/hooks/useTimelinePlayer.ts +8 -20
- package/src/player/lib/playbackScrub.ts +2 -2
- package/src/player/lib/timelineClipIndex.test.ts +169 -0
- package/src/player/lib/timelineClipIndex.ts +208 -0
- package/src/player/lib/timelineElementIndexes.test.ts +31 -0
- package/src/player/lib/timelineElementIndexes.ts +44 -0
- package/src/player/lib/timelinePerformanceDiagnostics.test.ts +100 -0
- package/src/player/lib/timelinePerformanceDiagnostics.ts +120 -0
- package/src/player/lib/timelinePerformanceFixture.ts +167 -0
- package/src/player/lib/timelineViewportBudgets.test.ts +60 -0
- package/src/player/lib/timelineViewportBudgets.ts +151 -0
- package/src/player/store/playerStore.test.ts +20 -3
- package/src/player/store/playerStore.ts +73 -45
- package/src/utils/studioHelpers.test.ts +48 -1
- package/src/utils/studioHelpers.ts +31 -34
- package/src/utils/studioUiPreferences.ts +3 -1
- package/dist/assets/index-D379YOKT.css +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -66,6 +66,8 @@ interface ClipManifestClip {
|
|
|
66
66
|
assetUrl: string | null;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
type TimelineTimeDisplayMode = "time" | "frame";
|
|
70
|
+
|
|
69
71
|
interface AnimationKeyframeTarget {
|
|
70
72
|
animationId: string;
|
|
71
73
|
tweenPercentage: number;
|
|
@@ -197,6 +199,10 @@ interface PlayerState extends KeyframeSlice {
|
|
|
197
199
|
currentTime: number;
|
|
198
200
|
duration: number;
|
|
199
201
|
timelineReady: boolean;
|
|
202
|
+
/** Increments exactly once when the Studio switches to a different project. */
|
|
203
|
+
timelineSessionEpoch: number;
|
|
204
|
+
/** Project owning the current timeline session; null outside a project-scoped reset. */
|
|
205
|
+
timelineProjectId: string | null;
|
|
200
206
|
/** True while a beat dot is being dragged — hides the playhead guideline. */
|
|
201
207
|
beatDragging: boolean;
|
|
202
208
|
elements: TimelineElement[];
|
|
@@ -248,18 +254,15 @@ interface PlayerState extends KeyframeSlice {
|
|
|
248
254
|
timelineSnapEnabled: boolean;
|
|
249
255
|
setTimelineSnapEnabled: (enabled: boolean) => void;
|
|
250
256
|
/** Transport + ruler readout: timecode ("time") or frame number ("frame"). */
|
|
251
|
-
timeDisplayMode:
|
|
252
|
-
setTimeDisplayMode: (mode:
|
|
257
|
+
timeDisplayMode: TimelineTimeDisplayMode;
|
|
258
|
+
setTimeDisplayMode: (mode: TimelineTimeDisplayMode) => void;
|
|
253
259
|
/**
|
|
254
260
|
* Pin the timeline zoom to its current visual scale before a duration-changing
|
|
255
261
|
* edit, so a subsequent duration change (which recomputes fit-pps) stops
|
|
256
262
|
* rescaling every clip. No-op once already pinned (mode is "manual").
|
|
257
263
|
*/
|
|
258
264
|
pinTimelineZoom: (currentPixelsPerSecond: number, fitPixelsPerSecond: number) => void;
|
|
259
|
-
/**
|
|
260
|
-
* The timeline's live pixels-per-second + fit basis, published by <Timeline> on
|
|
261
|
-
* every render. Non-reactive scratch state (never read as a render input).
|
|
262
|
-
*/
|
|
265
|
+
/** The timeline's live pixels-per-second + fit basis, published by <Timeline>. */
|
|
263
266
|
timelinePps: number;
|
|
264
267
|
timelineFitPps: number;
|
|
265
268
|
setTimelineScale: (pps: number, fitPps: number) => void;
|
|
@@ -285,6 +288,9 @@ interface PlayerState extends KeyframeSlice {
|
|
|
285
288
|
bumpZEditVersion: () => void;
|
|
286
289
|
setInPoint: (time: number | null) => void;
|
|
287
290
|
setOutPoint: (time: number | null) => void;
|
|
291
|
+
/** Owns the hard project boundary; repeated calls for one project are no-ops. */
|
|
292
|
+
beginTimelineSession: (projectId: string) => void;
|
|
293
|
+
/** Clears project data without creating a new hard-project session. */
|
|
288
294
|
reset: () => void;
|
|
289
295
|
/**
|
|
290
296
|
* Request a seek from outside the player loop (e.g. Layers panel).
|
|
@@ -548,6 +554,8 @@ interface TimelineTheme {
|
|
|
548
554
|
type TimelineEditOverrides = Pick<TimelineEditCallbacks, "onMoveElement" | "onMoveElements" | "onResizeElement" | "onResizeElements" | "onBlockedEditAttempt" | "onSplitElement">;
|
|
549
555
|
|
|
550
556
|
interface TimelineProps extends TimelineDropCallbacks, TimelineEditOverrides {
|
|
557
|
+
/** Project-scoped reset boundary; soft source refreshes retain the same epoch. */
|
|
558
|
+
sessionEpoch?: number;
|
|
551
559
|
onSeek?: (time: number) => void;
|
|
552
560
|
onDrillDown?: (element: TimelineElement) => void;
|
|
553
561
|
renderClipContent?: (element: TimelineElement, style: {
|
package/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
6
6
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
7
|
<title>HyperFrames Studio</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BblzZ6Av.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BXkzp_OU.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div data-hf-id="hf-aph5" id="root"></div>
|