@reactor-models/fast-h3 1.0.2
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/README.md +1433 -0
- package/dist/chunk-4DZUZYZH.mjs +301 -0
- package/dist/chunk-4DZUZYZH.mjs.map +1 -0
- package/dist/chunk-NMQA7NIH.mjs +343 -0
- package/dist/chunk-NMQA7NIH.mjs.map +1 -0
- package/dist/core.d.mts +653 -0
- package/dist/core.d.ts +653 -0
- package/dist/core.js +371 -0
- package/dist/core.js.map +1 -0
- package/dist/core.mjs +15 -0
- package/dist/core.mjs.map +1 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +683 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +61 -0
- package/dist/index.mjs.map +1 -0
- package/dist/react.d.mts +185 -0
- package/dist/react.d.ts +185 -0
- package/dist/react.js +347 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +51 -0
- package/dist/react.mjs.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FastH3Tracks,
|
|
3
|
+
MODEL_NAME
|
|
4
|
+
} from "./chunk-NMQA7NIH.mjs";
|
|
5
|
+
|
|
6
|
+
// src/react.tsx
|
|
7
|
+
import {
|
|
8
|
+
ReactorProvider,
|
|
9
|
+
useReactor,
|
|
10
|
+
useReactorMessage,
|
|
11
|
+
ReactorView
|
|
12
|
+
} from "@reactor-team/js-sdk";
|
|
13
|
+
import { jsx } from "react/jsx-runtime";
|
|
14
|
+
function _unwrapMessage(raw) {
|
|
15
|
+
const env = raw;
|
|
16
|
+
if (env && typeof env === "object" && env.data && typeof env.data === "object") {
|
|
17
|
+
return { ...env.data, type: env.type };
|
|
18
|
+
}
|
|
19
|
+
return raw;
|
|
20
|
+
}
|
|
21
|
+
function FastH3Provider({
|
|
22
|
+
children,
|
|
23
|
+
...rest
|
|
24
|
+
}) {
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
26
|
+
ReactorProvider,
|
|
27
|
+
{
|
|
28
|
+
...rest,
|
|
29
|
+
modelName: MODEL_NAME,
|
|
30
|
+
modelTracks: [...FastH3Tracks],
|
|
31
|
+
children
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
function useFastH3() {
|
|
36
|
+
const connect = useReactor((s) => s.connect);
|
|
37
|
+
const connectOptions = useReactor((s) => s.connectOptions);
|
|
38
|
+
const disconnect = useReactor((s) => s.disconnect);
|
|
39
|
+
const downloadClipAsFile = useReactor((s) => s.downloadClipAsFile);
|
|
40
|
+
const jwtToken = useReactor((s) => s.jwtToken);
|
|
41
|
+
const lastError = useReactor((s) => s.lastError);
|
|
42
|
+
const lastMessage = useReactor((s) => s.lastMessage);
|
|
43
|
+
const pauseTrack = useReactor((s) => s.pauseTrack);
|
|
44
|
+
const publish = useReactor((s) => s.publish);
|
|
45
|
+
const reconnect = useReactor((s) => s.reconnect);
|
|
46
|
+
const requestClip = useReactor((s) => s.requestClip);
|
|
47
|
+
const requestRecording = useReactor((s) => s.requestRecording);
|
|
48
|
+
const resumeTrack = useReactor((s) => s.resumeTrack);
|
|
49
|
+
const sendCommand = useReactor((s) => s.sendCommand);
|
|
50
|
+
const sessionId = useReactor((s) => s.sessionId);
|
|
51
|
+
const status = useReactor((s) => s.status);
|
|
52
|
+
const tracks = useReactor((s) => s.tracks);
|
|
53
|
+
const unpublish = useReactor((s) => s.unpublish);
|
|
54
|
+
const uploadFile = useReactor((s) => s.uploadFile);
|
|
55
|
+
return {
|
|
56
|
+
connect,
|
|
57
|
+
connectOptions,
|
|
58
|
+
disconnect,
|
|
59
|
+
downloadClipAsFile,
|
|
60
|
+
jwtToken,
|
|
61
|
+
lastError,
|
|
62
|
+
lastMessage,
|
|
63
|
+
pauseTrack,
|
|
64
|
+
publish,
|
|
65
|
+
reconnect,
|
|
66
|
+
requestClip,
|
|
67
|
+
requestRecording,
|
|
68
|
+
resumeTrack,
|
|
69
|
+
sendCommand,
|
|
70
|
+
sessionId,
|
|
71
|
+
status,
|
|
72
|
+
tracks,
|
|
73
|
+
unpublish,
|
|
74
|
+
uploadFile,
|
|
75
|
+
pop: async (params) => {
|
|
76
|
+
const reply = await sendCommand("pop", params);
|
|
77
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
78
|
+
},
|
|
79
|
+
move: async (params) => {
|
|
80
|
+
const reply = await sendCommand("move", params);
|
|
81
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
82
|
+
},
|
|
83
|
+
play: async (params) => {
|
|
84
|
+
await sendCommand("play", params);
|
|
85
|
+
return void 0;
|
|
86
|
+
},
|
|
87
|
+
stop: async () => {
|
|
88
|
+
await sendCommand("stop", {});
|
|
89
|
+
return void 0;
|
|
90
|
+
},
|
|
91
|
+
reset: async () => {
|
|
92
|
+
const reply = await sendCommand("reset", {});
|
|
93
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
94
|
+
},
|
|
95
|
+
enqueue: async (params) => {
|
|
96
|
+
const reply = await sendCommand("enqueue", params);
|
|
97
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
98
|
+
},
|
|
99
|
+
setSeed: async (params) => {
|
|
100
|
+
const reply = await sendCommand("set_seed", params);
|
|
101
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
102
|
+
},
|
|
103
|
+
getQueue: async () => {
|
|
104
|
+
const reply = await sendCommand("get_queue", {});
|
|
105
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
106
|
+
},
|
|
107
|
+
getState: async () => {
|
|
108
|
+
const reply = await sendCommand("get_state", {});
|
|
109
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
110
|
+
},
|
|
111
|
+
setCanvas: async (params) => {
|
|
112
|
+
const reply = await sendCommand("set_canvas", params);
|
|
113
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
114
|
+
},
|
|
115
|
+
setAutoplay: async (params) => {
|
|
116
|
+
const reply = await sendCommand("set_autoplay", params);
|
|
117
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
118
|
+
},
|
|
119
|
+
setClipSeconds: async (params) => {
|
|
120
|
+
const reply = await sendCommand("set_clip_seconds", params);
|
|
121
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
122
|
+
},
|
|
123
|
+
setFlushOnClipEnd: async (params) => {
|
|
124
|
+
const reply = await sendCommand("set_flush_on_clip_end", params);
|
|
125
|
+
return reply === void 0 ? void 0 : _unwrapMessage(reply);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function useFastH3Message(handler) {
|
|
130
|
+
useReactorMessage(
|
|
131
|
+
(msg) => handler(_unwrapMessage(msg))
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
function useFastH3ClipMoved(handler) {
|
|
135
|
+
useReactorMessage((msg) => {
|
|
136
|
+
const m = _unwrapMessage(msg);
|
|
137
|
+
if (m.type === "clip_moved") {
|
|
138
|
+
handler(m);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function useFastH3ClipFailed(handler) {
|
|
143
|
+
useReactorMessage((msg) => {
|
|
144
|
+
const m = _unwrapMessage(msg);
|
|
145
|
+
if (m.type === "clip_failed") {
|
|
146
|
+
handler(m);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
function useFastH3ClipPopped(handler) {
|
|
151
|
+
useReactorMessage((msg) => {
|
|
152
|
+
const m = _unwrapMessage(msg);
|
|
153
|
+
if (m.type === "clip_popped") {
|
|
154
|
+
handler(m);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
function useFastH3ClipQueued(handler) {
|
|
159
|
+
useReactorMessage((msg) => {
|
|
160
|
+
const m = _unwrapMessage(msg);
|
|
161
|
+
if (m.type === "clip_queued") {
|
|
162
|
+
handler(m);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function useFastH3ClipStarted(handler) {
|
|
167
|
+
useReactorMessage((msg) => {
|
|
168
|
+
const m = _unwrapMessage(msg);
|
|
169
|
+
if (m.type === "clip_started") {
|
|
170
|
+
handler(m);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
function useFastH3ClipStopped(handler) {
|
|
175
|
+
useReactorMessage((msg) => {
|
|
176
|
+
const m = _unwrapMessage(msg);
|
|
177
|
+
if (m.type === "clip_stopped") {
|
|
178
|
+
handler(m);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function useFastH3QueueUpdate(handler) {
|
|
183
|
+
useReactorMessage((msg) => {
|
|
184
|
+
const m = _unwrapMessage(msg);
|
|
185
|
+
if (m.type === "queue_update") {
|
|
186
|
+
handler(m);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
function useFastH3StateUpdate(handler) {
|
|
191
|
+
useReactorMessage((msg) => {
|
|
192
|
+
const m = _unwrapMessage(msg);
|
|
193
|
+
if (m.type === "state_update") {
|
|
194
|
+
handler(m);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
function useFastH3ClipFinished(handler) {
|
|
199
|
+
useReactorMessage((msg) => {
|
|
200
|
+
const m = _unwrapMessage(msg);
|
|
201
|
+
if (m.type === "clip_finished") {
|
|
202
|
+
handler(m);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function useFastH3CommandError(handler) {
|
|
207
|
+
useReactorMessage((msg) => {
|
|
208
|
+
const m = _unwrapMessage(msg);
|
|
209
|
+
if (m.type === "command_error") {
|
|
210
|
+
handler(m);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
function useFastH3SeedAccepted(handler) {
|
|
215
|
+
useReactorMessage((msg) => {
|
|
216
|
+
const m = _unwrapMessage(msg);
|
|
217
|
+
if (m.type === "seed_accepted") {
|
|
218
|
+
handler(m);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
function useFastH3SessionReset(handler) {
|
|
223
|
+
useReactorMessage((msg) => {
|
|
224
|
+
const m = _unwrapMessage(msg);
|
|
225
|
+
if (m.type === "session_reset") {
|
|
226
|
+
handler(m);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
function useFastH3ClipGenerated(handler) {
|
|
231
|
+
useReactorMessage((msg) => {
|
|
232
|
+
const m = _unwrapMessage(msg);
|
|
233
|
+
if (m.type === "clip_generated") {
|
|
234
|
+
handler(m);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
function useFastH3FlushAccepted(handler) {
|
|
239
|
+
useReactorMessage((msg) => {
|
|
240
|
+
const m = _unwrapMessage(msg);
|
|
241
|
+
if (m.type === "flush_accepted") {
|
|
242
|
+
handler(m);
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
function useFastH3CanvasAccepted(handler) {
|
|
247
|
+
useReactorMessage((msg) => {
|
|
248
|
+
const m = _unwrapMessage(msg);
|
|
249
|
+
if (m.type === "canvas_accepted") {
|
|
250
|
+
handler(m);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
function useFastH3AutoplayAccepted(handler) {
|
|
255
|
+
useReactorMessage((msg) => {
|
|
256
|
+
const m = _unwrapMessage(msg);
|
|
257
|
+
if (m.type === "autoplay_accepted") {
|
|
258
|
+
handler(m);
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
function useFastH3ClipLengthAccepted(handler) {
|
|
263
|
+
useReactorMessage((msg) => {
|
|
264
|
+
const m = _unwrapMessage(msg);
|
|
265
|
+
if (m.type === "clip_length_accepted") {
|
|
266
|
+
handler(m);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
function useFastH3Track(name) {
|
|
271
|
+
return useReactor((s) => s.tracks[name]);
|
|
272
|
+
}
|
|
273
|
+
function FastH3MainVideoView(props) {
|
|
274
|
+
return /* @__PURE__ */ jsx(ReactorView, { ...props, track: "main_video" });
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export {
|
|
278
|
+
FastH3Provider,
|
|
279
|
+
useFastH3,
|
|
280
|
+
useFastH3Message,
|
|
281
|
+
useFastH3ClipMoved,
|
|
282
|
+
useFastH3ClipFailed,
|
|
283
|
+
useFastH3ClipPopped,
|
|
284
|
+
useFastH3ClipQueued,
|
|
285
|
+
useFastH3ClipStarted,
|
|
286
|
+
useFastH3ClipStopped,
|
|
287
|
+
useFastH3QueueUpdate,
|
|
288
|
+
useFastH3StateUpdate,
|
|
289
|
+
useFastH3ClipFinished,
|
|
290
|
+
useFastH3CommandError,
|
|
291
|
+
useFastH3SeedAccepted,
|
|
292
|
+
useFastH3SessionReset,
|
|
293
|
+
useFastH3ClipGenerated,
|
|
294
|
+
useFastH3FlushAccepted,
|
|
295
|
+
useFastH3CanvasAccepted,
|
|
296
|
+
useFastH3AutoplayAccepted,
|
|
297
|
+
useFastH3ClipLengthAccepted,
|
|
298
|
+
useFastH3Track,
|
|
299
|
+
FastH3MainVideoView
|
|
300
|
+
};
|
|
301
|
+
//# sourceMappingURL=chunk-4DZUZYZH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react.tsx"],"sourcesContent":["// Copyright (c) 2026 Reactor Technologies, Inc. All rights reserved.\n\n// Auto-generated by @reactor-team/codegen — DO NOT EDIT\n// Model: fast-h3 v1.0.2\n\n\"use client\";\n\nimport { type ReactElement } from \"react\";\nimport {\n ReactorProvider,\n useReactor,\n useReactorMessage,\n ReactorView,\n type ReactorViewProps,\n} from \"@reactor-team/js-sdk\";\nimport {\n MODEL_NAME,\n FastH3Tracks,\n type FastH3Options,\n type FastH3PopParams,\n type FastH3MoveParams,\n type FastH3PlayParams,\n type FastH3EnqueueParams,\n type FastH3SetSeedParams,\n type FastH3SetCanvasParams,\n type FastH3SetAutoplayParams,\n type FastH3SetClipSecondsParams,\n type FastH3SetFlushOnClipEndParams,\n type FastH3Message,\n type FastH3ClipMovedMessage,\n type FastH3ClipFailedMessage,\n type FastH3ClipPoppedMessage,\n type FastH3ClipQueuedMessage,\n type FastH3ClipStartedMessage,\n type FastH3ClipStoppedMessage,\n type FastH3QueueUpdateMessage,\n type FastH3StateUpdateMessage,\n type FastH3ClipFinishedMessage,\n type FastH3CommandErrorMessage,\n type FastH3SeedAcceptedMessage,\n type FastH3SessionResetMessage,\n type FastH3ClipGeneratedMessage,\n type FastH3FlushAcceptedMessage,\n type FastH3CanvasAcceptedMessage,\n type FastH3AutoplayAcceptedMessage,\n type FastH3ClipLengthAcceptedMessage,\n type FastH3RecvTrackName,\n} from \"./core.js\";\n\n/**\n * @internal Flatten the `{ type, data, uploads? }` envelope the SDK\n * hands to `reactor.on(\"message\", …)` so a field the model schema\n * declares on a message is reachable at `msg.<field>` — matching the\n * shape the exported message interfaces promise.\n */\nfunction _unwrapMessage<T>(raw: unknown): T {\n const env = raw as { type?: string; data?: Record<string, unknown> };\n if (\n env &&\n typeof env === \"object\" &&\n env.data &&\n typeof env.data === \"object\"\n ) {\n return { ...env.data, type: env.type } as T;\n }\n return raw as T;\n}\n\n/**\n * Props for the {@link FastH3Provider} component.\n *\n * Derived from `ReactorProvider`'s own props, with `modelName` and\n * `modelTracks` stripped — those are supplied by this provider.\n */\nexport type FastH3ProviderProps = Omit<\n Parameters<typeof ReactorProvider>[0],\n \"modelName\" | \"modelTracks\"\n>;\n\n/**\n * Provider for the FastH3 model.\n *\n * Wraps {@link ReactorProvider} with `modelName` and `modelTracks` pre-configured from the\n * generated constants. Drop this near the top of your tree, then use\n * {@link useFastH3} and the `useFastH3<Message>` hooks below it.\n */\nexport function FastH3Provider({\n children,\n ...rest\n}: FastH3ProviderProps): ReactElement {\n return (\n <ReactorProvider\n {...rest}\n modelName={MODEL_NAME}\n modelTracks={[...FastH3Tracks]}\n >\n {children}\n </ReactorProvider>\n );\n}\n\n/**\n * Access the FastH3 model as typed commands bound to the nearest\n * {@link FastH3Provider}.\n *\n * Returns the full action surface — every public field on the SDK's\n * `ReactorStore` (`status`, `sessionId`, `connect`, `disconnect`,\n * `sendCommand`, `uploadFile`, `publish`, `unpublish`, `reconnect`,\n * …) is exposed automatically, alongside one typed method per\n * model event.\n *\n * Fields are pulled off the store one at a time so Zustand's\n * shallow-equality selector keeps each subscription scoped — a\n * component reading only `status` doesn't re-render when\n * `lastError` changes. Future SDK releases that add new\n * store fields flow into this hook on the next codegen run with no\n * hand-edit (the field list is derived from `js-sdk`'s d.ts via\n * `loadReactorStoreFieldsFromDts` in `sdk-surface.ts`).\n *\n * Each typed event method resolves with the command's correlated\n * reply: the declared reply message for commands that return one,\n * `undefined` once the handler completes for commands that don't.\n */\nexport function useFastH3() {\n const connect = useReactor((s) => s.connect);\n const connectOptions = useReactor((s) => s.connectOptions);\n const disconnect = useReactor((s) => s.disconnect);\n const downloadClipAsFile = useReactor((s) => s.downloadClipAsFile);\n const jwtToken = useReactor((s) => s.jwtToken);\n const lastError = useReactor((s) => s.lastError);\n const lastMessage = useReactor((s) => s.lastMessage);\n const pauseTrack = useReactor((s) => s.pauseTrack);\n const publish = useReactor((s) => s.publish);\n const reconnect = useReactor((s) => s.reconnect);\n const requestClip = useReactor((s) => s.requestClip);\n const requestRecording = useReactor((s) => s.requestRecording);\n const resumeTrack = useReactor((s) => s.resumeTrack);\n const sendCommand = useReactor((s) => s.sendCommand);\n const sessionId = useReactor((s) => s.sessionId);\n const status = useReactor((s) => s.status);\n const tracks = useReactor((s) => s.tracks);\n const unpublish = useReactor((s) => s.unpublish);\n const uploadFile = useReactor((s) => s.uploadFile);\n\n return {\n connect,\n connectOptions,\n disconnect,\n downloadClipAsFile,\n jwtToken,\n lastError,\n lastMessage,\n pauseTrack,\n publish,\n reconnect,\n requestClip,\n requestRecording,\n resumeTrack,\n sendCommand,\n sessionId,\n status,\n tracks,\n unpublish,\n uploadFile,\n pop: async (params: FastH3PopParams): Promise<FastH3ClipPoppedMessage | undefined> => {\n const reply = await sendCommand(\"pop\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3ClipPoppedMessage>(reply);\n },\n move: async (params: FastH3MoveParams): Promise<FastH3ClipMovedMessage | undefined> => {\n const reply = await sendCommand(\"move\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3ClipMovedMessage>(reply);\n },\n play: async (params: FastH3PlayParams): Promise<undefined> => {\n await sendCommand(\"play\", params);\n return undefined;\n },\n stop: async (): Promise<undefined> => {\n await sendCommand(\"stop\", {});\n return undefined;\n },\n reset: async (): Promise<FastH3SessionResetMessage | undefined> => {\n const reply = await sendCommand(\"reset\", {});\n return reply === undefined ? undefined : _unwrapMessage<FastH3SessionResetMessage>(reply);\n },\n enqueue: async (params: FastH3EnqueueParams): Promise<FastH3ClipQueuedMessage | undefined> => {\n const reply = await sendCommand(\"enqueue\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3ClipQueuedMessage>(reply);\n },\n setSeed: async (params: FastH3SetSeedParams): Promise<FastH3SeedAcceptedMessage | undefined> => {\n const reply = await sendCommand(\"set_seed\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3SeedAcceptedMessage>(reply);\n },\n getQueue: async (): Promise<FastH3QueueUpdateMessage | undefined> => {\n const reply = await sendCommand(\"get_queue\", {});\n return reply === undefined ? undefined : _unwrapMessage<FastH3QueueUpdateMessage>(reply);\n },\n getState: async (): Promise<FastH3StateUpdateMessage | undefined> => {\n const reply = await sendCommand(\"get_state\", {});\n return reply === undefined ? undefined : _unwrapMessage<FastH3StateUpdateMessage>(reply);\n },\n setCanvas: async (params: FastH3SetCanvasParams): Promise<FastH3CanvasAcceptedMessage | undefined> => {\n const reply = await sendCommand(\"set_canvas\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3CanvasAcceptedMessage>(reply);\n },\n setAutoplay: async (params: FastH3SetAutoplayParams): Promise<FastH3AutoplayAcceptedMessage | undefined> => {\n const reply = await sendCommand(\"set_autoplay\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3AutoplayAcceptedMessage>(reply);\n },\n setClipSeconds: async (params: FastH3SetClipSecondsParams): Promise<FastH3ClipLengthAcceptedMessage | undefined> => {\n const reply = await sendCommand(\"set_clip_seconds\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3ClipLengthAcceptedMessage>(reply);\n },\n setFlushOnClipEnd: async (params: FastH3SetFlushOnClipEndParams): Promise<FastH3FlushAcceptedMessage | undefined> => {\n const reply = await sendCommand(\"set_flush_on_clip_end\", params);\n return reply === undefined ? undefined : _unwrapMessage<FastH3FlushAcceptedMessage>(reply);\n },\n };\n}\n\n/**\n * Subscribe to any FastH3 message with a fully-typed handler.\n * The handler receives a discriminated FastH3Message.\n */\nexport function useFastH3Message(\n handler: (message: FastH3Message) => void,\n): void {\n useReactorMessage((msg: unknown) =>\n handler(_unwrapMessage<FastH3Message>(msg)),\n );\n}\n\n/**\n * Subscribe to \"clip_moved\" messages only.\n * Handler receives a fully-typed FastH3ClipMovedMessage.\n */\nexport function useFastH3ClipMoved(\n handler: (message: FastH3ClipMovedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_moved\") {\n handler(m as FastH3ClipMovedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_failed\" messages only.\n * Handler receives a fully-typed FastH3ClipFailedMessage.\n */\nexport function useFastH3ClipFailed(\n handler: (message: FastH3ClipFailedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_failed\") {\n handler(m as FastH3ClipFailedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_popped\" messages only.\n * Handler receives a fully-typed FastH3ClipPoppedMessage.\n */\nexport function useFastH3ClipPopped(\n handler: (message: FastH3ClipPoppedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_popped\") {\n handler(m as FastH3ClipPoppedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_queued\" messages only.\n * Handler receives a fully-typed FastH3ClipQueuedMessage.\n */\nexport function useFastH3ClipQueued(\n handler: (message: FastH3ClipQueuedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_queued\") {\n handler(m as FastH3ClipQueuedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_started\" messages only.\n * Handler receives a fully-typed FastH3ClipStartedMessage.\n */\nexport function useFastH3ClipStarted(\n handler: (message: FastH3ClipStartedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_started\") {\n handler(m as FastH3ClipStartedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_stopped\" messages only.\n * Handler receives a fully-typed FastH3ClipStoppedMessage.\n */\nexport function useFastH3ClipStopped(\n handler: (message: FastH3ClipStoppedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_stopped\") {\n handler(m as FastH3ClipStoppedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"queue_update\" messages only.\n * Handler receives a fully-typed FastH3QueueUpdateMessage.\n */\nexport function useFastH3QueueUpdate(\n handler: (message: FastH3QueueUpdateMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"queue_update\") {\n handler(m as FastH3QueueUpdateMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"state_update\" messages only.\n * Handler receives a fully-typed FastH3StateUpdateMessage.\n */\nexport function useFastH3StateUpdate(\n handler: (message: FastH3StateUpdateMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"state_update\") {\n handler(m as FastH3StateUpdateMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_finished\" messages only.\n * Handler receives a fully-typed FastH3ClipFinishedMessage.\n */\nexport function useFastH3ClipFinished(\n handler: (message: FastH3ClipFinishedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_finished\") {\n handler(m as FastH3ClipFinishedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"command_error\" messages only.\n * Handler receives a fully-typed FastH3CommandErrorMessage.\n */\nexport function useFastH3CommandError(\n handler: (message: FastH3CommandErrorMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"command_error\") {\n handler(m as FastH3CommandErrorMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"seed_accepted\" messages only.\n * Handler receives a fully-typed FastH3SeedAcceptedMessage.\n */\nexport function useFastH3SeedAccepted(\n handler: (message: FastH3SeedAcceptedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"seed_accepted\") {\n handler(m as FastH3SeedAcceptedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"session_reset\" messages only.\n * Handler receives a fully-typed FastH3SessionResetMessage.\n */\nexport function useFastH3SessionReset(\n handler: (message: FastH3SessionResetMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"session_reset\") {\n handler(m as FastH3SessionResetMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_generated\" messages only.\n * Handler receives a fully-typed FastH3ClipGeneratedMessage.\n */\nexport function useFastH3ClipGenerated(\n handler: (message: FastH3ClipGeneratedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_generated\") {\n handler(m as FastH3ClipGeneratedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"flush_accepted\" messages only.\n * Handler receives a fully-typed FastH3FlushAcceptedMessage.\n */\nexport function useFastH3FlushAccepted(\n handler: (message: FastH3FlushAcceptedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"flush_accepted\") {\n handler(m as FastH3FlushAcceptedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"canvas_accepted\" messages only.\n * Handler receives a fully-typed FastH3CanvasAcceptedMessage.\n */\nexport function useFastH3CanvasAccepted(\n handler: (message: FastH3CanvasAcceptedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"canvas_accepted\") {\n handler(m as FastH3CanvasAcceptedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"autoplay_accepted\" messages only.\n * Handler receives a fully-typed FastH3AutoplayAcceptedMessage.\n */\nexport function useFastH3AutoplayAccepted(\n handler: (message: FastH3AutoplayAcceptedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"autoplay_accepted\") {\n handler(m as FastH3AutoplayAcceptedMessage);\n }\n });\n}\n\n/**\n * Subscribe to \"clip_length_accepted\" messages only.\n * Handler receives a fully-typed FastH3ClipLengthAcceptedMessage.\n */\nexport function useFastH3ClipLengthAccepted(\n handler: (message: FastH3ClipLengthAcceptedMessage) => void,\n): void {\n useReactorMessage((msg: unknown) => {\n const m = _unwrapMessage<FastH3Message>(msg);\n if (m.type === \"clip_length_accepted\") {\n handler(m as FastH3ClipLengthAcceptedMessage);\n }\n });\n}\n\n/**\n * Subscribe to a recvonly MediaStreamTrack the model publishes, by name.\n *\n * Returns `undefined` until the model emits the track, then the live track for the lifetime of the connection. `name` is constrained to the model's declared recvonly channels — use one of `FastH3RecvTrackName`.\n * @param name - A recvonly track name declared by the model\n * @returns The live MediaStreamTrack, or `undefined` until received\n */\nexport function useFastH3Track(\n name: FastH3RecvTrackName,\n): MediaStreamTrack | undefined {\n return useReactor((s) => s.tracks[name]);\n}\n\nexport type FastH3MainVideoViewProps = Omit<ReactorViewProps, \"track\">;\n\n/**\n * Render the model's \"main_video\" recvonly video track in a `<video>` element.\n *\n * Thin wrapper around `<ReactorView>` with `track` pre-bound. Accepts every other `ReactorViewProps` (`audioTrack`, `className`, `style`, `videoObjectFit`, `muted`, …). Must be rendered inside `<FastH3Provider>`.\n */\nexport function FastH3MainVideoView(\n props: FastH3MainVideoViewProps,\n): ReactElement {\n return <ReactorView {...props} track=\"main_video\" />;\n}\n"],"mappings":"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","names":[]}
|