@bendyline/squisq-editor-react 2.8.0 → 2.10.0
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/NOTICE.md +1 -0
- package/README.md +5 -0
- package/dist/{chunk-OWOKKZAU.js → chunk-IRPOMTYK.js} +4 -0
- package/dist/{chunk-V3J5S7X6.js → chunk-JNJ7XO5L.js} +617 -99
- package/dist/{chunk-YPRX32GY.js → chunk-JYPLPGYJ.js} +1 -1
- package/dist/chunk-SAKLIEOX.js +144 -0
- package/dist/{chunk-K2WJYVS4.js → chunk-TCLNRATG.js} +48 -13
- package/dist/{chunk-SUXRSZ4Y.js → chunk-TQPZ6VVM.js} +4749 -2783
- package/dist/{chunk-AZ5ME4XG.js → chunk-WCGDDZB6.js} +3 -1
- package/dist/{chunk-IQFPX2CE.js → chunk-ZZTB6BEQ.js} +1 -1
- package/dist/index.d.ts +150 -7
- package/dist/index.js +39 -9
- package/dist/json-editor/index.js +2 -2
- package/dist/proofing/index.d.ts +32 -0
- package/dist/proofing/index.js +10 -0
- package/dist/recorder/index.d.ts +2 -2
- package/dist/recorder/index.js +3 -3
- package/dist/{recorder-DFP0Dw4v.d.ts → recorder-GrEh4xE8.d.ts} +67 -7
- package/dist/shell/index.d.ts +3 -1
- package/dist/shell/index.js +5 -5
- package/dist/{shell-Bv6neeA6.d.ts → shell-Dlh-mkn9.d.ts} +59 -2
- package/dist/styles/index.css +477 -14
- package/dist/teleprompter/index.d.ts +2 -2
- package/dist/teleprompter/index.js +2 -2
- package/dist/types-B_aHRuSc.d.ts +156 -0
- package/dist/{useNarrationStage-Bk3mdW75.d.ts → useNarrationStage-B6r9Zlq-.d.ts} +11 -1
- package/package.json +16 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RecorderModal
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JNJ7XO5L.js";
|
|
4
4
|
|
|
5
5
|
// src/recorder/RecorderButton.tsx
|
|
6
6
|
import { useCallback, useState } from "react";
|
|
@@ -13,6 +13,7 @@ function RecorderButton({
|
|
|
13
13
|
colorScheme = "light",
|
|
14
14
|
onSave,
|
|
15
15
|
narration = null,
|
|
16
|
+
slides = null,
|
|
16
17
|
label = "Record",
|
|
17
18
|
style,
|
|
18
19
|
disabled
|
|
@@ -37,6 +38,7 @@ function RecorderButton({
|
|
|
37
38
|
initialMode,
|
|
38
39
|
colorScheme,
|
|
39
40
|
narration,
|
|
41
|
+
slides,
|
|
40
42
|
onClose: handleClose,
|
|
41
43
|
onSave: handleSave
|
|
42
44
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as CodeContext, E as EditorHostMode, S as SceneTextChannel } from './shell-
|
|
2
|
-
export { B as BlockTagVisibility, a as CodeContextSection, b as CoverImageSaveOutput, D as DashboardImageSaveOutput, c as DocumentLinkCandidate, d as DocumentLinkProvider, e as EditorActions, f as EditorColorScheme, g as EditorContextValue, h as EditorMode, i as EditorProvider, j as EditorProviderProps, k as EditorShell, l as EditorShellProps, m as EditorState, n as EditorView, I as ImageDisplayMode, L as LayoutMode, M as MentionCandidate, o as MentionProvider, P as PreviewPanel, p as PreviewPanelProps, R as RawEditor, q as RawEditorProps, T as ThemeInheritance, V as ViewPreferences, W as WriteCanvasSettings, r as WysiwygEditor, s as WysiwygEditorProps, u as useEditorContext } from './shell-
|
|
1
|
+
import { C as CodeContext, E as EditorHostMode, S as SceneTextChannel } from './shell-Dlh-mkn9.js';
|
|
2
|
+
export { B as BlockTagVisibility, a as CodeContextSection, b as CoverImageSaveOutput, D as DashboardImageSaveOutput, c as DocumentLinkCandidate, d as DocumentLinkProvider, e as EditorActions, f as EditorColorScheme, g as EditorContextValue, h as EditorMode, i as EditorProvider, j as EditorProviderProps, k as EditorShell, l as EditorShellProps, m as EditorState, n as EditorView, I as ImageDisplayMode, L as LayoutMode, M as MentionCandidate, o as MentionProvider, P as PreviewPanel, p as PreviewPanelProps, R as RawEditor, q as RawEditorProps, T as ThemeInheritance, V as ViewPreferences, W as WriteCanvasSettings, r as WysiwygEditor, s as WysiwygEditorProps, u as useEditorContext } from './shell-Dlh-mkn9.js';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as react from 'react';
|
|
5
5
|
import { ReactNode, CSSProperties } from 'react';
|
|
@@ -15,7 +15,7 @@ import * as monaco_editor from 'monaco-editor';
|
|
|
15
15
|
import { M as MonacoLanguageRequest, a as MonacoLanguageLoadOptions } from './monacoLanguageDetection-DEyUW-BS.js';
|
|
16
16
|
export { MonacoWorkerConstructor, MonacoWorkerConstructors, configureMonacoWorkers } from './monaco-workers/index.js';
|
|
17
17
|
import * as _tiptap_core from '@tiptap/core';
|
|
18
|
-
import { Extension } from '@tiptap/core';
|
|
18
|
+
import { Mark, Extension } from '@tiptap/core';
|
|
19
19
|
import * as _tiptap_extension_heading from '@tiptap/extension-heading';
|
|
20
20
|
import { DecorationSet } from '@tiptap/pm/view';
|
|
21
21
|
import { Editor } from '@tiptap/react';
|
|
@@ -24,9 +24,13 @@ import { Node } from '@tiptap/pm/model';
|
|
|
24
24
|
import { RenderResult } from 'mermaid';
|
|
25
25
|
import { FenceRendererMap } from '@bendyline/squisq/fence';
|
|
26
26
|
export { JsonEditor, JsonEditorProps } from './json-editor/index.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,
|
|
28
|
-
|
|
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, x as RecorderSlidesOptions, S as ScreenStreamHandle, y as ScreenStreamOptions, z as SlideTimingSaveResult, T as TimingJson, A as buildRecorderAudioConstraints, B as buildRecorderCameraConstraints, E as buildRecorderScreenAudioConstraints, F as buildRecorderScreenConstraints, G as buildTimingJson, H as encodeTimingJson, I as hasRecorderDeviceChoice, J as recordedMediaKind, K as recorderBitsPerSecond, L as recorderDeviceGroups, N as recorderDeviceOptions, O as requestCameraStream, P as requestMicStream, Q as requestScreenStream, U as timingPathFor, V as useMediaDevices, W as useStreamPreview } from './recorder-GrEh4xE8.js';
|
|
28
|
+
import { R as RecorderState } from './useNarrationStage-B6r9Zlq-.js';
|
|
29
|
+
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-B6r9Zlq-.js';
|
|
29
30
|
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';
|
|
31
|
+
export { H as HarperProofingConfig, P as ProofingCapability, a as ProofingDocumentRef, b as ProofingIgnoreStore, c as ProofingLanguage, d as ProofingLintOptions, e as ProofingProvider, f as ProofingProviderFactory } from './types-B_aHRuSc.js';
|
|
32
|
+
export { createHarperProofingProvider } from './proofing/index.js';
|
|
33
|
+
export { PROOF_DIALECTS, PROOF_FRONTMATTER_KEYS, ProofCategory, ProofDialect, ProofFinding, ProofRange, ProofSuggestion, ProofSuggestionKind } from '@bendyline/squisq/proof';
|
|
30
34
|
import '@bendyline/squisq/versions';
|
|
31
35
|
import '@bendyline/squisq/imageEdit';
|
|
32
36
|
import '@bendyline/squisq/jsonForm';
|
|
@@ -572,7 +576,7 @@ declare function EmojiPicker({ open, onSelect, onClose, anchorRef, className, st
|
|
|
572
576
|
* DocumentSettingsDialog
|
|
573
577
|
*
|
|
574
578
|
* Modal editor for the frontmatter values that Squisq currently
|
|
575
|
-
* understands: document title plus the persisted preview keys
|
|
579
|
+
* understands: document title and cover subtitle plus the persisted preview keys
|
|
576
580
|
* (`squisq-theme`, `squisq-transform`, `squisq-captions`). Writes back
|
|
577
581
|
* to the same `setFrontmatterValues` channel that `PreviewControls`
|
|
578
582
|
* uses, so any change made here is reflected in the play-mode controls
|
|
@@ -1647,6 +1651,36 @@ declare function tiptapToMarkdown(html: string): string;
|
|
|
1647
1651
|
*/
|
|
1648
1652
|
declare const HeadingWithTemplate: _tiptap_core.Node<_tiptap_extension_heading.HeadingOptions, any>;
|
|
1649
1653
|
|
|
1654
|
+
/**
|
|
1655
|
+
* Superscript / Subscript — Tiptap Mark Extensions
|
|
1656
|
+
*
|
|
1657
|
+
* Vertical alignment is the one piece of inline formatting that arrives from
|
|
1658
|
+
* real-world documents far more often than it is typed: a spreadsheet's
|
|
1659
|
+
* footnote markers, a Word document's `w:vertAlign` runs, an imported HTML
|
|
1660
|
+
* table. Without these marks ProseMirror has no schema slot for `<sup>`, so the
|
|
1661
|
+
* Write view drops the tags on the first edit and the imported markup is lost.
|
|
1662
|
+
*
|
|
1663
|
+
* Defined locally rather than pulled from `@tiptap/extension-superscript` and
|
|
1664
|
+
* `-subscript`: two marks of a dozen lines each do not justify two more pinned
|
|
1665
|
+
* dependencies on the editor's peer surface.
|
|
1666
|
+
*
|
|
1667
|
+
* The markdown bridge renders `<sup>x</sup>` straight through (see
|
|
1668
|
+
* `tiptapBridge.ts`), and core's parser folds that tag pair back into a real
|
|
1669
|
+
* `superscript` / `subscript` inline node — so the source form stays plain
|
|
1670
|
+
* inline HTML at every hop.
|
|
1671
|
+
*/
|
|
1672
|
+
|
|
1673
|
+
declare module '@tiptap/core' {
|
|
1674
|
+
interface Commands<ReturnType> {
|
|
1675
|
+
verticalAlign: {
|
|
1676
|
+
toggleSuperscript: () => ReturnType;
|
|
1677
|
+
toggleSubscript: () => ReturnType;
|
|
1678
|
+
};
|
|
1679
|
+
}
|
|
1680
|
+
}
|
|
1681
|
+
declare const Superscript: Mark<any, any>;
|
|
1682
|
+
declare const Subscript: Mark<any, any>;
|
|
1683
|
+
|
|
1650
1684
|
type DiagramCommand = {
|
|
1651
1685
|
kind: 'moveNode';
|
|
1652
1686
|
nodeId: string;
|
|
@@ -2963,4 +2997,113 @@ declare function applyTimelineCommand(editor: Editor, blockId: string, command:
|
|
|
2963
2997
|
/** Paste gate for bare, high-confidence Unicode timeline art. */
|
|
2964
2998
|
declare function shouldPasteAsTimelineFence(text: string): boolean;
|
|
2965
2999
|
|
|
2966
|
-
|
|
3000
|
+
/**
|
|
3001
|
+
* The deck the recorder's slides panel presents — the doc's blocks, each
|
|
3002
|
+
* resolved into a renderable card plus the prose the presenter may want to
|
|
3003
|
+
* read from.
|
|
3004
|
+
*
|
|
3005
|
+
* ## Why the deck is anchored on blocks, not on preview slides
|
|
3006
|
+
*
|
|
3007
|
+
* Slide timings are recorded per DOC BLOCK, so the panel's list and the
|
|
3008
|
+
* sidecar's list must be the same list. `buildPreviewDoc` is 1:1 with
|
|
3009
|
+
* `flattenRenderableBlocks` — every slide carries its source block's `id` —
|
|
3010
|
+
* with exactly one exception: image interleaving splices extra
|
|
3011
|
+
* `img-interleave-N` slides that belong to no block. Passing
|
|
3012
|
+
* `interleaveImages: false` removes that one divergence, and walking the block
|
|
3013
|
+
* list (looking cards up by id) makes the correspondence structural rather
|
|
3014
|
+
* than incidental.
|
|
3015
|
+
*
|
|
3016
|
+
* The projection runs ONCE for the whole deck rather than per block, so each
|
|
3017
|
+
* card is materialized with its real `blockIndex`/`totalBlocks` — accent
|
|
3018
|
+
* rotation and first-slide art direction then match what playback shows,
|
|
3019
|
+
* which per-block `resolveBlockVisual` cannot do (it renders every block as
|
|
3020
|
+
* slide 1 of 1).
|
|
3021
|
+
*/
|
|
3022
|
+
|
|
3023
|
+
/** One slide in the recorder's deck, keyed by the doc block it came from. */
|
|
3024
|
+
interface RecorderSlide {
|
|
3025
|
+
/** Doc block id — the key the advance log and the timing sidecar both use. */
|
|
3026
|
+
blockId: string;
|
|
3027
|
+
/** Heading text, or a positional fallback for a heading-less block. */
|
|
3028
|
+
heading: string;
|
|
3029
|
+
/** The block's body prose, shown beneath the card as presenter notes. */
|
|
3030
|
+
bodyText: string;
|
|
3031
|
+
/** Materialized card, or null when this block has no slide rendition. */
|
|
3032
|
+
visual: Block | null;
|
|
3033
|
+
}
|
|
3034
|
+
/**
|
|
3035
|
+
* Build the deck for a doc. Never throws: a block whose card cannot be
|
|
3036
|
+
* materialized still appears, with `visual: null`, so the deck's indices
|
|
3037
|
+
* always line up with `flattenRenderableBlocks`.
|
|
3038
|
+
*/
|
|
3039
|
+
declare function buildRecorderSlideDeck(doc: Doc, theme: Theme, viewport: ViewportConfig): RecorderSlide[];
|
|
3040
|
+
|
|
3041
|
+
interface RecorderSlidesPanelProps {
|
|
3042
|
+
slides: RecorderSlide[];
|
|
3043
|
+
/** Active slide index — controlled by the host. */
|
|
3044
|
+
index: number;
|
|
3045
|
+
onIndexChange: (next: number) => void;
|
|
3046
|
+
viewport: ViewportConfig;
|
|
3047
|
+
basePath?: string;
|
|
3048
|
+
mediaProvider?: MediaProvider | null;
|
|
3049
|
+
/** True while a take is rolling — switches the hint to the recording copy. */
|
|
3050
|
+
recording?: boolean;
|
|
3051
|
+
/** Block ids already first-shown this take; drives the progress dots. */
|
|
3052
|
+
shownBlockIds?: ReadonlySet<string>;
|
|
3053
|
+
}
|
|
3054
|
+
declare function RecorderSlidesPanel({ slides, index, onIndexChange, viewport, basePath, mediaProvider, recording, shownBlockIds, }: RecorderSlidesPanelProps): react_jsx_runtime.JSX.Element;
|
|
3055
|
+
|
|
3056
|
+
/**
|
|
3057
|
+
* Pure decision helpers for the Record media dialog's slides mode — the peer
|
|
3058
|
+
* of `narrationModePolicy.ts`, kept DOM/MediaRecorder-free so every branch is
|
|
3059
|
+
* unit-testable.
|
|
3060
|
+
*
|
|
3061
|
+
* Slides mode and narration mode both expand the dialog and both claim its
|
|
3062
|
+
* right column, so they are mutually exclusive. That exclusion is STRUCTURAL:
|
|
3063
|
+
* the dialog holds one {@link RecorderPanelMode} rather than two booleans, so
|
|
3064
|
+
* checking one box cannot leave the other checked. There is deliberately no
|
|
3065
|
+
* "are these compatible?" predicate to keep in sync.
|
|
3066
|
+
*/
|
|
3067
|
+
|
|
3068
|
+
/** Which optional panel occupies the dialog's right column. */
|
|
3069
|
+
type RecorderPanelMode = 'none' | 'narration' | 'slides';
|
|
3070
|
+
/** Whether the dialog should render in its full-viewport two-column form. */
|
|
3071
|
+
declare function isExpandedPanel(mode: RecorderPanelMode): boolean;
|
|
3072
|
+
/**
|
|
3073
|
+
* The mode after toggling one of the two checkboxes. Checking a box selects
|
|
3074
|
+
* it (deselecting the other by construction); unchecking returns to 'none'.
|
|
3075
|
+
*
|
|
3076
|
+
* Unchecking a box that is not the active mode is a no-op rather than a
|
|
3077
|
+
* collapse — a stale change event from the box that was just superseded must
|
|
3078
|
+
* not close the panel the user actually opened.
|
|
3079
|
+
*/
|
|
3080
|
+
declare function panelModeAfterToggle(current: RecorderPanelMode, target: 'narration' | 'slides', checked: boolean): RecorderPanelMode;
|
|
3081
|
+
/** Clamp a slide index into `[0, count - 1]`, or 0 for an empty deck. */
|
|
3082
|
+
declare function clampSlideIndex(index: number, count: number): number;
|
|
3083
|
+
/** Slide step a key implies: +1 forward, -1 back, 0 for keys we do not own. */
|
|
3084
|
+
declare function slideStepForKey(key: string): -1 | 0 | 1;
|
|
3085
|
+
/**
|
|
3086
|
+
* Whether the review-state "Update block timings…" checkbox is shown.
|
|
3087
|
+
*
|
|
3088
|
+
* Only once there is a finished take to save, only while slides mode is the
|
|
3089
|
+
* active panel, and only when the host declared it can attach a sidecar
|
|
3090
|
+
* (`captureTimings` — true for the Document narration entry, whose take
|
|
3091
|
+
* becomes a document-anchored clip, and false for an ordinary block-level
|
|
3092
|
+
* recording, where nothing would ever read the sidecar back).
|
|
3093
|
+
*/
|
|
3094
|
+
declare function showSlideTimingCheckbox(options: {
|
|
3095
|
+
slidesOn: boolean;
|
|
3096
|
+
captureTimings: boolean;
|
|
3097
|
+
recorderState: RecorderState;
|
|
3098
|
+
hasBlob: boolean;
|
|
3099
|
+
}): boolean;
|
|
3100
|
+
/**
|
|
3101
|
+
* Review-panel warning about slides the presenter never reached. They save as
|
|
3102
|
+
* zero-length ranges, which playback skips — worth saying out loud, because
|
|
3103
|
+
* the alternative reading ("they kept their old duration") is the intuitive one.
|
|
3104
|
+
*/
|
|
3105
|
+
declare function unshownSlidesWarning(total: number, unshown: number): string | null;
|
|
3106
|
+
/** The exact label of the review-state block-timings checkbox. */
|
|
3107
|
+
declare const SLIDE_TIMING_CHECKBOX_LABEL = "Update block timings when I save this narration";
|
|
3108
|
+
|
|
3109
|
+
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 RecorderPanelMode, type RecorderSlide, RecorderSlidesPanel, type RecorderSlidesPanelProps, RecorderState, type RepairableBlockEntry, RepairableDiagramExtension, type RepairableDiagramExtensionOptions, type RepairablePluginState, SLIDE_TIMING_CHECKBOX_LABEL, StatusBar, type StatusBarProps, Subscript, Superscript, 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, buildRecorderSlideDeck, clampSlideIndex, classifyFile, codeSnippetFenceLanguageToken, codeSnippetLanguageLabel, codeSnippetMarkdown, containFenceWidgetEvents, detectLanguageFromFileName, draftPatchFromImportedTheme, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findHostFenceBlockPos, findMermaidDiagramBlockPos, findRepairableBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, formatSeconds, getBlockSlices, getTimelineForNode, indentItemOp, ingestForWrite, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isExpandedPanel, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isTimelineSourceSafeForSemanticEdit, lineToOffset, mapFenceEntries, markdownToTiptap, mermaidDiagramMarkdown, mermaidDiagramProperties, mermaidEditCapabilities, mermaidEditableTexts, mermaidErrorMessage, mermaidSurfaceScheme, monacoLanguageForFence, moveItemDownOp, moveItemUpOp, moveNodeOp, nextTimelineEventId, normalizeMermaidFlowchartShape, offsetToLine, outdentItemOp, panelModeAfterToggle, 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, showSlideTimingCheckbox, sliceIndexAtOffset, slideStepForKey, spliceBlock, summarizeBlockProps, templateLabel, tiptapToMarkdown, toggleAsciiSource, toggleDirOp, toggleMermaidSource, transitionLabel, translateDiagramOp, unshownSlidesWarning, updateTimelineEventOp, useAsciiDiagramData, useBlockNavigator, useCodeSnippetData, useCustomTemplates, useCustomThemes, useDocCustomTemplates, useDocCustomThemes, useFileDrop, useMermaidDiagramData, useMermaidSurfaceTheme, useMonacoLoader, usePreviewSettings, useTimelineData, useTreeViewData };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PROOF_DIALECTS,
|
|
3
|
+
PROOF_FRONTMATTER_KEYS,
|
|
4
|
+
createHarperProofingProvider
|
|
5
|
+
} from "./chunk-SAKLIEOX.js";
|
|
1
6
|
import {
|
|
2
7
|
configureMonacoWorkers
|
|
3
8
|
} from "./chunk-BWPFPHWY.js";
|
|
@@ -59,6 +64,8 @@ import {
|
|
|
59
64
|
Section,
|
|
60
65
|
SeedColorRow,
|
|
61
66
|
StatusBar,
|
|
67
|
+
Subscript,
|
|
68
|
+
Superscript,
|
|
62
69
|
TEXT_SHADOW_PRESETS,
|
|
63
70
|
TIMELINE_VIEW_KEY,
|
|
64
71
|
TRANSITION_ENTRIES,
|
|
@@ -90,7 +97,6 @@ import {
|
|
|
90
97
|
applyTimelineCommand,
|
|
91
98
|
applyTreeCommand,
|
|
92
99
|
asciiDiagramToCanvas,
|
|
93
|
-
buildPreviewDoc,
|
|
94
100
|
classifyFile,
|
|
95
101
|
codeSnippetFenceLanguageToken,
|
|
96
102
|
codeSnippetLanguageLabel,
|
|
@@ -98,7 +104,6 @@ import {
|
|
|
98
104
|
compileDraft,
|
|
99
105
|
containFenceWidgetEvents,
|
|
100
106
|
detectLanguageFromFileName,
|
|
101
|
-
documentTitleFromFileName,
|
|
102
107
|
draftPatchFromImportedTheme,
|
|
103
108
|
findAsciiDiagramBlockPos,
|
|
104
109
|
findCodeSnippetBlockPos,
|
|
@@ -205,15 +210,15 @@ import {
|
|
|
205
210
|
usePreviewSettings,
|
|
206
211
|
useTimelineData,
|
|
207
212
|
useTreeViewData
|
|
208
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-TQPZ6VVM.js";
|
|
209
214
|
import "./chunk-V4NBQF5C.js";
|
|
210
215
|
import {
|
|
211
216
|
JsonEditor
|
|
212
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-JYPLPGYJ.js";
|
|
213
218
|
import {
|
|
214
219
|
markdownToTiptap,
|
|
215
220
|
tiptapToMarkdown
|
|
216
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-TCLNRATG.js";
|
|
217
222
|
import {
|
|
218
223
|
ImageEditor,
|
|
219
224
|
ImageViewer,
|
|
@@ -223,31 +228,42 @@ import {
|
|
|
223
228
|
} from "./chunk-V44VP242.js";
|
|
224
229
|
import {
|
|
225
230
|
RecorderButton
|
|
226
|
-
} from "./chunk-
|
|
231
|
+
} from "./chunk-WCGDDZB6.js";
|
|
227
232
|
import {
|
|
228
233
|
DEFAULT_RECORDER_DEVICE_SETTINGS,
|
|
229
234
|
RecorderDeviceQuickPicks,
|
|
230
235
|
RecorderDeviceSettingsPanel,
|
|
231
236
|
RecorderModal,
|
|
232
237
|
RecorderPanel,
|
|
238
|
+
RecorderSlidesPanel,
|
|
239
|
+
SLIDE_TIMING_CHECKBOX_LABEL,
|
|
240
|
+
buildPreviewDoc,
|
|
233
241
|
buildRecorderAudioConstraints,
|
|
234
242
|
buildRecorderCameraConstraints,
|
|
235
243
|
buildRecorderScreenAudioConstraints,
|
|
236
244
|
buildRecorderScreenConstraints,
|
|
245
|
+
buildRecorderSlideDeck,
|
|
246
|
+
clampSlideIndex,
|
|
247
|
+
documentTitleFromFileName,
|
|
237
248
|
getCaptureKind,
|
|
238
249
|
hasRecorderDeviceChoice,
|
|
250
|
+
isExpandedPanel,
|
|
251
|
+
panelModeAfterToggle,
|
|
239
252
|
recordedMediaKind,
|
|
240
253
|
recorderBitsPerSecond,
|
|
241
254
|
recorderDeviceGroups,
|
|
242
255
|
recorderDeviceOptions,
|
|
243
256
|
requestScreenStream,
|
|
257
|
+
showSlideTimingCheckbox,
|
|
258
|
+
slideStepForKey,
|
|
259
|
+
unshownSlidesWarning,
|
|
244
260
|
useMediaDevices,
|
|
245
261
|
useMediaRecorder
|
|
246
|
-
} from "./chunk-
|
|
262
|
+
} from "./chunk-JNJ7XO5L.js";
|
|
247
263
|
import "./chunk-GS7QWYFT.js";
|
|
248
264
|
import {
|
|
249
265
|
TeleprompterView
|
|
250
|
-
} from "./chunk-
|
|
266
|
+
} from "./chunk-ZZTB6BEQ.js";
|
|
251
267
|
import {
|
|
252
268
|
DEFAULT_TELEPROMPTER_PREFS,
|
|
253
269
|
EYE_LINE_FRACTION,
|
|
@@ -287,7 +303,7 @@ import {
|
|
|
287
303
|
useStreamPreview,
|
|
288
304
|
useTeleprompter,
|
|
289
305
|
vadConfigForSensitivity
|
|
290
|
-
} from "./chunk-
|
|
306
|
+
} from "./chunk-IRPOMTYK.js";
|
|
291
307
|
|
|
292
308
|
// src/FolderView.tsx
|
|
293
309
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -758,6 +774,8 @@ export {
|
|
|
758
774
|
PCM_WORKLET_NAME,
|
|
759
775
|
PCM_WORKLET_SOURCE,
|
|
760
776
|
PICKER_CATEGORIES,
|
|
777
|
+
PROOF_DIALECTS,
|
|
778
|
+
PROOF_FRONTMATTER_KEYS,
|
|
761
779
|
PlainHtmlPreview,
|
|
762
780
|
PreviewFormatSwitch,
|
|
763
781
|
PreviewModeMenu,
|
|
@@ -772,8 +790,12 @@ export {
|
|
|
772
790
|
RecorderDeviceSettingsPanel,
|
|
773
791
|
RecorderModal,
|
|
774
792
|
RecorderPanel,
|
|
793
|
+
RecorderSlidesPanel,
|
|
775
794
|
RepairableDiagramExtension,
|
|
795
|
+
SLIDE_TIMING_CHECKBOX_LABEL,
|
|
776
796
|
StatusBar,
|
|
797
|
+
Subscript,
|
|
798
|
+
Superscript,
|
|
777
799
|
TELEPROMPTER_CSS,
|
|
778
800
|
TIMELINE_VIEW_KEY,
|
|
779
801
|
TRANSITION_ENTRIES,
|
|
@@ -817,8 +839,10 @@ export {
|
|
|
817
839
|
buildRecorderCameraConstraints,
|
|
818
840
|
buildRecorderScreenAudioConstraints,
|
|
819
841
|
buildRecorderScreenConstraints,
|
|
842
|
+
buildRecorderSlideDeck,
|
|
820
843
|
buildTimingJson,
|
|
821
844
|
cameraVideoLine,
|
|
845
|
+
clampSlideIndex,
|
|
822
846
|
classifyFile,
|
|
823
847
|
codeSnippetFenceLanguageToken,
|
|
824
848
|
codeSnippetLanguageLabel,
|
|
@@ -826,6 +850,7 @@ export {
|
|
|
826
850
|
configureMonacoWorkers,
|
|
827
851
|
containFenceWidgetEvents,
|
|
828
852
|
createFloatingWindowManager,
|
|
853
|
+
createHarperProofingProvider,
|
|
829
854
|
detectFloatTiers,
|
|
830
855
|
detectLanguageFromFileName,
|
|
831
856
|
documentTitleFromFileName,
|
|
@@ -855,6 +880,7 @@ export {
|
|
|
855
880
|
isAsciiSourceVisible,
|
|
856
881
|
isCodeSnippetFenceLanguage,
|
|
857
882
|
isCodeSnippetNode,
|
|
883
|
+
isExpandedPanel,
|
|
858
884
|
isMermaidDiagramNode,
|
|
859
885
|
isMermaidFlowchartShapeId,
|
|
860
886
|
isMermaidSourceVisible,
|
|
@@ -879,6 +905,7 @@ export {
|
|
|
879
905
|
normalizeMermaidFlowchartShape,
|
|
880
906
|
offsetToLine,
|
|
881
907
|
outdentItemOp,
|
|
908
|
+
panelModeAfterToggle,
|
|
882
909
|
parseTimelineForNode,
|
|
883
910
|
partitionFiles,
|
|
884
911
|
persistFromWrite,
|
|
@@ -929,7 +956,9 @@ export {
|
|
|
929
956
|
shouldPasteAsAsciiFence,
|
|
930
957
|
shouldPasteAsTimelineFence,
|
|
931
958
|
shouldPasteAsTreeFence,
|
|
959
|
+
showSlideTimingCheckbox,
|
|
932
960
|
sliceIndexAtOffset,
|
|
961
|
+
slideStepForKey,
|
|
933
962
|
spliceBlock,
|
|
934
963
|
stepScroll,
|
|
935
964
|
summarizeBlockProps,
|
|
@@ -945,6 +974,7 @@ export {
|
|
|
945
974
|
toggleMermaidSource,
|
|
946
975
|
transitionLabel,
|
|
947
976
|
translateDiagramOp,
|
|
977
|
+
unshownSlidesWarning,
|
|
948
978
|
updateTimelineEventOp,
|
|
949
979
|
useAsciiDiagramData,
|
|
950
980
|
useBlockNavigator,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { H as HarperProofingConfig, e as ProofingProvider } from '../types-B_aHRuSc.js';
|
|
2
|
+
export { P as ProofingCapability, a as ProofingDocumentRef, b as ProofingIgnoreStore, c as ProofingLanguage, d as ProofingLintOptions, f as ProofingProviderFactory } from '../types-B_aHRuSc.js';
|
|
3
|
+
export { PROOF_DIALECTS, PROOF_FRONTMATTER_KEYS, ProofCategory, ProofDialect, ProofFinding, ProofRange, ProofSuggestion, ProofSuggestionKind } from '@bendyline/squisq/proof';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* harper.js-backed {@link ProofingProvider}.
|
|
7
|
+
*
|
|
8
|
+
* harper.js is an OPTIONAL peer dependency: this module reaches it only
|
|
9
|
+
* through dynamic `import('harper.js')` inside function bodies, so
|
|
10
|
+
* consumers who never enable proofing load none of it (and its types
|
|
11
|
+
* never appear in published declarations — the optional-peer contract
|
|
12
|
+
* pinned by `tests/published/harperOptionalPeer.test.ts`).
|
|
13
|
+
*
|
|
14
|
+
* Engine facts this adapter encodes (spike-verified against 2.7.0):
|
|
15
|
+
* - spans are UTF-16 code units — no conversion toward PM/Monaco/DOM;
|
|
16
|
+
* - `WorkerLinter` runs the WASM in an inlined blob worker (browser);
|
|
17
|
+
* `LocalLinter` is the Node path for tests;
|
|
18
|
+
* - ignoring one lint can reveal a stacked same-span lint from another
|
|
19
|
+
* rule on the next pass, so ignore iterates until the span is clean;
|
|
20
|
+
* - `exportIgnoredLints()` JSON holds integers above 2^53 → opaque;
|
|
21
|
+
* - `importWords` semantics are not guaranteed additive, so the full
|
|
22
|
+
* cumulative word set is re-imported on every change.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Create a proofing provider backed by harper.js. Construction is cheap
|
|
27
|
+
* and side-effect-free; all loading happens in `setup()` (or lazily on
|
|
28
|
+
* first use). Requires `harper.js` to be installed by the host.
|
|
29
|
+
*/
|
|
30
|
+
declare function createHarperProofingProvider(config?: HarperProofingConfig): ProofingProvider;
|
|
31
|
+
|
|
32
|
+
export { HarperProofingConfig, ProofingProvider, createHarperProofingProvider };
|
package/dist/recorder/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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,
|
|
2
|
-
export { a as CaptureKind,
|
|
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, y as ScreenStreamOptions, T as TimingJson, A as buildRecorderAudioConstraints, B as buildRecorderCameraConstraints, E as buildRecorderScreenAudioConstraints, F as buildRecorderScreenConstraints, G as buildTimingJson, H as encodeTimingJson, I as hasRecorderDeviceChoice, J as recordedMediaKind, K as recorderBitsPerSecond, L as recorderDeviceGroups, N as recorderDeviceOptions, O as requestCameraStream, P as requestMicStream, Q as requestScreenStream, U as timingPathFor, V as useMediaDevices, W as useStreamPreview } from '../recorder-GrEh4xE8.js';
|
|
2
|
+
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-B6r9Zlq-.js';
|
|
3
3
|
import 'react/jsx-runtime';
|
|
4
4
|
import '@bendyline/squisq/schemas';
|
|
5
5
|
import '@bendyline/squisq/storage';
|
package/dist/recorder/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RecorderButton
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-WCGDDZB6.js";
|
|
4
4
|
import {
|
|
5
5
|
DEFAULT_RECORDER_DEVICE_SETTINGS,
|
|
6
6
|
RecorderDeviceQuickPicks,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
requestScreenStream,
|
|
21
21
|
useMediaDevices,
|
|
22
22
|
useMediaRecorder
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-JNJ7XO5L.js";
|
|
24
24
|
import "../chunk-GS7QWYFT.js";
|
|
25
25
|
import {
|
|
26
26
|
buildFilename,
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
supportsUserMedia,
|
|
35
35
|
timingPathFor,
|
|
36
36
|
useStreamPreview
|
|
37
|
-
} from "../chunk-
|
|
37
|
+
} from "../chunk-IRPOMTYK.js";
|
|
38
38
|
export {
|
|
39
39
|
DEFAULT_RECORDER_DEVICE_SETTINGS,
|
|
40
40
|
RecorderButton,
|