@outkit-dev/react 0.0.6 → 0.0.7

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/index.cjs CHANGED
@@ -270,20 +270,24 @@ function useBlockStream() {
270
270
  setIsStreaming(false);
271
271
  }, []);
272
272
  const streamRef = (0, import_react2.useRef)(null);
273
- if (streamRef.current === null) {
274
- streamRef.current = new import_core.OutkitStream({
275
- onBlocks: (b) => batchBlocks(b),
276
- onDesign: (d) => setDesignState(d),
277
- onComplete: () => handleComplete()
278
- });
279
- }
280
- const stream = streamRef.current;
273
+ const getStream = (0, import_react2.useCallback)(() => {
274
+ if (streamRef.current === null || streamRef.current.streamState === "destroyed") {
275
+ streamRef.current = new import_core.OutkitStream({
276
+ onBlocks: (b) => batchBlocks(b),
277
+ onDesign: (d) => setDesignState(d),
278
+ onComplete: () => handleComplete()
279
+ });
280
+ }
281
+ return streamRef.current;
282
+ }, [batchBlocks, handleComplete]);
283
+ const stream = getStream();
281
284
  (0, import_react2.useEffect)(() => {
285
+ const s = getStream();
282
286
  return () => {
283
287
  if (rafRef.current) cancelAnimationFrame(rafRef.current);
284
- stream.destroy();
288
+ s.destroy();
285
289
  };
286
- }, [stream]);
290
+ }, [getStream]);
287
291
  const reset = (0, import_react2.useCallback)(() => {
288
292
  if (rafRef.current) {
289
293
  cancelAnimationFrame(rafRef.current);
@@ -291,30 +295,54 @@ function useBlockStream() {
291
295
  }
292
296
  pendingRef.current = null;
293
297
  streamingRef.current = false;
294
- stream.reset();
298
+ getStream().reset();
295
299
  setBlocks([]);
296
300
  setIsStreaming(false);
297
301
  setDesignState(void 0);
298
- }, [stream]);
302
+ }, [getStream]);
299
303
  const push = (0, import_react2.useCallback)(
300
304
  (newBlocks) => batchBlocks(newBlocks),
301
305
  [batchBlocks]
302
306
  );
303
307
  const setDesign = (0, import_react2.useCallback)(
304
- (tokens) => stream.feedMeta(tokens),
305
- [stream]
308
+ (tokens) => getStream().feedMeta(tokens),
309
+ [getStream]
310
+ );
311
+ const complete = (0, import_react2.useCallback)(() => getStream().feedDone(), [getStream]);
312
+ const feedResponse = (0, import_react2.useCallback)(
313
+ (response) => getStream().feedResponse(response),
314
+ [getStream]
315
+ );
316
+ const feedSSE = (0, import_react2.useCallback)(
317
+ (rawText) => getStream().feedSSE(rawText),
318
+ [getStream]
319
+ );
320
+ const feedEvent = (0, import_react2.useCallback)(
321
+ (data) => getStream().feedEvent(data),
322
+ [getStream]
323
+ );
324
+ const feedChunk = (0, import_react2.useCallback)(
325
+ (data) => getStream().feedChunk(data),
326
+ [getStream]
327
+ );
328
+ const feedMeta = (0, import_react2.useCallback)(
329
+ (tokens) => getStream().feedMeta(tokens),
330
+ [getStream]
331
+ );
332
+ const feedDone = (0, import_react2.useCallback)(
333
+ () => getStream().feedDone(),
334
+ [getStream]
306
335
  );
307
- const complete = (0, import_react2.useCallback)(() => stream.feedDone(), [stream]);
308
336
  return {
309
337
  blocks,
310
338
  isStreaming,
311
339
  design,
312
- feedResponse: stream.feedResponse.bind(stream),
313
- feedSSE: stream.feedSSE.bind(stream),
314
- feedEvent: stream.feedEvent.bind(stream),
315
- feedChunk: stream.feedChunk.bind(stream),
316
- feedMeta: stream.feedMeta.bind(stream),
317
- feedDone: stream.feedDone.bind(stream),
340
+ feedResponse,
341
+ feedSSE,
342
+ feedEvent,
343
+ feedChunk,
344
+ feedMeta,
345
+ feedDone,
318
346
  push,
319
347
  setDesign,
320
348
  complete,
package/dist/index.js CHANGED
@@ -236,20 +236,24 @@ function useBlockStream() {
236
236
  setIsStreaming(false);
237
237
  }, []);
238
238
  const streamRef = useRef2(null);
239
- if (streamRef.current === null) {
240
- streamRef.current = new OutkitStream({
241
- onBlocks: (b) => batchBlocks(b),
242
- onDesign: (d) => setDesignState(d),
243
- onComplete: () => handleComplete()
244
- });
245
- }
246
- const stream = streamRef.current;
239
+ const getStream = useCallback(() => {
240
+ if (streamRef.current === null || streamRef.current.streamState === "destroyed") {
241
+ streamRef.current = new OutkitStream({
242
+ onBlocks: (b) => batchBlocks(b),
243
+ onDesign: (d) => setDesignState(d),
244
+ onComplete: () => handleComplete()
245
+ });
246
+ }
247
+ return streamRef.current;
248
+ }, [batchBlocks, handleComplete]);
249
+ const stream = getStream();
247
250
  useEffect2(() => {
251
+ const s = getStream();
248
252
  return () => {
249
253
  if (rafRef.current) cancelAnimationFrame(rafRef.current);
250
- stream.destroy();
254
+ s.destroy();
251
255
  };
252
- }, [stream]);
256
+ }, [getStream]);
253
257
  const reset = useCallback(() => {
254
258
  if (rafRef.current) {
255
259
  cancelAnimationFrame(rafRef.current);
@@ -257,30 +261,54 @@ function useBlockStream() {
257
261
  }
258
262
  pendingRef.current = null;
259
263
  streamingRef.current = false;
260
- stream.reset();
264
+ getStream().reset();
261
265
  setBlocks([]);
262
266
  setIsStreaming(false);
263
267
  setDesignState(void 0);
264
- }, [stream]);
268
+ }, [getStream]);
265
269
  const push = useCallback(
266
270
  (newBlocks) => batchBlocks(newBlocks),
267
271
  [batchBlocks]
268
272
  );
269
273
  const setDesign = useCallback(
270
- (tokens) => stream.feedMeta(tokens),
271
- [stream]
274
+ (tokens) => getStream().feedMeta(tokens),
275
+ [getStream]
276
+ );
277
+ const complete = useCallback(() => getStream().feedDone(), [getStream]);
278
+ const feedResponse = useCallback(
279
+ (response) => getStream().feedResponse(response),
280
+ [getStream]
281
+ );
282
+ const feedSSE = useCallback(
283
+ (rawText) => getStream().feedSSE(rawText),
284
+ [getStream]
285
+ );
286
+ const feedEvent = useCallback(
287
+ (data) => getStream().feedEvent(data),
288
+ [getStream]
289
+ );
290
+ const feedChunk = useCallback(
291
+ (data) => getStream().feedChunk(data),
292
+ [getStream]
293
+ );
294
+ const feedMeta = useCallback(
295
+ (tokens) => getStream().feedMeta(tokens),
296
+ [getStream]
297
+ );
298
+ const feedDone = useCallback(
299
+ () => getStream().feedDone(),
300
+ [getStream]
272
301
  );
273
- const complete = useCallback(() => stream.feedDone(), [stream]);
274
302
  return {
275
303
  blocks,
276
304
  isStreaming,
277
305
  design,
278
- feedResponse: stream.feedResponse.bind(stream),
279
- feedSSE: stream.feedSSE.bind(stream),
280
- feedEvent: stream.feedEvent.bind(stream),
281
- feedChunk: stream.feedChunk.bind(stream),
282
- feedMeta: stream.feedMeta.bind(stream),
283
- feedDone: stream.feedDone.bind(stream),
306
+ feedResponse,
307
+ feedSSE,
308
+ feedEvent,
309
+ feedChunk,
310
+ feedMeta,
311
+ feedDone,
284
312
  push,
285
313
  setDesign,
286
314
  complete,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outkit-dev/react",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -17,7 +17,7 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "@outkit-dev/renderer": "0.0.5",
20
- "@outkit-dev/core": "0.0.6"
20
+ "@outkit-dev/core": "0.0.7"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "react": "^18.0.0 || ^19.0.0"