@bendyline/squisq-editor-react 2.10.3 → 2.11.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/{chunk-X3UQBUVO.js → chunk-4KE4HP3W.js} +2742 -1162
- package/dist/{chunk-TCLNRATG.js → chunk-A2W4GYPG.js} +48 -2
- package/dist/{chunk-JYPLPGYJ.js → chunk-SK3MQSHQ.js} +1 -1
- package/dist/index.d.ts +286 -12
- package/dist/index.js +39 -5
- package/dist/json-editor/index.js +2 -2
- package/dist/shell/index.d.ts +6 -2
- package/dist/shell/index.js +2 -2
- package/dist/{shell-DSHMZvnK.d.ts → shell-CJkHDwpz.d.ts} +177 -7
- package/dist/styles/index.css +547 -19
- package/package.json +7 -5
|
@@ -15,6 +15,8 @@ var RE_LEGACY_ITALIC_STAR = /(?<!\*)\*(?![\s*])(.+?)(?<![\s*])([ \t]+)\*(?=$|[^\
|
|
|
15
15
|
var ESCAPABLE_MD_CHARS = ["*", "_", "~", "\\"];
|
|
16
16
|
var RE_MD_ESCAPE = /\\([*_~\\])/g;
|
|
17
17
|
var RE_INLINE_CODE = /`(.+?)`/g;
|
|
18
|
+
var BACKTICK = "`";
|
|
19
|
+
var FENCE = "```";
|
|
18
20
|
var RE_IMAGE = /!\[(.*?)\]\((.+?)\)/g;
|
|
19
21
|
var RE_MENTION = /@\[([^\]]+?)\]\(([a-z][a-z0-9+.-]*)\\?:([^)\s]+)\)/gi;
|
|
20
22
|
var RE_MENTION_TAG = /<span\b[^>]*?\bdata-mention\b[^>]*?>(?:<[^>]+>)*([^<]*)<\/span>/gi;
|
|
@@ -26,10 +28,50 @@ var RE_VERT_ALIGN_TAG = /<(sup|sub)>((?:(?!<\/?(?:sup|sub)>)[\s\S])*)<\/\1>/gi;
|
|
|
26
28
|
var RE_A_TAG = /<a\b([^>]*)>(.*?)<\/a>/g;
|
|
27
29
|
var RE_IMG_TAG = /<img\b([^>]*)>/g;
|
|
28
30
|
var RE_STRIP_TAGS = /<[^>]+>/g;
|
|
31
|
+
function joinWrappedCodeSpans(lines) {
|
|
32
|
+
if (!lines.some((line) => line.includes(BACKTICK))) return lines;
|
|
33
|
+
const joined = [];
|
|
34
|
+
let inFence = false;
|
|
35
|
+
for (let i = 0; i < lines.length; i++) {
|
|
36
|
+
const line = lines[i];
|
|
37
|
+
if (line.startsWith(FENCE)) {
|
|
38
|
+
inFence = !inFence;
|
|
39
|
+
joined.push(line);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (inFence || !leavesCodeSpanOpen(line)) {
|
|
43
|
+
joined.push(line);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
let merged = line;
|
|
47
|
+
let next = i + 1;
|
|
48
|
+
let closed = false;
|
|
49
|
+
while (next < lines.length) {
|
|
50
|
+
const candidate = lines[next];
|
|
51
|
+
if (candidate.trim() === "" || candidate.startsWith(FENCE)) break;
|
|
52
|
+
merged = `${merged} ${candidate.replace(/^[ \t]+/, "")}`;
|
|
53
|
+
next++;
|
|
54
|
+
if (!leavesCodeSpanOpen(merged)) {
|
|
55
|
+
closed = true;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (!closed) {
|
|
60
|
+
joined.push(line);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
joined.push(merged);
|
|
64
|
+
i = next - 1;
|
|
65
|
+
}
|
|
66
|
+
return joined;
|
|
67
|
+
}
|
|
68
|
+
function leavesCodeSpanOpen(text) {
|
|
69
|
+
return text.replace(RE_INLINE_CODE, "").includes(BACKTICK);
|
|
70
|
+
}
|
|
29
71
|
function markdownToTiptap(markdown) {
|
|
30
72
|
if (!markdown.trim()) return "<p></p>";
|
|
31
73
|
const html = markdown.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
32
|
-
const lines = html.split("\n");
|
|
74
|
+
const lines = joinWrappedCodeSpans(html.split("\n"));
|
|
33
75
|
const frontmatterEnd = findFrontmatterEnd(lines);
|
|
34
76
|
const outputBlocks = [];
|
|
35
77
|
let inCodeBlock = false;
|
|
@@ -403,7 +445,7 @@ function tiptapToMarkdown(html) {
|
|
|
403
445
|
while ((cellExec = cellRegex.exec(rowHtml)) !== null) {
|
|
404
446
|
const tag = cellExec[1];
|
|
405
447
|
const attrs = cellExec[2];
|
|
406
|
-
const content =
|
|
448
|
+
const content = htmlToTableCell(cellExec[3].replace(/<\/?p>/g, ""));
|
|
407
449
|
const alignExec = attrs.match(/text-align:\s*(left|center|right)/);
|
|
408
450
|
cells.push({
|
|
409
451
|
content,
|
|
@@ -789,6 +831,7 @@ function inlineToHtml(text) {
|
|
|
789
831
|
const name = tag.toLowerCase();
|
|
790
832
|
return stash(`<${name}>${inlineToHtml(inner)}</${name}>`);
|
|
791
833
|
});
|
|
834
|
+
staged = staged.replace(/<br\s*\/?>/gi, () => stash("<br>"));
|
|
792
835
|
staged = staged.replace(
|
|
793
836
|
RE_IMAGE,
|
|
794
837
|
(_m, alt, src) => stash(`<img alt="${escapeHtml(alt)}" src="${escapeHtml(src)}">`)
|
|
@@ -1031,6 +1074,9 @@ function htmlToInline(html) {
|
|
|
1031
1074
|
result = vault.restore(result);
|
|
1032
1075
|
return restoreLeadingSpaces(unescapeHtml(result));
|
|
1033
1076
|
}
|
|
1077
|
+
function htmlToTableCell(html) {
|
|
1078
|
+
return htmlToInline(html).replace(/ {2}\n/g, "<br>");
|
|
1079
|
+
}
|
|
1034
1080
|
function preserveLeadingSpaces(html) {
|
|
1035
1081
|
return html.replace(/^ +/, (spaces) => " ".repeat(spaces.length));
|
|
1036
1082
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as CodeContext, E as EditorHostMode, S as SceneTextChannel } from './shell-
|
|
2
|
-
export { B as BlockTagVisibility,
|
|
1
|
+
import { C as CodeContext, E as EditorHostMode, S as SceneTextChannel, a as CalcEngineFactory, b as CsvSourceMeta, X as XlsxSourceMeta, F as FormulaEditRecord } from './shell-CJkHDwpz.js';
|
|
2
|
+
export { B as BlockTagVisibility, c as CodeContextSection, d as CoverImageSaveOutput, D as DashboardImageSaveOutput, e as DocumentLinkCandidate, f as DocumentLinkProvider, g as EditorActions, h as EditorColorScheme, i as EditorContextMenuContext, j as EditorContextMenuItem, k as EditorContextMenuItemVisibility, l as EditorContextMenuProvider, m as EditorContextMenuProviderProps, n as EditorContextValue, o as EditorMode, p as EditorProvider, q as EditorProviderProps, r as EditorShell, s as EditorShellProps, t as EditorState, u as EditorView, v as FormulaSessionOptions, I as ImageDisplayMode, w as IngestedSidecar, L as LayoutMode, M as MentionCandidate, x as MentionProvider, P as PreviewPanel, y as PreviewPanelProps, R as RawEditor, z as RawEditorProps, T as ThemeInheritance, V as ViewPreferences, W as WriteCanvasSettings, A as WysiwygEditor, G as WysiwygEditorProps, H as XLSX_LOCKED_REASON, J as XlsxFormulaSession, K as createXlsxFormulaSession, N as ingestSidecarBytes, O as useEditorContext, Q as useEditorContextMenuItems } from './shell-CJkHDwpz.js';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import * as react from 'react';
|
|
5
|
-
import { ReactNode, CSSProperties } from 'react';
|
|
5
|
+
import { ReactNode, CSSProperties, ReactElement } from 'react';
|
|
6
6
|
import { Doc, ScheduledClip, VideoPlacement, VideoPipSize, VideoPipShape, VideoPipPosition, MediaProvider, Theme, CustomTemplateDefinition, ThemeSeedColors, ViewportPreset, ViewportConfig, Block, MediaEntry, DiagramEdgeAnchor } from '@bendyline/squisq/schemas';
|
|
7
7
|
import { ContentContainer } from '@bendyline/squisq/storage';
|
|
8
8
|
export { CanvasRect, ImageEditor, ImageEditorAction, ImageEditorProps, ImageEditorState, ImageEditorTool, ImageViewer, ImageViewerProps, UseImageEditorOptions, UseImageEditorReturn, imageEditorReducer, initialImageEditorState, useImageEditor } from './image-editor/index.js';
|
|
@@ -23,6 +23,8 @@ import { Transaction, PluginKey } from '@tiptap/pm/state';
|
|
|
23
23
|
import { Node } from '@tiptap/pm/model';
|
|
24
24
|
import { RenderResult } from 'mermaid';
|
|
25
25
|
import { FenceRendererMap } from '@bendyline/squisq/fence';
|
|
26
|
+
import { TableViewState } from '@bendyline/squisq/table';
|
|
27
|
+
import { EditJournal } from '@bendyline/squisq-grid-react';
|
|
26
28
|
export { JsonEditor, JsonEditorProps } from './json-editor/index.js';
|
|
27
29
|
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
30
|
import { R as RecorderState } from './useNarrationStage-B6r9Zlq-.js';
|
|
@@ -31,6 +33,8 @@ export { EYE_LINE_FRACTION, NarrationSavePlan, NarrationSaveResult, NarrationSta
|
|
|
31
33
|
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
34
|
export { createHarperProofingProvider } from './proofing/index.js';
|
|
33
35
|
export { PROOF_DIALECTS, PROOF_FRONTMATTER_KEYS, ProofCategory, ProofDialect, ProofFinding, ProofRange, ProofSuggestion, ProofSuggestionKind } from '@bendyline/squisq/proof';
|
|
36
|
+
import '@bendyline/squisq-calc';
|
|
37
|
+
import '@bendyline/squisq-formats/xlsx';
|
|
34
38
|
import '@bendyline/squisq/versions';
|
|
35
39
|
import '@bendyline/squisq/imageEdit';
|
|
36
40
|
import '@bendyline/squisq/jsonForm';
|
|
@@ -422,9 +426,12 @@ interface FileKind {
|
|
|
422
426
|
/**
|
|
423
427
|
* 'markdown' keeps the full editor (WYSIWYG + Preview tabs); 'code' is
|
|
424
428
|
* Monaco-only; 'image' renders a dedicated image viewer with no text
|
|
425
|
-
* editing surface
|
|
429
|
+
* editing surface; 'data' marks a tabular data file (csv/tsv/parquet) the
|
|
430
|
+
* host should open as a sidecar-referencing document (or fall back to a
|
|
431
|
+
* plaintext Monaco view) rather than pasting raw bytes into the WYSIWYG
|
|
432
|
+
* markdown editor.
|
|
426
433
|
*/
|
|
427
|
-
mode: 'markdown' | 'code' | 'image';
|
|
434
|
+
mode: 'markdown' | 'code' | 'image' | 'data';
|
|
428
435
|
/** Monaco language ID — passed to `<Editor defaultLanguage={...} />`. */
|
|
429
436
|
language: string;
|
|
430
437
|
}
|
|
@@ -1350,8 +1357,13 @@ interface MediaBinProps {
|
|
|
1350
1357
|
* URLs that the host otherwise exposes to the browser.
|
|
1351
1358
|
*/
|
|
1352
1359
|
allowBinaryDownloads?: boolean;
|
|
1360
|
+
/**
|
|
1361
|
+
* Relative path of an entry to highlight and scroll into view — how the
|
|
1362
|
+
* data card's "Show in Files" lands on the file it names.
|
|
1363
|
+
*/
|
|
1364
|
+
highlightPath?: string | null;
|
|
1353
1365
|
}
|
|
1354
|
-
declare function MediaBin({ mediaProvider, isDark, refreshKey, usedMediaPaths, onMediaUploaded, onMediaRemoved, onCountChange, onRecord, isRecorderOpen, allowBinaryDownloads, }: MediaBinProps): react_jsx_runtime.JSX.Element;
|
|
1366
|
+
declare function MediaBin({ mediaProvider, isDark, refreshKey, usedMediaPaths, onMediaUploaded, onMediaRemoved, onCountChange, onRecord, isRecorderOpen, allowBinaryDownloads, highlightPath, }: MediaBinProps): react_jsx_runtime.JSX.Element;
|
|
1355
1367
|
|
|
1356
1368
|
interface StatusBarProps {
|
|
1357
1369
|
/** Additional class name */
|
|
@@ -1383,7 +1395,7 @@ declare function TooltipLayer(): react.ReactPortal | null;
|
|
|
1383
1395
|
* classifies dragged file types (media vs text), and dispatches
|
|
1384
1396
|
* drop events to callers.
|
|
1385
1397
|
*/
|
|
1386
|
-
type FileCategory = 'media' | 'text' | 'unknown';
|
|
1398
|
+
type FileCategory = 'media' | 'text' | 'data' | 'unknown';
|
|
1387
1399
|
type DragContentType = 'media' | 'text' | 'mixed' | null;
|
|
1388
1400
|
type DropTarget = 'media' | 'insert' | 'replace';
|
|
1389
1401
|
declare function classifyFile(file: {
|
|
@@ -1439,12 +1451,13 @@ declare function DropZoneOverlay({ dragContentType, zoneProps, hasMediaProvider,
|
|
|
1439
1451
|
*/
|
|
1440
1452
|
|
|
1441
1453
|
/**
|
|
1442
|
-
* Partition an array of files into media and
|
|
1454
|
+
* Partition an array of files into media, text, and data categories.
|
|
1443
1455
|
* Files with unknown type are skipped.
|
|
1444
1456
|
*/
|
|
1445
1457
|
declare function partitionFiles(files: File[]): {
|
|
1446
1458
|
media: File[];
|
|
1447
1459
|
text: File[];
|
|
1460
|
+
data: File[];
|
|
1448
1461
|
};
|
|
1449
1462
|
/**
|
|
1450
1463
|
* Add media files to a MediaProvider. Returns the relative paths
|
|
@@ -1470,6 +1483,16 @@ declare function partitionFiles(files: File[]): {
|
|
|
1470
1483
|
* problematic file doesn't abort a multi-file drop.
|
|
1471
1484
|
*/
|
|
1472
1485
|
declare function processMediaFiles(files: File[], mediaProvider: MediaProvider): Promise<(string | null)[]>;
|
|
1486
|
+
/**
|
|
1487
|
+
* Store data files (csv/tsv/xlsx/parquet) into the container behind a
|
|
1488
|
+
* MediaProvider, under a caller-supplied directory prefix — conventionally
|
|
1489
|
+
* `dataSidecarPrefix(docBasename)`, i.e. `<docbasename>_files/data/`.
|
|
1490
|
+
*
|
|
1491
|
+
* Same defensive read handling and index-aligned `null` slots as
|
|
1492
|
+
* {@link processMediaFiles}. Name collisions inside the prefix get a
|
|
1493
|
+
* ` -1`, `-2`, … suffix rather than overwriting an existing sidecar.
|
|
1494
|
+
*/
|
|
1495
|
+
declare function processDataFiles(files: File[], mediaProvider: MediaProvider, dataDirPrefix: string): Promise<(string | null)[]>;
|
|
1473
1496
|
/**
|
|
1474
1497
|
* Read a text-content file and return its content as a markdown string.
|
|
1475
1498
|
*
|
|
@@ -1775,7 +1798,12 @@ interface FenceBlockEntry {
|
|
|
1775
1798
|
* (and may use a lenient re-parse gate); a position absent from it is a NEW
|
|
1776
1799
|
* fence that must pass full detection.
|
|
1777
1800
|
*/
|
|
1778
|
-
declare function mapFenceEntries(tr: Transaction, previous: readonly FenceBlockEntry[], doc: Node
|
|
1801
|
+
declare function mapFenceEntries(tr: Transaction, previous: readonly FenceBlockEntry[], doc: Node,
|
|
1802
|
+
/**
|
|
1803
|
+
* Node type the family claims. Defaults to `'codeBlock'` (every fence
|
|
1804
|
+
* family); the data-card family passes `'paragraph'`.
|
|
1805
|
+
*/
|
|
1806
|
+
nodeTypeName?: string): Map<number, string>;
|
|
1779
1807
|
|
|
1780
1808
|
/**
|
|
1781
1809
|
* AsciiDiagramExtension — Tiptap/ProseMirror plugin that turns code blocks
|
|
@@ -2559,6 +2587,13 @@ interface CodeSnippetExtensionOptions {
|
|
|
2559
2587
|
* change freely behind the host extension's getter.
|
|
2560
2588
|
*/
|
|
2561
2589
|
reservedLanguages?: readonly string[];
|
|
2590
|
+
/**
|
|
2591
|
+
* Getter for the host clipboard adapter used by each snippet's Copy
|
|
2592
|
+
* button. A getter (not the handler itself) so a host can swap its
|
|
2593
|
+
* clipboard implementation without re-configuring the editor — the
|
|
2594
|
+
* same live-behind-a-getter contract `renderers` uses.
|
|
2595
|
+
*/
|
|
2596
|
+
onCopyCode?: () => CodeBlockCopyHandler | undefined;
|
|
2562
2597
|
}
|
|
2563
2598
|
declare const CODE_SNIPPET_KEY: PluginKey<CodeSnippetPluginState>;
|
|
2564
2599
|
declare function isCodeSnippetNode(node: Node, reserved?: ReadonlySet<string>): boolean;
|
|
@@ -2571,8 +2606,14 @@ interface CodeSnippetWidgetProps {
|
|
|
2571
2606
|
host?: HTMLElement | null;
|
|
2572
2607
|
/** Focus this newly inserted snippet after Monaco has mounted. */
|
|
2573
2608
|
focusOnMount?: boolean;
|
|
2609
|
+
/**
|
|
2610
|
+
* Getter for the host clipboard adapter. Read at click time so a host can
|
|
2611
|
+
* swap its implementation without remounting the widget. When it yields
|
|
2612
|
+
* nothing, the button falls back to `navigator.clipboard`.
|
|
2613
|
+
*/
|
|
2614
|
+
onCopyCode?: () => CodeBlockCopyHandler | undefined;
|
|
2574
2615
|
}
|
|
2575
|
-
declare function CodeSnippetWidget({ editor, blockId, host, focusOnMount, }: CodeSnippetWidgetProps): react_jsx_runtime.JSX.Element | null;
|
|
2616
|
+
declare function CodeSnippetWidget({ editor, blockId, host, focusOnMount, onCopyCode, }: CodeSnippetWidgetProps): react_jsx_runtime.JSX.Element | null;
|
|
2576
2617
|
|
|
2577
2618
|
/** Lossless edits for language-tagged code fences. */
|
|
2578
2619
|
|
|
@@ -2823,8 +2864,16 @@ declare const HostFenceExtension: Extension<HostFenceExtensionOptions, any>;
|
|
|
2823
2864
|
/**
|
|
2824
2865
|
* Every event a mounted fence widget must keep to itself. Ordered
|
|
2825
2866
|
* pointer → key → text-input → composition → clipboard.
|
|
2867
|
+
*
|
|
2868
|
+
* `copy` belongs with `cut`/`paste`: ProseMirror installs its own `copy`
|
|
2869
|
+
* handler on `view.dom` that serializes the DOCUMENT selection into the
|
|
2870
|
+
* clipboard, and since it sits on an ancestor it runs after a widget's own
|
|
2871
|
+
* copy handler — whichever `setData` runs last wins, so a Ctrl/Cmd-C inside
|
|
2872
|
+
* a widget (a selected grid range, a diagram label field) would ship the
|
|
2873
|
+
* document selection instead of the widget's. Its absence while `cut` and
|
|
2874
|
+
* `paste` were contained was an oversight, not a decision.
|
|
2826
2875
|
*/
|
|
2827
|
-
declare const FENCE_WIDGET_CONTAINED_EVENTS: readonly ["pointerdown", "mousedown", "keydown", "keyup", "beforeinput", "input", "change", "compositionstart", "compositionupdate", "compositionend", "paste", "cut"];
|
|
2876
|
+
declare const FENCE_WIDGET_CONTAINED_EVENTS: readonly ["pointerdown", "mousedown", "keydown", "keyup", "beforeinput", "input", "change", "compositionstart", "compositionupdate", "compositionend", "copy", "paste", "cut"];
|
|
2828
2877
|
/**
|
|
2829
2878
|
* Stop every contained event at `container` so interaction inside a mounted
|
|
2830
2879
|
* fence widget never reaches the ProseMirror editor that hosts it.
|
|
@@ -2834,6 +2883,231 @@ declare const FENCE_WIDGET_CONTAINED_EVENTS: readonly ["pointerdown", "mousedown
|
|
|
2834
2883
|
*/
|
|
2835
2884
|
declare function containFenceWidgetEvents(container: HTMLElement): void;
|
|
2836
2885
|
|
|
2886
|
+
/**
|
|
2887
|
+
* DataCardExtension — the Write-view "rectangle" for data sidecar files.
|
|
2888
|
+
*
|
|
2889
|
+
* A paragraph whose entire content is one link to a relative data file
|
|
2890
|
+
* (`[q3.csv](report_files/data/q3.csv)` — the graceful-degradation body link
|
|
2891
|
+
* under a `{[dataTable src=…]}` heading) is hidden and a summary card mounts
|
|
2892
|
+
* in its place: file name, size, rows × cols, and a small preview.
|
|
2893
|
+
*
|
|
2894
|
+
* Structurally a sibling of `fenceWidgets/HostFenceExtension`, claiming
|
|
2895
|
+
* PARAGRAPHS instead of code fences: same position registry with stable
|
|
2896
|
+
* synthetic ids (via the generalized `mapFenceEntries`), same hide-the-node
|
|
2897
|
+
* decoration + React-root widget with `containFenceWidgetEvents`.
|
|
2898
|
+
*
|
|
2899
|
+
* The claim predicate is synchronous and doc-content-only (relative href +
|
|
2900
|
+
* data extension) — never an async listMedia consultation, so plugin state
|
|
2901
|
+
* stays deterministic per transaction. A claimed card whose file is missing
|
|
2902
|
+
* renders the error state instead of un-claiming.
|
|
2903
|
+
*
|
|
2904
|
+
* READ-ONLY by design in this phase: the card never touches the ProseMirror
|
|
2905
|
+
* document, so markdown round-trips byte-identically with the extension
|
|
2906
|
+
* active (`dataCard.test.tsx` holds that contract).
|
|
2907
|
+
*/
|
|
2908
|
+
|
|
2909
|
+
type DataCardBlockEntry = FenceBlockEntry;
|
|
2910
|
+
interface DataCardPluginState {
|
|
2911
|
+
entries: DataCardBlockEntry[];
|
|
2912
|
+
decorations: DecorationSet;
|
|
2913
|
+
seq: number;
|
|
2914
|
+
}
|
|
2915
|
+
declare const DATA_CARD_KEY: PluginKey<DataCardPluginState>;
|
|
2916
|
+
interface DataCardExtensionOptions {
|
|
2917
|
+
/** When false, the extension is inert. */
|
|
2918
|
+
enabled?: boolean;
|
|
2919
|
+
/** Getter — stays live without an editor remount (the mentionProvider pattern). */
|
|
2920
|
+
mediaProvider?: () => MediaProvider | null | undefined;
|
|
2921
|
+
/** Getter for the media revision; a bump re-resolves mounted cards. */
|
|
2922
|
+
mediaRevision?: () => number;
|
|
2923
|
+
/**
|
|
2924
|
+
* Getter for the workspace container — enables the grid save flow's
|
|
2925
|
+
* `.versions/data/` pre-save backups. Absent = saves proceed without a
|
|
2926
|
+
* backup (and say so).
|
|
2927
|
+
*/
|
|
2928
|
+
container?: () => ContentContainer | null | undefined;
|
|
2929
|
+
/** Open the Files panel focused on a sidecar path. */
|
|
2930
|
+
onOpenFiles?: (relativePath: string) => void;
|
|
2931
|
+
/** Notified after a successful sidecar save (hosts bump mediaRevision). */
|
|
2932
|
+
onMediaSaved?: () => void;
|
|
2933
|
+
/** Getter for the calc backend of formula sessions (default in-house). */
|
|
2934
|
+
calcEngineFactory?: () => CalcEngineFactory | null | undefined;
|
|
2935
|
+
}
|
|
2936
|
+
/**
|
|
2937
|
+
* The single data-file href a paragraph is entirely made of, or null.
|
|
2938
|
+
* Every text child must carry the SAME link href; any unlinked or
|
|
2939
|
+
* non-text content disqualifies the paragraph (an inline link in prose
|
|
2940
|
+
* stays prose).
|
|
2941
|
+
*/
|
|
2942
|
+
declare function dataLinkHrefOf(node: Node): string | null;
|
|
2943
|
+
declare function findDataCardBlockPos(editor: Editor, blockId: string): number | null;
|
|
2944
|
+
declare const DataCardExtension: Extension<DataCardExtensionOptions, any>;
|
|
2945
|
+
|
|
2946
|
+
/**
|
|
2947
|
+
* DataCardWidget — the Write-view surface for a data sidecar reference.
|
|
2948
|
+
*
|
|
2949
|
+
* ALWAYS-GRID contract: every `{[dataTable src=…]}` block mounts the real
|
|
2950
|
+
* virtualized grid (`@bendyline/squisq-grid-react`, lazily imported), with
|
|
2951
|
+
* the summary card's identity strip (icon, name, size, rows×cols,
|
|
2952
|
+
* Show-in-Files) as the grid's header. The compact preview card remains
|
|
2953
|
+
* ONLY as the runtime fallback when the grid module fails to load — plus
|
|
2954
|
+
* the unchanged missing/metadata error states.
|
|
2955
|
+
*
|
|
2956
|
+
* View state (sort/filter) binds to the OWNING heading's annotation params
|
|
2957
|
+
* when the heading really owns this sidecar (see viewStateBinding.ts);
|
|
2958
|
+
* otherwise it is session-only and the grid footer says so. CSV/TSV edits
|
|
2959
|
+
* save in place through gridSave.ts; XLSX edits (values, and formulas when
|
|
2960
|
+
* the calc-engine session boots within budget) save through in-place
|
|
2961
|
+
* patching; parquet mounts read-only with a reason chip.
|
|
2962
|
+
*
|
|
2963
|
+
* The underlying PM paragraph is still never touched by the widget itself —
|
|
2964
|
+
* only the heading's `dataTemplateParams` attribute changes, through the
|
|
2965
|
+
* ordinary PM-undoable transaction path.
|
|
2966
|
+
*/
|
|
2967
|
+
|
|
2968
|
+
interface DataCardWidgetProps {
|
|
2969
|
+
editor: Editor;
|
|
2970
|
+
blockId: string;
|
|
2971
|
+
getMediaProvider: () => MediaProvider | null | undefined;
|
|
2972
|
+
getMediaRevision: () => number;
|
|
2973
|
+
getContainer?: (() => ContentContainer | null | undefined) | undefined;
|
|
2974
|
+
onOpenFiles?: ((relativePath: string) => void) | undefined;
|
|
2975
|
+
onMediaSaved?: (() => void) | undefined;
|
|
2976
|
+
/** Calc backend for formula sessions (default: the in-house tier). */
|
|
2977
|
+
getCalcEngineFactory?: (() => CalcEngineFactory | null | undefined) | undefined;
|
|
2978
|
+
}
|
|
2979
|
+
declare function DataCardWidget({ editor, blockId, getMediaProvider, getMediaRevision, getContainer, onOpenFiles, onMediaSaved, getCalcEngineFactory, }: DataCardWidgetProps): ReactElement | null;
|
|
2980
|
+
|
|
2981
|
+
/**
|
|
2982
|
+
* Data preview loading for the Write-view data card: bytes → a small
|
|
2983
|
+
* `DataPreview` window via the formats data readers, loaded lazily so a
|
|
2984
|
+
* document with no data references costs nothing. Results are cached by
|
|
2985
|
+
* `(path, mediaRevision)` — a re-uploaded sidecar bumps the revision and
|
|
2986
|
+
* naturally misses the cache.
|
|
2987
|
+
*/
|
|
2988
|
+
interface DataPreview {
|
|
2989
|
+
columns: string[];
|
|
2990
|
+
rows: string[][];
|
|
2991
|
+
totalRows: number | null;
|
|
2992
|
+
totalCols: number | null;
|
|
2993
|
+
}
|
|
2994
|
+
/** Lowercase extension of a path, or empty string. */
|
|
2995
|
+
declare function dataExtensionOf(path: string): string;
|
|
2996
|
+
/**
|
|
2997
|
+
* Parse a bounded preview from raw bytes. Returns null when no reader is
|
|
2998
|
+
* available for the extension (e.g. parquet without the optional peer) —
|
|
2999
|
+
* the card then renders its metadata-only state. Parse failures also
|
|
3000
|
+
* resolve to null rather than throwing.
|
|
3001
|
+
*/
|
|
3002
|
+
declare function loadDataPreview(bytes: ArrayBuffer, ext: string, opts?: {
|
|
3003
|
+
maxRows?: number;
|
|
3004
|
+
sheet?: string;
|
|
3005
|
+
anchor?: string;
|
|
3006
|
+
}): Promise<DataPreview | null>;
|
|
3007
|
+
|
|
3008
|
+
/**
|
|
3009
|
+
* Binds the grid's view state (sort/filter) to the OWNING heading's
|
|
3010
|
+
* `{[dataTable …]}` annotation params — the document-persisted half of the
|
|
3011
|
+
* "author's sort IS part of the document" contract.
|
|
3012
|
+
*
|
|
3013
|
+
* Persistence guard: params are written ONLY when the owning heading's
|
|
3014
|
+
* template resolves into `TABLE_FED_TEMPLATES` AND its `src` equals the
|
|
3015
|
+
* card's href — a data-link paragraph under a template-less heading gets
|
|
3016
|
+
* SESSION-ONLY view state rather than a fabricated annotation.
|
|
3017
|
+
*
|
|
3018
|
+
* Writes go through the established single-transaction pattern
|
|
3019
|
+
* (`tr.setNodeAttribute(pos, 'dataTemplateParams', serialized || null)`,
|
|
3020
|
+
* see scene/commands/drawingCommands.ts) with canonical
|
|
3021
|
+
* `key=quoteAttrValue(value)` serialization; existing params keep their
|
|
3022
|
+
* order, `sort`/`filter` update in place or append — `paramsEqual` in
|
|
3023
|
+
* docToMarkdown is order-insensitive, so repeat writes stay byte-stable.
|
|
3024
|
+
*/
|
|
3025
|
+
|
|
3026
|
+
interface HeadingViewBinding {
|
|
3027
|
+
/** Heading node position, when an owning heading exists. */
|
|
3028
|
+
headingPos: number | null;
|
|
3029
|
+
/** True when sort/filter writes persist to the document. */
|
|
3030
|
+
persisted: boolean;
|
|
3031
|
+
/** All annotation params on the heading (raw, unquoted values). */
|
|
3032
|
+
params: Record<string, string>;
|
|
3033
|
+
/** Raw sort/filter param values, for `parseTableViewState`. */
|
|
3034
|
+
sortRaw?: string;
|
|
3035
|
+
filterRaw?: string;
|
|
3036
|
+
}
|
|
3037
|
+
/** Resolve the owning heading + persistence eligibility for a card. */
|
|
3038
|
+
declare function readHeadingViewBinding(editor: Editor, cardPos: number, href: string): HeadingViewBinding;
|
|
3039
|
+
/**
|
|
3040
|
+
* Write the view state onto the heading annotation (one transaction,
|
|
3041
|
+
* PM-undoable). Returns false when the write couldn't apply (stale pos).
|
|
3042
|
+
*/
|
|
3043
|
+
declare function writeHeadingViewState(editor: Editor, cardPos: number, href: string, view: TableViewState): boolean;
|
|
3044
|
+
/** Parse the binding's raw params into a `TableViewState` for the grid. */
|
|
3045
|
+
declare function viewStateFromBinding(binding: HeadingViewBinding, headers: readonly string[]): TableViewState;
|
|
3046
|
+
|
|
3047
|
+
/**
|
|
3048
|
+
* Grid save orchestration for CSV/TSV sidecars: journal → serialized bytes
|
|
3049
|
+
* → in-place overwrite, with a `.versions/data/` pre-save backup.
|
|
3050
|
+
*
|
|
3051
|
+
* Order of operations and their whys:
|
|
3052
|
+
* 1. BACKUP the original bytes first (`buildDataBackupPath`, pruned to the
|
|
3053
|
+
* newest 3 per sidecar) — the only cross-save undo the grid offers.
|
|
3054
|
+
* No container = no backup; the result says so rather than hiding it.
|
|
3055
|
+
* 2. Serialize from the ORIGINAL parsed rows with journal edits splatted
|
|
3056
|
+
* in — unedited cells reproduce the parse product byte-for-byte (values,
|
|
3057
|
+
* not necessarily quoting style), sidestepping float-rendering drift.
|
|
3058
|
+
* Formula neutralization applies ONLY to journal-edited, non-numeric
|
|
3059
|
+
* cells (`serializeCsvRows` defaults `preserve`; blanket escaping would
|
|
3060
|
+
* corrupt every negative number in a re-saved file).
|
|
3061
|
+
* 3. `addMedia(samePath)` with FORK DETECTION: `addMedia` returns the path
|
|
3062
|
+
* the host actually used, and a collision-renaming provider would
|
|
3063
|
+
* silently fork the document's reference — surface it instead.
|
|
3064
|
+
* 4. The caller bumps mediaRevision (previews re-resolve, journal cache
|
|
3065
|
+
* rotates) only on success.
|
|
3066
|
+
*/
|
|
3067
|
+
|
|
3068
|
+
interface GridSaveResult {
|
|
3069
|
+
ok: boolean;
|
|
3070
|
+
/** Path actually written (differs from requested on a host fork). */
|
|
3071
|
+
savedPath?: string;
|
|
3072
|
+
/** Human-readable caveats: fork detected, backup skipped, … */
|
|
3073
|
+
notices: string[];
|
|
3074
|
+
error?: string;
|
|
3075
|
+
}
|
|
3076
|
+
interface SaveCsvEditsOptions {
|
|
3077
|
+
path: string;
|
|
3078
|
+
originalBytes: ArrayBuffer;
|
|
3079
|
+
csv: CsvSourceMeta;
|
|
3080
|
+
journal: EditJournal;
|
|
3081
|
+
mediaProvider: MediaProvider;
|
|
3082
|
+
container: ContentContainer | null;
|
|
3083
|
+
}
|
|
3084
|
+
declare function saveCsvEdits(options: SaveCsvEditsOptions): Promise<GridSaveResult>;
|
|
3085
|
+
interface SaveXlsxEditsOptions {
|
|
3086
|
+
path: string;
|
|
3087
|
+
originalBytes: ArrayBuffer;
|
|
3088
|
+
xlsx: XlsxSourceMeta;
|
|
3089
|
+
journal: EditJournal;
|
|
3090
|
+
/** Formula edits from the calc-engine session, keyed `"row:col"`. */
|
|
3091
|
+
formulaEdits?: ReadonlyMap<string, FormulaEditRecord>;
|
|
3092
|
+
mediaProvider: MediaProvider;
|
|
3093
|
+
container: ContentContainer | null;
|
|
3094
|
+
}
|
|
3095
|
+
/**
|
|
3096
|
+
* Save journal edits into an XLSX sidecar via in-place cell patching.
|
|
3097
|
+
*
|
|
3098
|
+
* Journal rowIds are BODY row indices within the region; the region's
|
|
3099
|
+
* anchor (+ header offset) maps them back to sheet addresses. The patcher
|
|
3100
|
+
* is all-or-nothing — a refused cell (formula/date, which the grid's lock
|
|
3101
|
+
* predicate should have prevented) fails the whole save with its reason.
|
|
3102
|
+
*/
|
|
3103
|
+
declare function saveXlsxEdits(options: SaveXlsxEditsOptions): Promise<GridSaveResult>;
|
|
3104
|
+
|
|
3105
|
+
/**
|
|
3106
|
+
* Returns the heading position for the block owning a document position.
|
|
3107
|
+
* A block begins at a top-level heading and continues until the next heading.
|
|
3108
|
+
*/
|
|
3109
|
+
declare function findOwningHeadingPosition(doc: Node, position: number): number | null;
|
|
3110
|
+
|
|
2837
3111
|
/**
|
|
2838
3112
|
* TimelineViewExtension — mounts a WYSIWYG timeline editor over qualifying
|
|
2839
3113
|
* authored timeline code fences while keeping the fence text as source of
|
|
@@ -3106,4 +3380,4 @@ declare function unshownSlidesWarning(total: number, unshown: number): string |
|
|
|
3106
3380
|
/** The exact label of the review-state block-timings checkbox. */
|
|
3107
3381
|
declare const SLIDE_TIMING_CHECKBOX_LABEL = "Update block timings when I save this narration";
|
|
3108
3382
|
|
|
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 };
|
|
3383
|
+
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, CalcEngineFactory, CodeContext, CodeContextZones, type CodeSnippetBlockEntry, type CodeSnippetData, CodeSnippetExtension, type CodeSnippetExtensionOptions, type CodeSnippetLanguage, type CodeSnippetPluginState, CodeSnippetWidget, type CodeSnippetWidgetProps, CsvSourceMeta, type CustomTemplateContextValue, CustomTemplateProvider, type CustomTemplateProviderProps, type CustomThemeContextValue, CustomThemeProvider, type CustomThemeProviderProps, DATA_CARD_KEY, DEFAULT_MERMAID_DIAGRAM_TYPE, type DataCardBlockEntry, DataCardExtension, type DataCardExtensionOptions, type DataCardPluginState, DataCardWidget, type DataPreview, DiagramCanvas, type DiagramCommand, type DiagramData, type DiagramEdge, type DiagramNode, type DirectionModel, type DocCustomTemplates, type DocCustomThemes, DocumentSettingsDialog, type DocumentSettingsDialogProps, type DragContentType, type DropTarget, DropZoneOverlay, type DropZoneOverlayProps, EMPTY_TRANSITION, EditorHostMode, EmojiPicker, type EmojiPickerProps, FENCE_WIDGET_CONTAINED_EVENTS, type FenceBlockEntry, type FileCategory, type FileKind, type FolderEntry, FolderView, type FolderViewProps, FormulaEditRecord, type GridSaveResult, HOST_FENCE_KEY, type HeadingTransitionAttrs, type HeadingViewBinding, HeadingWithTemplate, type HostFenceBlockEntry, HostFenceExtension, type HostFenceExtensionOptions, type HostFencePluginState, ImportThemeSection, type ImportThemeSectionProps, type ImportedThemeResult, InlinePreviewGutter, type InlinePreviewGutterProps, MERMAID_DIAGRAM_KEY, MERMAID_DIAGRAM_TYPES, MERMAID_FLOWCHART_SHAPES, 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, type SaveCsvEditsOptions, type SaveXlsxEditsOptions, 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, XlsxSourceMeta, adaptThemeToSurface, addEdgeOp, addItemOp, addNodeOp, addTimelineEventOp, applyAsciiDiagramCommand, applyRepairCommand, applyTimelineCommand, applyTreeCommand, asciiDiagramToCanvas, buildRecorderSlideDeck, clampSlideIndex, classifyFile, codeSnippetFenceLanguageToken, codeSnippetLanguageLabel, codeSnippetMarkdown, containFenceWidgetEvents, dataExtensionOf, dataLinkHrefOf, detectLanguageFromFileName, draftPatchFromImportedTheme, findAsciiDiagramBlockPos, findCodeSnippetBlockPos, findDataCardBlockPos, findHostFenceBlockPos, findMermaidDiagramBlockPos, findOwningHeadingPosition, findRepairableBlockPos, findTimelineBlockPos, findTransitionEntry, findTreeBlockPos, formatSeconds, getBlockSlices, getTimelineForNode, indentItemOp, ingestForWrite, inspectMermaidSource, isAsciiSourceVisible, isCodeSnippetFenceLanguage, isCodeSnippetNode, isExpandedPanel, isMermaidDiagramNode, isMermaidFlowchartShapeId, isMermaidSourceVisible, isRepairableFence, isTimelineSourceSafeForSemanticEdit, lineToOffset, loadDataPreview, mapFenceEntries, markdownToTiptap, mermaidDiagramMarkdown, mermaidDiagramProperties, mermaidEditCapabilities, mermaidEditableTexts, mermaidErrorMessage, mermaidSurfaceScheme, monacoLanguageForFence, moveItemDownOp, moveItemUpOp, moveNodeOp, nextTimelineEventId, normalizeMermaidFlowchartShape, offsetToLine, outdentItemOp, panelModeAfterToggle, parseTimelineForNode, partitionFiles, persistFromWrite, preloadMonaco, preloadMonacoSuggestions, processDataFiles, processMediaFiles, processTextFile, processTextFiles, readBlockAttrsParams, readBlockAttrsTransition, readBlockAttrsValue, readHeadingLineTransition, readHeadingViewBinding, removeEdgeOp, removeItemOp, removeNodeOp, removeTimelineEventOp, renameItemOp, renameNodeOp, renderMermaidDiagram, replaceAsciiFenceText, replaceCodeSnippetText, replaceHostFenceText, replaceAsciiFenceText as replaceTreeFenceText, resizeNodeOp, resolveFileKind, resolveMermaidSurfaceTheme, sanitizeAsciiLabel, sanitizeTimelineText, sanitizeTreeLabel, saveCsvEdits, saveXlsxEdits, 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, viewStateFromBinding, writeHeadingViewState };
|