@hyperframes/studio 0.7.89 → 0.7.92
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-DVTnBvSO.js → hyperframes-player-9qOa08Tv.js} +1 -1
- package/dist/assets/{index-Qvx7boWH.js → index-Bw4lNdtO.js} +1 -1
- package/dist/assets/{index-ulQEdWKo.js → index-CDTN2ZVa.js} +1 -1
- package/dist/assets/index-DIntkrQl.js +428 -0
- package/dist/index.d.ts +20 -16
- package/dist/index.html +1 -1
- package/dist/index.js +6495 -5429
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/components/StudioRightPanel.tsx +1 -1
- package/src/components/editor/GsapAnimationList.tsx +84 -0
- package/src/components/editor/GsapAnimationSection.test.tsx +100 -11
- package/src/components/editor/GsapAnimationSection.tsx +11 -41
- package/src/components/editor/PropertyPanel.tsx +1 -1
- package/src/components/editor/PropertyPanelFlat.tsx +29 -26
- package/src/components/editor/gsapAnimationCallbacks.ts +0 -10
- package/src/components/editor/propertyPanelFlatDescriptors.ts +20 -0
- package/src/components/editor/propertyPanelFlatMotionSection.test.tsx +56 -55
- package/src/components/editor/propertyPanelFlatMotionSection.tsx +9 -37
- package/src/components/editor/propertyPanelTypes.ts +1 -1
- package/src/components/nle/useTimelineEditCallbacks.test.tsx +78 -4
- package/src/components/nle/useTimelineEditCallbacks.ts +12 -7
- package/src/components/renders/useRenderQueue.ts +16 -3
- package/src/components/renders/useRenderQueueTelemetry.test.tsx +104 -0
- package/src/contexts/DomEditContext.tsx +1 -1
- package/src/hooks/useDomEditSession.test.tsx +1 -1
- package/src/hooks/useDomEditSession.ts +1 -1
- package/src/hooks/useGsapKeyframeOps.test.tsx +83 -5
- package/src/hooks/useGsapKeyframeOps.ts +20 -9
- package/src/player/components/BeatStrip.test.tsx +374 -0
- package/src/player/components/BeatStrip.tsx +295 -37
- package/src/player/components/KeyframeDiamondContextMenu.test.tsx +16 -1
- package/src/player/components/KeyframeDiamondContextMenu.tsx +6 -5
- package/src/player/components/Timeline.test.ts +2 -3
- package/src/player/components/Timeline.tsx +47 -48
- package/src/player/components/TimelineCanvas.tsx +14 -71
- package/src/player/components/TimelineClip.tsx +6 -3
- package/src/player/components/TimelineClipDiamonds.test.tsx +442 -18
- package/src/player/components/TimelineClipDiamonds.tsx +66 -211
- package/src/player/components/TimelineGestureOverlay.test.tsx +90 -0
- package/src/player/components/TimelineGestureOverlay.tsx +96 -0
- package/src/player/components/TimelineLanes.test.tsx +0 -1
- package/src/player/components/TimelineLanes.tsx +3 -2
- package/src/player/components/TimelineOverlays.test.ts +161 -0
- package/src/player/components/TimelineOverlays.tsx +104 -11
- package/src/player/components/timelineCallbacks.ts +1 -1
- package/src/player/components/timelineClipDragGestureLifecycle.test.ts +18 -3
- package/src/player/components/timelineClipDragGestureLifecycle.ts +199 -51
- package/src/player/components/timelineClipDragPreview.test.ts +33 -0
- package/src/player/components/timelineClipDragPreview.ts +18 -12
- package/src/player/components/timelineClipDragTypes.ts +12 -0
- package/src/player/components/timelineDiamondTypes.ts +5 -15
- package/src/player/components/timelineDragDrop.test.tsx +206 -0
- package/src/player/components/timelineDragDrop.ts +152 -30
- package/src/player/components/timelineLaneProps.ts +0 -1
- package/src/player/components/timelineMarquee.test.ts +73 -25
- package/src/player/components/timelineMarquee.ts +44 -16
- package/src/player/components/timelineTestViewport.ts +13 -0
- package/src/player/components/timelineViewModel.ts +4 -4
- package/src/player/components/useTimelineClipDrag.resize.test.tsx +219 -17
- package/src/player/components/useTimelineClipDrag.ts +112 -70
- package/src/player/components/useTimelineClipRenderWindow.ts +4 -4
- package/src/player/components/useTimelineKeyframeHandlers.test.tsx +43 -7
- package/src/player/components/useTimelineKeyframeHandlers.ts +465 -2
- package/src/player/components/useTimelineLaneMoveRefresh.ts +7 -0
- package/src/player/components/useTimelineRangeSelection.test.tsx +204 -0
- package/src/player/components/useTimelineRangeSelection.ts +202 -69
- package/src/player/components/useTimelineRangeSelectionScrub.test.tsx +3 -2
- package/src/player/components/useTimelineRowVirtualization.ts +11 -4
- package/src/player/components/useTrackGapMenu.test.tsx +64 -0
- package/src/player/components/useTrackGapMenu.ts +32 -9
- package/src/player/store/keyframeSlice.ts +59 -18
- package/src/player/store/playerStore.test.ts +76 -0
- package/src/player/store/playerStore.ts +19 -11
- package/src/telemetry/canary.test.ts +325 -0
- package/src/telemetry/canary.ts +268 -0
- package/src/telemetry/client.test.ts +8 -3
- package/src/telemetry/client.ts +13 -43
- package/src/telemetry/config.ts +16 -2
- package/src/telemetry/distinctId.test.ts +35 -0
- package/src/telemetry/distinctId.ts +11 -2
- package/src/telemetry/policy.test.ts +81 -0
- package/src/telemetry/policy.ts +104 -0
- package/src/utils/studioTelemetry.test.ts +76 -0
- package/src/utils/studioTelemetry.ts +14 -6
- package/dist/assets/index-CddKwfQ1.js +0 -428
package/dist/index.d.ts
CHANGED
|
@@ -92,6 +92,16 @@ interface KeyframeCacheEntry {
|
|
|
92
92
|
ease?: string;
|
|
93
93
|
easeEach?: string;
|
|
94
94
|
}
|
|
95
|
+
interface FocusedEaseSegment {
|
|
96
|
+
animationId: string;
|
|
97
|
+
collidingAnimationTargets?: AnimationKeyframeTarget[];
|
|
98
|
+
tweenPercentage: number;
|
|
99
|
+
elementId: string;
|
|
100
|
+
projectId: string | null;
|
|
101
|
+
sessionEpoch: number;
|
|
102
|
+
nonce: number;
|
|
103
|
+
}
|
|
104
|
+
type FocusedEaseSegmentTarget = Omit<FocusedEaseSegment, "projectId" | "sessionEpoch" | "nonce">;
|
|
95
105
|
interface KeyframeSlice {
|
|
96
106
|
/** Selected collapsed (`element:pct`) or expanded (`element:group:animation:clipPct`) diamonds. */
|
|
97
107
|
selectedKeyframes: Set<string>;
|
|
@@ -103,20 +113,14 @@ interface KeyframeSlice {
|
|
|
103
113
|
setClipExpanded: (id: string, expanded: boolean) => void;
|
|
104
114
|
/** Union-expand clips (keyframed clips are expanded by default on load). */
|
|
105
115
|
expandClips: (ids: readonly string[]) => void;
|
|
106
|
-
/**
|
|
107
|
-
*
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
setFocusedEaseSegment: (target: {
|
|
115
|
-
animationId: string;
|
|
116
|
-
collidingAnimationTargets?: AnimationKeyframeTarget[];
|
|
117
|
-
tweenPercentage: number;
|
|
118
|
-
elementId: string;
|
|
119
|
-
} | null) => void;
|
|
116
|
+
/**
|
|
117
|
+
* Project/session/element-scoped request. Its nonce is monotonic across store
|
|
118
|
+
* resets so a stale consumer can never collide with a later request.
|
|
119
|
+
*/
|
|
120
|
+
focusedEaseSegment: FocusedEaseSegment | null;
|
|
121
|
+
focusedEaseRequestNonce: number;
|
|
122
|
+
setFocusedEaseSegment: (target: FocusedEaseSegmentTarget) => void;
|
|
123
|
+
clearFocusedEaseSegment: (nonce: number) => void;
|
|
120
124
|
/** Keyframe data per element id, populated from parsed GSAP animations. */
|
|
121
125
|
keyframeCache: Map<string, KeyframeCacheEntry>;
|
|
122
126
|
/** Unmerged source tweens per element; expanded property lanes read this, never keyframeCache. */
|
|
@@ -514,7 +518,7 @@ interface TimelineEditCallbacks {
|
|
|
514
518
|
onRazorSplit?: (element: TimelineElement, splitTime: number) => Promise<void> | void;
|
|
515
519
|
onRazorSplitAll?: (splitTime: number) => Promise<void> | void;
|
|
516
520
|
onDeleteKeyframe?: (elementId: string, keyframe: TimelineKeyframeTarget) => void;
|
|
517
|
-
onDeleteAllKeyframes?: (element: TimelineElement) => void;
|
|
521
|
+
onDeleteAllKeyframes?: (element: TimelineElement, animationId?: string) => void;
|
|
518
522
|
onMoveKeyframeToPlayhead?: (element: TimelineElement, keyframe: TimelineKeyframeTarget) => void;
|
|
519
523
|
/** Drag-to-retime: `keyframe` identifies the dragged keyframe (its percentage
|
|
520
524
|
* is clip-relative), `toClipPercentage` is the neighbour-clamped drop. */
|
|
@@ -888,8 +892,8 @@ interface PropertyPanelProps {
|
|
|
888
892
|
onAddKeyframe?: (animationId: string, percentage: number, property: string, value: number | string) => void;
|
|
889
893
|
onRemoveKeyframe?: (animationId: string, percentage: number) => void;
|
|
890
894
|
onUpdateKeyframeEase?: (animationId: string, percentage: number, ease: string) => void;
|
|
891
|
-
onSetAllKeyframeEases?: (animationId: string, ease: string) => void;
|
|
892
895
|
onUpdateSegmentEase?: NonNullable<GsapAnimationEditCallbacks["onUpdateSegmentEase"]>;
|
|
896
|
+
onSetAllKeyframeEases?: (animationId: string, ease: string) => void;
|
|
893
897
|
onConvertToKeyframes?: (animationId: string, duration?: number) => void;
|
|
894
898
|
onCommitAnimatedProperty?: (selection: DomEditSelection, property: string, value: number | string) => Promise<void>;
|
|
895
899
|
onCommitAnimatedProperties?: (selection: DomEditSelection, props: Record<string, number | string>) => Promise<void>;
|
package/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
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-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-DIntkrQl.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-BXkzp_OU.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|