@bendyline/squisq-editor-react 2.7.0 → 2.7.2
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/{chunk-NJ2VKEQF.js → chunk-7K4LSSNL.js} +424 -648
- package/dist/{chunk-WH3DL6TG.js → chunk-AZ5ME4XG.js} +1 -1
- package/dist/{chunk-JUAQQTJE.js → chunk-V3J5S7X6.js} +284 -128
- package/dist/index.d.ts +32 -42
- package/dist/index.js +21 -3
- package/dist/recorder/index.d.ts +1 -1
- package/dist/recorder/index.js +12 -2
- package/dist/{recorder-xL-5Vfbu.d.ts → recorder-DFP0Dw4v.d.ts} +100 -1
- package/dist/shell/index.js +2 -2
- package/dist/styles/index.css +9 -9
- package/package.json +5 -5
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
|
|
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
|
*
|
|
@@ -2444,6 +2405,32 @@ interface MermaidDiagramData {
|
|
|
2444
2405
|
}
|
|
2445
2406
|
declare function useMermaidDiagramData(editor: Editor, blockId: string): MermaidDiagramData | null;
|
|
2446
2407
|
|
|
2408
|
+
/**
|
|
2409
|
+
* The WYSIWYG canvas only paints itself in the active Squisq theme's colors
|
|
2410
|
+
* when theme styling is set to "Fonts & colors" (View menu →
|
|
2411
|
+
* `data-theme-inheritance="fonts-colors"`). At the default setting the canvas
|
|
2412
|
+
* is the editor's own light/dark chrome instead, so handing Mermaid the
|
|
2413
|
+
* document theme's neutrals drops a light card into a dark editor.
|
|
2414
|
+
*
|
|
2415
|
+
* Swap only the neutral slots — page, surface, text — for the surface the
|
|
2416
|
+
* diagram is actually drawn on. Accents (primary, secondary, highlight,
|
|
2417
|
+
* warning) are left alone so the diagram keeps the theme's identity, which is
|
|
2418
|
+
* also what makes an adapted theme safe to feed straight into
|
|
2419
|
+
* `buildMermaidThemeVariables`.
|
|
2420
|
+
*/
|
|
2421
|
+
type MermaidSurfaceScheme = 'light' | 'dark';
|
|
2422
|
+
/** Same test `buildMermaidThemeVariables` uses to set Mermaid's `darkMode`. */
|
|
2423
|
+
declare function mermaidSurfaceScheme(theme: Theme): MermaidSurfaceScheme;
|
|
2424
|
+
declare function adaptThemeToSurface(theme: Theme, scheme: MermaidSurfaceScheme): Theme;
|
|
2425
|
+
/**
|
|
2426
|
+
* Resolve the theme a Mermaid widget mounted under `host` should render with.
|
|
2427
|
+
* Tiptap mounts each widget in its own React root, so the surrounding editor
|
|
2428
|
+
* chrome is only reachable through the host element's ancestors.
|
|
2429
|
+
*/
|
|
2430
|
+
declare function resolveMermaidSurfaceTheme(host: HTMLElement | null | undefined, theme: Theme): Theme;
|
|
2431
|
+
/** Reactive `resolveMermaidSurfaceTheme` — re-resolves when the shell retints. */
|
|
2432
|
+
declare function useMermaidSurfaceTheme(host: HTMLElement | null | undefined, theme: Theme): Theme;
|
|
2433
|
+
|
|
2447
2434
|
/** Browser-only, lazy Mermaid renderer shared by all complex-diagram widgets. */
|
|
2448
2435
|
|
|
2449
2436
|
interface MermaidRenderResult extends Pick<RenderResult, 'svg' | 'diagramType'> {
|
|
@@ -2729,6 +2716,9 @@ declare function shouldPasteAsTreeFence(text: string): boolean;
|
|
|
2729
2716
|
* text in one undoable transaction; the info-string meta is NOT provided
|
|
2730
2717
|
* (it does not survive the ProseMirror round-trip — payload lives in the
|
|
2731
2718
|
* body, see the fence contract docs).
|
|
2719
|
+
*
|
|
2720
|
+
* The React surface lives in `HostFenceWidget.tsx`, mirroring how every
|
|
2721
|
+
* other fence family splits its `.ts` extension from its `.tsx` widget.
|
|
2732
2722
|
*/
|
|
2733
2723
|
|
|
2734
2724
|
type HostFenceBlockEntry = FenceBlockEntry;
|
|
@@ -2959,4 +2949,4 @@ declare function applyTimelineCommand(editor: Editor, blockId: string, command:
|
|
|
2959
2949
|
/** Paste gate for bare, high-confidence Unicode timeline art. */
|
|
2960
2950
|
declare function shouldPasteAsTimelineFence(text: string): boolean;
|
|
2961
2951
|
|
|
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,
|
|
2952
|
+
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, type MermaidSurfaceScheme, 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, adaptThemeToSurface, 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, mermaidSurfaceScheme, 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, resolveMermaidSurfaceTheme, 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, useMermaidSurfaceTheme, useMonacoLoader, usePreviewSettings, useTimelineData, useTreeViewData };
|
package/dist/index.js
CHANGED
|
@@ -80,6 +80,7 @@ import {
|
|
|
80
80
|
VersionHistoryPanel,
|
|
81
81
|
ViewMenuPanel,
|
|
82
82
|
WysiwygEditor,
|
|
83
|
+
adaptThemeToSurface,
|
|
83
84
|
addEdgeOp,
|
|
84
85
|
addItemOp,
|
|
85
86
|
addNodeOp,
|
|
@@ -128,6 +129,7 @@ import {
|
|
|
128
129
|
mermaidEditCapabilities,
|
|
129
130
|
mermaidEditableTexts,
|
|
130
131
|
mermaidErrorMessage,
|
|
132
|
+
mermaidSurfaceScheme,
|
|
131
133
|
monacoLanguageForFence,
|
|
132
134
|
moveItemDownOp,
|
|
133
135
|
moveItemUpOp,
|
|
@@ -161,6 +163,7 @@ import {
|
|
|
161
163
|
replaceHostFenceText,
|
|
162
164
|
resizeNodeOp,
|
|
163
165
|
resolveFileKind,
|
|
166
|
+
resolveMermaidSurfaceTheme,
|
|
164
167
|
sanitizeAsciiLabel,
|
|
165
168
|
sanitizeTimelineText,
|
|
166
169
|
sanitizeTreeLabel,
|
|
@@ -197,11 +200,12 @@ import {
|
|
|
197
200
|
useEscapeDismissal,
|
|
198
201
|
useFileDrop,
|
|
199
202
|
useMermaidDiagramData,
|
|
203
|
+
useMermaidSurfaceTheme,
|
|
200
204
|
useMonacoLoader,
|
|
201
205
|
usePreviewSettings,
|
|
202
206
|
useTimelineData,
|
|
203
207
|
useTreeViewData
|
|
204
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-7K4LSSNL.js";
|
|
205
209
|
import "./chunk-V4NBQF5C.js";
|
|
206
210
|
import {
|
|
207
211
|
JsonEditor
|
|
@@ -219,9 +223,10 @@ import {
|
|
|
219
223
|
} from "./chunk-V44VP242.js";
|
|
220
224
|
import {
|
|
221
225
|
RecorderButton
|
|
222
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-AZ5ME4XG.js";
|
|
223
227
|
import {
|
|
224
228
|
DEFAULT_RECORDER_DEVICE_SETTINGS,
|
|
229
|
+
RecorderDeviceQuickPicks,
|
|
225
230
|
RecorderDeviceSettingsPanel,
|
|
226
231
|
RecorderModal,
|
|
227
232
|
RecorderPanel,
|
|
@@ -230,11 +235,15 @@ import {
|
|
|
230
235
|
buildRecorderScreenAudioConstraints,
|
|
231
236
|
buildRecorderScreenConstraints,
|
|
232
237
|
getCaptureKind,
|
|
238
|
+
hasRecorderDeviceChoice,
|
|
233
239
|
recordedMediaKind,
|
|
234
240
|
recorderBitsPerSecond,
|
|
241
|
+
recorderDeviceGroups,
|
|
242
|
+
recorderDeviceOptions,
|
|
235
243
|
requestScreenStream,
|
|
244
|
+
useMediaDevices,
|
|
236
245
|
useMediaRecorder
|
|
237
|
-
} from "./chunk-
|
|
246
|
+
} from "./chunk-V3J5S7X6.js";
|
|
238
247
|
import "./chunk-GS7QWYFT.js";
|
|
239
248
|
import {
|
|
240
249
|
TeleprompterView
|
|
@@ -759,6 +768,7 @@ export {
|
|
|
759
768
|
REPAIRABLE_KEY,
|
|
760
769
|
RawEditor,
|
|
761
770
|
RecorderButton,
|
|
771
|
+
RecorderDeviceQuickPicks,
|
|
762
772
|
RecorderDeviceSettingsPanel,
|
|
763
773
|
RecorderModal,
|
|
764
774
|
RecorderPanel,
|
|
@@ -790,6 +800,7 @@ export {
|
|
|
790
800
|
ViewMenuPanel,
|
|
791
801
|
ViewSwitcher,
|
|
792
802
|
WysiwygEditor,
|
|
803
|
+
adaptThemeToSurface,
|
|
793
804
|
addEdgeOp,
|
|
794
805
|
addItemOp,
|
|
795
806
|
addNodeOp,
|
|
@@ -834,6 +845,7 @@ export {
|
|
|
834
845
|
getBlockSlices,
|
|
835
846
|
getCaptureKind,
|
|
836
847
|
getTimelineForNode,
|
|
848
|
+
hasRecorderDeviceChoice,
|
|
837
849
|
imageEditorReducer,
|
|
838
850
|
indentItemOp,
|
|
839
851
|
ingestForWrite,
|
|
@@ -857,6 +869,7 @@ export {
|
|
|
857
869
|
mermaidEditCapabilities,
|
|
858
870
|
mermaidEditableTexts,
|
|
859
871
|
mermaidErrorMessage,
|
|
872
|
+
mermaidSurfaceScheme,
|
|
860
873
|
monacoLanguageForFence,
|
|
861
874
|
moveItemDownOp,
|
|
862
875
|
moveItemUpOp,
|
|
@@ -881,6 +894,8 @@ export {
|
|
|
881
894
|
readHeadingLineTransition,
|
|
882
895
|
recordedMediaKind,
|
|
883
896
|
recorderBitsPerSecond,
|
|
897
|
+
recorderDeviceGroups,
|
|
898
|
+
recorderDeviceOptions,
|
|
884
899
|
registerPcmWorklet,
|
|
885
900
|
removeEdgeOp,
|
|
886
901
|
removeItemOp,
|
|
@@ -899,6 +914,7 @@ export {
|
|
|
899
914
|
resizeNodeOp,
|
|
900
915
|
resolveFileKind,
|
|
901
916
|
resolveFormat,
|
|
917
|
+
resolveMermaidSurfaceTheme,
|
|
902
918
|
sanitizeAsciiLabel,
|
|
903
919
|
sanitizeTimelineText,
|
|
904
920
|
sanitizeTreeLabel,
|
|
@@ -941,8 +957,10 @@ export {
|
|
|
941
957
|
useFileDrop,
|
|
942
958
|
useFloatingWindow,
|
|
943
959
|
useImageEditor,
|
|
960
|
+
useMediaDevices,
|
|
944
961
|
useMediaRecorder,
|
|
945
962
|
useMermaidDiagramData,
|
|
963
|
+
useMermaidSurfaceTheme,
|
|
946
964
|
useMicAnalysis,
|
|
947
965
|
useMonacoLoader,
|
|
948
966
|
useNarrationRecorder,
|
package/dist/recorder/index.d.ts
CHANGED
|
@@ -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
|
|
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';
|
package/dist/recorder/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RecorderButton
|
|
3
|
-
} from "../chunk-
|
|
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-
|
|
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 {
|
|
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 };
|
package/dist/shell/index.js
CHANGED
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
RawEditor,
|
|
6
6
|
WysiwygEditor,
|
|
7
7
|
useEditorContext
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-7K4LSSNL.js";
|
|
9
9
|
import "../chunk-V4NBQF5C.js";
|
|
10
10
|
import "../chunk-K2WJYVS4.js";
|
|
11
11
|
import "../chunk-V44VP242.js";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-V3J5S7X6.js";
|
|
13
13
|
import "../chunk-GS7QWYFT.js";
|
|
14
14
|
import "../chunk-IQFPX2CE.js";
|
|
15
15
|
import "../chunk-OWOKKZAU.js";
|
package/dist/styles/index.css
CHANGED
|
@@ -15848,26 +15848,26 @@
|
|
|
15848
15848
|
.squisq-mermaid-svg .squisq-mermaid-edge-selected {
|
|
15849
15849
|
filter: drop-shadow(0 0 3px #4f46e5);
|
|
15850
15850
|
}
|
|
15851
|
-
.squisq-
|
|
15851
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg {
|
|
15852
15852
|
--squisq-mermaid-edge: #cbd5e1;
|
|
15853
15853
|
--squisq-mermaid-edge-label-bg: rgba(15, 23, 42, 0.88);
|
|
15854
15854
|
}
|
|
15855
|
-
.squisq-
|
|
15855
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg :is(path.flowchart-link, .edgePath .path, .relationshipLine, .messageLine0, .messageLine1, .transition):not([style*="stroke:"]) {
|
|
15856
15856
|
stroke: var(--squisq-mermaid-edge) !important;
|
|
15857
15857
|
}
|
|
15858
|
-
.squisq-
|
|
15859
|
-
.squisq-
|
|
15858
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg :is(.marker, .arrowheadPath),
|
|
15859
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg marker :is(path, polygon) {
|
|
15860
15860
|
stroke: var(--squisq-mermaid-edge) !important;
|
|
15861
15861
|
}
|
|
15862
|
-
.squisq-
|
|
15862
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg marker :is(path, polygon):not([fill=none]):not([style*="fill:none"]):not([style*="fill: none"]) {
|
|
15863
15863
|
fill: var(--squisq-mermaid-edge) !important;
|
|
15864
15864
|
}
|
|
15865
|
-
.squisq-
|
|
15866
|
-
.squisq-
|
|
15865
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg .edgeLabel,
|
|
15866
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg .edgeLabel :is(span, p) {
|
|
15867
15867
|
color: var(--squisq-mermaid-edge) !important;
|
|
15868
15868
|
}
|
|
15869
|
-
.squisq-
|
|
15870
|
-
.squisq-
|
|
15869
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg .edgeLabel p,
|
|
15870
|
+
.squisq-mermaid-canvas[data-surface=dark] .squisq-mermaid-svg .edgeLabel rect {
|
|
15871
15871
|
background: var(--squisq-mermaid-edge-label-bg) !important;
|
|
15872
15872
|
fill: var(--squisq-mermaid-edge-label-bg) !important;
|
|
15873
15873
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bendyline/squisq-editor-react",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.2",
|
|
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.
|
|
88
|
-
"@bendyline/squisq-formats": "2.4.
|
|
89
|
-
"@bendyline/squisq-react": "2.7.
|
|
90
|
-
"@bendyline/squisq-video-react": "2.3.
|
|
87
|
+
"@bendyline/squisq": "2.7.1",
|
|
88
|
+
"@bendyline/squisq-formats": "2.4.3",
|
|
89
|
+
"@bendyline/squisq-react": "2.7.1",
|
|
90
|
+
"@bendyline/squisq-video-react": "2.3.4",
|
|
91
91
|
"@fortawesome/fontawesome-free": "7.2.0",
|
|
92
92
|
"@tiptap/core": "2.27.2",
|
|
93
93
|
"@tiptap/extension-heading": "2.27.2",
|