@bendyline/squisq-editor-react 2.13.15 → 2.13.16

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,6 +1,6 @@
1
1
  import {
2
2
  RecorderModal
3
- } from "./chunk-FOKUOC7E.js";
3
+ } from "./chunk-ECS2FFXA.js";
4
4
 
5
5
  // src/recorder/RecorderButton.tsx
6
6
  import { useCallback, useState } from "react";
package/dist/index.d.ts CHANGED
@@ -3513,6 +3513,15 @@ declare function shouldPasteAsTimelineFence(text: string): boolean;
3513
3513
  * resolved into a renderable card plus the prose the presenter may want to
3514
3514
  * read from.
3515
3515
  *
3516
+ * ## A designed presentation replaces the per-block cards
3517
+ *
3518
+ * When the doc has a presentation (summarized or dynamic slides), the deck is
3519
+ * that presentation's slides, as playback will show them. A block can then
3520
+ * span several slides; each slide still names its source block, whose full
3521
+ * prose sits beneath it, and the block's first slide times the block. Each
3522
+ * slide also carries where its passage begins, which is how a take's first
3523
+ * showings become the presentation's own slide times.
3524
+ *
3516
3525
  * ## Why the deck is anchored on blocks, not on preview slides
3517
3526
  *
3518
3527
  * Slide timings are recorded per DOC BLOCK, so the panel's list and the
@@ -3533,8 +3542,15 @@ declare function shouldPasteAsTimelineFence(text: string): boolean;
3533
3542
 
3534
3543
  /** One slide in the recorder's deck, keyed by the doc block it came from. */
3535
3544
  interface RecorderSlide {
3545
+ /** Unique within the deck: the block id, or the presentation slide's id. */
3546
+ id: string;
3536
3547
  /** Doc block id — the key the advance log and the timing sidecar both use. */
3537
3548
  blockId: string;
3549
+ /**
3550
+ * Where a presentation slide's passage begins in the narration script — the
3551
+ * key its first showing is recorded under. Absent for per-block cards.
3552
+ */
3553
+ sourceCharOffset?: number;
3538
3554
  /** Heading text, or a positional fallback for a heading-less block. */
3539
3555
  heading: string;
3540
3556
  /** The block's body prose, shown beneath the card as presenter notes. */
@@ -3545,7 +3561,8 @@ interface RecorderSlide {
3545
3561
  /**
3546
3562
  * Build the deck for a doc. Never throws: a block whose card cannot be
3547
3563
  * materialized still appears, with `visual: null`, so the deck's indices
3548
- * always line up with `flattenRenderableBlocks`.
3564
+ * always line up with `flattenRenderableBlocks` (or, for a presentation,
3565
+ * with its slides).
3549
3566
  */
3550
3567
  declare function buildRecorderSlideDeck(doc: Doc, theme: Theme, viewport: ViewportConfig): RecorderSlide[];
3551
3568
 
package/dist/index.js CHANGED
@@ -243,7 +243,7 @@ import {
243
243
  videoEmbedParagraphJson,
244
244
  viewStateFromBinding,
245
245
  writeHeadingViewState
246
- } from "./chunk-CLULTEKS.js";
246
+ } from "./chunk-54MN2HG7.js";
247
247
  import {
248
248
  EditorProvider,
249
249
  applySourceEditsToText,
@@ -290,7 +290,7 @@ import {
290
290
  } from "./chunk-HLU6ZBS7.js";
291
291
  import {
292
292
  RecorderButton
293
- } from "./chunk-F4D3VBAS.js";
293
+ } from "./chunk-RHH2PVCL.js";
294
294
  import {
295
295
  RecorderDeviceQuickPicks,
296
296
  RecorderDeviceSettingsPanel,
@@ -315,7 +315,7 @@ import {
315
315
  unshownSlidesWarning,
316
316
  useMediaDevices,
317
317
  useMediaRecorder
318
- } from "./chunk-FOKUOC7E.js";
318
+ } from "./chunk-ECS2FFXA.js";
319
319
  import {
320
320
  DEFAULT_RECORDER_DEVICE_SETTINGS,
321
321
  buildRecorderAudioConstraints,
@@ -143,7 +143,11 @@ async function updateNarrationTimingsFromAudio(input) {
143
143
  signal.throwIfAborted();
144
144
  await container.writeFile(
145
145
  sidecarPath,
146
- encodeNarrationTimingJson(previous?.builds ? { ...payload, builds: previous.builds } : payload),
146
+ encodeNarrationTimingJson({
147
+ ...payload,
148
+ ...previous?.builds ? { builds: previous.builds } : {},
149
+ ...previous?.slides ? { slides: previous.slides } : {}
150
+ }),
147
151
  "application/json"
148
152
  );
149
153
  return {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RecorderButton
3
- } from "../chunk-F4D3VBAS.js";
3
+ } from "../chunk-RHH2PVCL.js";
4
4
  import {
5
5
  RecorderDeviceQuickPicks,
6
6
  RecorderDeviceSettingsPanel,
@@ -14,7 +14,7 @@ import {
14
14
  requestScreenStream,
15
15
  useMediaDevices,
16
16
  useMediaRecorder
17
- } from "../chunk-FOKUOC7E.js";
17
+ } from "../chunk-ECS2FFXA.js";
18
18
  import {
19
19
  DEFAULT_RECORDER_DEVICE_SETTINGS,
20
20
  buildRecorderAudioConstraints,
@@ -5,7 +5,7 @@ import {
5
5
  RawEditor,
6
6
  WysiwygEditor,
7
7
  useEditorContextMenuItems
8
- } from "../chunk-CLULTEKS.js";
8
+ } from "../chunk-54MN2HG7.js";
9
9
  import {
10
10
  EditorProvider,
11
11
  useEditorContext,
@@ -16,7 +16,7 @@ import "../chunk-A2H3JOA5.js";
16
16
  import "../chunk-4MBH7MMU.js";
17
17
  import "../chunk-ZLKINE4Y.js";
18
18
  import "../chunk-HLU6ZBS7.js";
19
- import "../chunk-FOKUOC7E.js";
19
+ import "../chunk-ECS2FFXA.js";
20
20
  import "../chunk-LRZJD5YD.js";
21
21
  import "../chunk-UYB5CPRE.js";
22
22
  import "../chunk-PQSFLC2R.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq-editor-react",
3
- "version": "2.13.15",
3
+ "version": "2.13.16",
4
4
  "description": "React editor shell with raw/WYSIWYG/preview modes for Squisq documents",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -102,12 +102,12 @@
102
102
  }
103
103
  },
104
104
  "dependencies": {
105
- "@bendyline/squisq": "2.13.9",
105
+ "@bendyline/squisq": "2.13.10",
106
106
  "@bendyline/squisq-calc": "2.11.2",
107
- "@bendyline/squisq-formats": "2.8.11",
108
- "@bendyline/squisq-grid-react": "2.11.38",
109
- "@bendyline/squisq-react": "2.12.21",
110
- "@bendyline/squisq-video-react": "2.5.22",
107
+ "@bendyline/squisq-formats": "2.8.12",
108
+ "@bendyline/squisq-grid-react": "2.11.39",
109
+ "@bendyline/squisq-react": "2.12.22",
110
+ "@bendyline/squisq-video-react": "2.5.23",
111
111
  "@fortawesome/fontawesome-free": "7.3.1",
112
112
  "@tiptap/core": "2.27.3",
113
113
  "@tiptap/extension-heading": "2.27.3",