@bendyline/squisq-editor-react 2.7.0 → 2.7.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
@@ -9,6 +9,7 @@ export { CanvasRect, ImageEditor, ImageEditorAction, ImageEditorProps, ImageEdit
9
9
  import { CodeBlockCopyHandler, DisplayMode, CaptionStyle, VideoPresentation, PipSize, PipShape, PipPosition } from '@bendyline/squisq-react';
10
10
  import { IconFamily } from '@bendyline/squisq/icons';
11
11
  import { CoverSlideTemplate, CoverSlidePlayback, ConnectorRouting, AsciiDiagram, Tree, AsciiTimeline, AsciiTimelineSide, AsciiTimelineMarker } from '@bendyline/squisq/doc';
12
+ export { BuildPreviewDocOptions, buildPreviewDoc, documentTitleFromFileName } from '@bendyline/squisq/doc';
12
13
  import { MarkdownWrapState } from '@bendyline/squisq/markdown';
13
14
  import * as monaco_editor from 'monaco-editor';
14
15
  import { M as MonacoLanguageRequest, a as MonacoLanguageLoadOptions } from './monacoLanguageDetection-DEyUW-BS.js';
@@ -23,7 +24,7 @@ import { Node } from '@tiptap/pm/model';
23
24
  import { RenderResult } from 'mermaid';
24
25
  import { FenceRendererMap } from '@bendyline/squisq/fence';
25
26
  export { JsonEditor, JsonEditorProps } from './json-editor/index.js';
26
- export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceSettings, j as RecorderDeviceSettingsPanel, k as RecorderDeviceSettingsPanelProps, l as RecorderEncodingSettings, m as RecorderModal, n as RecorderModalProps, o as RecorderNarrationOptions, p as RecorderPanel, q as RecorderPanelProps, r as RecorderSaveResult, s as RecorderScreenAudioSettings, t as RecorderScreenDeviceSettings, S as ScreenStreamHandle, u as ScreenStreamOptions, T as TimingJson, v as buildRecorderAudioConstraints, w as buildRecorderCameraConstraints, x as buildRecorderScreenAudioConstraints, y as buildRecorderScreenConstraints, z as buildTimingJson, A as encodeTimingJson, B as recordedMediaKind, E as recorderBitsPerSecond, F as requestCameraStream, G as requestMicStream, H as requestScreenStream, I as timingPathFor, J as useStreamPreview } from './recorder-xL-5Vfbu.js';
27
+ export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceOption, j as RecorderDeviceQuickPicks, k as RecorderDeviceQuickPicksProps, l as RecorderDeviceSettings, m as RecorderDeviceSettingsPanel, n as RecorderDeviceSettingsPanelProps, o as RecorderEncodingSettings, p as RecorderModal, q as RecorderModalProps, r as RecorderNarrationOptions, s as RecorderPanel, t as RecorderPanelProps, u as RecorderSaveResult, v as RecorderScreenAudioSettings, w as RecorderScreenDeviceSettings, S as ScreenStreamHandle, x as ScreenStreamOptions, T as TimingJson, y as buildRecorderAudioConstraints, z as buildRecorderCameraConstraints, A as buildRecorderScreenAudioConstraints, B as buildRecorderScreenConstraints, E as buildTimingJson, F as encodeTimingJson, G as hasRecorderDeviceChoice, H as recordedMediaKind, I as recorderBitsPerSecond, J as recorderDeviceGroups, K as recorderDeviceOptions, L as requestCameraStream, N as requestMicStream, O as requestScreenStream, P as timingPathFor, Q as useMediaDevices, U as useStreamPreview } from './recorder-DFP0Dw4v.js';
27
28
  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, R as RecorderAudioBitrateMode, i as RecorderCameraLane, j as RecorderExtendedMediaOptions, k as RecorderSource, l as RecorderState, 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-Bk3mdW75.js';
28
29
  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';
29
30
  import '@bendyline/squisq/versions';
@@ -1611,46 +1612,6 @@ declare function markdownToTiptap(markdown: string): string;
1611
1612
  */
1612
1613
  declare function tiptapToMarkdown(html: string): string;
1613
1614
 
1614
- /**
1615
- * buildPreviewDoc — Converts a markdown-derived Doc into a player-ready Doc
1616
- * with TemplateBlock slides and interleaved images.
1617
- *
1618
- * Shared between PreviewPanel (live preview) and export flows (HTML/video).
1619
- *
1620
- * Pipeline:
1621
- * 1. Flatten hierarchical blocks into a linear slide sequence
1622
- * 2. Convert each block into a TemplateBlock-compatible object
1623
- * 3. Interleave images as standalone imageWithCaption slides
1624
- * 4. Synthesize a dummy audio segment for timer-based playback
1625
- */
1626
-
1627
- /**
1628
- * Build a player-ready Doc from a markdown-derived Doc.
1629
- *
1630
- * Flattens hierarchical blocks, converts each to a TemplateBlock-compatible
1631
- * slide, interleaves images, recalculates timing, and adds a synthetic
1632
- * audio segment.
1633
- */
1634
- interface BuildPreviewDocOptions {
1635
- /**
1636
- * Human-facing title to use as the header of the leading heading-less
1637
- * "preamble" block when the document has no frontmatter `title:`. Hosts
1638
- * typically pass the file name (extension stripped) via
1639
- * {@link documentTitleFromFileName}. When neither this nor a frontmatter
1640
- * title is present, the preamble simply renders with no header rather than
1641
- * the placeholder block id.
1642
- */
1643
- documentTitle?: string;
1644
- }
1645
- /**
1646
- * Derive a display title from a file name: strip any directory prefix and the
1647
- * trailing extension (`docs/Longview Plan.md` → `Longview Plan`). Returns an
1648
- * empty string for an absent/blank name so callers can pass the result through
1649
- * without extra guards.
1650
- */
1651
- declare function documentTitleFromFileName(fileName?: string): string;
1652
- declare function buildPreviewDoc(doc: Doc, options?: BuildPreviewDocOptions): Doc;
1653
-
1654
1615
  /**
1655
1616
  * TemplateAnnotation — Tiptap Heading Extension
1656
1617
  *
@@ -2729,6 +2690,9 @@ declare function shouldPasteAsTreeFence(text: string): boolean;
2729
2690
  * text in one undoable transaction; the info-string meta is NOT provided
2730
2691
  * (it does not survive the ProseMirror round-trip — payload lives in the
2731
2692
  * body, see the fence contract docs).
2693
+ *
2694
+ * The React surface lives in `HostFenceWidget.tsx`, mirroring how every
2695
+ * other fence family splits its `.ts` extension from its `.tsx` widget.
2732
2696
  */
2733
2697
 
2734
2698
  type HostFenceBlockEntry = FenceBlockEntry;
@@ -2959,4 +2923,4 @@ declare function applyTimelineCommand(editor: Editor, blockId: string, command:
2959
2923
  /** Paste gate for bare, high-confidence Unicode timeline art. */
2960
2924
  declare function shouldPasteAsTimelineFence(text: string): boolean;
2961
2925
 
2962
- 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, FENCE_WIDGET_CONTAINED_EVENTS, type FenceBlockEntry, type FileCategory, type FileKind, type FolderEntry, FolderView, type FolderViewProps, HOST_FENCE_KEY, type HeadingTransitionAttrs, 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, 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, containFenceWidgetEvents, detectLanguageFromFileName, documentTitleFromFileName, draftPatchFromImportedTheme, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findHostFenceBlockPos, findMermaidDiagramBlockPos, findRepairableBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, formatSeconds, getBlockSlices, getTimelineForNode, indentItemOp, ingestForWrite, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isTimelineSourceSafeForSemanticEdit, lineToOffset, mapFenceEntries, 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, replaceHostFenceText, 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 };
2926
+ 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, EditorHostMode, EmojiPicker, type EmojiPickerProps, FENCE_WIDGET_CONTAINED_EVENTS, type FenceBlockEntry, type FileCategory, type FileKind, type FolderEntry, FolderView, type FolderViewProps, HOST_FENCE_KEY, type HeadingTransitionAttrs, 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, 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, classifyFile, codeSnippetFenceLanguageToken, codeSnippetLanguageLabel, codeSnippetMarkdown, containFenceWidgetEvents, detectLanguageFromFileName, draftPatchFromImportedTheme, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findHostFenceBlockPos, findMermaidDiagramBlockPos, findRepairableBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, formatSeconds, getBlockSlices, getTimelineForNode, indentItemOp, ingestForWrite, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isTimelineSourceSafeForSemanticEdit, lineToOffset, mapFenceEntries, 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, replaceHostFenceText, 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 };
package/dist/index.js CHANGED
@@ -201,7 +201,7 @@ import {
201
201
  usePreviewSettings,
202
202
  useTimelineData,
203
203
  useTreeViewData
204
- } from "./chunk-NJ2VKEQF.js";
204
+ } from "./chunk-BYXVO34Z.js";
205
205
  import "./chunk-V4NBQF5C.js";
206
206
  import {
207
207
  JsonEditor
@@ -219,9 +219,10 @@ import {
219
219
  } from "./chunk-V44VP242.js";
220
220
  import {
221
221
  RecorderButton
222
- } from "./chunk-WH3DL6TG.js";
222
+ } from "./chunk-AZ5ME4XG.js";
223
223
  import {
224
224
  DEFAULT_RECORDER_DEVICE_SETTINGS,
225
+ RecorderDeviceQuickPicks,
225
226
  RecorderDeviceSettingsPanel,
226
227
  RecorderModal,
227
228
  RecorderPanel,
@@ -230,11 +231,15 @@ import {
230
231
  buildRecorderScreenAudioConstraints,
231
232
  buildRecorderScreenConstraints,
232
233
  getCaptureKind,
234
+ hasRecorderDeviceChoice,
233
235
  recordedMediaKind,
234
236
  recorderBitsPerSecond,
237
+ recorderDeviceGroups,
238
+ recorderDeviceOptions,
235
239
  requestScreenStream,
240
+ useMediaDevices,
236
241
  useMediaRecorder
237
- } from "./chunk-JUAQQTJE.js";
242
+ } from "./chunk-V3J5S7X6.js";
238
243
  import "./chunk-GS7QWYFT.js";
239
244
  import {
240
245
  TeleprompterView
@@ -759,6 +764,7 @@ export {
759
764
  REPAIRABLE_KEY,
760
765
  RawEditor,
761
766
  RecorderButton,
767
+ RecorderDeviceQuickPicks,
762
768
  RecorderDeviceSettingsPanel,
763
769
  RecorderModal,
764
770
  RecorderPanel,
@@ -834,6 +840,7 @@ export {
834
840
  getBlockSlices,
835
841
  getCaptureKind,
836
842
  getTimelineForNode,
843
+ hasRecorderDeviceChoice,
837
844
  imageEditorReducer,
838
845
  indentItemOp,
839
846
  ingestForWrite,
@@ -881,6 +888,8 @@ export {
881
888
  readHeadingLineTransition,
882
889
  recordedMediaKind,
883
890
  recorderBitsPerSecond,
891
+ recorderDeviceGroups,
892
+ recorderDeviceOptions,
884
893
  registerPcmWorklet,
885
894
  removeEdgeOp,
886
895
  removeItemOp,
@@ -941,6 +950,7 @@ export {
941
950
  useFileDrop,
942
951
  useFloatingWindow,
943
952
  useImageEditor,
953
+ useMediaDevices,
944
954
  useMediaRecorder,
945
955
  useMermaidDiagramData,
946
956
  useMicAnalysis,
@@ -1,4 +1,4 @@
1
- export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceSettings, j as RecorderDeviceSettingsPanel, k as RecorderDeviceSettingsPanelProps, l as RecorderEncodingSettings, m as RecorderModal, n as RecorderModalProps, p as RecorderPanel, q as RecorderPanelProps, r as RecorderSaveResult, s as RecorderScreenAudioSettings, t as RecorderScreenDeviceSettings, S as ScreenStreamHandle, u as ScreenStreamOptions, T as TimingJson, v as buildRecorderAudioConstraints, w as buildRecorderCameraConstraints, x as buildRecorderScreenAudioConstraints, y as buildRecorderScreenConstraints, z as buildTimingJson, A as encodeTimingJson, B as recordedMediaKind, E as recorderBitsPerSecond, F as requestCameraStream, G as requestMicStream, H as requestScreenStream, I as timingPathFor, J as useStreamPreview } from '../recorder-xL-5Vfbu.js';
1
+ export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceOption, j as RecorderDeviceQuickPicks, k as RecorderDeviceQuickPicksProps, l as RecorderDeviceSettings, m as RecorderDeviceSettingsPanel, n as RecorderDeviceSettingsPanelProps, o as RecorderEncodingSettings, p as RecorderModal, q as RecorderModalProps, s as RecorderPanel, t as RecorderPanelProps, u as RecorderSaveResult, v as RecorderScreenAudioSettings, w as RecorderScreenDeviceSettings, S as ScreenStreamHandle, x as ScreenStreamOptions, T as TimingJson, y as buildRecorderAudioConstraints, z as buildRecorderCameraConstraints, A as buildRecorderScreenAudioConstraints, B as buildRecorderScreenConstraints, E as buildTimingJson, F as encodeTimingJson, G as hasRecorderDeviceChoice, H as recordedMediaKind, I as recorderBitsPerSecond, J as recorderDeviceGroups, K as recorderDeviceOptions, L as requestCameraStream, N as requestMicStream, O as requestScreenStream, P as timingPathFor, Q as useMediaDevices, U as useStreamPreview } from '../recorder-DFP0Dw4v.js';
2
2
  export { a as CaptureKind, R as RecorderAudioBitrateMode, i as RecorderCameraLane, j as RecorderExtendedMediaOptions, k as RecorderSource, l 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-Bk3mdW75.js';
3
3
  import 'react/jsx-runtime';
4
4
  import '@bendyline/squisq/schemas';
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  RecorderButton
3
- } from "../chunk-WH3DL6TG.js";
3
+ } from "../chunk-AZ5ME4XG.js";
4
4
  import {
5
5
  DEFAULT_RECORDER_DEVICE_SETTINGS,
6
+ RecorderDeviceQuickPicks,
6
7
  RecorderDeviceSettingsPanel,
7
8
  RecorderModal,
8
9
  RecorderPanel,
@@ -11,11 +12,15 @@ import {
11
12
  buildRecorderScreenAudioConstraints,
12
13
  buildRecorderScreenConstraints,
13
14
  getCaptureKind,
15
+ hasRecorderDeviceChoice,
14
16
  recordedMediaKind,
15
17
  recorderBitsPerSecond,
18
+ recorderDeviceGroups,
19
+ recorderDeviceOptions,
16
20
  requestScreenStream,
21
+ useMediaDevices,
17
22
  useMediaRecorder
18
- } from "../chunk-JUAQQTJE.js";
23
+ } from "../chunk-V3J5S7X6.js";
19
24
  import "../chunk-GS7QWYFT.js";
20
25
  import {
21
26
  buildFilename,
@@ -33,6 +38,7 @@ import {
33
38
  export {
34
39
  DEFAULT_RECORDER_DEVICE_SETTINGS,
35
40
  RecorderButton,
41
+ RecorderDeviceQuickPicks,
36
42
  RecorderDeviceSettingsPanel,
37
43
  RecorderModal,
38
44
  RecorderPanel,
@@ -44,8 +50,11 @@ export {
44
50
  buildTimingJson,
45
51
  encodeTimingJson,
46
52
  getCaptureKind,
53
+ hasRecorderDeviceChoice,
47
54
  recordedMediaKind,
48
55
  recorderBitsPerSecond,
56
+ recorderDeviceGroups,
57
+ recorderDeviceOptions,
49
58
  requestCameraStream,
50
59
  requestMicStream,
51
60
  requestScreenStream,
@@ -54,6 +63,7 @@ export {
54
63
  supportsMediaRecorder,
55
64
  supportsUserMedia,
56
65
  timingPathFor,
66
+ useMediaDevices,
57
67
  useMediaRecorder,
58
68
  useStreamPreview
59
69
  };
@@ -240,6 +240,105 @@ interface RecorderDeviceSettingsPanelProps {
240
240
  }
241
241
  declare function RecorderDeviceSettingsPanel({ value, onChange, disabled, microphoneEnabled, cameraEnabled, screenEnabled, systemAudioEnabled, separateAudioRecorder, primaryStream, cameraStream, }: RecorderDeviceSettingsPanelProps): react_jsx_runtime.JSX.Element;
242
242
 
243
+ /**
244
+ * Microphone / camera pickers promoted out of "Advanced device settings".
245
+ *
246
+ * Choosing WHICH microphone or camera to record is an everyday decision on a
247
+ * machine that has more than one, and burying it under a disclosure whose
248
+ * other twenty fields are constraint plumbing puts it in the wrong place. Each
249
+ * picker therefore appears inline when — and only when — two conditions hold:
250
+ * its source is enabled, and the browser reports more than one real device of
251
+ * that kind (see `recorderDeviceOptions` for what "real" excludes). A machine
252
+ * with a single webcam gets no camera picker, because there is nothing to pick.
253
+ *
254
+ * These are the SAME selects as the ones in the advanced panel, bound to the
255
+ * same `RecorderDeviceSettings` and rendering the same option list — a
256
+ * shortcut to one setting, never a second source of truth.
257
+ */
258
+ interface RecorderDeviceQuickPicksProps {
259
+ /** Enumerated devices, typically from `useMediaDevices()`. */
260
+ devices: readonly MediaDeviceInfo[];
261
+ microphoneEnabled: boolean;
262
+ cameraEnabled: boolean;
263
+ audioDeviceId: string;
264
+ cameraDeviceId: string;
265
+ onAudioDeviceChange: (deviceId: string) => void;
266
+ onCameraDeviceChange: (deviceId: string) => void;
267
+ disabled?: boolean;
268
+ }
269
+ declare function RecorderDeviceQuickPicks({ devices, microphoneEnabled, cameraEnabled, audioDeviceId, cameraDeviceId, onAudioDeviceChange, onCameraDeviceChange, disabled, }: RecorderDeviceQuickPicksProps): react_jsx_runtime.JSX.Element | null;
270
+
271
+ /**
272
+ * Turning an `enumerateDevices()` result into the option list a recorder
273
+ * device picker should show — and answering "does the user actually have a
274
+ * choice here?", which is what decides whether a picker is worth surfacing
275
+ * outside Advanced settings.
276
+ *
277
+ * Two kinds of entry are dropped:
278
+ *
279
+ * - **Alias ids.** Chromium reports `deviceId: 'default'` and
280
+ * `'communications'` for audio inputs: synthetic entries that POINT AT a
281
+ * real device further down the list. Counting them makes a single-microphone
282
+ * machine look like it has three. A picker's own "System default" choice
283
+ * (the empty deviceId — no constraint at all) already covers that intent.
284
+ * - **Blank ids.** Before the first permission grant, browsers return one
285
+ * label-less, id-less entry per device. There is nothing to select, so those
286
+ * are placeholders, not choices.
287
+ *
288
+ * The currently-selected id is always kept, even when a rule above would drop
289
+ * it, so a setting persisted from an earlier session can never silently vanish
290
+ * from the control that owns it.
291
+ */
292
+ /** One selectable capture device. */
293
+ interface RecorderDeviceOption {
294
+ deviceId: string;
295
+ /** `device.label`, or a positional fallback when labels are withheld. */
296
+ label: string;
297
+ groupId: string;
298
+ }
299
+ /**
300
+ * The real, selectable devices of one kind. Excludes the synthetic
301
+ * "System default" entry a picker renders itself.
302
+ */
303
+ declare function recorderDeviceOptions(devices: readonly MediaDeviceInfo[], kind: MediaDeviceKind, noun: string, selectedDeviceId?: string): RecorderDeviceOption[];
304
+ /**
305
+ * True when more than one real device exists — i.e. picking between them is a
306
+ * decision the user could meaningfully make, rather than a control that can
307
+ * only ever restate the system default.
308
+ */
309
+ declare function hasRecorderDeviceChoice(options: readonly RecorderDeviceOption[]): boolean;
310
+ /** Distinct hardware groups represented by an option list, in first-seen order. */
311
+ declare function recorderDeviceGroups(options: readonly RecorderDeviceOption[]): Array<{
312
+ id: string;
313
+ label: string;
314
+ }>;
315
+
316
+ /**
317
+ * Live `enumerateDevices()` inventory plus the browser's supported-constraint
318
+ * map, shared by every recorder surface that offers a device picker.
319
+ *
320
+ * Enumeration is best effort: browsers withhold labels — and sometimes ids —
321
+ * until the first permission grant, and that grant frequently does NOT fire
322
+ * `devicechange`. Callers holding a preview stream should therefore call
323
+ * `refresh()` when it lands:
324
+ *
325
+ * ```ts
326
+ * const { devices, refresh } = useMediaDevices();
327
+ * useEffect(() => {
328
+ * if (micStream || cameraStream) refresh();
329
+ * }, [micStream, cameraStream, refresh]);
330
+ * ```
331
+ */
332
+ /** What the browser will tell us about capture devices right now. */
333
+ interface MediaDeviceInventory {
334
+ devices: MediaDeviceInfo[];
335
+ /** `getSupportedConstraints()`, or null when the browser withholds it. */
336
+ supported: Record<string, boolean> | null;
337
+ /** Re-enumerate — call after a permission grant reveals labels. */
338
+ refresh: () => void;
339
+ }
340
+ declare function useMediaDevices(): MediaDeviceInventory;
341
+
243
342
  /**
244
343
  * useStreamPreview — binds a `MediaStream` to a `<video>` element's
245
344
  * `srcObject`. Decouples the preview surface from `useMediaRecorder`,
@@ -412,4 +511,4 @@ declare function encodeTimingJson(timing: TimingJson): Uint8Array;
412
511
  */
413
512
  declare function timingPathFor(audioRelativePath: string): string;
414
513
 
415
- export { encodeTimingJson as A, recordedMediaKind as B, type CameraStreamOptions as C, DEFAULT_RECORDER_DEVICE_SETTINGS as D, recorderBitsPerSecond as E, requestCameraStream as F, requestMicStream as G, requestScreenStream as H, timingPathFor as I, useStreamPreview as J, type RecordedBookmark as R, type ScreenStreamHandle as S, type TimingJson as T, type RecordedMediaKind as a, type RecorderAudioDeviceSettings as b, RecorderButton as c, type RecorderButtonProps as d, type RecorderCameraDeviceSettings as e, type RecorderCameraSaveResult as f, type RecorderColorScheme as g, type RecorderConstraintMode as h, type RecorderDeviceSettings as i, RecorderDeviceSettingsPanel as j, type RecorderDeviceSettingsPanelProps as k, type RecorderEncodingSettings as l, RecorderModal as m, type RecorderModalProps as n, type RecorderNarrationOptions as o, RecorderPanel as p, type RecorderPanelProps as q, type RecorderSaveResult as r, type RecorderScreenAudioSettings as s, type RecorderScreenDeviceSettings as t, type ScreenStreamOptions as u, buildRecorderAudioConstraints as v, buildRecorderCameraConstraints as w, buildRecorderScreenAudioConstraints as x, buildRecorderScreenConstraints as y, buildTimingJson as z };
514
+ export { buildRecorderScreenAudioConstraints as A, buildRecorderScreenConstraints as B, type CameraStreamOptions as C, DEFAULT_RECORDER_DEVICE_SETTINGS as D, buildTimingJson as E, encodeTimingJson as F, hasRecorderDeviceChoice as G, recordedMediaKind as H, recorderBitsPerSecond as I, recorderDeviceGroups as J, recorderDeviceOptions as K, requestCameraStream as L, type MediaDeviceInventory as M, requestMicStream as N, requestScreenStream as O, timingPathFor as P, useMediaDevices as Q, type RecordedBookmark as R, type ScreenStreamHandle as S, type TimingJson as T, useStreamPreview as U, type RecordedMediaKind as a, type RecorderAudioDeviceSettings as b, RecorderButton as c, type RecorderButtonProps as d, type RecorderCameraDeviceSettings as e, type RecorderCameraSaveResult as f, type RecorderColorScheme as g, type RecorderConstraintMode as h, type RecorderDeviceOption as i, RecorderDeviceQuickPicks as j, type RecorderDeviceQuickPicksProps as k, type RecorderDeviceSettings as l, RecorderDeviceSettingsPanel as m, type RecorderDeviceSettingsPanelProps as n, type RecorderEncodingSettings as o, RecorderModal as p, type RecorderModalProps as q, type RecorderNarrationOptions as r, RecorderPanel as s, type RecorderPanelProps as t, type RecorderSaveResult as u, type RecorderScreenAudioSettings as v, type RecorderScreenDeviceSettings as w, type ScreenStreamOptions as x, buildRecorderAudioConstraints as y, buildRecorderCameraConstraints as z };
@@ -5,11 +5,11 @@ import {
5
5
  RawEditor,
6
6
  WysiwygEditor,
7
7
  useEditorContext
8
- } from "../chunk-NJ2VKEQF.js";
8
+ } from "../chunk-BYXVO34Z.js";
9
9
  import "../chunk-V4NBQF5C.js";
10
10
  import "../chunk-K2WJYVS4.js";
11
11
  import "../chunk-V44VP242.js";
12
- import "../chunk-JUAQQTJE.js";
12
+ import "../chunk-V3J5S7X6.js";
13
13
  import "../chunk-GS7QWYFT.js";
14
14
  import "../chunk-IQFPX2CE.js";
15
15
  import "../chunk-OWOKKZAU.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq-editor-react",
3
- "version": "2.7.0",
3
+ "version": "2.7.1",
4
4
  "description": "React editor shell with raw/WYSIWYG/preview modes for Squisq documents",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -84,10 +84,10 @@
84
84
  "react-dom": "^18.0.0 || ^19.0.0"
85
85
  },
86
86
  "dependencies": {
87
- "@bendyline/squisq": "2.7.0",
88
- "@bendyline/squisq-formats": "2.4.1",
89
- "@bendyline/squisq-react": "2.7.0",
90
- "@bendyline/squisq-video-react": "2.3.2",
87
+ "@bendyline/squisq": "2.7.1",
88
+ "@bendyline/squisq-formats": "2.4.2",
89
+ "@bendyline/squisq-react": "2.7.1",
90
+ "@bendyline/squisq-video-react": "2.3.3",
91
91
  "@fortawesome/fontawesome-free": "7.2.0",
92
92
  "@tiptap/core": "2.27.2",
93
93
  "@tiptap/extension-heading": "2.27.2",