@bendyline/squisq-editor-react 1.0.1 → 1.1.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/DropZoneOverlay.d.ts +24 -0
- package/dist/DropZoneOverlay.d.ts.map +1 -0
- package/dist/DropZoneOverlay.js +53 -0
- package/dist/DropZoneOverlay.js.map +1 -0
- package/dist/EditorContext.d.ts +10 -2
- package/dist/EditorContext.d.ts.map +1 -1
- package/dist/EditorContext.js +49 -1
- package/dist/EditorContext.js.map +1 -1
- package/dist/EditorShell.d.ts +16 -1
- package/dist/EditorShell.d.ts.map +1 -1
- package/dist/EditorShell.js +55 -8
- package/dist/EditorShell.js.map +1 -1
- package/dist/ImageNodeView.d.ts +15 -0
- package/dist/ImageNodeView.d.ts.map +1 -0
- package/dist/ImageNodeView.js +52 -0
- package/dist/ImageNodeView.js.map +1 -0
- package/dist/MediaBin.d.ts +18 -0
- package/dist/MediaBin.d.ts.map +1 -0
- package/dist/MediaBin.js +141 -0
- package/dist/MediaBin.js.map +1 -0
- package/dist/PreviewControls.d.ts +41 -0
- package/dist/PreviewControls.d.ts.map +1 -0
- package/dist/PreviewControls.js +201 -0
- package/dist/PreviewControls.js.map +1 -0
- package/dist/PreviewPanel.d.ts +7 -7
- package/dist/PreviewPanel.d.ts.map +1 -1
- package/dist/PreviewPanel.js +183 -199
- package/dist/PreviewPanel.js.map +1 -1
- package/dist/Toolbar.d.ts +12 -1
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar.js +4 -12
- package/dist/Toolbar.js.map +1 -1
- package/dist/WysiwygEditor.d.ts.map +1 -1
- package/dist/WysiwygEditor.js +3 -1
- package/dist/WysiwygEditor.js.map +1 -1
- package/dist/hooks/useFileDrop.d.ts +41 -0
- package/dist/hooks/useFileDrop.d.ts.map +1 -0
- package/dist/hooks/useFileDrop.js +167 -0
- package/dist/hooks/useFileDrop.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/tiptapBridge.d.ts.map +1 -1
- package/dist/tiptapBridge.js +4 -5
- package/dist/tiptapBridge.js.map +1 -1
- package/dist/utils/dropUtils.d.ts +36 -0
- package/dist/utils/dropUtils.d.ts.map +1 -0
- package/dist/utils/dropUtils.js +71 -0
- package/dist/utils/dropUtils.js.map +1 -0
- package/package.json +5 -3
- package/src/DropZoneOverlay.tsx +137 -0
- package/src/EditorContext.tsx +64 -1
- package/src/EditorShell.tsx +153 -20
- package/src/ImageNodeView.tsx +70 -0
- package/src/MediaBin.tsx +223 -0
- package/src/PreviewControls.tsx +340 -0
- package/src/PreviewPanel.tsx +216 -287
- package/src/Toolbar.tsx +40 -3
- package/src/WysiwygEditor.tsx +3 -1
- package/src/hooks/useFileDrop.ts +226 -0
- package/src/index.ts +29 -0
- package/src/styles/editor.css +349 -8
- package/src/tiptapBridge.ts +5 -6
- package/src/utils/dropUtils.ts +88 -0
package/dist/PreviewPanel.js
CHANGED
|
@@ -16,14 +16,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
16
16
|
* (the player enters fallback-timer mode when audio can't load)
|
|
17
17
|
* 4. Passing the prepared Doc to DocPlayer for SVG-based rendering
|
|
18
18
|
*/
|
|
19
|
-
import {
|
|
19
|
+
import { useState, useEffect } from 'react';
|
|
20
20
|
import { DocPlayer, LinearDocView } from '@bendyline/squisq-react';
|
|
21
21
|
import { flattenBlocks } from '@bendyline/squisq/doc';
|
|
22
22
|
import { hasTemplate } from '@bendyline/squisq/doc';
|
|
23
23
|
import { extractPlainText } from '@bendyline/squisq/markdown';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
24
|
+
import { getChildren } from '@bendyline/squisq/markdown';
|
|
25
|
+
import { applyTransform } from '@bendyline/squisq/transform';
|
|
26
|
+
import { resolveAudioMapping } from '@bendyline/squisq/doc';
|
|
26
27
|
import { useEditorContext } from './EditorContext';
|
|
28
|
+
import { usePreviewSettings } from './PreviewControls';
|
|
27
29
|
// ── Helpers ────────────────────────────────────────────────────────
|
|
28
30
|
/**
|
|
29
31
|
* Extract plain text from an array of markdown block nodes.
|
|
@@ -38,6 +40,53 @@ function extractBodyText(contents) {
|
|
|
38
40
|
}
|
|
39
41
|
return parts.join('\n').trim();
|
|
40
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Extract images from a block's markdown contents.
|
|
45
|
+
* Walks the node tree recursively to find all MarkdownImage nodes.
|
|
46
|
+
*/
|
|
47
|
+
function extractBlockImages(contents) {
|
|
48
|
+
if (!contents || contents.length === 0)
|
|
49
|
+
return [];
|
|
50
|
+
const images = [];
|
|
51
|
+
function walk(node) {
|
|
52
|
+
if ('type' in node && node.type === 'image' && 'url' in node) {
|
|
53
|
+
const img = node;
|
|
54
|
+
if (img.url) {
|
|
55
|
+
images.push({ src: img.url, alt: img.alt ?? '' });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const child of getChildren(node)) {
|
|
59
|
+
walk(child);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
for (const node of contents) {
|
|
63
|
+
walk(node);
|
|
64
|
+
}
|
|
65
|
+
return images;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Collect all unique images from an entire Doc's block tree.
|
|
69
|
+
* Walks nested children to find every image across all blocks.
|
|
70
|
+
*/
|
|
71
|
+
function collectAllDocImages(blocks) {
|
|
72
|
+
const seen = new Set();
|
|
73
|
+
const images = [];
|
|
74
|
+
function walkBlocks(blockList) {
|
|
75
|
+
for (const block of blockList) {
|
|
76
|
+
for (const img of extractBlockImages(block.contents)) {
|
|
77
|
+
if (!seen.has(img.src)) {
|
|
78
|
+
seen.add(img.src);
|
|
79
|
+
images.push(img);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (block.children) {
|
|
83
|
+
walkBlocks(block.children);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
walkBlocks(blocks);
|
|
88
|
+
return images;
|
|
89
|
+
}
|
|
41
90
|
/**
|
|
42
91
|
* Extract list items from markdown body content.
|
|
43
92
|
* Returns an array of plain text strings for each list item found.
|
|
@@ -120,12 +169,18 @@ function getTemplateDefaults(templateName, headingText, block) {
|
|
|
120
169
|
function blockToSlide(block, index) {
|
|
121
170
|
const headingText = block.sourceHeading
|
|
122
171
|
? extractPlainText(block.sourceHeading)
|
|
123
|
-
: block.id || `Slide ${index + 1}`;
|
|
172
|
+
: block.title || block.id || `Slide ${index + 1}`;
|
|
124
173
|
// Validate template name — fall back to sectionHeader for unknowns
|
|
125
174
|
const requestedTemplate = block.template || 'sectionHeader';
|
|
126
175
|
const template = hasTemplate(requestedTemplate) ? requestedTemplate : 'sectionHeader';
|
|
127
176
|
// Get sensible defaults for templates that need more than just `title`
|
|
128
177
|
const defaults = getTemplateDefaults(template, headingText, block);
|
|
178
|
+
// Spread the block itself to pick up any template-specific fields
|
|
179
|
+
// placed directly on the block by applyTransform (e.g. stat, description,
|
|
180
|
+
// quote, colorScheme). These are not in templateOverrides — they live
|
|
181
|
+
// on the block object because the transform produces hybrid Block+Template
|
|
182
|
+
// objects via the timing allocator.
|
|
183
|
+
const { id: _id, startTime: _st, duration: _d, audioSegment: _as, layers: _l, transition: _tr, template: _t, title: _ti, children: _c, contents: _co, sourceHeading: _sh, templateOverrides: _to, ...extraFields } = block;
|
|
129
184
|
return {
|
|
130
185
|
id: block.id,
|
|
131
186
|
template,
|
|
@@ -136,19 +191,93 @@ function blockToSlide(block, index) {
|
|
|
136
191
|
title: headingText,
|
|
137
192
|
// Template-specific defaults (safe fallbacks for required fields)
|
|
138
193
|
...defaults,
|
|
194
|
+
// Template-specific fields from transform (stat, description, quote, etc.)
|
|
195
|
+
...extraFields,
|
|
139
196
|
// Spread annotation overrides last so explicit values win
|
|
140
197
|
...block.templateOverrides,
|
|
141
198
|
};
|
|
142
199
|
}
|
|
200
|
+
/** Ambient motions to rotate on image slides. */
|
|
201
|
+
const IMAGE_MOTIONS = [
|
|
202
|
+
'zoomIn',
|
|
203
|
+
'zoomOut',
|
|
204
|
+
'panLeft',
|
|
205
|
+
'panRight',
|
|
206
|
+
];
|
|
143
207
|
/**
|
|
144
208
|
* Build a player-ready Doc from the markdown-derived Doc.
|
|
145
209
|
*
|
|
146
210
|
* Flattens hierarchical blocks, converts each to a TemplateBlock-compatible
|
|
147
211
|
* slide, recalculates timing, and adds a synthetic audio segment.
|
|
212
|
+
*
|
|
213
|
+
* Images found in the markdown are used in two ways:
|
|
214
|
+
* 1. Per-block: if a block has images, its first image becomes the background
|
|
215
|
+
* (via imageWithCaption template) or an accent image on text templates.
|
|
216
|
+
* 2. Global: remaining images are interleaved as standalone image slides
|
|
217
|
+
* for visual variety.
|
|
148
218
|
*/
|
|
149
219
|
function buildPreviewDoc(doc) {
|
|
150
220
|
const flat = flattenBlocks(doc.blocks);
|
|
151
|
-
|
|
221
|
+
// Collect all images from the doc for global interleaving
|
|
222
|
+
const allImages = collectAllDocImages(doc.blocks);
|
|
223
|
+
// Track which images are used per-block so we can interleave the rest
|
|
224
|
+
const usedImageSrcs = new Set();
|
|
225
|
+
// First pass: convert blocks to slides, using per-block images
|
|
226
|
+
const slides = [];
|
|
227
|
+
let motionIndex = 0;
|
|
228
|
+
for (let i = 0; i < flat.length; i++) {
|
|
229
|
+
const block = flat[i];
|
|
230
|
+
const blockImages = extractBlockImages(block.contents);
|
|
231
|
+
const slide = blockToSlide(block, i);
|
|
232
|
+
// If the block has images and is using the default sectionHeader template,
|
|
233
|
+
// upgrade it to imageWithCaption so the image becomes the slide background.
|
|
234
|
+
if (blockImages.length > 0 && slide.template === 'sectionHeader') {
|
|
235
|
+
const img = blockImages[0];
|
|
236
|
+
usedImageSrcs.add(img.src);
|
|
237
|
+
slide.template = 'imageWithCaption';
|
|
238
|
+
slide.imageSrc = img.src;
|
|
239
|
+
slide.imageAlt = img.alt;
|
|
240
|
+
slide.caption = slide.title;
|
|
241
|
+
slide.captionPosition = 'bottom';
|
|
242
|
+
slide.ambientMotion = IMAGE_MOTIONS[motionIndex++ % IMAGE_MOTIONS.length];
|
|
243
|
+
}
|
|
244
|
+
else if (blockImages.length > 0) {
|
|
245
|
+
// For other templates, add the first image as an accent
|
|
246
|
+
const img = blockImages[0];
|
|
247
|
+
usedImageSrcs.add(img.src);
|
|
248
|
+
if (!slide.accentImage) {
|
|
249
|
+
slide.accentImage = {
|
|
250
|
+
src: img.src,
|
|
251
|
+
alt: img.alt,
|
|
252
|
+
position: 'left-strip',
|
|
253
|
+
ambientMotion: IMAGE_MOTIONS[motionIndex++ % IMAGE_MOTIONS.length],
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
slides.push(slide);
|
|
258
|
+
}
|
|
259
|
+
// Second pass: interleave unused images as standalone imageWithCaption slides.
|
|
260
|
+
// Spread them evenly through the sequence for visual variety.
|
|
261
|
+
const unusedImages = allImages.filter((img) => !usedImageSrcs.has(img.src));
|
|
262
|
+
if (unusedImages.length > 0 && slides.length > 0) {
|
|
263
|
+
const interval = Math.max(2, Math.floor(slides.length / (unusedImages.length + 1)));
|
|
264
|
+
let insertOffset = 0;
|
|
265
|
+
for (let imgIdx = 0; imgIdx < unusedImages.length; imgIdx++) {
|
|
266
|
+
const insertAt = Math.min((imgIdx + 1) * interval + insertOffset, slides.length);
|
|
267
|
+
const img = unusedImages[imgIdx];
|
|
268
|
+
slides.splice(insertAt, 0, {
|
|
269
|
+
id: `img-interleave-${imgIdx}`,
|
|
270
|
+
template: 'imageWithCaption',
|
|
271
|
+
duration: 5,
|
|
272
|
+
audioSegment: 0,
|
|
273
|
+
imageSrc: img.src,
|
|
274
|
+
imageAlt: img.alt,
|
|
275
|
+
ambientMotion: IMAGE_MOTIONS[motionIndex++ % IMAGE_MOTIONS.length],
|
|
276
|
+
transition: { type: 'fade', duration: 0.5 },
|
|
277
|
+
});
|
|
278
|
+
insertOffset++;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
152
281
|
// Recalculate sequential timing
|
|
153
282
|
let t = 0;
|
|
154
283
|
for (const slide of slides) {
|
|
@@ -164,144 +293,53 @@ function buildPreviewDoc(doc) {
|
|
|
164
293
|
// its fallback timer to advance currentTime via requestAnimationFrame.
|
|
165
294
|
segments: t > 0 ? [{ src: '', name: 'preview', duration: t, startTime: 0 }] : [],
|
|
166
295
|
},
|
|
296
|
+
...(doc.captions ? { captions: doc.captions } : {}),
|
|
167
297
|
};
|
|
168
298
|
}
|
|
169
|
-
// ── Viewport helpers ───────────────────────────────────────────────
|
|
170
|
-
/** All viewport preset entries for the dropdown */
|
|
171
|
-
const VIEWPORT_OPTIONS = [
|
|
172
|
-
{ key: 'landscape', label: '16:9 Landscape' },
|
|
173
|
-
{ key: 'portrait', label: '9:16 Portrait' },
|
|
174
|
-
{ key: 'square', label: '1:1 Square' },
|
|
175
|
-
{ key: 'standard', label: '4:3 Standard' },
|
|
176
|
-
];
|
|
177
|
-
/**
|
|
178
|
-
* Resolve a `document-render-as` frontmatter value to a ViewportPreset.
|
|
179
|
-
* Accepts preset names ("landscape"), aspect ratio shorthand ("16:9"),
|
|
180
|
-
* and common aliases ("widescreen", "vertical", "stories").
|
|
181
|
-
*/
|
|
182
|
-
function resolveRenderAs(value) {
|
|
183
|
-
if (typeof value !== 'string')
|
|
184
|
-
return null;
|
|
185
|
-
const v = value.trim().toLowerCase();
|
|
186
|
-
const mapping = {
|
|
187
|
-
landscape: 'landscape',
|
|
188
|
-
'16:9': 'landscape',
|
|
189
|
-
widescreen: 'landscape',
|
|
190
|
-
portrait: 'portrait',
|
|
191
|
-
'9:16': 'portrait',
|
|
192
|
-
vertical: 'portrait',
|
|
193
|
-
stories: 'portrait',
|
|
194
|
-
square: 'square',
|
|
195
|
-
'1:1': 'square',
|
|
196
|
-
standard: 'standard',
|
|
197
|
-
'4:3': 'standard',
|
|
198
|
-
};
|
|
199
|
-
return mapping[v] ?? null;
|
|
200
|
-
}
|
|
201
|
-
/** Display mode options for the dropdown */
|
|
202
|
-
const DISPLAY_MODE_OPTIONS = [
|
|
203
|
-
{ key: 'video', label: 'Video' },
|
|
204
|
-
{ key: 'slideshow', label: 'Slideshow' },
|
|
205
|
-
{ key: 'linear', label: 'Document' },
|
|
206
|
-
];
|
|
207
|
-
/** Theme options for the dropdown */
|
|
208
|
-
const THEME_OPTIONS = getThemeSummaries().map((s) => ({ key: s.id, label: s.name }));
|
|
209
|
-
/** Set of valid theme IDs for fast lookup */
|
|
210
|
-
const VALID_THEME_IDS = new Set(THEME_OPTIONS.map((o) => o.key));
|
|
211
|
-
/**
|
|
212
|
-
* Resolve a `theme` frontmatter value to a theme id.
|
|
213
|
-
* Accepts exact theme ids ('documentary', 'bold') and common aliases.
|
|
214
|
-
*/
|
|
215
|
-
function resolveFrontmatterTheme(value) {
|
|
216
|
-
if (typeof value !== 'string')
|
|
217
|
-
return null;
|
|
218
|
-
const v = value.trim().toLowerCase();
|
|
219
|
-
if (VALID_THEME_IDS.has(v))
|
|
220
|
-
return v;
|
|
221
|
-
// Allow hyphenated/spaced aliases: "morning light" → "morning-light"
|
|
222
|
-
const normalized = v.replace(/\s+/g, '-');
|
|
223
|
-
if (VALID_THEME_IDS.has(normalized))
|
|
224
|
-
return normalized;
|
|
225
|
-
return null;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Resolve a `display-mode` frontmatter value to a DisplayMode.
|
|
229
|
-
*/
|
|
230
|
-
function resolveDisplayMode(value) {
|
|
231
|
-
if (typeof value !== 'string')
|
|
232
|
-
return null;
|
|
233
|
-
const v = value.trim().toLowerCase();
|
|
234
|
-
if (v === 'video' || v === 'slideshow' || v === 'linear')
|
|
235
|
-
return v;
|
|
236
|
-
if (v === 'slides' || v === 'presentation' || v === 'deck')
|
|
237
|
-
return 'slideshow';
|
|
238
|
-
if (v === 'document' || v === 'scroll' || v === 'page')
|
|
239
|
-
return 'linear';
|
|
240
|
-
return null;
|
|
241
|
-
}
|
|
242
299
|
// ── Component ──────────────────────────────────────────────────────
|
|
243
300
|
/**
|
|
244
|
-
* Live preview panel that renders the current document as a slideshow
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
* Includes a viewport format dropdown above the player. The default
|
|
249
|
-
* format can be hinted via YAML frontmatter `document-render-as:`.
|
|
301
|
+
* Live preview panel that renders the current document as a slideshow
|
|
302
|
+
* or document view. Controls (viewport, mode, theme, transform, captions)
|
|
303
|
+
* are rendered in the main toolbar via PreviewToolbarControls.
|
|
250
304
|
*/
|
|
251
|
-
export function PreviewPanel({ basePath = '/', className }) {
|
|
305
|
+
export function PreviewPanel({ basePath = '/', className, container }) {
|
|
252
306
|
const { doc, parseError, isParsing } = useEditorContext();
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
//
|
|
260
|
-
|
|
261
|
-
//
|
|
262
|
-
|
|
263
|
-
setSelectedPreset(null);
|
|
264
|
-
}, [frontmatterPreset]);
|
|
265
|
-
// Active preset: explicit user choice > frontmatter hint > landscape
|
|
266
|
-
const activePreset = selectedPreset ?? frontmatterPreset ?? 'landscape';
|
|
267
|
-
const activeViewport = VIEWPORT_PRESETS[activePreset];
|
|
268
|
-
// ── Display mode (video vs slideshow) ──────────────────────────
|
|
269
|
-
// Determine the frontmatter-hinted display mode (if any)
|
|
270
|
-
const frontmatterDisplayMode = useMemo(() => {
|
|
271
|
-
if (!doc?.frontmatter)
|
|
272
|
-
return null;
|
|
273
|
-
return resolveDisplayMode(doc.frontmatter['display-mode']);
|
|
274
|
-
}, [doc?.frontmatter]);
|
|
275
|
-
// Track user-selected display mode; null means "use frontmatter or default"
|
|
276
|
-
const [selectedDisplayMode, setSelectedDisplayMode] = useState(null);
|
|
277
|
-
// When frontmatter display mode changes and user hasn't explicitly chosen, sync
|
|
307
|
+
const { activeViewport, activeDisplayMode, activeTheme, activeTransformStyle, activeCaptionStyle, } = usePreviewSettings();
|
|
308
|
+
// Build the player-ready Doc whenever the parsed doc changes.
|
|
309
|
+
// Transform runs on the ORIGINAL doc (which has block.contents with
|
|
310
|
+
// markdown body text) so the content extractor can analyze it.
|
|
311
|
+
// Then buildPreviewDoc converts the result for DocPlayer.
|
|
312
|
+
//
|
|
313
|
+
// Audio mapping is async (reads container files), so we use a two-phase
|
|
314
|
+
// approach: first build the base doc synchronously, then resolve audio
|
|
315
|
+
// in an effect and update the state.
|
|
316
|
+
const [previewDoc, setPreviewDoc] = useState(null);
|
|
278
317
|
useEffect(() => {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}, [doc]);
|
|
318
|
+
if (!doc || !doc.blocks.length) {
|
|
319
|
+
setPreviewDoc(null);
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
let sourceDoc = doc;
|
|
323
|
+
if (activeTransformStyle) {
|
|
324
|
+
const result = applyTransform(doc, activeTransformStyle);
|
|
325
|
+
sourceDoc = result.doc;
|
|
326
|
+
}
|
|
327
|
+
// If we have a container, try to resolve audio mapping before building preview
|
|
328
|
+
if (container) {
|
|
329
|
+
let cancelled = false;
|
|
330
|
+
resolveAudioMapping(sourceDoc, container).then((audioDoc) => {
|
|
331
|
+
if (!cancelled) {
|
|
332
|
+
setPreviewDoc(buildPreviewDoc(audioDoc));
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
// Set an immediate preview without audio while mapping resolves
|
|
336
|
+
setPreviewDoc(buildPreviewDoc(sourceDoc));
|
|
337
|
+
return () => {
|
|
338
|
+
cancelled = true;
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
setPreviewDoc(buildPreviewDoc(sourceDoc));
|
|
342
|
+
}, [doc, activeTransformStyle, container]);
|
|
305
343
|
// Status overlays for non-ready states
|
|
306
344
|
if (isParsing) {
|
|
307
345
|
return (_jsx("div", { className: `squisq-preview-status ${className || ''}`, "data-testid": "preview-panel", children: _jsx("p", { children: "Parsing\u2026" }) }));
|
|
@@ -312,74 +350,20 @@ export function PreviewPanel({ basePath = '/', className }) {
|
|
|
312
350
|
if (!previewDoc) {
|
|
313
351
|
return (_jsx("div", { className: `squisq-preview-status ${className || ''}`, "data-testid": "preview-panel", children: _jsx("p", { children: "No content to preview. Start typing in the editor." }) }));
|
|
314
352
|
}
|
|
315
|
-
return (
|
|
353
|
+
return (_jsx("div", { className: `squisq-preview-container ${className || ''}`, "data-testid": "preview-panel", style: {
|
|
316
354
|
width: '100%',
|
|
317
355
|
height: '100%',
|
|
318
356
|
display: 'flex',
|
|
319
357
|
flexDirection: 'column',
|
|
320
358
|
overflow: 'hidden',
|
|
321
359
|
background: 'var(--squisq-bg, #f5f5f5)',
|
|
322
|
-
}, children:
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}, children: [_jsx("label", { htmlFor: "viewport-preset", style: { color: 'var(--squisq-text-muted, #6b7280)' }, children: "Format:" }), _jsx("select", { id: "viewport-preset", value: activePreset, onChange: (e) => setSelectedPreset(e.target.value), style: {
|
|
331
|
-
padding: '3px 8px',
|
|
332
|
-
borderRadius: '4px',
|
|
333
|
-
border: '1px solid var(--squisq-border, #d1d5db)',
|
|
334
|
-
background: 'var(--squisq-input-bg, #fff)',
|
|
335
|
-
color: 'var(--squisq-text, #1f2937)',
|
|
336
|
-
fontSize: '13px',
|
|
337
|
-
cursor: 'pointer',
|
|
338
|
-
}, children: VIEWPORT_OPTIONS.map((opt) => (_jsx("option", { value: opt.key, children: opt.label }, opt.key))) }), frontmatterPreset && selectedPreset === null && (_jsx("span", { style: {
|
|
339
|
-
fontSize: '11px',
|
|
340
|
-
color: 'var(--squisq-text-muted, #9ca3af)',
|
|
341
|
-
fontStyle: 'italic',
|
|
342
|
-
}, children: "(from frontmatter)" })), _jsx("span", { style: {
|
|
343
|
-
width: '1px',
|
|
344
|
-
height: '18px',
|
|
345
|
-
background: 'var(--squisq-border, #d1d5db)',
|
|
346
|
-
margin: '0 4px',
|
|
347
|
-
} }), _jsx("label", { htmlFor: "display-mode", style: { color: 'var(--squisq-text-muted, #6b7280)' }, children: "Mode:" }), _jsx("select", { id: "display-mode", value: activeDisplayMode, onChange: (e) => setSelectedDisplayMode(e.target.value), style: {
|
|
348
|
-
padding: '3px 8px',
|
|
349
|
-
borderRadius: '4px',
|
|
350
|
-
border: '1px solid var(--squisq-border, #d1d5db)',
|
|
351
|
-
background: 'var(--squisq-input-bg, #fff)',
|
|
352
|
-
color: 'var(--squisq-text, #1f2937)',
|
|
353
|
-
fontSize: '13px',
|
|
354
|
-
cursor: 'pointer',
|
|
355
|
-
}, children: DISPLAY_MODE_OPTIONS.map((opt) => (_jsx("option", { value: opt.key, children: opt.label }, opt.key))) }), frontmatterDisplayMode && selectedDisplayMode === null && (_jsx("span", { style: {
|
|
356
|
-
fontSize: '11px',
|
|
357
|
-
color: 'var(--squisq-text-muted, #9ca3af)',
|
|
358
|
-
fontStyle: 'italic',
|
|
359
|
-
}, children: "(from frontmatter)" })), _jsx("span", { style: {
|
|
360
|
-
width: '1px',
|
|
361
|
-
height: '18px',
|
|
362
|
-
background: 'var(--squisq-border, #d1d5db)',
|
|
363
|
-
margin: '0 4px',
|
|
364
|
-
} }), _jsx("label", { htmlFor: "theme-select", style: { color: 'var(--squisq-text-muted, #6b7280)' }, children: "Theme:" }), _jsx("select", { id: "theme-select", value: activeThemeId, onChange: (e) => setSelectedThemeId(e.target.value), style: {
|
|
365
|
-
padding: '3px 8px',
|
|
366
|
-
borderRadius: '4px',
|
|
367
|
-
border: '1px solid var(--squisq-border, #d1d5db)',
|
|
368
|
-
background: 'var(--squisq-input-bg, #fff)',
|
|
369
|
-
color: 'var(--squisq-text, #1f2937)',
|
|
370
|
-
fontSize: '13px',
|
|
371
|
-
cursor: 'pointer',
|
|
372
|
-
}, children: THEME_OPTIONS.map((opt) => (_jsx("option", { value: opt.key, children: opt.label }, opt.key))) }), frontmatterThemeId && selectedThemeId === null && (_jsx("span", { style: {
|
|
373
|
-
fontSize: '11px',
|
|
374
|
-
color: 'var(--squisq-text-muted, #9ca3af)',
|
|
375
|
-
fontStyle: 'italic',
|
|
376
|
-
}, children: "(from frontmatter)" }))] }), _jsx("div", { className: "squisq-preview-player", style: {
|
|
377
|
-
flex: 1,
|
|
378
|
-
display: 'flex',
|
|
379
|
-
alignItems: activeDisplayMode === 'linear' ? 'stretch' : 'center',
|
|
380
|
-
justifyContent: 'center',
|
|
381
|
-
overflow: 'hidden',
|
|
382
|
-
minHeight: 0,
|
|
383
|
-
}, children: activeDisplayMode === 'linear' ? (_jsx(LinearDocView, { doc: doc, basePath: basePath, viewport: activeViewport, theme: activeTheme })) : (_jsx(DocPlayer, { script: previewDoc, basePath: basePath, showControls: true, muted: true, forceViewport: activeViewport, displayMode: activeDisplayMode, theme: activeTheme })) })] }));
|
|
360
|
+
}, children: _jsx("div", { className: "squisq-preview-player", style: {
|
|
361
|
+
flex: 1,
|
|
362
|
+
display: 'flex',
|
|
363
|
+
alignItems: activeDisplayMode === 'linear' ? 'stretch' : 'center',
|
|
364
|
+
justifyContent: 'center',
|
|
365
|
+
overflow: 'hidden',
|
|
366
|
+
minHeight: 0,
|
|
367
|
+
}, children: activeDisplayMode === 'linear' ? (_jsx(LinearDocView, { doc: doc, basePath: basePath, viewport: activeViewport, theme: activeTheme })) : (_jsx(DocPlayer, { script: previewDoc, basePath: basePath, showControls: true, muted: true, forceViewport: activeViewport, displayMode: activeDisplayMode, theme: activeTheme, captionStyle: activeCaptionStyle })) }) }));
|
|
384
368
|
}
|
|
385
369
|
//# sourceMappingURL=PreviewPanel.js.map
|
package/dist/PreviewPanel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../src/PreviewPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../src/PreviewPanel.tsx"],"names":[],"mappings":"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"}
|
package/dist/Toolbar.d.ts
CHANGED
|
@@ -6,14 +6,25 @@
|
|
|
6
6
|
* In Raw mode, appends markdown syntax at the cursor (or end of source).
|
|
7
7
|
* Hidden in Preview mode.
|
|
8
8
|
*/
|
|
9
|
+
import type { ReactNode } from 'react';
|
|
9
10
|
export interface ToolbarProps {
|
|
10
11
|
/** Additional class name */
|
|
11
12
|
className?: string;
|
|
13
|
+
/** Whether the Files panel is currently shown */
|
|
14
|
+
showFiles?: boolean;
|
|
15
|
+
/** Toggle the Files panel. When provided, a "Files" button appears in the toolbar. */
|
|
16
|
+
onToggleFiles?: () => void;
|
|
17
|
+
/** Content rendered at the left edge of the toolbar, before the view tabs. */
|
|
18
|
+
slotLeft?: ReactNode;
|
|
19
|
+
/** Content rendered after the formatting controls (in the middle area). */
|
|
20
|
+
slotAfterActions?: ReactNode;
|
|
21
|
+
/** Content rendered at the rightmost end of the toolbar, after all other elements. */
|
|
22
|
+
slotRight?: ReactNode;
|
|
12
23
|
}
|
|
13
24
|
/**
|
|
14
25
|
* Formatting toolbar.
|
|
15
26
|
* - WYSIWYG: calls Tiptap chain commands (toggleBold, etc.)
|
|
16
27
|
* - Raw: appends markdown syntax to the source
|
|
17
28
|
*/
|
|
18
|
-
export declare function Toolbar({ className }: ToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare function Toolbar({ className, showFiles, onToggleFiles, slotLeft, slotAfterActions, slotRight, }: ToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
19
30
|
//# sourceMappingURL=Toolbar.d.ts.map
|
package/dist/Toolbar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../src/Toolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,sFAAsF;IACtF,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAuFD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,SAAS,EACT,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,SAAS,GACV,EAAE,YAAY,2CAqXd"}
|
package/dist/Toolbar.js
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Toolbar
|
|
4
|
-
*
|
|
5
|
-
* Formatting toolbar that provides common markdown editing actions.
|
|
6
|
-
* In WYSIWYG mode, uses Tiptap's chain commands to toggle marks / set nodes.
|
|
7
|
-
* In Raw mode, appends markdown syntax at the cursor (or end of source).
|
|
8
|
-
* Hidden in Preview mode.
|
|
9
|
-
*/
|
|
10
2
|
import { useCallback, useEffect, useReducer } from 'react';
|
|
11
3
|
import { useEditorContext } from './EditorContext';
|
|
12
4
|
import { getAvailableTemplates } from '@bendyline/squisq/doc';
|
|
13
5
|
const VIEWS = [
|
|
14
6
|
{ id: 'wysiwyg', label: 'Editor', shortcut: '⌘1' },
|
|
15
7
|
{ id: 'raw', label: 'Raw', shortcut: '⌘2' },
|
|
16
|
-
{ id: 'preview', label: '
|
|
8
|
+
{ id: 'preview', label: 'Play', shortcut: '⌘3' },
|
|
17
9
|
];
|
|
18
10
|
const BUTTONS = [
|
|
19
11
|
// Format group
|
|
@@ -91,7 +83,7 @@ function isTiptapActive(editor, id) {
|
|
|
91
83
|
* - WYSIWYG: calls Tiptap chain commands (toggleBold, etc.)
|
|
92
84
|
* - Raw: appends markdown syntax to the source
|
|
93
85
|
*/
|
|
94
|
-
export function Toolbar({ className }) {
|
|
86
|
+
export function Toolbar({ className, showFiles, onToggleFiles, slotLeft, slotAfterActions, slotRight, }) {
|
|
95
87
|
const { activeView, setActiveView, markdownSource, setMarkdownSource, tiptapEditor, monacoEditor, } = useEditorContext();
|
|
96
88
|
// Force re-render when Tiptap selection or formatting state changes
|
|
97
89
|
const [, forceUpdate] = useReducer((c) => c + 1, 0);
|
|
@@ -342,9 +334,9 @@ export function Toolbar({ className }) {
|
|
|
342
334
|
}
|
|
343
335
|
};
|
|
344
336
|
const templateNames = getAvailableTemplates();
|
|
345
|
-
return (_jsxs("div", { className: `squisq-toolbar ${className || ''}`, role: "toolbar", "aria-label": "Formatting toolbar", children: [_jsx("div", { className: "squisq-toolbar-view-tabs", role: "tablist", "aria-label": "Editor view", children: VIEWS.map((view) => (_jsx("button", { role: "tab", "data-view": view.id, "aria-selected": activeView === view.id, className: `squisq-toolbar-view-tab${activeView === view.id ? ' squisq-toolbar-view-tab--active' : ''}`, onClick: () => setActiveView(view.id), title: `${view.label} (${view.shortcut})`, children: view.label }, view.id))) }), !isPreview && (_jsxs("div", { className: "squisq-toolbar-actions", children: [groups.map((group, gi) => (_jsxs("div", { className: "squisq-toolbar-group", children: [gi > 0 && _jsx("div", { className: "squisq-toolbar-separator" }), BUTTONS.filter((b) => b.group === group).map((btn) => {
|
|
337
|
+
return (_jsxs("div", { className: `squisq-toolbar ${className || ''}`, role: "toolbar", "aria-label": "Formatting toolbar", children: [slotLeft, _jsx("div", { className: "squisq-toolbar-view-tabs", role: "tablist", "aria-label": "Editor view", children: VIEWS.map((view) => (_jsx("button", { role: "tab", "data-view": view.id, "aria-selected": activeView === view.id, className: `squisq-toolbar-view-tab${activeView === view.id ? ' squisq-toolbar-view-tab--active' : ''}`, onClick: () => setActiveView(view.id), title: `${view.label} (${view.shortcut})`, children: view.label }, view.id))) }), !isPreview && (_jsxs("div", { className: "squisq-toolbar-actions", children: [groups.map((group, gi) => (_jsxs("div", { className: "squisq-toolbar-group", children: [gi > 0 && _jsx("div", { className: "squisq-toolbar-separator" }), BUTTONS.filter((b) => b.group === group).map((btn) => {
|
|
346
338
|
const active = isWysiwyg ? isTiptapActive(tiptapEditor, btn.id) : false;
|
|
347
339
|
return (_jsx("button", { className: `squisq-toolbar-button${active ? ' squisq-toolbar-button--active' : ''}`, title: btn.title, onClick: () => handleAction(btn.id), "aria-label": btn.title, "aria-pressed": active, style: btn.iconStyle, children: btn.icon }, btn.id));
|
|
348
|
-
})] }, group))), currentTemplate !== null && (_jsxs(_Fragment, { children: [_jsx("div", { className: "squisq-toolbar-separator" }), _jsx("div", { className: "squisq-toolbar-group squisq-template-picker", children: _jsxs("label", { className: "squisq-template-picker-label", title: "Block template for this heading", children: ["Template:", _jsxs("select", { className: "squisq-template-picker-select", value: currentTemplate, onChange: (e) => handleTemplatePick(e.target.value), children: [_jsx("option", { value: "", children: "\u2014 none \u2014" }), templateNames.map((name) => (_jsx("option", { value: name, children: name }, name)))] })] }) })] }))] }))] }));
|
|
340
|
+
})] }, group))), currentTemplate !== null && (_jsxs(_Fragment, { children: [_jsx("div", { className: "squisq-toolbar-separator" }), _jsx("div", { className: "squisq-toolbar-group squisq-template-picker", children: _jsxs("label", { className: "squisq-template-picker-label", title: "Block template for this heading", children: ["Template:", _jsxs("select", { className: "squisq-template-picker-select", value: currentTemplate, onChange: (e) => handleTemplatePick(e.target.value), children: [_jsx("option", { value: "", children: "\u2014 none \u2014" }), templateNames.map((name) => (_jsx("option", { value: name, children: name }, name)))] })] }) })] }))] })), slotAfterActions, _jsx("div", { style: { flex: 1 } }), onToggleFiles && (_jsx("button", { className: `squisq-toolbar-button squisq-toolbar-files-toggle${showFiles ? ' squisq-toolbar-button--active' : ''}`, onClick: onToggleFiles, title: showFiles ? 'Hide Files panel' : 'Show Files panel', "aria-pressed": showFiles, "aria-label": "Toggle Files panel", children: '\u{1F4CE}' })), slotRight] }));
|
|
349
341
|
}
|
|
350
342
|
//# sourceMappingURL=Toolbar.js.map
|