@hyperframes/studio 0.8.174 → 0.8.176

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.
@@ -1,4 +1,4 @@
1
- import{n as Qi}from"./index-DGl_Zvb3.js";/*!
1
+ import{n as Qi}from"./index-BkDF4Z-5.js";/*!
2
2
  * Copyright (c) 2026-present, Vanilagy and contributors
3
3
  *
4
4
  * This Source Code Form is subject to the terms of the Mozilla Public
package/dist/index.html CHANGED
@@ -14,7 +14,7 @@
14
14
  document.documentElement.dataset.theme = "paper";
15
15
  }
16
16
  </script>
17
- <script type="module" crossorigin src="/assets/index-DGl_Zvb3.js"></script>
17
+ <script type="module" crossorigin src="/assets/index-BkDF4Z-5.js"></script>
18
18
  <link rel="stylesheet" crossorigin href="/assets/index-CESvLzz0.css">
19
19
  </head>
20
20
  <body>
package/dist/index.js CHANGED
@@ -32181,7 +32181,7 @@ function acceptedPreviewMessage(e, iframe) {
32181
32181
  if (data?.source !== "hf-preview") return null;
32182
32182
  return acceptStudioRuntimeMessage(data) ? data : null;
32183
32183
  }
32184
- function handleStateMessage(deps, iframe) {
32184
+ function handleStateMessage(deps, iframe, playingHoldsClipListPosts) {
32185
32185
  try {
32186
32186
  if (usePlayerStore.getState().elements.length === 0) {
32187
32187
  const manifest = iframe?.contentWindow?.__clipManifest;
@@ -32189,7 +32189,7 @@ function handleStateMessage(deps, iframe) {
32189
32189
  deps.processTimelineMessageRef.current(manifest);
32190
32190
  }
32191
32191
  }
32192
- if (Date.now() - deps.lastTimelineMessageRef.current > 500) {
32192
+ if (!playingHoldsClipListPosts && Date.now() - deps.lastTimelineMessageRef.current > 500) {
32193
32193
  deps.enrichMissingCompositionsRef.current();
32194
32194
  }
32195
32195
  } catch {
@@ -32214,7 +32214,7 @@ function createPreviewMessageHandler(deps) {
32214
32214
  const iframe = deps.iframeRef.current;
32215
32215
  const data = acceptedPreviewMessage(e, iframe);
32216
32216
  if (!data) return;
32217
- if (data.type === "state") return handleStateMessage(deps, iframe);
32217
+ if (data.type === "state") return handleStateMessage(deps, iframe, data.isPlaying === true);
32218
32218
  if (data.type === "timeline" && Array.isArray(data.clips)) {
32219
32219
  handleTimelineMessage(deps, iframe, data);
32220
32220
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/studio",
3
- "version": "0.8.174",
3
+ "version": "0.8.176",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -59,12 +59,12 @@
59
59
  "dockview-react": "8.3.1",
60
60
  "gsap": "^3.13.0",
61
61
  "mediabunny": "^1.45.3",
62
- "@hyperframes/core": "0.8.174",
63
- "@hyperframes/parsers": "0.8.174",
64
- "@hyperframes/shader-transitions": "0.8.174",
65
- "@hyperframes/sdk": "0.8.174",
66
- "@hyperframes/player": "0.8.174",
67
- "@hyperframes/studio-server": "0.8.174"
62
+ "@hyperframes/core": "0.8.176",
63
+ "@hyperframes/parsers": "0.8.176",
64
+ "@hyperframes/player": "0.8.176",
65
+ "@hyperframes/sdk": "0.8.176",
66
+ "@hyperframes/shader-transitions": "0.8.176",
67
+ "@hyperframes/studio-server": "0.8.176"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@tailwindcss/vite": "^4.3.3",
@@ -81,7 +81,7 @@
81
81
  "vite": "^6.4.2",
82
82
  "vitest": "^4.1.11",
83
83
  "zustand": "^5.0.0",
84
- "@hyperframes/producer": "0.8.174"
84
+ "@hyperframes/producer": "0.8.176"
85
85
  },
86
86
  "peerDependencies": {
87
87
  "react": "19",
@@ -0,0 +1,23 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { createPreviewMessageHandler } from "./previewMessageRouter";
3
+
4
+ function route(isPlaying: boolean) {
5
+ const enrich = vi.fn();
6
+ const handle = createPreviewMessageHandler({
7
+ iframeRef: { current: null },
8
+ processTimelineMessageRef: { current: vi.fn() },
9
+ enrichMissingCompositionsRef: { current: enrich },
10
+ lastTimelineMessageRef: { current: 0 },
11
+ getAdapter: () => null,
12
+ syncTimelineElements: vi.fn(),
13
+ });
14
+ handle(new MessageEvent("message", { data: { source: "hf-preview", type: "state", isPlaying } }));
15
+ return enrich;
16
+ }
17
+
18
+ describe("preview state messages", () => {
19
+ it("re-reads the preview for missing compositions only while it is stopped", () => {
20
+ expect(route(true)).not.toHaveBeenCalled();
21
+ expect(route(false)).toHaveBeenCalledTimes(1);
22
+ });
23
+ });
@@ -29,6 +29,7 @@ interface PreviewMessage {
29
29
  source?: string;
30
30
  type?: string;
31
31
  clips?: unknown;
32
+ isPlaying?: unknown;
32
33
  }
33
34
 
34
35
  export interface PreviewMessageRouterDeps {
@@ -68,6 +69,7 @@ function acceptedPreviewMessage(
68
69
  function handleStateMessage(
69
70
  deps: PreviewMessageRouterDeps,
70
71
  iframe: HTMLIFrameElement | null,
72
+ playingHoldsClipListPosts: boolean,
71
73
  ): void {
72
74
  try {
73
75
  if (usePlayerStore.getState().elements.length === 0) {
@@ -76,7 +78,7 @@ function handleStateMessage(
76
78
  deps.processTimelineMessageRef.current(manifest);
77
79
  }
78
80
  }
79
- if (Date.now() - deps.lastTimelineMessageRef.current > 500) {
81
+ if (!playingHoldsClipListPosts && Date.now() - deps.lastTimelineMessageRef.current > 500) {
80
82
  deps.enrichMissingCompositionsRef.current();
81
83
  }
82
84
  } catch {}
@@ -112,7 +114,7 @@ export function createPreviewMessageHandler(
112
114
  const iframe = deps.iframeRef.current;
113
115
  const data = acceptedPreviewMessage(e, iframe);
114
116
  if (!data) return;
115
- if (data.type === "state") return handleStateMessage(deps, iframe);
117
+ if (data.type === "state") return handleStateMessage(deps, iframe, data.isPlaying === true);
116
118
  if (data.type === "timeline" && Array.isArray(data.clips)) {
117
119
  handleTimelineMessage(deps, iframe, data as unknown as ClipManifestMessage);
118
120
  }