@bendyline/squisq-editor-react 2.3.4 → 2.4.1

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.d.ts CHANGED
@@ -1,13 +1,16 @@
1
- import { C as CodeContext, S as SceneTextChannel } from './shell-C-KkTBz7.js';
2
- export { B as BlockTagVisibility, a as CodeContextSection, D as DocumentLinkCandidate, b as DocumentLinkProvider, E as EditorActions, c as EditorColorScheme, d as EditorContextValue, e as EditorMode, f as EditorProvider, g as EditorProviderProps, h as EditorShell, i as EditorShellProps, j as EditorState, k as EditorView, I as ImageDisplayMode, L as LayoutMode, M as MentionCandidate, l as MentionProvider, P as PreviewPanel, m as PreviewPanelProps, R as RawEditor, n as RawEditorProps, T as ThemeInheritance, V as ViewPreferences, W as WriteCanvasSettings, o as WysiwygEditor, p as WysiwygEditorProps, u as useEditorContext } from './shell-C-KkTBz7.js';
1
+ import { C as CodeContext, E as EditorHostMode, S as SceneTextChannel } from './shell-CU4GpGuq.js';
2
+ export { B as BlockTagVisibility, a as CodeContextSection, D as DocumentLinkCandidate, b as DocumentLinkProvider, c as EditorActions, d as EditorColorScheme, e as EditorContextValue, f as EditorMode, g as EditorProvider, h as EditorProviderProps, i as EditorShell, j as EditorShellProps, k as EditorState, l as EditorView, I as ImageDisplayMode, L as LayoutMode, M as MentionCandidate, m as MentionProvider, P as PreviewPanel, n as PreviewPanelProps, R as RawEditor, o as RawEditorProps, T as ThemeInheritance, V as ViewPreferences, W as WriteCanvasSettings, p as WysiwygEditor, q as WysiwygEditorProps, u as useEditorContext } from './shell-CU4GpGuq.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import { ReactNode, CSSProperties } from 'react';
6
+ import { Doc, ScheduledClip, VideoPlacement, VideoPipSize, VideoPipShape, VideoPipPosition, MediaProvider, Theme, CustomTemplateDefinition, ThemeSeedColors, ViewportPreset, ViewportConfig, Block, MediaEntry, DiagramEdgeAnchor } from '@bendyline/squisq/schemas';
7
+ import { ContentContainer } from '@bendyline/squisq/storage';
6
8
  export { CanvasRect, ImageEditor, ImageEditorAction, ImageEditorProps, ImageEditorState, ImageEditorTool, ImageViewer, ImageViewerProps, UseImageEditorOptions, UseImageEditorReturn, imageEditorReducer, initialImageEditorState, useImageEditor } from './image-editor/index.js';
7
- import { MediaProvider, Theme, CustomTemplateDefinition, ThemeSeedColors, ViewportPreset, ViewportConfig, Doc, Block, MediaEntry, DiagramEdgeAnchor } from '@bendyline/squisq/schemas';
8
9
  import { IconFamily } from '@bendyline/squisq/icons';
9
- import { DisplayMode, CaptionStyle } from '@bendyline/squisq-react';
10
+ import { DisplayMode, CaptionStyle, VideoPresentation, PipSize, PipShape, PipPosition } from '@bendyline/squisq-react';
11
+ import { MarkdownWrapState } from '@bendyline/squisq/markdown';
10
12
  import * as monaco_editor from 'monaco-editor';
13
+ import { M as MonacoLanguageRequest, a as MonacoLanguageLoadOptions } from './monacoLanguageDetection-DEyUW-BS.js';
11
14
  export { MonacoWorkerConstructor, MonacoWorkerConstructors, configureMonacoWorkers } from './monaco-workers/index.js';
12
15
  import { ConnectorRouting, AsciiDiagram, Tree, AsciiTimeline, AsciiTimelineSide, AsciiTimelineMarker } from '@bendyline/squisq/doc';
13
16
  import * as _tiptap_core from '@tiptap/core';
@@ -19,10 +22,9 @@ import { PluginKey } from '@tiptap/pm/state';
19
22
  import { Node } from '@tiptap/pm/model';
20
23
  import { RenderResult } from 'mermaid';
21
24
  export { JsonEditor, JsonEditorProps } from './json-editor/index.js';
22
- export { CameraStreamOptions, CaptureKind, RecordedBookmark, RecorderButton, RecorderButtonProps, RecorderColorScheme, RecorderModal, RecorderModalProps, RecorderPanel, RecorderPanelProps, RecorderSaveResult, RecorderSource, RecorderState, ResolvedFormat, ScreenStreamHandle, ScreenStreamOptions, TimingJson, UseMediaRecorderOptions, UseMediaRecorderResult, buildFilename, buildTimingJson, encodeTimingJson, getCaptureKind, requestCameraStream, requestMicStream, requestScreenStream, resolveFormat, supportsDisplayMedia, supportsMediaRecorder, supportsUserMedia, timingPathFor, useMediaRecorder, useStreamPreview } from './recorder/index.js';
23
- export { CanvasSink, DEFAULT_TELEPROMPTER_PREFS, EYE_LINE_FRACTION, FloatOpenOptions, FloatTier, FloatingWindowHandle, FloatingWindowManager, MicAnalysisHandle, MicAnalysisStatus, NarrationRecorderController, NarrationRecorderState, NarrationSavePlan, NarrationSaveResult, NarrationTake, PCM_WORKLET_NAME, PCM_WORKLET_SOURCE, PrompterTransport, TELEPROMPTER_CSS, TeleprompterController, TeleprompterControls, TeleprompterControlsProps, TeleprompterPrefs, TeleprompterRecordingDeps, TeleprompterSurface, TeleprompterSurfaceProps, TeleprompterView, TeleprompterViewProps, TokenLineMap, buildNarrationSavePlan, cameraVideoLine, createFloatingWindowManager, detectFloatTiers, ensureTeleprompterStyles, executeNarrationSave, insertNarrationPreamble, measureTokenLines, narrationAnnotationLine, prompterVarsFromTheme, registerPcmWorklet, stepScroll, targetOffsetFor, useFloatingWindow, useMicAnalysis, useNarrationRecorder, useTeleprompter, vadConfigForSensitivity } from './teleprompter/index.js';
24
- import '@bendyline/squisq/markdown';
25
- import '@bendyline/squisq/storage';
25
+ export { C as CameraStreamOptions, a as CaptureKind, R as RecordedBookmark, b as RecorderButton, c as RecorderButtonProps, d as RecorderCameraLane, e as RecorderCameraSaveResult, f as RecorderColorScheme, g as RecorderModal, h as RecorderModalProps, i as RecorderNarrationOptions, j as RecorderPanel, k as RecorderPanelProps, l as RecorderSaveResult, m as RecorderSource, n as RecorderState, o as ResolvedFormat, S as ScreenStreamHandle, p as ScreenStreamOptions, T as TimingJson, U as UseMediaRecorderOptions, q as UseMediaRecorderResult, r as buildFilename, s as buildTimingJson, t as encodeTimingJson, u as getCaptureKind, v as requestCameraStream, w as requestMicStream, x as requestScreenStream, y as resolveFormat, z as supportsDisplayMedia, A as supportsMediaRecorder, B as supportsUserMedia, D as timingPathFor, E as useMediaRecorder, F as useStreamPreview } from './recorder-C5tAYUE3.js';
26
+ export { EYE_LINE_FRACTION, NarrationSavePlan, NarrationSaveResult, NarrationStage, NarrationStageProps, PCM_WORKLET_NAME, PCM_WORKLET_SOURCE, TELEPROMPTER_CSS, TeleprompterControls, TeleprompterControlsProps, TeleprompterSurface, TeleprompterSurfaceProps, TeleprompterView, TeleprompterViewProps, TokenLineMap, buildNarrationSavePlan, cameraVideoLine, ensureTeleprompterStyles, executeNarrationSave, insertNarrationPreamble, measureTokenLines, narrationAnnotationLine, prompterVarsFromTheme, registerPcmWorklet, stepScroll, targetOffsetFor } from './teleprompter/index.js';
27
+ export { C as CanvasSink, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, a as FloatTier, b as FloatingWindowHandle, c as FloatingWindowManager, M as MicAnalysisHandle, d as MicAnalysisStatus, N as NarrationRecorderController, e as NarrationRecorderState, f as NarrationStageHandle, g as NarrationTake, P as PrompterTransport, T as TeleprompterController, h as TeleprompterPrefs, i as TeleprompterRecordingDeps, U as UseNarrationStageOptions, j as createFloatingWindowManager, k as detectFloatTiers, u as useFloatingWindow, l as useMicAnalysis, m as useNarrationRecorder, n as useNarrationStage, o as useTeleprompter, v as vadConfigForSensitivity } from './useNarrationStage-Bqo18PBw.js';
26
28
  import '@bendyline/squisq/versions';
27
29
  import '@bendyline/squisq/imageEdit';
28
30
  import '@bendyline/squisq/jsonForm';
@@ -138,6 +140,12 @@ interface UseBlockNavigatorOptions {
138
140
  declare function useBlockNavigator(source: string, setSource: (s: string) => void, opts?: UseBlockNavigatorOptions): BlockNavigator;
139
141
 
140
142
  interface BlockCardViewProps {
143
+ /**
144
+ * Whether to show the block-card chrome. Defaults to true. When false the
145
+ * stable frame remains mounted around `children`, allowing hosts to switch
146
+ * between document and card layouts without remounting the editor surface.
147
+ */
148
+ active?: boolean;
141
149
  /** Total number of navigable blocks. */
142
150
  blockCount: number;
143
151
  /** Index of the block currently shown (0-based). */
@@ -153,7 +161,7 @@ interface BlockCardViewProps {
153
161
  /** Optional extra class for the outer container. */
154
162
  className?: string;
155
163
  }
156
- declare function BlockCardView({ blockCount, activeBlockKey, onPrev, onNext, onAdd, children, className, }: BlockCardViewProps): react_jsx_runtime.JSX.Element;
164
+ declare function BlockCardView({ active, blockCount, activeBlockKey, onPrev, onNext, onAdd, children, className, }: BlockCardViewProps): react_jsx_runtime.JSX.Element;
157
165
 
158
166
  /**
159
167
  * blockRange
@@ -206,21 +214,136 @@ declare function offsetToLine(source: string, offset: number): number;
206
214
  declare function sliceIndexAtOffset(slices: BlockSlice[], offset: number): number;
207
215
 
208
216
  /**
209
- * TimelineTrack
217
+ * useTimelineClock
210
218
  *
211
- * Horizontal timeline strip for the Timeline view. Shows every block as a bar
212
- * (width duration, x startTime) with its media clips as sub-bars below.
213
- * Clicking a block selects it (the editor above follows). Dragging a block's
214
- * right edge changes its duration; dragging its left edge changes the previous
215
- * block's duration (the boundary, since startTime is derived). Dragging a media
216
- * clip moves its `startAt`; dragging the clip's right edge changes its length;
217
- * double-clicking a clip toggles `spillover`. All edits are written back to the
218
- * markdown source via {@link timelineSource}.
219
+ * A minimal real-time playback clock for the timeline view a
220
+ * `requestAnimationFrame` loop that advances `currentTime` at wall-clock speed
221
+ * between `play()` and `pause()`, clamped to `[0, total]`. No audio element;
222
+ * media playback is driven separately (the timeline feeds `currentTime` to
223
+ * `MediaClipLayer`). Mirrors the fallback timer in `useAudioSync`.
219
224
  */
225
+ interface TimelineClock {
226
+ /** Seconds from the start of the timeline. */
227
+ currentTime: number;
228
+ isPlaying: boolean;
229
+ /** Start playing; restarts from 0 when already at the end. */
230
+ play: () => void;
231
+ pause: () => void;
232
+ toggle: () => void;
233
+ /** Jump to a time (clamped to `[0, total]`). */
234
+ seek: (t: number) => void;
235
+ }
236
+
220
237
  interface TimelineTrackProps {
221
238
  height?: number;
239
+ /**
240
+ * Doc used for bar geometry / timing. Callers pass the narration-timed
241
+ * projection so the track matches what actually plays; falls back to the
242
+ * editor's raw parse. Editing still round-trips because the projected doc
243
+ * keeps each block's `sourceHeading`.
244
+ */
245
+ doc?: Doc | null;
246
+ /** Optional shared clock used by docked timeline companions. */
247
+ clock?: TimelineClock;
248
+ /** Reuse an already-resolved schedule instead of deriving it from the doc. */
249
+ schedule?: ScheduledClip[];
250
+ /** Whether the docked video monitor is currently visible. */
251
+ videoVisible?: boolean;
252
+ }
253
+ declare function TimelineTrack({ height, doc: docProp, clock, schedule, videoVisible, }: TimelineTrackProps): react_jsx_runtime.JSX.Element | null;
254
+
255
+ interface TimelineVideoPanelProps {
256
+ schedule: ScheduledClip[];
257
+ currentTime: number;
258
+ isPlaying: boolean;
259
+ basePath?: string;
260
+ onClose?: () => void;
261
+ }
262
+ declare function TimelineVideoPanel({ schedule, currentTime, isPlaying, basePath, onClose, }: TimelineVideoPanelProps): react_jsx_runtime.JSX.Element;
263
+
264
+ interface TimelineCompositionPanelProps {
265
+ doc: Doc | null;
266
+ clock: TimelineClock;
267
+ basePath?: string;
268
+ workspaceContainer?: ContentContainer | null;
269
+ onClose?: () => void;
270
+ }
271
+ declare function TimelineCompositionPanel({ doc, clock, basePath, workspaceContainer, onClose, }: TimelineCompositionPanelProps): react_jsx_runtime.JSX.Element;
272
+
273
+ /** Horizontal controls for Timeline-only companion panes. */
274
+ interface TimelineToolbarProps {
275
+ literalVideoVisible: boolean;
276
+ compositionVisible: boolean;
277
+ videoAvailable: boolean;
278
+ compositionAvailable: boolean;
279
+ onToggleLiteralVideo: () => void;
280
+ onToggleComposition: () => void;
281
+ }
282
+ declare function TimelineToolbar({ literalVideoVisible, compositionVisible, videoAvailable, compositionAvailable, onToggleLiteralVideo, onToggleComposition, }: TimelineToolbarProps): react_jsx_runtime.JSX.Element;
283
+
284
+ /**
285
+ * headingTransition
286
+ *
287
+ * Read and write a block's transition (`transition` / `transitionDirection` /
288
+ * `transitionDuration`) on a heading, in both editing surfaces:
289
+ *
290
+ * - Markdown (Monaco): operate on the raw heading line string.
291
+ * - WYSIWYG (Tiptap): operate on the heading node's `dataBlockAttrs` string
292
+ * (Pandoc `{…}` inner) and `dataTemplateParams` string (the params inside
293
+ * the squisq-native `{[…]}` annotation).
294
+ *
295
+ * The editor writes transitions to the squisq-native `{[…]}` annotation by
296
+ * default. It still reads legacy Pandoc `{transition=…}` attributes and
297
+ * removes/migrates those keys when rewriting, so the two channels cannot drift
298
+ * after a toolbar edit.
299
+ *
300
+ * All the brace-matching / tokenizing / serializing is delegated to the
301
+ * shared core helpers so this stays in lockstep with the parser by import
302
+ * rather than by copied regexes.
303
+ */
304
+ /** Raw (un-coerced) transition attribute values for one block. */
305
+ interface TransitionFields {
306
+ /** `transition` value. Empty string means "none" (`cut`). */
307
+ type: string;
308
+ /** `transitionDirection` value, or '' when unset. */
309
+ direction: string;
310
+ /** `transitionDuration` value (raw, e.g. `0.7` or `700ms`), or '' when unset. */
311
+ duration: string;
312
+ }
313
+ declare const EMPTY_TRANSITION: TransitionFields;
314
+ /**
315
+ * Read the transition fields off a heading line. Looks in both the Pandoc
316
+ * `{…}` block (legacy) and the `{[…]}` template params (canonical),
317
+ * with the Pandoc block taking precedence. Returns the empty transition for
318
+ * non-heading lines.
319
+ */
320
+ declare function readHeadingLineTransition(line: string): TransitionFields;
321
+ /**
322
+ * Return `line` with its transition rewritten from `next`, writing into the
323
+ * squisq-native `{[…]}` annotation. Legacy Pandoc transition keys are removed
324
+ * while preserving ids, classes, and other Pandoc params. Non-heading lines are
325
+ * returned unchanged.
326
+ */
327
+ declare function setHeadingLineTransition(line: string, next: TransitionFields): string;
328
+ /**
329
+ * Read the transition fields from a heading node's `dataBlockAttrs` (legacy
330
+ * Pandoc inner) plus `dataTemplateParams` (canonical `{[…]}` params). Pandoc
331
+ * wins so the picker mirrors the value that `markdownToDoc` will render when
332
+ * both channels are present.
333
+ */
334
+ declare function readBlockAttrsTransition(blockAttrsInner: string | null | undefined, templateParams: string | null | undefined): TransitionFields;
335
+ interface HeadingTransitionAttrs {
336
+ /** Inner of the Pandoc `{…}` block, without braces. */
337
+ blockAttrsInner: string | null;
338
+ /** Param string inside the `{[…]}` annotation, without the template token. */
339
+ templateParams: string | null;
222
340
  }
223
- declare function TimelineTrack({ height }: TimelineTrackProps): react_jsx_runtime.JSX.Element | null;
341
+ /**
342
+ * Rewrite a heading node's transition for Tiptap, writing the transition
343
+ * family into `dataTemplateParams` and removing any legacy transition keys
344
+ * from `dataBlockAttrs`.
345
+ */
346
+ declare function setHeadingAttrsTransition(blockAttrsInner: string | null | undefined, templateParams: string | null | undefined, next: TransitionFields): HeadingTransitionAttrs;
224
347
 
225
348
  /**
226
349
  * timelineSource
@@ -232,6 +355,7 @@ declare function TimelineTrack({ height }: TimelineTrackProps): react_jsx_runtim
232
355
  * (template annotations, ids, classes, other params) by reusing the shared
233
356
  * tokenizers rather than regex-replacing values.
234
357
  */
358
+
235
359
  /** Format a seconds value compactly: integers bare, else up to 2 decimals. */
236
360
  declare function formatSeconds(seconds: number): string;
237
361
  /**
@@ -243,13 +367,22 @@ declare function formatSeconds(seconds: number): string;
243
367
  * two can't disagree). Returns the new full source, or null when the line
244
368
  * isn't an ATX heading.
245
369
  */
246
- declare function setBlockDurationInSource(source: string, line: number, seconds: number): string | null;
370
+ declare function setBlockDurationInSource(source: string, line: number, seconds: number | null): string | null;
371
+ /** Set or clear a block's explicit start time on its source heading. */
372
+ declare function setBlockStartTimeInSource(source: string, line: number, seconds: number | null): string | null;
373
+ /** Rewrite a block transition on its source heading. */
374
+ declare function setBlockTransitionInSource(source: string, line: number, transition: TransitionFields): string | null;
247
375
  /** A patch to a media clip; numeric values are seconds, `null` removes the key. */
248
376
  interface MediaClipPatch {
249
377
  startAt?: number | null;
250
378
  clipStart?: number | null;
251
379
  clipEnd?: number | null;
252
380
  spillover?: boolean | null;
381
+ placement?: VideoPlacement | null;
382
+ lockToBlock?: boolean | null;
383
+ pipSize?: VideoPipSize | null;
384
+ pipShape?: VideoPipShape | null;
385
+ pipPosition?: VideoPipPosition | null;
253
386
  }
254
387
  /**
255
388
  * Patch the `{[audio …]}` / `{[video …]}` annotation at 1-based `line`.
@@ -670,10 +803,24 @@ interface PreviewSettings {
670
803
  * that style. The single entry point so the toggle buttons persist in one
671
804
  * frontmatter write. */
672
805
  setCaptionMode: (mode: CaptionMode) => void;
806
+ /** Whether the current document schedules any video media. */
807
+ hasVideoMedia: boolean;
808
+ activeVideoPresentation: VideoPresentation;
809
+ setVideoPresentation: (presentation: VideoPresentation) => void;
810
+ activePipSize: PipSize;
811
+ setPipSize: (size: PipSize) => void;
812
+ activePipShape: PipShape;
813
+ setPipShape: (shape: PipShape) => void;
814
+ activePipPosition: PipPosition;
815
+ setPipPosition: (position: PipPosition) => void;
673
816
  /** Whether Squisq should synthesize and show its managed cover slide. */
674
817
  activeCoverSlide: boolean;
675
818
  /** Enable/disable the managed cover slide. */
676
819
  setCoverSlideEnabled: (enabled: boolean) => void;
820
+ /** Whether Video mode restarts automatically when playback ends. */
821
+ activeVideoLoop: boolean;
822
+ /** Enable/disable automatic Video-mode playback restart. */
823
+ setVideoLoopEnabled: (enabled: boolean) => void;
677
824
  /** User-authored themes (doc + browser library) for the picker's "Custom" group. */
678
825
  customThemes: Theme[];
679
826
  /** Open the custom-theme designer for a theme (or null to create a new one). */
@@ -702,6 +849,12 @@ declare function usePreviewSettings(): PreviewSettings;
702
849
  interface PreviewSettingsProviderProps {
703
850
  doc: Doc | null;
704
851
  children: ReactNode;
852
+ /**
853
+ * Viewport preset to use when the document does not declare
854
+ * `document-render-as` and the user has not selected a format. Hosts can
855
+ * make this responsive to their available surface. Defaults to landscape.
856
+ */
857
+ defaultViewportPreset?: ViewportPreset;
705
858
  /**
706
859
  * Optional Theme to use for the preview, regardless of `Doc.themeId` or
707
860
  * the user's theme dropdown selection. Used by the theme customizer to
@@ -710,7 +863,7 @@ interface PreviewSettingsProviderProps {
710
863
  */
711
864
  themeOverride?: Theme | null;
712
865
  }
713
- declare function PreviewSettingsProvider({ doc, children, themeOverride, }: PreviewSettingsProviderProps): react_jsx_runtime.JSX.Element;
866
+ declare function PreviewSettingsProvider({ doc, children, defaultViewportPreset, themeOverride, }: PreviewSettingsProviderProps): react_jsx_runtime.JSX.Element;
714
867
  /**
715
868
  * Inline preview controls rendered in the main toolbar row.
716
869
  *
@@ -723,7 +876,15 @@ declare function PreviewSettingsProvider({ doc, children, themeOverride, }: Prev
723
876
  * inline row and the menu, so the available space is always well used and the
724
877
  * row never wraps onto a second line.
725
878
  */
726
- declare function PreviewToolbarControls(): react_jsx_runtime.JSX.Element;
879
+ interface PreviewToolbarControlsProps {
880
+ /**
881
+ * Display mode whose applicable control set should be rendered. Defaults to
882
+ * the active Use mode. This only controls toolbar visibility; changing a
883
+ * setting still writes through the shared preview-settings context.
884
+ */
885
+ displayMode?: DisplayMode;
886
+ }
887
+ declare function PreviewToolbarControls({ displayMode }?: PreviewToolbarControlsProps): react_jsx_runtime.JSX.Element;
727
888
  /**
728
889
  * Segmented display-mode switch retained as a public, embeddable control.
729
890
  * The editor shell uses {@link PreviewModeMenu} beside its Use tab instead.
@@ -786,13 +947,19 @@ interface ToolbarProps {
786
947
  * editing free-form prompts — can pass false to suppress it.
787
948
  */
788
949
  showPlayTab?: boolean;
950
+ /**
951
+ * Semantic embedding mode inherited from EditorShell. Chat mode exposes
952
+ * only the Write surface, which suppresses the view tabs and their
953
+ * keyboard-switch targets. Defaults to `'document'`.
954
+ */
955
+ hostMode?: EditorHostMode;
789
956
  }
790
957
  /**
791
958
  * Formatting toolbar.
792
959
  * - WYSIWYG: calls Tiptap chain commands (toggleBold, etc.)
793
960
  * - Raw: appends markdown syntax to the source
794
961
  */
795
- declare function Toolbar({ className, showFiles, fileCount, onToggleFiles, slotLeft, slotAfterTabs, slotAfterActions, slotRight, showPlayTab, }: ToolbarProps): react_jsx_runtime.JSX.Element;
962
+ declare function Toolbar({ className, showFiles, fileCount, onToggleFiles, slotLeft, slotAfterTabs, slotAfterActions, slotRight, showPlayTab, hostMode, }: ToolbarProps): react_jsx_runtime.JSX.Element;
796
963
 
797
964
  /**
798
965
  * VersionHistoryPanel
@@ -821,6 +988,63 @@ declare function VersionHistoryPanel(): react_jsx_runtime.JSX.Element | null;
821
988
  */
822
989
  declare function ViewMenuPanel(): react_jsx_runtime.JSX.Element;
823
990
 
991
+ /**
992
+ * TransformMenu
993
+ *
994
+ * Toolbar popover applying one-time, undoable markdown source transforms
995
+ * (unwrap / wrap-at-width / cleanup) from core's
996
+ * `MARKDOWN_SOURCE_TRANSFORMS` registry, plus a readout of the document's
997
+ * detected wrap convention (`detectMarkdownWrapState`).
998
+ *
999
+ * Apply paths keep the operation a single undo step:
1000
+ * - Source view: minimal per-paragraph `executeEdits` on the Monaco model
1001
+ * between undo stops — native byte-exact undo, cursor/scroll stay put.
1002
+ * - Write view: one `setMarkdownSource` write; the WYSIWYG external-sync
1003
+ * `setContent` lands as one Tiptap history entry.
1004
+ * - Use view has no editing surface (no undo), so rows are disabled there.
1005
+ */
1006
+ declare function TransformMenu(): react_jsx_runtime.JSX.Element | null;
1007
+
1008
+ /**
1009
+ * Write-view wrap policy — "unwrap in Write view, persist with wrapping".
1010
+ *
1011
+ * The Tiptap bridge maps each physical source line to its own paragraph, so
1012
+ * a hard-wrapped document renders as choppy one-line paragraphs in Write
1013
+ * view — and the first edit serializes that chopped structure back into the
1014
+ * source. These helpers make the wrap convention transparent instead:
1015
+ * detect the document's prevailing wrap state, hand Tiptap the UNWRAPPED
1016
+ * body (prose flows naturally), and re-apply the detected convention when
1017
+ * serializing back to markdown. The exact same shape as WysiwygEditor's
1018
+ * frontmatter strip/reattach dance, applied to wrapping.
1019
+ *
1020
+ * Pure string logic (no Tiptap, no DOM) so it stays Node-testable.
1021
+ */
1022
+
1023
+ interface WrapPolicyIngest {
1024
+ /** Body to hand to the Write view (unwrapped when the doc is wrapped). */
1025
+ displayBody: string;
1026
+ /**
1027
+ * The detected wrap state to persist with, or null when the document has
1028
+ * no confident wrap convention (unwrapped / mixed / no prose) — persist
1029
+ * is then a pass-through.
1030
+ */
1031
+ state: MarkdownWrapState | null;
1032
+ }
1033
+ /**
1034
+ * Prepare a markdown body (frontmatter already stripped) for Write-view
1035
+ * editing. Only a confident `wrapped` detection unwraps; `mixed`,
1036
+ * `unwrapped`, and `no-prose` documents pass through untouched, so docs
1037
+ * without a convention behave exactly as before.
1038
+ */
1039
+ declare function ingestForWrite(body: string): WrapPolicyIngest;
1040
+ /**
1041
+ * Re-apply the detected wrap convention to a body serialized from the
1042
+ * Write view. Pass-through when there is no wrapped state; on a degraded
1043
+ * wrap (safety guard) the unwrapped body is persisted instead — a valid
1044
+ * document that merely loses the convention for that save.
1045
+ */
1046
+ declare function persistFromWrite(bodyMd: string, state: MarkdownWrapState | null): string;
1047
+
824
1048
  interface OutlinePanelProps {
825
1049
  /**
826
1050
  * Fixed width of the pane in pixels. When omitted, the pane sizes
@@ -895,70 +1119,6 @@ interface TemplatePickerProps {
895
1119
  }
896
1120
  declare function TemplatePicker({ value, onChange, colorScheme, compact, recommended, onOpenDesigner, previewSource, }: TemplatePickerProps): react_jsx_runtime.JSX.Element;
897
1121
 
898
- /**
899
- * headingTransition
900
- *
901
- * Read and write a block's transition (`transition` / `transitionDirection` /
902
- * `transitionDuration`) on a heading, in both editing surfaces:
903
- *
904
- * - Markdown (Monaco): operate on the raw heading line string.
905
- * - WYSIWYG (Tiptap): operate on the heading node's `dataBlockAttrs` string
906
- * (Pandoc `{…}` inner) and `dataTemplateParams` string (the params inside
907
- * the squisq-native `{[…]}` annotation).
908
- *
909
- * The editor writes transitions to the squisq-native `{[…]}` annotation by
910
- * default. It still reads legacy Pandoc `{transition=…}` attributes and
911
- * removes/migrates those keys when rewriting, so the two channels cannot drift
912
- * after a toolbar edit.
913
- *
914
- * All the brace-matching / tokenizing / serializing is delegated to the
915
- * shared core helpers so this stays in lockstep with the parser by import
916
- * rather than by copied regexes.
917
- */
918
- /** Raw (un-coerced) transition attribute values for one block. */
919
- interface TransitionFields {
920
- /** `transition` value. Empty string means "none" (`cut`). */
921
- type: string;
922
- /** `transitionDirection` value, or '' when unset. */
923
- direction: string;
924
- /** `transitionDuration` value (raw, e.g. `0.7` or `700ms`), or '' when unset. */
925
- duration: string;
926
- }
927
- declare const EMPTY_TRANSITION: TransitionFields;
928
- /**
929
- * Read the transition fields off a heading line. Looks in both the Pandoc
930
- * `{…}` block (legacy) and the `{[…]}` template params (canonical),
931
- * with the Pandoc block taking precedence. Returns the empty transition for
932
- * non-heading lines.
933
- */
934
- declare function readHeadingLineTransition(line: string): TransitionFields;
935
- /**
936
- * Return `line` with its transition rewritten from `next`, writing into the
937
- * squisq-native `{[…]}` annotation. Legacy Pandoc transition keys are removed
938
- * while preserving ids, classes, and other Pandoc params. Non-heading lines are
939
- * returned unchanged.
940
- */
941
- declare function setHeadingLineTransition(line: string, next: TransitionFields): string;
942
- /**
943
- * Read the transition fields from a heading node's `dataBlockAttrs` (legacy
944
- * Pandoc inner) plus `dataTemplateParams` (canonical `{[…]}` params). Pandoc
945
- * wins so the picker mirrors the value that `markdownToDoc` will render when
946
- * both channels are present.
947
- */
948
- declare function readBlockAttrsTransition(blockAttrsInner: string | null | undefined, templateParams: string | null | undefined): TransitionFields;
949
- interface HeadingTransitionAttrs {
950
- /** Inner of the Pandoc `{…}` block, without braces. */
951
- blockAttrsInner: string | null;
952
- /** Param string inside the `{[…]}` annotation, without the template token. */
953
- templateParams: string | null;
954
- }
955
- /**
956
- * Rewrite a heading node's transition for Tiptap, writing the transition
957
- * family into `dataTemplateParams` and removing any legacy transition keys
958
- * from `dataBlockAttrs`.
959
- */
960
- declare function setHeadingAttrsTransition(blockAttrsInner: string | null | undefined, templateParams: string | null | undefined, next: TransitionFields): HeadingTransitionAttrs;
961
-
962
1122
  interface TransitionPickerProps {
963
1123
  value: TransitionFields;
964
1124
  onChange: (next: TransitionFields) => void;
@@ -1139,8 +1299,21 @@ interface MediaBinProps {
1139
1299
  onMediaRemoved?: (relativePath: string, entry: MediaEntry) => void | Promise<void>;
1140
1300
  /** Fired whenever the panel scans media and knows the current entry count. */
1141
1301
  onCountChange?: (count: number) => void;
1302
+ /**
1303
+ * Opens the host's media recorder. When provided, the Files header shows a
1304
+ * compact Record button beside Upload.
1305
+ */
1306
+ onRecord?: () => void;
1307
+ /** Whether the recorder dialog opened by `onRecord` is currently visible. */
1308
+ isRecorderOpen?: boolean;
1309
+ /**
1310
+ * Whether files expose a browser download action. Defaults to true. This
1311
+ * controls the built-in affordance only; it cannot prevent access to media
1312
+ * URLs that the host otherwise exposes to the browser.
1313
+ */
1314
+ allowBinaryDownloads?: boolean;
1142
1315
  }
1143
- declare function MediaBin({ mediaProvider, isDark, refreshKey, usedMediaPaths, onMediaUploaded, onMediaRemoved, onCountChange, }: MediaBinProps): react_jsx_runtime.JSX.Element;
1316
+ declare function MediaBin({ mediaProvider, isDark, refreshKey, usedMediaPaths, onMediaUploaded, onMediaRemoved, onCountChange, onRecord, isRecorderOpen, allowBinaryDownloads, }: MediaBinProps): react_jsx_runtime.JSX.Element;
1144
1317
 
1145
1318
  interface StatusBarProps {
1146
1319
  /** Additional class name */
@@ -1271,38 +1444,18 @@ declare function processTextFile(file: File): Promise<string>;
1271
1444
  */
1272
1445
  declare function processTextFiles(files: File[]): Promise<string>;
1273
1446
 
1274
- /**
1275
- * useMonacoLoader
1276
- *
1277
- * Idempotently dynamic-imports `monaco-editor` and points the
1278
- * `@monaco-editor/react` singleton loader at the bundled copy. Replaces
1279
- * the historical top-of-module `import * as monaco from 'monaco-editor';
1280
- * loader.config({ monaco })` pattern, which forced every consumer of
1281
- * `@bendyline/squisq-editor-react` — including ones that only import
1282
- * `JsonEditor` or a type — to drag in monaco's ~9MB worth of language
1283
- * services and workers at module evaluation time.
1284
- *
1285
- * Hosts that want the smallest possible bundle can keep aliasing
1286
- * `monaco-editor` to a slim entry as before; the behavior is identical
1287
- * once the dynamic import settles.
1288
- *
1289
- * The promise is cached at module scope so the first subscriber
1290
- * anywhere in the app pays the import cost and every later subscriber
1291
- * reuses the same settled value.
1292
- */
1293
1447
  interface UseMonacoLoaderResult {
1294
- /** The monaco namespace once loaded, or `null` while the import is in flight. */
1448
+ /** The Monaco namespace once loaded, or `null` while the core is in flight. */
1295
1449
  monaco: typeof monaco_editor | null;
1296
- /** Flips to `true` after the import settles. Gate `<Editor>` / `<DiffEditor>` renders on this. */
1450
+ /** True after the compact core and this caller's language profile are ready. */
1297
1451
  ready: boolean;
1298
1452
  }
1299
- /**
1300
- * Subscribe to the lazy-loaded monaco namespace. The first caller
1301
- * triggers `import('monaco-editor')` and configures the
1302
- * `@monaco-editor/react` loader; subsequent callers receive the same
1303
- * cached value.
1304
- */
1305
- declare function useMonacoLoader(): UseMonacoLoaderResult;
1453
+ /** Start Monaco and the requested language profile before a React editor mounts. */
1454
+ declare function preloadMonaco(requestedLanguages?: MonacoLanguageRequest, options?: MonacoLanguageLoadOptions): Promise<typeof monaco_editor>;
1455
+ /** Load completion and snippet UI after the compact editor is already usable. */
1456
+ declare function preloadMonacoSuggestions(): Promise<void>;
1457
+ /** Subscribe to the shared Monaco namespace and a demand-loaded language profile. */
1458
+ declare function useMonacoLoader(requestedLanguages?: MonacoLanguageRequest, options?: MonacoLanguageLoadOptions): UseMonacoLoaderResult;
1306
1459
 
1307
1460
  interface CustomTemplateContextValue {
1308
1461
  /** Templates inlined into the current doc's frontmatter. */
@@ -1459,7 +1612,25 @@ declare function tiptapToMarkdown(html: string): string;
1459
1612
  * slide, interleaves images, recalculates timing, and adds a synthetic
1460
1613
  * audio segment.
1461
1614
  */
1462
- declare function buildPreviewDoc(doc: Doc): Doc;
1615
+ interface BuildPreviewDocOptions {
1616
+ /**
1617
+ * Human-facing title to use as the header of the leading heading-less
1618
+ * "preamble" block when the document has no frontmatter `title:`. Hosts
1619
+ * typically pass the file name (extension stripped) via
1620
+ * {@link documentTitleFromFileName}. When neither this nor a frontmatter
1621
+ * title is present, the preamble simply renders with no header rather than
1622
+ * the placeholder block id.
1623
+ */
1624
+ documentTitle?: string;
1625
+ }
1626
+ /**
1627
+ * Derive a display title from a file name: strip any directory prefix and the
1628
+ * trailing extension (`docs/Longview Plan.md` → `Longview Plan`). Returns an
1629
+ * empty string for an absent/blank name so callers can pass the result through
1630
+ * without extra guards.
1631
+ */
1632
+ declare function documentTitleFromFileName(fileName?: string): string;
1633
+ declare function buildPreviewDoc(doc: Doc, options?: BuildPreviewDocOptions): Doc;
1463
1634
 
1464
1635
  /**
1465
1636
  * TemplateAnnotation — Tiptap Heading Extension
@@ -2654,4 +2825,4 @@ declare function applyTimelineCommand(editor: Editor, blockId: string, command:
2654
2825
  /** Paste gate for bare, high-confidence Unicode timeline art. */
2655
2826
  declare function shouldPasteAsTimelineFence(text: string): boolean;
2656
2827
 
2657
- export { ALL_PICKER_ENTRIES, type AddTimelineEventOptions, type AddTimelineEventResult, type ApplyAsciiDiagramCommandOptions, type AsciiDiagramBlockEntry, AsciiDiagramExtension, type AsciiDiagramExtensionOptions, type AsciiDiagramPluginState, type AsciiDiagramView, AsciiDiagramWidget, BlockCardView, type BlockCardViewProps, type BlockNavigator, BlockPropertiesPopover, type BlockPropertiesPopoverProps, type BlockRange, type BlockSlice, CODE_SNIPPET_KEY, CODE_SNIPPET_LANGUAGES, CodeContext, CodeContextZones, type CodeSnippetBlockEntry, type CodeSnippetData, CodeSnippetExtension, type CodeSnippetExtensionOptions, type CodeSnippetLanguage, type CodeSnippetPluginState, CodeSnippetWidget, type CodeSnippetWidgetProps, type CustomTemplateContextValue, CustomTemplateProvider, type CustomTemplateProviderProps, type CustomThemeContextValue, CustomThemeProvider, type CustomThemeProviderProps, DEFAULT_MERMAID_DIAGRAM_TYPE, DiagramCanvas, type DiagramCommand, type DiagramData, type DiagramEdge, type DiagramNode, type DirectionModel, type DocCustomTemplates, type DocCustomThemes, DocumentSettingsDialog, type DocumentSettingsDialogProps, type DragContentType, type DropTarget, DropZoneOverlay, type DropZoneOverlayProps, EMPTY_TRANSITION, EmojiPicker, type EmojiPickerProps, type FileCategory, type FileKind, type FolderEntry, FolderView, type FolderViewProps, type HeadingTransitionAttrs, HeadingWithTemplate, ImportThemeSection, type ImportThemeSectionProps, type ImportedThemeResult, InlinePreviewGutter, type InlinePreviewGutterProps, MERMAID_DIAGRAM_KEY, MERMAID_DIAGRAM_TYPES, MERMAID_FLOWCHART_SHAPES, MediaBin, type MediaBinProps, type MediaClipPatch, type MermaidDiagramBlockEntry, MermaidDiagramCanvas, type MermaidDiagramCanvasProps, type MermaidDiagramCategory, type MermaidDiagramData, MermaidDiagramExtension, type MermaidDiagramExtensionOptions, type MermaidDiagramPluginState, type MermaidDiagramPreview, type MermaidDiagramProperty, type MermaidDiagramType, MermaidDiagramTypeThumbnail, MermaidDiagramWidget, type MermaidDiagramWidgetProps, type MermaidEditCapabilities, type MermaidEditableDiagramKind, type MermaidEditableEdge, type MermaidEditableModel, type MermaidEditableNode, type MermaidEditableText, type MermaidEditableTextTarget, type MermaidFlowchartDirection, type MermaidFlowchartModel, type MermaidFlowchartShape, type MermaidFlowchartShapeId, type MermaidNodeCanvasAction, type MermaidRenderResult, type MermaidSelection, MermaidShapePalette, type MermaidShapePaletteProps, type MermaidSourceEditableModel, OutlinePanel, type OutlinePanelProps, PICKER_CATEGORIES, type PickerCategory, type PickerEntry, PlainHtmlPreview, type PlainHtmlPreviewProps, PreviewFormatSwitch, PreviewModeMenu, PreviewModeSwitch, type PreviewSettings, PreviewSettingsProvider, PreviewToolbarControls, REPAIRABLE_KEY, type RepairableBlockEntry, RepairableDiagramExtension, type RepairableDiagramExtensionOptions, type RepairablePluginState, StatusBar, type StatusBarProps, TIMELINE_VIEW_KEY, TRANSITION_ENTRIES, TRANSITION_GROUPS, TemplatePicker, ThemeCustomizerPanel, type ThemeCustomizerPanelProps, ThemePicker, type ThemePickerProps, type ThemeSaveExtras, type TimelineBlockEntry, type TimelineCommand, type TimelineCommandResult, TimelineEditorWidget, type TimelineEditorWidgetProps, type TimelineEventPatch, TimelineTrack, type TimelineTrackProps, type TimelineViewData, TimelineViewExtension, type TimelineViewExtensionOptions, type TimelineViewPluginState, Toolbar, type ToolbarProps, TooltipLayer, type TransitionCatalogEntry, type TransitionFields, type TransitionGroup, TransitionPicker, type TransitionPickerProps, type TreeBlockEntry, type TreeCommand, TreeOutlineWidget, type TreeViewData, TreeViewExtension, type TreeViewExtensionOptions, type TreeViewPluginState, type UseBlockNavigatorOptions, type UseFileDropOptions, type UseFileDropResult, type UseMonacoLoaderResult, VersionHistoryPanel, ViewMenuPanel, ViewSwitcher, type ViewSwitcherProps, addEdgeOp, addItemOp, addNodeOp, addTimelineEventOp, applyAsciiDiagramCommand, applyRepairCommand, applyTimelineCommand, applyTreeCommand, asciiDiagramToCanvas, buildPreviewDoc, classifyFile, codeSnippetFenceLanguageToken, codeSnippetLanguageLabel, codeSnippetMarkdown, detectLanguageFromFileName, draftPatchFromImportedTheme, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findMermaidDiagramBlockPos, findRepairableBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, formatSeconds, getBlockSlices, getTimelineForNode, indentItemOp, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isTimelineSourceSafeForSemanticEdit, lineToOffset, markdownToTiptap, mermaidDiagramMarkdown, mermaidDiagramProperties, mermaidEditCapabilities, mermaidEditableTexts, mermaidErrorMessage, monacoLanguageForFence, moveItemDownOp, moveItemUpOp, moveNodeOp, nextTimelineEventId, normalizeMermaidFlowchartShape, offsetToLine, outdentItemOp, parseTimelineForNode, partitionFiles, processMediaFiles, processTextFile, processTextFiles, readBlockAttrsParams, readBlockAttrsTransition, readBlockAttrsValue, readHeadingLineTransition, removeEdgeOp, removeItemOp, removeNodeOp, removeTimelineEventOp, renameItemOp, renameNodeOp, renderMermaidDiagram, replaceAsciiFenceText, replaceCodeSnippetText, replaceAsciiFenceText as replaceTreeFenceText, resizeNodeOp, resolveFileKind, sanitizeAsciiLabel, sanitizeTimelineText, sanitizeTreeLabel, searchPickerEntries, setBlockAttrsValue, setBlockDurationInSource, setHeadingAttrsTransition, setHeadingLineTransition, setMediaClipInSource, shouldPasteAsAsciiFence, shouldPasteAsTimelineFence, shouldPasteAsTreeFence, sliceIndexAtOffset, spliceBlock, summarizeBlockProps, templateLabel, tiptapToMarkdown, toggleAsciiSource, toggleDirOp, toggleMermaidSource, transitionLabel, translateDiagramOp, updateTimelineEventOp, useAsciiDiagramData, useBlockNavigator, useCodeSnippetData, useCustomTemplates, useCustomThemes, useDocCustomTemplates, useDocCustomThemes, useFileDrop, useMermaidDiagramData, useMonacoLoader, usePreviewSettings, useTimelineData, useTreeViewData };
2828
+ export { ALL_PICKER_ENTRIES, type AddTimelineEventOptions, type AddTimelineEventResult, type ApplyAsciiDiagramCommandOptions, type AsciiDiagramBlockEntry, AsciiDiagramExtension, type AsciiDiagramExtensionOptions, type AsciiDiagramPluginState, type AsciiDiagramView, AsciiDiagramWidget, BlockCardView, type BlockCardViewProps, type BlockNavigator, BlockPropertiesPopover, type BlockPropertiesPopoverProps, type BlockRange, type BlockSlice, type BuildPreviewDocOptions, CODE_SNIPPET_KEY, CODE_SNIPPET_LANGUAGES, CodeContext, CodeContextZones, type CodeSnippetBlockEntry, type CodeSnippetData, CodeSnippetExtension, type CodeSnippetExtensionOptions, type CodeSnippetLanguage, type CodeSnippetPluginState, CodeSnippetWidget, type CodeSnippetWidgetProps, type CustomTemplateContextValue, CustomTemplateProvider, type CustomTemplateProviderProps, type CustomThemeContextValue, CustomThemeProvider, type CustomThemeProviderProps, DEFAULT_MERMAID_DIAGRAM_TYPE, DiagramCanvas, type DiagramCommand, type DiagramData, type DiagramEdge, type DiagramNode, type DirectionModel, type DocCustomTemplates, type DocCustomThemes, DocumentSettingsDialog, type DocumentSettingsDialogProps, type DragContentType, type DropTarget, DropZoneOverlay, type DropZoneOverlayProps, EMPTY_TRANSITION, EditorHostMode, EmojiPicker, type EmojiPickerProps, type FileCategory, type FileKind, type FolderEntry, FolderView, type FolderViewProps, type HeadingTransitionAttrs, HeadingWithTemplate, ImportThemeSection, type ImportThemeSectionProps, type ImportedThemeResult, InlinePreviewGutter, type InlinePreviewGutterProps, MERMAID_DIAGRAM_KEY, MERMAID_DIAGRAM_TYPES, MERMAID_FLOWCHART_SHAPES, MediaBin, type MediaBinProps, type MediaClipPatch, type MermaidDiagramBlockEntry, MermaidDiagramCanvas, type MermaidDiagramCanvasProps, type MermaidDiagramCategory, type MermaidDiagramData, MermaidDiagramExtension, type MermaidDiagramExtensionOptions, type MermaidDiagramPluginState, type MermaidDiagramPreview, type MermaidDiagramProperty, type MermaidDiagramType, MermaidDiagramTypeThumbnail, MermaidDiagramWidget, type MermaidDiagramWidgetProps, type MermaidEditCapabilities, type MermaidEditableDiagramKind, type MermaidEditableEdge, type MermaidEditableModel, type MermaidEditableNode, type MermaidEditableText, type MermaidEditableTextTarget, type MermaidFlowchartDirection, type MermaidFlowchartModel, type MermaidFlowchartShape, type MermaidFlowchartShapeId, type MermaidNodeCanvasAction, type MermaidRenderResult, type MermaidSelection, MermaidShapePalette, type MermaidShapePaletteProps, type MermaidSourceEditableModel, MonacoLanguageLoadOptions, MonacoLanguageRequest, OutlinePanel, type OutlinePanelProps, PICKER_CATEGORIES, type PickerCategory, type PickerEntry, PlainHtmlPreview, type PlainHtmlPreviewProps, PreviewFormatSwitch, PreviewModeMenu, PreviewModeSwitch, type PreviewSettings, PreviewSettingsProvider, PreviewToolbarControls, type PreviewToolbarControlsProps, REPAIRABLE_KEY, type RepairableBlockEntry, RepairableDiagramExtension, type RepairableDiagramExtensionOptions, type RepairablePluginState, StatusBar, type StatusBarProps, TIMELINE_VIEW_KEY, TRANSITION_ENTRIES, TRANSITION_GROUPS, TemplatePicker, ThemeCustomizerPanel, type ThemeCustomizerPanelProps, ThemePicker, type ThemePickerProps, type ThemeSaveExtras, type TimelineBlockEntry, type TimelineCommand, type TimelineCommandResult, TimelineCompositionPanel, type TimelineCompositionPanelProps, TimelineEditorWidget, type TimelineEditorWidgetProps, type TimelineEventPatch, TimelineToolbar, type TimelineToolbarProps, TimelineTrack, type TimelineTrackProps, TimelineVideoPanel, type TimelineVideoPanelProps, type TimelineViewData, TimelineViewExtension, type TimelineViewExtensionOptions, type TimelineViewPluginState, Toolbar, type ToolbarProps, TooltipLayer, TransformMenu, type TransitionCatalogEntry, type TransitionFields, type TransitionGroup, TransitionPicker, type TransitionPickerProps, type TreeBlockEntry, type TreeCommand, TreeOutlineWidget, type TreeViewData, TreeViewExtension, type TreeViewExtensionOptions, type TreeViewPluginState, type UseBlockNavigatorOptions, type UseFileDropOptions, type UseFileDropResult, type UseMonacoLoaderResult, VersionHistoryPanel, ViewMenuPanel, ViewSwitcher, type ViewSwitcherProps, type WrapPolicyIngest, addEdgeOp, addItemOp, addNodeOp, addTimelineEventOp, applyAsciiDiagramCommand, applyRepairCommand, applyTimelineCommand, applyTreeCommand, asciiDiagramToCanvas, buildPreviewDoc, classifyFile, codeSnippetFenceLanguageToken, codeSnippetLanguageLabel, codeSnippetMarkdown, detectLanguageFromFileName, documentTitleFromFileName, draftPatchFromImportedTheme, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findMermaidDiagramBlockPos, findRepairableBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, formatSeconds, getBlockSlices, getTimelineForNode, indentItemOp, ingestForWrite, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isTimelineSourceSafeForSemanticEdit, lineToOffset, markdownToTiptap, mermaidDiagramMarkdown, mermaidDiagramProperties, mermaidEditCapabilities, mermaidEditableTexts, mermaidErrorMessage, monacoLanguageForFence, moveItemDownOp, moveItemUpOp, moveNodeOp, nextTimelineEventId, normalizeMermaidFlowchartShape, offsetToLine, outdentItemOp, parseTimelineForNode, partitionFiles, persistFromWrite, preloadMonaco, preloadMonacoSuggestions, processMediaFiles, processTextFile, processTextFiles, readBlockAttrsParams, readBlockAttrsTransition, readBlockAttrsValue, readHeadingLineTransition, removeEdgeOp, removeItemOp, removeNodeOp, removeTimelineEventOp, renameItemOp, renameNodeOp, renderMermaidDiagram, replaceAsciiFenceText, replaceCodeSnippetText, replaceAsciiFenceText as replaceTreeFenceText, resizeNodeOp, resolveFileKind, sanitizeAsciiLabel, sanitizeTimelineText, sanitizeTreeLabel, searchPickerEntries, setBlockAttrsValue, setBlockDurationInSource, setBlockStartTimeInSource, setBlockTransitionInSource, setHeadingAttrsTransition, setHeadingLineTransition, setMediaClipInSource, shouldPasteAsAsciiFence, shouldPasteAsTimelineFence, shouldPasteAsTreeFence, sliceIndexAtOffset, spliceBlock, summarizeBlockProps, templateLabel, tiptapToMarkdown, toggleAsciiSource, toggleDirOp, toggleMermaidSource, transitionLabel, translateDiagramOp, updateTimelineEventOp, useAsciiDiagramData, useBlockNavigator, useCodeSnippetData, useCustomTemplates, useCustomThemes, useDocCustomTemplates, useDocCustomThemes, useFileDrop, useMermaidDiagramData, useMonacoLoader, usePreviewSettings, useTimelineData, useTreeViewData };