@bendyline/squisq-editor-react 2.13.22 → 2.13.23

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,9 +1,10 @@
1
- import { C as CodeContext, P as PageTemplateSettings, E as EditorHostMode, S as SceneTextChannel, a as CalcEngineFactory, b as EditorView$1, c as CsvSourceMeta, X as XlsxSourceMeta, F as FormulaEditRecord } from './shell-CdtncgKy.js';
2
- export { A as ApplySourceEditsOptions, B as BlockInsertionBuilder, d as BlockInsertionContext, e as BlockPlacement, f as BlockRange, g as BlockSlice, h as BlockTagVisibility, i as CodeContextSection, j as CoverImageSaveOutput, D as DashboardImageSaveOutput, k as DocumentLinkCandidate, l as DocumentLinkProvider, m as EditorActions, n as EditorColorScheme, o as EditorContextMenuContext, p as EditorContextMenuItem, q as EditorContextMenuItemVisibility, r as EditorContextMenuProvider, s as EditorContextMenuProviderProps, t as EditorContextValue, u as EditorInsertMenuItem, v as EditorMode, w as EditorProvider, x as EditorProviderProps, y as EditorSelectionInfo, z as EditorShell, G as EditorShellProps, H as EditorState, I as FindOptions, J as FindRequest, K as FormulaSessionOptions, L as ImageDisplayMode, M as IngestedSidecar, N as InsertBlockOptions, O as LayoutMode, Q as MentionCandidate, R as MentionProvider, T as NavigationSheetPanel, U as OutlineBlock, V as OutlineInsertion, W as PageTemplateChoice, Y as PreviewPanel, Z as PreviewPanelProps, _ as RawEditor, $ as RawEditorProps, a0 as ThemeInheritance, a1 as ViewPreferences, a2 as WriteCanvasSettings, a3 as WysiwygEditor, a4 as WysiwygEditorProps, a5 as XLSX_LOCKED_REASON, a6 as XlsxFormulaSession, a7 as applySourceEditsToText, a8 as blockInsertionPoint, a9 as createXlsxFormulaSession, aa as getBlockSlices, ab as headingDepthForInsertion, ac as ingestSidecarBytes, ad as joinBlockAt, ae as lineToOffset, af as minimalReplaceEdit, ag as normalizeSourceEdits, ah as offsetToLine, ai as resolveOutlineInsertion, aj as sliceIndexAtOffset, ak as sourceOutline, al as spliceBlock, am as useEditorContext, an as useEditorContextMenuItems, ao as useEditorInsertMenuItems } from './shell-CdtncgKy.js';
1
+ import { C as CodeContext, P as PageTemplateSettings, E as EditorHostMode, S as SceneTextChannel, a as CalcEngineFactory, b as EditorView$1, c as CsvSourceMeta, X as XlsxSourceMeta, F as FormulaEditRecord } from './shell-CKXPqADV.js';
2
+ export { A as ApplySourceEditsOptions, B as BlockInsertionBuilder, d as BlockInsertionContext, e as BlockPlacement, f as BlockRange, g as BlockSlice, h as BlockTagVisibility, i as CodeContextSection, j as CoverImageSaveOutput, D as DashboardImageSaveOutput, k as DocumentLinkCandidate, l as DocumentLinkProvider, m as EditorActions, n as EditorColorScheme, o as EditorContextMenuContext, p as EditorContextMenuItem, q as EditorContextMenuItemVisibility, r as EditorContextMenuProvider, s as EditorContextMenuProviderProps, t as EditorContextValue, u as EditorInsertMenuItem, v as EditorMode, w as EditorProvider, x as EditorProviderProps, y as EditorSelectionInfo, z as EditorShell, G as EditorShellProps, H as EditorState, I as FindOptions, J as FindRequest, K as FormulaSessionOptions, L as ImageDisplayMode, M as IngestedSidecar, N as InsertBlockOptions, O as LayoutMode, Q as MediaEditSaveOutput, R as MentionCandidate, T as MentionProvider, U as NavigationSheetPanel, V as OutlineBlock, W as OutlineInsertion, Y as PageTemplateChoice, Z as PreviewPanel, _ as PreviewPanelProps, $ as RawEditor, a0 as RawEditorProps, a1 as ThemeInheritance, a2 as ViewPreferences, a3 as WriteCanvasSettings, a4 as WysiwygEditor, a5 as WysiwygEditorProps, a6 as XLSX_LOCKED_REASON, a7 as XlsxFormulaSession, a8 as applySourceEditsToText, a9 as blockInsertionPoint, aa as createXlsxFormulaSession, ab as getBlockSlices, ac as headingDepthForInsertion, ad as ingestSidecarBytes, ae as joinBlockAt, af as lineToOffset, ag as minimalReplaceEdit, ah as normalizeSourceEdits, ai as offsetToLine, aj as resolveOutlineInsertion, ak as sliceIndexAtOffset, al as sourceOutline, am as spliceBlock, an as useEditorContext, ao as useEditorContextMenuItems, ap as useEditorInsertMenuItems } from './shell-CKXPqADV.js';
3
3
  import * as react from 'react';
4
4
  import { ReactNode, CSSProperties, RefObject, ReactElement } from 'react';
5
5
  import { Doc, ScheduledClip, VideoPlacement, VideoPipSize, VideoPipShape, VideoPipPosition, MediaEdits, MediaProvider, Theme, CustomTemplateDefinition, ThemeSeedColors, ViewportPreset, ViewportConfig, Block, MediaEntry, DiagramEdgeAnchor } from '@bendyline/squisq/schemas';
6
6
  import { ContentContainer } from '@bendyline/squisq/storage';
7
+ import { MediaEditRenderManager } from '@bendyline/squisq-video-react/media-edit';
7
8
  export { CanvasRect, ImageEditor, ImageEditorAction, ImageEditorProps, ImageEditorState, ImageEditorTool, ImageViewer, ImageViewerProps, UseImageEditorOptions, UseImageEditorReturn, imageEditorReducer, initialImageEditorState, useImageEditor } from './image-editor/index.js';
8
9
  import { WikiLinkSupport, MarkdownWrapState, SvgIslandDiagnostic, BlockVideoEmbed, VideoEmbed } from '@bendyline/squisq/markdown';
9
10
  export { MarkdownSourceEdit } from '@bendyline/squisq/markdown';
@@ -27,9 +28,9 @@ import { RenderResult } from 'mermaid';
27
28
  import { TableViewState } from '@bendyline/squisq/table';
28
29
  import { EditJournal } from '@bendyline/squisq-grid-react';
29
30
  export { JsonEditor, JsonEditorProps } from './json-editor/index.js';
30
- export { C as CameraStreamOptions, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderButton, c as RecorderButtonProps, d as RecorderCameraSaveResult, e as RecorderColorScheme, f as RecorderDeviceOption, g as RecorderDeviceQuickPicks, h as RecorderDeviceQuickPicksProps, i as RecorderDeviceSettingsPanel, j as RecorderDeviceSettingsPanelProps, k as RecorderModal, l as RecorderModalProps, m as RecorderNarrationOptions, n as RecorderPanel, o as RecorderPanelProps, p as RecorderSaveResult, q as RecorderSlidesOptions, S as ScreenStreamHandle, r as ScreenStreamOptions, s as SlideTimingSaveResult, T as TimingJson, t as buildTimingJson, u as encodeTimingJson, v as hasRecorderDeviceChoice, w as recordedMediaKind, x as recorderDeviceGroups, y as recorderDeviceOptions, z as requestCameraStream, A as requestMicStream, B as requestScreenStream, D as timingPathFor, E as useMediaDevices, F as useStreamPreview } from './recorder-rQGYsS6B.js';
31
- import { R as RecorderState } from './useNarrationStage-DlighI1z.js';
32
- export { C as CanvasSink, a as CaptureKind, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, c as FloatingWindowHandle, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, g as NarrationStageHandle, h as NarrationTake, P as PrompterTransport, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, m as ResolvedFormat, T as TeleprompterController, n as TeleprompterPrefs, o as TeleprompterRecordingDeps, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, q as UseNarrationStageOptions, r as buildFilename, s as createFloatingWindowManager, t as detectFloatTiers, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, z as useFloatingWindow, A as useMediaRecorder, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from './useNarrationStage-DlighI1z.js';
31
+ export { C as CameraStreamOptions, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderButton, c as RecorderButtonProps, d as RecorderCameraSaveResult, e as RecorderColorScheme, f as RecorderDeviceOption, g as RecorderDeviceQuickPicks, h as RecorderDeviceQuickPicksProps, i as RecorderDeviceSettingsPanel, j as RecorderDeviceSettingsPanelProps, k as RecorderModal, l as RecorderModalProps, m as RecorderNarrationOptions, n as RecorderPanel, o as RecorderPanelProps, p as RecorderSaveResult, q as RecorderSlidesOptions, S as ScreenStreamHandle, r as ScreenStreamOptions, s as SlideTimingSaveResult, T as TimingJson, t as buildTimingJson, u as encodeTimingJson, v as hasRecorderDeviceChoice, w as recordedMediaKind, x as recorderDeviceGroups, y as recorderDeviceOptions, z as requestCameraStream, A as requestMicStream, B as requestScreenStream, D as timingPathFor, E as useMediaDevices, F as useStreamPreview } from './recorder-pdsnPhLa.js';
32
+ import { R as RecorderState } from './useNarrationStage-BsSUp9Zr.js';
33
+ export { C as CanvasSink, a as CaptureKind, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, c as FloatingWindowHandle, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, g as NarrationStageHandle, h as NarrationTake, P as PrompterTransport, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, m as ResolvedFormat, T as TeleprompterController, n as TeleprompterPrefs, o as TeleprompterRecordingDeps, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, q as UseNarrationStageOptions, r as buildFilename, s as createFloatingWindowManager, t as detectFloatTiers, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, z as useFloatingWindow, A as useMediaRecorder, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from './useNarrationStage-BsSUp9Zr.js';
33
34
  export { D as DEFAULT_RECORDER_DEVICE_SETTINGS, a as RecorderAudioDeviceSettings, b as RecorderCameraDeviceSettings, c as RecorderConstraintMode, R as RecorderDeviceSettings, d as RecorderEncodingSettings, e as RecorderScreenAudioSettings, f as RecorderScreenDeviceSettings, g as buildRecorderAudioConstraints, h as buildRecorderCameraConstraints, i as buildRecorderScreenAudioConstraints, j as buildRecorderScreenConstraints, r as recorderBitsPerSecond } from './deviceSettings-BSkIQncC.js';
34
35
  export { EYE_LINE_FRACTION, ExecuteNarrationSaveDeps, NarrationSavePlan, NarrationSavePlanArgs, NarrationSaveProgress, 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';
35
36
  export { H as HarperProofingConfig, a as ProofingCapability, b as ProofingDocumentRef, c as ProofingIgnoreStore, d as ProofingLanguage, e as ProofingLintOptions, P as ProofingProvider, f as ProofingProviderFactory } from './types-qxwhho3e.js';
@@ -39,7 +40,6 @@ export { D as DictationControl, a as SPEECH_INPUT_SAMPLE_RATE, b as SpeechInputC
39
40
  import '@bendyline/squisq-calc';
40
41
  import '@bendyline/squisq-formats/xlsx';
41
42
  import '@bendyline/squisq/versions';
42
- import '@bendyline/squisq-video-react/media-edit';
43
43
  import './types-C0puuw-M.js';
44
44
  import '@bendyline/squisq/review';
45
45
  import '@bendyline/squisq/imageEdit';
@@ -352,6 +352,8 @@ declare function setBlockStartTimeInSource(source: string, line: number, seconds
352
352
  declare function setBlockTransitionInSource(source: string, line: number, transition: TransitionFields): string | null;
353
353
  /** A patch to a media clip; numeric values are seconds, `null` removes the key. */
354
354
  interface MediaClipPatch {
355
+ /** Point the clip at another file. */
356
+ src?: string;
355
357
  startAt?: number | null;
356
358
  clipStart?: number | null;
357
359
  clipEnd?: number | null;
@@ -375,6 +377,68 @@ interface MediaClipPatch {
375
377
  */
376
378
  declare function setMediaClipInSource(source: string, line: number, patch: MediaClipPatch): string | null;
377
379
 
380
+ /**
381
+ * Baked media for exports that cannot apply a recipe.
382
+ *
383
+ * A script-free HTML page plays a clip's file as it is: no cuts, no cleaned-up
384
+ * sound, no gain, fades or crop. `bakeMarkdownMedia` finds every clip in a
385
+ * markdown source whose recipe such a player would ignore, has the render
386
+ * manager bake it, and returns the source with those clips pointing at their
387
+ * baked files and the recipe (and trim) taken off — a document any exporter
388
+ * can treat as ordinary media. The original source is not changed; this is
389
+ * the text to hand to the export.
390
+ */
391
+
392
+ interface BakedMediaReference {
393
+ /** The clip's source reference, as the document wrote it. */
394
+ src: string;
395
+ kind: 'audio' | 'video';
396
+ /** 1-based line of the clip in the markdown. */
397
+ sourceLine: number;
398
+ /** Where the baked file is stored: a media path the document's provider resolves. */
399
+ path: string;
400
+ /** The reference written into the returned markdown. */
401
+ reference: string;
402
+ }
403
+ interface BakedMarkdown {
404
+ /** The source, with every baked clip pointing at its baked file. */
405
+ markdown: string;
406
+ baked: BakedMediaReference[];
407
+ /** Clips that could not be baked. They keep their original reference and recipe. */
408
+ failures: Array<{
409
+ src: string;
410
+ sourceLine: number;
411
+ error: string;
412
+ }>;
413
+ }
414
+ interface BakeMarkdownMediaOptions {
415
+ signal?: AbortSignal;
416
+ /** 0…1 across every clip that needs baking, with the clip being worked on. */
417
+ onProgress?: (fraction: number, clip: {
418
+ index: number;
419
+ count: number;
420
+ src: string;
421
+ }) => void;
422
+ /**
423
+ * How the returned markdown refers to a baked file.
424
+ *
425
+ * - `'store'` (default) — its path in the render store. Right when the
426
+ * export is read beside the document's own media folder.
427
+ * - `'copy'` — a visible name beside the source (`video/take-edited.mp4`),
428
+ * for an export that carries its own copy of each file: the render store
429
+ * is a dot-folder, which many static hosts will not serve. The exporter
430
+ * reads `baked[n].path` and writes it at `baked[n].reference`.
431
+ */
432
+ reference?: 'store' | 'copy';
433
+ }
434
+ /**
435
+ * Bake every clip in `markdown` that a recipe-unaware player would play
436
+ * wrongly, and return the source rewritten to use the baked files. A clip
437
+ * that fails to bake is reported and left as it was; cancelling rejects with
438
+ * an `AbortError`.
439
+ */
440
+ declare function bakeMarkdownMedia(markdown: string, manager: MediaEditRenderManager, options?: BakeMarkdownMediaOptions): Promise<BakedMarkdown>;
441
+
378
442
  /**
379
443
  * fileKind
380
444
  *
@@ -1213,8 +1277,20 @@ interface TemplatePickerProps {
1213
1277
  * their static wireframe icons.
1214
1278
  */
1215
1279
  previewSource?: TemplatePreviewSource;
1280
+ /**
1281
+ * Shows the current type but cannot be opened — for a host whose active
1282
+ * block has no type to change. Pair with {@link title} to say why.
1283
+ */
1284
+ disabled?: boolean;
1285
+ /** Tooltip for the trigger. Defaults to "Choose block type". */
1286
+ title?: string;
1287
+ /**
1288
+ * Text for the current type, in place of the label derived from `value` —
1289
+ * for a host that shows something `value` cannot name (e.g. "Cover").
1290
+ */
1291
+ valueLabel?: string;
1216
1292
  }
1217
- declare function TemplatePicker({ value, onChange, colorScheme, compact, recommended, onOpenDesigner, previewSource, }: TemplatePickerProps): react.JSX.Element;
1293
+ declare function TemplatePicker({ value, onChange, colorScheme, compact, recommended, onOpenDesigner, previewSource, disabled, title, valueLabel, }: TemplatePickerProps): react.JSX.Element;
1218
1294
 
1219
1295
  interface TransitionPickerProps {
1220
1296
  value: TransitionFields;
@@ -3100,6 +3176,45 @@ interface DataCardWidgetProps {
3100
3176
  }
3101
3177
  declare function DataCardWidget({ editor, blockId, getMediaProvider, getMediaRevision, getContainer, onOpenFiles, onMediaSaved, getCalcEngineFactory, }: DataCardWidgetProps): ReactElement | null;
3102
3178
 
3179
+ /**
3180
+ * FillAvailableExtension — a height-capable block at the end of the page takes
3181
+ * the room left below it.
3182
+ *
3183
+ * Widget hosts opt in with the `squisq-block-fill-available` class (the data
3184
+ * grid, the diagram canvases, the drawing scene). When such a host ends the
3185
+ * document — nothing after it but empty paragraphs — and the page is shorter
3186
+ * than its window, this plugin stamps the host with `data-fill-height` and
3187
+ * `--squisq-fill-height`: the height from the host's top to the bottom of the
3188
+ * visible page, less what must still fit below it. Each component's CSS
3189
+ * decides which part grows into that room (the grid's scroller, a diagram's
3190
+ * canvas); without the stamp every component keeps its natural height.
3191
+ *
3192
+ * One measurement serves the document view and the single-block card. The
3193
+ * page keeps ordinary block flow: turning the editor into a flex column would
3194
+ * stop sibling margins collapsing and respace every paragraph above the block.
3195
+ *
3196
+ * The target comes from the viewport and from what lies above and below the
3197
+ * host, never from the host's own height, so a host growing into it cannot
3198
+ * move it; in a container sized by its content it equals the host's natural
3199
+ * height. Auto-growing shells (a chat composer) are skipped outright anyway:
3200
+ * they have no page edge to fill to.
3201
+ */
3202
+
3203
+ declare const FILL_AVAILABLE_CLASS = "squisq-block-fill-available";
3204
+ /** The fill-capable host that ends the document, if one does. */
3205
+ declare function terminalFillHost(editorDom: HTMLElement): HTMLElement | null;
3206
+ interface FillGeometry {
3207
+ /** The scroll container's visible height (`clientHeight`). */
3208
+ viewportHeight: number;
3209
+ /** The host's border-box top, in the container's scroll-content coordinates. */
3210
+ hostTop: number;
3211
+ /** What must still fit below the host's border box: its margin, any empty tail, the page's bottom padding. */
3212
+ below: number;
3213
+ }
3214
+ /** The min-height a terminal host may take, or null when the page has no room to give. */
3215
+ declare function fillHeightFor({ viewportHeight, hostTop, below }: FillGeometry): number | null;
3216
+ declare const FillAvailableExtension: Extension<any, any>;
3217
+
3103
3218
  /**
3104
3219
  * VideoEmbedExtension — the Write view's inline player for hosted videos.
3105
3220
  *
@@ -3640,4 +3755,4 @@ declare function unshownSlidesWarning(total: number, unshown: number): string |
3640
3755
  /** The exact label of the review-state block-timings checkbox. */
3641
3756
  declare const SLIDE_TIMING_CHECKBOX_LABEL = "Update block timings when I save this narration";
3642
3757
 
3643
- 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, CODE_SNIPPET_KEY, CODE_SNIPPET_LANGUAGES, CalcEngineFactory, CodeContext, CodeContextZones, type CodeSnippetBlockEntry, type CodeSnippetData, CodeSnippetExtension, type CodeSnippetExtensionOptions, type CodeSnippetLanguage, type CodeSnippetPluginState, CodeSnippetWidget, type CodeSnippetWidgetProps, CsvSourceMeta, type CustomTemplateContextValue, CustomTemplateProvider, type CustomTemplateProviderProps, type CustomThemeContextValue, CustomThemeProvider, type CustomThemeProviderProps, DATA_CARD_KEY, DEFAULT_MERMAID_DIAGRAM_TYPE, type DataCardBlockEntry, DataCardExtension, type DataCardExtensionOptions, type DataCardPluginState, DataCardWidget, type DataPreview, 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, EditorView$1 as EditorView, EmojiPicker, type EmojiPickerProps, FENCE_WIDGET_CONTAINED_EVENTS, type FenceBlockEntry, type FileCategory, type FileKind, type FolderEntry, FolderView, type FolderViewProps, FormulaEditRecord, type GridSaveResult, HOST_FENCE_KEY, type HeadingTransitionAttrs, type HeadingViewBinding, HeadingWithTemplate, type HostFenceBlockEntry, HostFenceExtension, type HostFenceExtensionOptions, type HostFencePluginState, ImportThemeSection, type ImportThemeSectionProps, type ImportedThemeResult, InlinePreviewGutter, type InlinePreviewGutterProps, MERMAID_DIAGRAM_KEY, MERMAID_DIAGRAM_TYPES, MERMAID_FLOWCHART_SHAPES, MarkdownEscape, 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, type MermaidSurfaceScheme, type MermaidValidationResult, MonacoLanguageLoadOptions, MonacoLanguageRequest, OutlinePanel, type OutlinePanelProps, PICKER_CATEGORIES, PageTemplateSettings, type PickerCategory, type PickerEntry, PlainHtmlPreview, type PlainHtmlPreviewProps, PreviewFormatSwitch, PreviewModeMenu, PreviewModeSwitch, type PreviewSettings, PreviewSettingsProvider, PreviewToolbarControls, type PreviewToolbarControlsProps, REPAIRABLE_KEY, type RecorderPanelMode, type RecorderSlide, RecorderSlidesPanel, type RecorderSlidesPanelProps, RecorderState, type RepairableBlockEntry, RepairableDiagramExtension, type RepairableDiagramExtensionOptions, type RepairablePluginState, SLIDE_TIMING_CHECKBOX_LABEL, SVG_ISLAND_KEY, type SaveCsvEditsOptions, type SaveXlsxEditsOptions, StatusBar, type StatusBarProps, Subscript, Superscript, type SvgIslandBlockEntry, SvgIslandExtension, type SvgIslandExtensionOptions, type SvgIslandPluginState, SvgIslandWidget, type SvgIslandWidgetProps, 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, VIDEO_EMBED_KEY, VersionHistoryPanel, type VideoEmbedBlockEntry, VideoEmbedDialog, type VideoEmbedDialogProps, VideoEmbedExtension, type VideoEmbedExtensionOptions, type VideoEmbedPluginState, ViewMenuPanel, ViewSwitcher, type ViewSwitcherProps, type WrapPolicyIngest, WriteModeMenu, type WriteModeMenuProps, XlsxSourceMeta, adaptThemeToSurface, addEdgeOp, addItemOp, addNodeOp, addTimelineEventOp, applyAsciiDiagramCommand, applyRepairCommand, applyTimelineCommand, applyTreeCommand, asciiDiagramToCanvas, buildRecorderSlideDeck, clampSlideIndex, classifyFile, codeSnippetFenceLanguageToken, codeSnippetLanguageLabel, codeSnippetMarkdown, containFenceWidgetEvents, convertVideoEmbedToLink, dataExtensionOf, dataLinkHrefOf, describeSvgIslandRemovals, detectLanguageFromFileName, draftPatchFromImportedTheme, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findDataCardBlockPos, findHostFenceBlockPos, findMermaidDiagramBlockPos, findOwningHeadingPosition, findRepairableBlockPos, findSvgIslandBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, findVideoEmbedBlockPos, formatSeconds, getTimelineForNode, indentItemOp, ingestForWrite, insertVideoEmbedReference, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isExpandedPanel, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isSvgIslandNode, isSvgIslandSourceVisible, isTimelineSourceSafeForSemanticEdit, loadDataPreview, mapFenceEntries, markdownToTiptap, mermaidDiagramMarkdown, mermaidDiagramProperties, mermaidEditCapabilities, mermaidEditableTexts, mermaidErrorMessage, mermaidSurfaceScheme, monacoLanguageForFence, moveItemDownOp, moveItemUpOp, moveNodeOp, nextTimelineEventId, normalizeMermaidFlowchartShape, outdentItemOp, panelModeAfterToggle, parseTimelineForNode, partitionFiles, pasteVideoEmbedCode, persistFromWrite, preloadMonaco, preloadMonacoSuggestions, processDataFiles, processMediaFiles, processTextFile, processTextFiles, readBlockAttrsParams, readBlockAttrsTransition, readBlockAttrsValue, readHeadingLineTransition, readHeadingViewBinding, removeEdgeOp, removeItemOp, removeNodeOp, removeTimelineEventOp, renameItemOp, renameNodeOp, renderMermaidDiagram, replaceAsciiFenceText, replaceCodeSnippetText, replaceHostFenceText, replaceSvgIslandText, replaceAsciiFenceText as replaceTreeFenceText, resizeNodeOp, resolveFileKind, resolveMermaidSurfaceTheme, sanitizeAsciiLabel, sanitizeTimelineText, sanitizeTreeLabel, saveCsvEdits, saveXlsxEdits, searchPickerEntries, setBlockAttrsValue, setBlockDurationInSource, setBlockStartTimeInSource, setBlockTransitionInSource, setHeadingAttrsTransition, setHeadingLineTransition, setMediaClipInSource, shouldPasteAsAsciiFence, shouldPasteAsSvgFence, shouldPasteAsTimelineFence, shouldPasteAsTreeFence, showSlideTimingCheckbox, slideStepForKey, summarizeBlockProps, templateLabel, tiptapToMarkdown, toggleAsciiSource, toggleDirOp, toggleMermaidSource, toggleSvgIslandSource, transitionLabel, translateDiagramOp, unshownSlidesWarning, updateTimelineEventOp, useAsciiDiagramData, useBlockNavigator, useCodeSnippetData, useCustomTemplates, useCustomThemes, useDocCustomTemplates, useDocCustomThemes, useFileDrop, useMermaidDiagramData, useMermaidSurfaceTheme, useMonacoLoader, usePreviewSettings, usePreviewSettingsOptional, useTimelineData, useTreeViewData, validateMermaidSource, videoEmbedMarkdown, videoEmbedOfParagraph, videoEmbedParagraphJson, viewStateFromBinding, writeHeadingViewState };
3758
+ export { ALL_PICKER_ENTRIES, type AddTimelineEventOptions, type AddTimelineEventResult, type ApplyAsciiDiagramCommandOptions, type AsciiDiagramBlockEntry, AsciiDiagramExtension, type AsciiDiagramExtensionOptions, type AsciiDiagramPluginState, type AsciiDiagramView, AsciiDiagramWidget, type BakeMarkdownMediaOptions, type BakedMarkdown, type BakedMediaReference, BlockCardView, type BlockCardViewProps, type BlockNavigator, BlockPropertiesPopover, type BlockPropertiesPopoverProps, CODE_SNIPPET_KEY, CODE_SNIPPET_LANGUAGES, CalcEngineFactory, CodeContext, CodeContextZones, type CodeSnippetBlockEntry, type CodeSnippetData, CodeSnippetExtension, type CodeSnippetExtensionOptions, type CodeSnippetLanguage, type CodeSnippetPluginState, CodeSnippetWidget, type CodeSnippetWidgetProps, CsvSourceMeta, type CustomTemplateContextValue, CustomTemplateProvider, type CustomTemplateProviderProps, type CustomThemeContextValue, CustomThemeProvider, type CustomThemeProviderProps, DATA_CARD_KEY, DEFAULT_MERMAID_DIAGRAM_TYPE, type DataCardBlockEntry, DataCardExtension, type DataCardExtensionOptions, type DataCardPluginState, DataCardWidget, type DataPreview, 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, EditorView$1 as EditorView, EmojiPicker, type EmojiPickerProps, FENCE_WIDGET_CONTAINED_EVENTS, FILL_AVAILABLE_CLASS, type FenceBlockEntry, type FileCategory, type FileKind, FillAvailableExtension, type FillGeometry, type FolderEntry, FolderView, type FolderViewProps, FormulaEditRecord, type GridSaveResult, HOST_FENCE_KEY, type HeadingTransitionAttrs, type HeadingViewBinding, HeadingWithTemplate, type HostFenceBlockEntry, HostFenceExtension, type HostFenceExtensionOptions, type HostFencePluginState, ImportThemeSection, type ImportThemeSectionProps, type ImportedThemeResult, InlinePreviewGutter, type InlinePreviewGutterProps, MERMAID_DIAGRAM_KEY, MERMAID_DIAGRAM_TYPES, MERMAID_FLOWCHART_SHAPES, MarkdownEscape, 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, type MermaidSurfaceScheme, type MermaidValidationResult, MonacoLanguageLoadOptions, MonacoLanguageRequest, OutlinePanel, type OutlinePanelProps, PICKER_CATEGORIES, PageTemplateSettings, type PickerCategory, type PickerEntry, PlainHtmlPreview, type PlainHtmlPreviewProps, PreviewFormatSwitch, PreviewModeMenu, PreviewModeSwitch, type PreviewSettings, PreviewSettingsProvider, PreviewToolbarControls, type PreviewToolbarControlsProps, REPAIRABLE_KEY, type RecorderPanelMode, type RecorderSlide, RecorderSlidesPanel, type RecorderSlidesPanelProps, RecorderState, type RepairableBlockEntry, RepairableDiagramExtension, type RepairableDiagramExtensionOptions, type RepairablePluginState, SLIDE_TIMING_CHECKBOX_LABEL, SVG_ISLAND_KEY, type SaveCsvEditsOptions, type SaveXlsxEditsOptions, StatusBar, type StatusBarProps, Subscript, Superscript, type SvgIslandBlockEntry, SvgIslandExtension, type SvgIslandExtensionOptions, type SvgIslandPluginState, SvgIslandWidget, type SvgIslandWidgetProps, 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, VIDEO_EMBED_KEY, VersionHistoryPanel, type VideoEmbedBlockEntry, VideoEmbedDialog, type VideoEmbedDialogProps, VideoEmbedExtension, type VideoEmbedExtensionOptions, type VideoEmbedPluginState, ViewMenuPanel, ViewSwitcher, type ViewSwitcherProps, type WrapPolicyIngest, WriteModeMenu, type WriteModeMenuProps, XlsxSourceMeta, adaptThemeToSurface, addEdgeOp, addItemOp, addNodeOp, addTimelineEventOp, applyAsciiDiagramCommand, applyRepairCommand, applyTimelineCommand, applyTreeCommand, asciiDiagramToCanvas, bakeMarkdownMedia, buildRecorderSlideDeck, clampSlideIndex, classifyFile, codeSnippetFenceLanguageToken, codeSnippetLanguageLabel, codeSnippetMarkdown, containFenceWidgetEvents, convertVideoEmbedToLink, dataExtensionOf, dataLinkHrefOf, describeSvgIslandRemovals, detectLanguageFromFileName, draftPatchFromImportedTheme, fillHeightFor, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findDataCardBlockPos, findHostFenceBlockPos, findMermaidDiagramBlockPos, findOwningHeadingPosition, findRepairableBlockPos, findSvgIslandBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, findVideoEmbedBlockPos, formatSeconds, getTimelineForNode, indentItemOp, ingestForWrite, insertVideoEmbedReference, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isExpandedPanel, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isSvgIslandNode, isSvgIslandSourceVisible, isTimelineSourceSafeForSemanticEdit, loadDataPreview, mapFenceEntries, markdownToTiptap, mermaidDiagramMarkdown, mermaidDiagramProperties, mermaidEditCapabilities, mermaidEditableTexts, mermaidErrorMessage, mermaidSurfaceScheme, monacoLanguageForFence, moveItemDownOp, moveItemUpOp, moveNodeOp, nextTimelineEventId, normalizeMermaidFlowchartShape, outdentItemOp, panelModeAfterToggle, parseTimelineForNode, partitionFiles, pasteVideoEmbedCode, persistFromWrite, preloadMonaco, preloadMonacoSuggestions, processDataFiles, processMediaFiles, processTextFile, processTextFiles, readBlockAttrsParams, readBlockAttrsTransition, readBlockAttrsValue, readHeadingLineTransition, readHeadingViewBinding, removeEdgeOp, removeItemOp, removeNodeOp, removeTimelineEventOp, renameItemOp, renameNodeOp, renderMermaidDiagram, replaceAsciiFenceText, replaceCodeSnippetText, replaceHostFenceText, replaceSvgIslandText, replaceAsciiFenceText as replaceTreeFenceText, resizeNodeOp, resolveFileKind, resolveMermaidSurfaceTheme, sanitizeAsciiLabel, sanitizeTimelineText, sanitizeTreeLabel, saveCsvEdits, saveXlsxEdits, searchPickerEntries, setBlockAttrsValue, setBlockDurationInSource, setBlockStartTimeInSource, setBlockTransitionInSource, setHeadingAttrsTransition, setHeadingLineTransition, setMediaClipInSource, shouldPasteAsAsciiFence, shouldPasteAsSvgFence, shouldPasteAsTimelineFence, shouldPasteAsTreeFence, showSlideTimingCheckbox, slideStepForKey, summarizeBlockProps, templateLabel, terminalFillHost, tiptapToMarkdown, toggleAsciiSource, toggleDirOp, toggleMermaidSource, toggleSvgIslandSource, transitionLabel, translateDiagramOp, unshownSlidesWarning, updateTimelineEventOp, useAsciiDiagramData, useBlockNavigator, useCodeSnippetData, useCustomTemplates, useCustomThemes, useDocCustomTemplates, useDocCustomThemes, useFileDrop, useMermaidDiagramData, useMermaidSurfaceTheme, useMonacoLoader, usePreviewSettings, usePreviewSettingsOptional, useTimelineData, useTreeViewData, validateMermaidSource, videoEmbedMarkdown, videoEmbedOfParagraph, videoEmbedParagraphJson, viewStateFromBinding, writeHeadingViewState };
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  PROOF_FRONTMATTER_KEYS,
4
4
  createHarperProofingProvider
5
5
  } from "./chunk-VRRT4WP4.js";
6
- import "./chunk-7ADGH53Y.js";
6
+ import "./chunk-RVHUTOHG.js";
7
7
  import {
8
8
  configureMonacoWorkers
9
9
  } from "./chunk-BWPFPHWY.js";
@@ -36,6 +36,8 @@ import {
36
36
  EditorShell,
37
37
  EmojiPicker,
38
38
  FENCE_WIDGET_CONTAINED_EVENTS,
39
+ FILL_AVAILABLE_CLASS,
40
+ FillAvailableExtension,
39
41
  FontPicker,
40
42
  HOST_FENCE_KEY,
41
43
  HeadingWithTemplate,
@@ -121,6 +123,7 @@ import {
121
123
  dataLinkHrefOf,
122
124
  describeSvgIslandRemovals,
123
125
  draftPatchFromImportedTheme,
126
+ fillHeightFor,
124
127
  findAsciiDiagramBlockPos,
125
128
  findCodeSnippetBlockPos,
126
129
  findDataCardBlockPos,
@@ -214,6 +217,7 @@ import {
214
217
  shouldPasteAsTreeFence,
215
218
  summarizeBlockProps,
216
219
  templateLabel,
220
+ terminalFillHost,
217
221
  themeToDraft,
218
222
  toggleAsciiSource,
219
223
  toggleDirOp,
@@ -244,7 +248,7 @@ import {
244
248
  videoEmbedParagraphJson,
245
249
  viewStateFromBinding,
246
250
  writeHeadingViewState
247
- } from "./chunk-LZO3HOCQ.js";
251
+ } from "./chunk-CBFPGSYR.js";
248
252
  import {
249
253
  EditorProvider,
250
254
  applySourceEditsToText,
@@ -254,6 +258,7 @@ import {
254
258
  headingDepthForInsertion,
255
259
  joinBlockAt,
256
260
  lineToOffset,
261
+ listEditableMedia,
257
262
  minimalReplaceEdit,
258
263
  normalizeSourceEdits,
259
264
  offsetToLine,
@@ -265,7 +270,7 @@ import {
265
270
  useBlockNavigator,
266
271
  useEditorContext,
267
272
  useEditorInsertMenuItems
268
- } from "./chunk-MMK26QF7.js";
273
+ } from "./chunk-EPMIOQAZ.js";
269
274
  import {
270
275
  SPEECH_INPUT_SAMPLE_RATE,
271
276
  isSpeechInputProviderFactory,
@@ -291,7 +296,7 @@ import {
291
296
  } from "./chunk-HLU6ZBS7.js";
292
297
  import {
293
298
  RecorderButton
294
- } from "./chunk-5O3RU2HO.js";
299
+ } from "./chunk-KMTQ4M2G.js";
295
300
  import {
296
301
  RecorderDeviceQuickPicks,
297
302
  RecorderDeviceSettingsPanel,
@@ -316,7 +321,7 @@ import {
316
321
  unshownSlidesWarning,
317
322
  useMediaDevices,
318
323
  useMediaRecorder
319
- } from "./chunk-APTVXGK6.js";
324
+ } from "./chunk-QI5SHUVT.js";
320
325
  import {
321
326
  DEFAULT_RECORDER_DEVICE_SETTINGS,
322
327
  buildRecorderAudioConstraints,
@@ -330,7 +335,7 @@ import {
330
335
  } from "./chunk-UYB5CPRE.js";
331
336
  import {
332
337
  TeleprompterView
333
- } from "./chunk-GI2D2XS5.js";
338
+ } from "./chunk-IOG66XFC.js";
334
339
  import {
335
340
  DEFAULT_TELEPROMPTER_PREFS,
336
341
  EYE_LINE_FRACTION,
@@ -361,7 +366,7 @@ import {
361
366
  useStreamPreview,
362
367
  useTeleprompter,
363
368
  vadConfigForSensitivity
364
- } from "./chunk-JCIK2QU5.js";
369
+ } from "./chunk-2KTMXJWB.js";
365
370
  import {
366
371
  buildFilename,
367
372
  requestMicStream,
@@ -369,7 +374,7 @@ import {
369
374
  supportsDisplayMedia,
370
375
  supportsMediaRecorder,
371
376
  supportsUserMedia
372
- } from "./chunk-DNJ6HOES.js";
377
+ } from "./chunk-QXHX7N4V.js";
373
378
  import {
374
379
  buildTimingJson,
375
380
  encodeTimingJson,
@@ -445,6 +450,67 @@ function defaultIconFor(entry) {
445
450
  return /* @__PURE__ */ jsx(Icon, { icon: "fa-regular fa-file-lines fa-fw" });
446
451
  }
447
452
 
453
+ // src/mediaEdit/bakedMarkdown.ts
454
+ import { markdownToDoc } from "@bendyline/squisq/doc";
455
+ import { parseMarkdown } from "@bendyline/squisq/markdown";
456
+ import { mediaBakeCopyPath, needsMediaBake } from "@bendyline/squisq/mediaEdit";
457
+ function extensionOf(path) {
458
+ const name = path.slice(path.lastIndexOf("/") + 1);
459
+ const dot = name.lastIndexOf(".");
460
+ return dot < 0 ? "" : name.slice(dot + 1);
461
+ }
462
+ function uniqueCopyPath(src, extension, used) {
463
+ const first = mediaBakeCopyPath(src, extension);
464
+ let path = first;
465
+ for (let n = 2; used.has(path); n++) {
466
+ path = first.replace(/(\.[^./]+)$/, `-${n}$1`);
467
+ }
468
+ used.add(path);
469
+ return path;
470
+ }
471
+ async function bakeMarkdownMedia(markdown, manager, options = {}) {
472
+ const doc = markdownToDoc(parseMarkdown(markdown));
473
+ const clips = listEditableMedia(doc).filter((item) => needsMediaBake(item.clip));
474
+ const result = { markdown, baked: [], failures: [] };
475
+ const usedCopyPaths = /* @__PURE__ */ new Set();
476
+ for (const [index, item] of clips.entries()) {
477
+ options.signal?.throwIfAborted();
478
+ const position = { index, count: clips.length, src: item.src };
479
+ options.onProgress?.(index / clips.length, position);
480
+ try {
481
+ const path = await manager.bake(item.clip, {
482
+ signal: options.signal,
483
+ onProgress: (fraction) => options.onProgress?.((index + fraction) / clips.length, position)
484
+ });
485
+ const reference = options.reference === "copy" ? uniqueCopyPath(item.src, extensionOf(path), usedCopyPaths) : path;
486
+ const rewritten = setMediaClipInSource(result.markdown, item.sourceLine, {
487
+ src: reference,
488
+ clipStart: null,
489
+ clipEnd: null,
490
+ edits: null
491
+ });
492
+ if (rewritten == null) throw new Error("The clip could not be rewritten.");
493
+ result.markdown = rewritten;
494
+ result.baked.push({
495
+ src: item.src,
496
+ kind: item.kind,
497
+ sourceLine: item.sourceLine,
498
+ path,
499
+ reference
500
+ });
501
+ } catch (err) {
502
+ if (err instanceof DOMException && err.name === "AbortError") throw err;
503
+ result.failures.push({
504
+ src: item.src,
505
+ sourceLine: item.sourceLine,
506
+ error: err instanceof Error ? err.message : String(err)
507
+ });
508
+ }
509
+ }
510
+ options.onProgress?.(1, { index: clips.length, count: clips.length, src: "" });
511
+ return result;
512
+ }
513
+
448
514
  // src/ViewSwitcher.tsx
449
515
  import { useEffect, useState } from "react";
450
516
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
@@ -829,6 +895,8 @@ export {
829
895
  EditorShell,
830
896
  EmojiPicker,
831
897
  FENCE_WIDGET_CONTAINED_EVENTS,
898
+ FILL_AVAILABLE_CLASS,
899
+ FillAvailableExtension,
832
900
  FolderView,
833
901
  HOST_FENCE_KEY,
834
902
  HeadingWithTemplate,
@@ -921,6 +989,7 @@ export {
921
989
  applyTimelineCommand,
922
990
  applyTreeCommand,
923
991
  asciiDiagramToCanvas,
992
+ bakeMarkdownMedia,
924
993
  blockInsertionPoint,
925
994
  buildFilename,
926
995
  buildNarrationSavePlan,
@@ -953,6 +1022,7 @@ export {
953
1022
  encodeTimingJson,
954
1023
  ensureTeleprompterStyles,
955
1024
  executeNarrationSave,
1025
+ fillHeightFor,
956
1026
  findAsciiDiagramBlockPos,
957
1027
  findCodeSnippetBlockPos,
958
1028
  findDataCardBlockPos,
@@ -1086,6 +1156,7 @@ export {
1086
1156
  supportsUserMedia,
1087
1157
  targetOffsetFor,
1088
1158
  templateLabel,
1159
+ terminalFillHost,
1089
1160
  timingPathFor,
1090
1161
  tiptapToMarkdown,
1091
1162
  toggleAsciiSource,
@@ -1,6 +1,6 @@
1
- export { C as CameraStreamOptions, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderButton, c as RecorderButtonProps, d as RecorderCameraSaveResult, e as RecorderColorScheme, f as RecorderDeviceOption, g as RecorderDeviceQuickPicks, h as RecorderDeviceQuickPicksProps, i as RecorderDeviceSettingsPanel, j as RecorderDeviceSettingsPanelProps, k as RecorderModal, l as RecorderModalProps, n as RecorderPanel, o as RecorderPanelProps, p as RecorderSaveResult, S as ScreenStreamHandle, r as ScreenStreamOptions, T as TimingJson, t as buildTimingJson, u as encodeTimingJson, v as hasRecorderDeviceChoice, w as recordedMediaKind, x as recorderDeviceGroups, y as recorderDeviceOptions, z as requestCameraStream, A as requestMicStream, B as requestScreenStream, D as timingPathFor, E as useMediaDevices, F as useStreamPreview } from '../recorder-rQGYsS6B.js';
1
+ export { C as CameraStreamOptions, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderButton, c as RecorderButtonProps, d as RecorderCameraSaveResult, e as RecorderColorScheme, f as RecorderDeviceOption, g as RecorderDeviceQuickPicks, h as RecorderDeviceQuickPicksProps, i as RecorderDeviceSettingsPanel, j as RecorderDeviceSettingsPanelProps, k as RecorderModal, l as RecorderModalProps, n as RecorderPanel, o as RecorderPanelProps, p as RecorderSaveResult, S as ScreenStreamHandle, r as ScreenStreamOptions, T as TimingJson, t as buildTimingJson, u as encodeTimingJson, v as hasRecorderDeviceChoice, w as recordedMediaKind, x as recorderDeviceGroups, y as recorderDeviceOptions, z as requestCameraStream, A as requestMicStream, B as requestScreenStream, D as timingPathFor, E as useMediaDevices, F as useStreamPreview } from '../recorder-pdsnPhLa.js';
2
2
  export { D as DEFAULT_RECORDER_DEVICE_SETTINGS, a as RecorderAudioDeviceSettings, b as RecorderCameraDeviceSettings, c as RecorderConstraintMode, R as RecorderDeviceSettings, d as RecorderEncodingSettings, e as RecorderScreenAudioSettings, f as RecorderScreenDeviceSettings, g as buildRecorderAudioConstraints, h as buildRecorderCameraConstraints, i as buildRecorderScreenAudioConstraints, j as buildRecorderScreenConstraints, r as recorderBitsPerSecond } from '../deviceSettings-BSkIQncC.js';
3
- export { a as CaptureKind, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, R as RecorderState, m as ResolvedFormat, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, r as buildFilename, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, A as useMediaRecorder } from '../useNarrationStage-DlighI1z.js';
3
+ export { a as CaptureKind, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, R as RecorderState, m as ResolvedFormat, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, r as buildFilename, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, A as useMediaRecorder } from '../useNarrationStage-BsSUp9Zr.js';
4
4
  import 'react';
5
5
  import '@bendyline/squisq/schemas';
6
6
  import '@bendyline/squisq/storage';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RecorderButton
3
- } from "../chunk-5O3RU2HO.js";
3
+ } from "../chunk-KMTQ4M2G.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-APTVXGK6.js";
17
+ } from "../chunk-QI5SHUVT.js";
18
18
  import {
19
19
  DEFAULT_RECORDER_DEVICE_SETTINGS,
20
20
  buildRecorderAudioConstraints,
@@ -27,7 +27,7 @@ import "../chunk-UYB5CPRE.js";
27
27
  import {
28
28
  requestCameraStream,
29
29
  useStreamPreview
30
- } from "../chunk-JCIK2QU5.js";
30
+ } from "../chunk-2KTMXJWB.js";
31
31
  import {
32
32
  buildFilename,
33
33
  requestMicStream,
@@ -35,7 +35,7 @@ import {
35
35
  supportsDisplayMedia,
36
36
  supportsMediaRecorder,
37
37
  supportsUserMedia
38
- } from "../chunk-DNJ6HOES.js";
38
+ } from "../chunk-QXHX7N4V.js";
39
39
  import {
40
40
  buildTimingJson,
41
41
  encodeTimingJson,
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { CSSProperties, RefObject } from 'react';
3
3
  import { Doc, Theme, ViewportConfig, MediaProvider } from '@bendyline/squisq/schemas';
4
4
  import { ContentContainer } from '@bendyline/squisq/storage';
5
- import { l as RecorderSource, o as TeleprompterRecordingDeps } from './useNarrationStage-DlighI1z.js';
5
+ import { l as RecorderSource, o as TeleprompterRecordingDeps } from './useNarrationStage-BsSUp9Zr.js';
6
6
  import { R as RecorderDeviceSettings } from './deviceSettings-BSkIQncC.js';
7
7
  import { S as ScreenCaptureRegion } from './screenRegion-Ci_RsCzG.js';
8
8
 
@@ -19,7 +19,7 @@ import {
19
19
  updateReviewDecorations,
20
20
  useReview,
21
21
  useReviewState
22
- } from "../chunk-MMK26QF7.js";
22
+ } from "../chunk-EPMIOQAZ.js";
23
23
  import "../chunk-DNEVUOBZ.js";
24
24
  import "../chunk-SSEE55FT.js";
25
25
 
@@ -1,4 +1,4 @@
1
- export { h as BlockTagVisibility, k as DocumentLinkCandidate, l as DocumentLinkProvider, m as EditorActions, n as EditorColorScheme, o as EditorContextMenuContext, p as EditorContextMenuItem, q as EditorContextMenuItemVisibility, r as EditorContextMenuProvider, s as EditorContextMenuProviderProps, t as EditorContextValue, E as EditorHostMode, u as EditorInsertMenuItem, v as EditorMode, w as EditorProvider, x as EditorProviderProps, z as EditorShell, G as EditorShellProps, H as EditorState, b as EditorView, L as ImageDisplayMode, O as LayoutMode, Q as MentionCandidate, R as MentionProvider, Y as PreviewPanel, Z as PreviewPanelProps, _ as RawEditor, $ as RawEditorProps, a0 as ThemeInheritance, a1 as ViewPreferences, a3 as WysiwygEditor, a4 as WysiwygEditorProps, am as useEditorContext, an as useEditorContextMenuItems, ao as useEditorInsertMenuItems } from '../shell-CdtncgKy.js';
1
+ export { h as BlockTagVisibility, k as DocumentLinkCandidate, l as DocumentLinkProvider, m as EditorActions, n as EditorColorScheme, o as EditorContextMenuContext, p as EditorContextMenuItem, q as EditorContextMenuItemVisibility, r as EditorContextMenuProvider, s as EditorContextMenuProviderProps, t as EditorContextValue, E as EditorHostMode, u as EditorInsertMenuItem, v as EditorMode, w as EditorProvider, x as EditorProviderProps, z as EditorShell, G as EditorShellProps, H as EditorState, b as EditorView, L as ImageDisplayMode, O as LayoutMode, R as MentionCandidate, T as MentionProvider, Z as PreviewPanel, _ as PreviewPanelProps, $ as RawEditor, a0 as RawEditorProps, a1 as ThemeInheritance, a2 as ViewPreferences, a4 as WysiwygEditor, a5 as WysiwygEditorProps, an as useEditorContext, ao as useEditorContextMenuItems, ap as useEditorInsertMenuItems } from '../shell-CKXPqADV.js';
2
2
  import 'react';
3
3
  import '@bendyline/squisq/table';
4
4
  import '@bendyline/squisq-calc';
@@ -5,23 +5,23 @@ import {
5
5
  RawEditor,
6
6
  WysiwygEditor,
7
7
  useEditorContextMenuItems
8
- } from "../chunk-LZO3HOCQ.js";
8
+ } from "../chunk-CBFPGSYR.js";
9
9
  import {
10
10
  EditorProvider,
11
11
  useEditorContext,
12
12
  useEditorInsertMenuItems
13
- } from "../chunk-MMK26QF7.js";
13
+ } from "../chunk-EPMIOQAZ.js";
14
14
  import "../chunk-DNEVUOBZ.js";
15
15
  import "../chunk-A2H3JOA5.js";
16
16
  import "../chunk-F6URHAW6.js";
17
17
  import "../chunk-SSEE55FT.js";
18
18
  import "../chunk-HLU6ZBS7.js";
19
- import "../chunk-APTVXGK6.js";
19
+ import "../chunk-QI5SHUVT.js";
20
20
  import "../chunk-LRZJD5YD.js";
21
21
  import "../chunk-UYB5CPRE.js";
22
- import "../chunk-GI2D2XS5.js";
23
- import "../chunk-JCIK2QU5.js";
24
- import "../chunk-DNJ6HOES.js";
22
+ import "../chunk-IOG66XFC.js";
23
+ import "../chunk-2KTMXJWB.js";
24
+ import "../chunk-QXHX7N4V.js";
25
25
  import "../chunk-GG35EBRB.js";
26
26
  export {
27
27
  EditorContextMenuProvider,
@@ -722,6 +722,12 @@ type CoverImageSaveOutput = (blob: Blob, filename: string) => boolean | void | P
722
722
  * as {@link CoverImageSaveOutput} (`false` keeps the export dialog open).
723
723
  */
724
724
  type DashboardImageSaveOutput = CoverImageSaveOutput;
725
+ /**
726
+ * Host-owned persistence for an edited copy of a clip ("Save edited copy" in
727
+ * the media-edit dialog) — the same contract as {@link CoverImageSaveOutput}
728
+ * (`false` means the user cancelled). Without one the copy is downloaded.
729
+ */
730
+ type MediaEditSaveOutput = CoverImageSaveOutput;
725
731
  /** Identifies the clip the media-edit panel is open on. */
726
732
  interface MediaEditTarget {
727
733
  /** 1-based source line of the clip's annotation or standalone media tag, when known. */
@@ -871,6 +877,8 @@ interface EditorContextValue extends EditorState, EditorActions {
871
877
  saveCoverImageOutput: CoverImageSaveOutput | undefined;
872
878
  /** Optional host save flow for dashboard image exports. */
873
879
  saveDashboardImageOutput: DashboardImageSaveOutput | undefined;
880
+ /** Optional host save flow for an edited copy of a clip. */
881
+ saveMediaEditOutput: MediaEditSaveOutput | undefined;
874
882
  }
875
883
  type ImageDisplayMode = 'inline' | 'thumbnail';
876
884
  /**
@@ -923,6 +931,12 @@ interface EditorProviderProps {
923
931
  onSaveVersion?: (result: SaveVersionResult) => void;
924
932
  /** MediaProvider for resolving image URLs */
925
933
  mediaProvider?: MediaProvider | null;
934
+ /**
935
+ * Base for relative media paths when there is no `mediaProvider` (the
936
+ * player's `basePath`). Used to measure the videos that hold a block open
937
+ * for their length. Default `/`.
938
+ */
939
+ mediaBasePath?: string;
926
940
  /** Processed-audio render manager for media-edit recipes; null disables. */
927
941
  mediaEditRenders?: MediaEditRenderManager | null;
928
942
  /** Display mode for images in the WYSIWYG view. Defaults to `'inline'`. */
@@ -1000,6 +1014,8 @@ interface EditorProviderProps {
1000
1014
  saveCoverImageOutput?: CoverImageSaveOutput;
1001
1015
  /** Optional host save flow for dashboard image exports. */
1002
1016
  saveDashboardImageOutput?: DashboardImageSaveOutput;
1017
+ /** Optional host save flow for an edited copy of a clip; default is a download. */
1018
+ saveMediaEditOutput?: MediaEditSaveOutput;
1003
1019
  /** Explicit Monaco language ID — wins over the fileName-derived one. */
1004
1020
  language?: string;
1005
1021
  /**
@@ -1090,7 +1106,7 @@ interface ViewPreferences {
1090
1106
  /** Document vs. block-at-a-time layout. */
1091
1107
  layoutMode?: LayoutMode;
1092
1108
  }
1093
- declare function EditorProvider({ initialMarkdown, initialView, articleId, colorScheme: initialColorScheme, workspaceContainer, allowVersioning, versionBasename, versioningPrunePolicy, versioningAutoSaveIdleMs, onSaveVersion, mediaProvider, mediaEditRenders, imageDisplayMode, mentionProvider, proofing, proofingDefaultEnabled, proofingSpellingEnabled, proofingGrammarEnabled, proofingIgnoreStore, speechInput, documentLinkProvider, wikiLinks, fenceRenderers, onCopyCode, linkSchemes, allowRecording, allowNarrate, preserveSourceWrapping, fileName, saveCoverImageOutput, saveDashboardImageOutput, language, findMode: controlledFindMode, onFindModeChange, findRequest, inlinePreview, showStatusBar, outline, blockTags, blockTagVisibility: initialBlockTagVisibility, themeInheritance, layoutMode, viewPreferences, onViewPreferencesChange, children, }: EditorProviderProps): react.JSX.Element;
1109
+ declare function EditorProvider({ initialMarkdown, initialView, articleId, colorScheme: initialColorScheme, workspaceContainer, allowVersioning, versionBasename, versioningPrunePolicy, versioningAutoSaveIdleMs, onSaveVersion, mediaProvider, mediaBasePath, mediaEditRenders, imageDisplayMode, mentionProvider, proofing, proofingDefaultEnabled, proofingSpellingEnabled, proofingGrammarEnabled, proofingIgnoreStore, speechInput, documentLinkProvider, wikiLinks, fenceRenderers, onCopyCode, linkSchemes, allowRecording, allowNarrate, preserveSourceWrapping, fileName, saveCoverImageOutput, saveDashboardImageOutput, saveMediaEditOutput, language, findMode: controlledFindMode, onFindModeChange, findRequest, inlinePreview, showStatusBar, outline, blockTags, blockTagVisibility: initialBlockTagVisibility, themeInheritance, layoutMode, viewPreferences, onViewPreferencesChange, children, }: EditorProviderProps): react.JSX.Element;
1094
1110
 
1095
1111
  /** Which list the navigation sheet shows. */
1096
1112
  type NavigationSheetPanel = 'outline' | 'previews';
@@ -1519,6 +1535,11 @@ interface EditorShellProps {
1519
1535
  * editor uses the browser File System Access picker or download fallback.
1520
1536
  */
1521
1537
  saveDashboardImageOutput?: DashboardImageSaveOutput;
1538
+ /**
1539
+ * Host save flow for "Save edited copy" in the media-edit dialog (a clip
1540
+ * with its edits baked into one file). Without one the copy is downloaded.
1541
+ */
1542
+ saveMediaEditOutput?: MediaEditSaveOutput;
1522
1543
  /**
1523
1544
  * Explicit Monaco language ID override (e.g. `'typescript'`,
1524
1545
  * `'python'`, `'json'`). Wins over the language derived from
@@ -1825,7 +1846,7 @@ interface EditorShellProps {
1825
1846
  * Complete markdown editor shell with toolbar, view switcher, and three
1826
1847
  * editing modes: Raw (Monaco), WYSIWYG (Tiptap), and Preview.
1827
1848
  */
1828
- declare function EditorShell({ ariaLabel, initialMarkdown, initialView, hostMode, defaultViewportPreset, articleId, basePath, onChange, onLinkClick, showCodeCopyButton, onCopyCode, colorScheme, className, height, minHeight, maxHeight, mediaProvider, mediaEditRenders, workspaceContainer, allowVersioning, versionBasename, versioningPrunePolicy, versioningAutoSaveIdleMs, onSaveVersion, showFilesToggle, showFilesWhenNotEmpty, showFormattingControls, showInsertControls, allowBinaryDownloads, toolbarSlotLeft, toolbarSlotAfterActions, toolbarSlotRight, summarizationDesigner, statusBarSlotRight, sidePanelSlot, reviewProviders, showPlayTab, allowPresentationWindow, allowPresentationFullscreen, allowPrint, submitOnEnter, calcEngineFactory, codeContext, fullWidth, uxFont, thinMargins, writeCanvasSettings, showStatusBar, imageDisplayMode, fileName, saveCoverImageOutput, saveDashboardImageOutput, language, findMode, onFindModeChange, findRequest, findShortcut, mentionProvider, proofing, proofingDefaultEnabled, proofingSpellingEnabled, proofingGrammarEnabled, proofingIgnoreStore, speechInput, documentLinkProvider, wikiLinks, fenceRenderers, linkSchemes, allowRecording, allowNarrate, preserveSourceWrapping, placeholder, readOnly, imageSrc, imageAlt, imageMode, imageEditorContainer, onImageExport, inlinePreview, inlinePreviewWidth, outline, outlineWidth, navigationSheet, onNavigationSheetChange, blockTags, blockTagVisibility, themeInheritance, viewPreferences, onViewPreferencesChange, themeOverride, defaultThemeId, defaultThemeLabel, pageTemplates, }: EditorShellProps): react.JSX.Element;
1849
+ declare function EditorShell({ ariaLabel, initialMarkdown, initialView, hostMode, defaultViewportPreset, articleId, basePath, onChange, onLinkClick, showCodeCopyButton, onCopyCode, colorScheme, className, height, minHeight, maxHeight, mediaProvider, mediaEditRenders, workspaceContainer, allowVersioning, versionBasename, versioningPrunePolicy, versioningAutoSaveIdleMs, onSaveVersion, showFilesToggle, showFilesWhenNotEmpty, showFormattingControls, showInsertControls, allowBinaryDownloads, toolbarSlotLeft, toolbarSlotAfterActions, toolbarSlotRight, summarizationDesigner, statusBarSlotRight, sidePanelSlot, reviewProviders, showPlayTab, allowPresentationWindow, allowPresentationFullscreen, allowPrint, submitOnEnter, calcEngineFactory, codeContext, fullWidth, uxFont, thinMargins, writeCanvasSettings, showStatusBar, imageDisplayMode, fileName, saveCoverImageOutput, saveDashboardImageOutput, saveMediaEditOutput, language, findMode, onFindModeChange, findRequest, findShortcut, mentionProvider, proofing, proofingDefaultEnabled, proofingSpellingEnabled, proofingGrammarEnabled, proofingIgnoreStore, speechInput, documentLinkProvider, wikiLinks, fenceRenderers, linkSchemes, allowRecording, allowNarrate, preserveSourceWrapping, placeholder, readOnly, imageSrc, imageAlt, imageMode, imageEditorContainer, onImageExport, inlinePreview, inlinePreviewWidth, outline, outlineWidth, navigationSheet, onNavigationSheetChange, blockTags, blockTagVisibility, themeInheritance, viewPreferences, onViewPreferencesChange, themeOverride, defaultThemeId, defaultThemeLabel, pageTemplates, }: EditorShellProps): react.JSX.Element;
1829
1850
 
1830
1851
  /**
1831
1852
  * MediaClipboard — copy, cut and paste of one image, video or audio clip in
@@ -2023,4 +2044,4 @@ interface EditorInsertMenuItem {
2023
2044
  /** Call from a toolbar slot; callbacks retain access to the editor context. */
2024
2045
  declare function useEditorInsertMenuItems(items: readonly EditorInsertMenuItem[]): void;
2025
2046
 
2026
- export { type RawEditorProps as $, type ApplySourceEditsOptions as A, type BlockInsertionBuilder as B, type CodeContext as C, type DashboardImageSaveOutput as D, type EditorHostMode as E, type FormulaEditRecord as F, type EditorShellProps as G, type EditorState as H, type FindOptions as I, type FindRequest as J, type FormulaSessionOptions as K, type ImageDisplayMode as L, type IngestedSidecar as M, type InsertBlockOptions as N, type LayoutMode as O, type PageTemplateSettings as P, type MentionCandidate as Q, type MentionProvider as R, type SceneTextChannel as S, type NavigationSheetPanel as T, type OutlineBlock as U, type OutlineInsertion as V, type PageTemplateChoice as W, type XlsxSourceMeta as X, PreviewPanel as Y, type PreviewPanelProps as Z, RawEditor as _, type CalcEngineFactory as a, type ThemeInheritance as a0, type ViewPreferences as a1, type WriteCanvasSettings as a2, WysiwygEditor as a3, type WysiwygEditorProps as a4, XLSX_LOCKED_REASON as a5, type XlsxFormulaSession as a6, applySourceEditsToText as a7, blockInsertionPoint as a8, createXlsxFormulaSession as a9, getBlockSlices as aa, headingDepthForInsertion as ab, ingestSidecarBytes as ac, joinBlockAt as ad, lineToOffset as ae, minimalReplaceEdit as af, normalizeSourceEdits as ag, offsetToLine as ah, resolveOutlineInsertion as ai, sliceIndexAtOffset as aj, sourceOutline as ak, spliceBlock as al, useEditorContext as am, useEditorContextMenuItems as an, useEditorInsertMenuItems as ao, type EditorView as b, type CsvSourceMeta as c, type BlockInsertionContext as d, type BlockPlacement as e, type BlockRange as f, type BlockSlice as g, type BlockTagVisibility as h, type CodeContextSection as i, type CoverImageSaveOutput as j, type DocumentLinkCandidate as k, type DocumentLinkProvider as l, type EditorActions as m, type EditorColorScheme as n, type EditorContextMenuContext as o, type EditorContextMenuItem as p, type EditorContextMenuItemVisibility as q, EditorContextMenuProvider as r, type EditorContextMenuProviderProps as s, type EditorContextValue as t, type EditorInsertMenuItem as u, type EditorMode as v, EditorProvider as w, type EditorProviderProps as x, type EditorSelectionInfo as y, EditorShell as z };
2047
+ export { RawEditor as $, type ApplySourceEditsOptions as A, type BlockInsertionBuilder as B, type CodeContext as C, type DashboardImageSaveOutput as D, type EditorHostMode as E, type FormulaEditRecord as F, type EditorShellProps as G, type EditorState as H, type FindOptions as I, type FindRequest as J, type FormulaSessionOptions as K, type ImageDisplayMode as L, type IngestedSidecar as M, type InsertBlockOptions as N, type LayoutMode as O, type PageTemplateSettings as P, type MediaEditSaveOutput as Q, type MentionCandidate as R, type SceneTextChannel as S, type MentionProvider as T, type NavigationSheetPanel as U, type OutlineBlock as V, type OutlineInsertion as W, type XlsxSourceMeta as X, type PageTemplateChoice as Y, PreviewPanel as Z, type PreviewPanelProps as _, type CalcEngineFactory as a, type RawEditorProps as a0, type ThemeInheritance as a1, type ViewPreferences as a2, type WriteCanvasSettings as a3, WysiwygEditor as a4, type WysiwygEditorProps as a5, XLSX_LOCKED_REASON as a6, type XlsxFormulaSession as a7, applySourceEditsToText as a8, blockInsertionPoint as a9, createXlsxFormulaSession as aa, getBlockSlices as ab, headingDepthForInsertion as ac, ingestSidecarBytes as ad, joinBlockAt as ae, lineToOffset as af, minimalReplaceEdit as ag, normalizeSourceEdits as ah, offsetToLine as ai, resolveOutlineInsertion as aj, sliceIndexAtOffset as ak, sourceOutline as al, spliceBlock as am, useEditorContext as an, useEditorContextMenuItems as ao, useEditorInsertMenuItems as ap, type EditorView as b, type CsvSourceMeta as c, type BlockInsertionContext as d, type BlockPlacement as e, type BlockRange as f, type BlockSlice as g, type BlockTagVisibility as h, type CodeContextSection as i, type CoverImageSaveOutput as j, type DocumentLinkCandidate as k, type DocumentLinkProvider as l, type EditorActions as m, type EditorColorScheme as n, type EditorContextMenuContext as o, type EditorContextMenuItem as p, type EditorContextMenuItemVisibility as q, EditorContextMenuProvider as r, type EditorContextMenuProviderProps as s, type EditorContextValue as t, type EditorInsertMenuItem as u, type EditorMode as v, EditorProvider as w, type EditorProviderProps as x, type EditorSelectionInfo as y, EditorShell as z };