@embeddables/cli 0.15.1-beta.0 → 0.15.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/build-workbench.d.ts +5 -0
- package/dist/commands/build-workbench.d.ts.map +1 -0
- package/dist/commands/build-workbench.js +117 -0
- package/dist/commands/build-workbench.js.map +1 -0
- package/dist/compiler/flatten.js +1 -0
- package/dist/helpers/TEMP helpers file.d.ts +1 -0
- package/dist/helpers/TEMP helpers file.d.ts.map +1 -0
- package/dist/helpers/TEMP helpers file.js +1 -0
- package/dist/workbench/FeedbackPanel.d.ts.map +1 -1
- package/dist/workbench/FeedbackPanel.js +30 -7
- package/dist/workbench/FeedbackPanel.js.map +1 -1
- package/dist/workbench/PageThumbnailStrip.d.ts +18 -0
- package/dist/workbench/PageThumbnailStrip.d.ts.map +1 -0
- package/dist/workbench/PageThumbnailStrip.js +315 -0
- package/dist/workbench/PageThumbnailStrip.js.map +1 -0
- package/dist/workbench/cloudflare/public/_headers +4 -0
- package/dist/workbench/cloudflare/public/workbench.css +2148 -0
- package/dist/workbench/cloudflare/public/workbench.js +709 -0
- package/dist/workbench/cloudflare/wrangler.jsonc +9 -0
- package/dist/workbench/cloudflare-worker/README.md +31 -0
- package/dist/workbench/cloudflare-worker/public/workbench.css +1614 -0
- package/dist/workbench/cloudflare-worker/public/workbench.js +77 -0
- package/dist/workbench/cloudflare-worker/worker.js +40 -0
- package/dist/workbench/cloudflare-worker/wrangler.toml +10 -0
- package/dist/workbench/conditionEvaluator.d.ts +6 -0
- package/dist/workbench/conditionEvaluator.d.ts.map +1 -0
- package/dist/workbench/conditionEvaluator.js +111 -0
- package/dist/workbench/conditionEvaluator.js.map +1 -0
- package/dist/workbench/pageKeyDisplay.d.ts +9 -0
- package/dist/workbench/pageKeyDisplay.d.ts.map +1 -0
- package/dist/workbench/pageKeyDisplay.js +18 -0
- package/dist/workbench/pageKeyDisplay.js.map +1 -0
- package/dist/workbench/types.d.ts +29 -0
- package/dist/workbench/types.d.ts.map +1 -0
- package/dist/workbench/types.js +2 -0
- package/dist/workbench/types.js.map +1 -0
- package/dist/workbench/workbench.css +2148 -0
- package/dist/workbench/workbench.js +709 -0
- package/package.json +1 -1
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* PageThumbnailStrip — horizontal row of page thumbnails below the Workbench.
|
|
4
|
+
* Renders each page as a sandboxed iframe preview when Savvy.getStaticHtml is available,
|
|
5
|
+
* otherwise shows a fallback card with page key and index.
|
|
6
|
+
* Clicking a thumbnail navigates to that page via Savvy.goToPage.
|
|
7
|
+
* Uses horizontal virtualization for long funnels (only visible thumbnails mount).
|
|
8
|
+
*/
|
|
9
|
+
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
10
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
11
|
+
import { formatPageKeyMiddleEllipsis } from './pageKeyDisplay.js';
|
|
12
|
+
import { doesElementPassConditions } from './conditionEvaluator.js';
|
|
13
|
+
const USERDATA_UPDATED_EVENT = 'embeddables:userdata_updated';
|
|
14
|
+
/** Default viewport width when flow has no breakpoints. Matches common embeddable config. */
|
|
15
|
+
const DEFAULT_VIEWPORT_WIDTH = 800;
|
|
16
|
+
/** Reference aspect ratio for thumbnail preview (matches prior fixed 120×80 cards). */
|
|
17
|
+
const THUMB_ASPECT_W = 120;
|
|
18
|
+
const THUMB_ASPECT_H = 80;
|
|
19
|
+
/** Horizontal gap between cards (Tailwind `gap-2`). */
|
|
20
|
+
const THUMB_GAP_PX = 8;
|
|
21
|
+
/** Horizontal padding of the scroll row (Tailwind `px-3`). */
|
|
22
|
+
const SCROLL_PADDING_X_PX = 12;
|
|
23
|
+
/** Resize handle + scroll row padding (px). */
|
|
24
|
+
const STRIP_HANDLE_ROW_PX = 12;
|
|
25
|
+
/** Must match label row (compact vs h-8, but tall enough for descenders). */
|
|
26
|
+
const LABEL_ROW_PX = 20;
|
|
27
|
+
const SCROLL_PADDING_TOP_PX = 4;
|
|
28
|
+
const SCROLL_PADDING_BOTTOM_PX = 8;
|
|
29
|
+
/** Matches inline `borderWidth: 4` on each side of the card button. */
|
|
30
|
+
const THUMB_CARD_BORDER_PX = 4;
|
|
31
|
+
/** Top + bottom border inside the button (`border-box` height includes these). */
|
|
32
|
+
const THUMB_CARD_VERTICAL_BORDER_PX = 2 * THUMB_CARD_BORDER_PX;
|
|
33
|
+
/** Minimum iframe preview area so cards are not clipped. */
|
|
34
|
+
const MIN_PREVIEW_HEIGHT_PX = 32;
|
|
35
|
+
/**
|
|
36
|
+
* Minimum total strip height (handle + padding + preview + label + card vertical borders).
|
|
37
|
+
*/
|
|
38
|
+
export const MIN_THUMBNAIL_STRIP_HEIGHT_PX = STRIP_HANDLE_ROW_PX +
|
|
39
|
+
SCROLL_PADDING_TOP_PX +
|
|
40
|
+
SCROLL_PADDING_BOTTOM_PX +
|
|
41
|
+
LABEL_ROW_PX +
|
|
42
|
+
MIN_PREVIEW_HEIGHT_PX +
|
|
43
|
+
THUMB_CARD_VERTICAL_BORDER_PX;
|
|
44
|
+
/** Max characters for the page key in the label (middle ellipsis; index is separate). */
|
|
45
|
+
const PAGE_KEY_LABEL_MAX_CHARS = 16;
|
|
46
|
+
/** Virtualizer overscan (cards each side beyond viewport). */
|
|
47
|
+
const VIRTUAL_OVERSCAN = 6;
|
|
48
|
+
function shouldShowPageDimmed(page) {
|
|
49
|
+
if (page.hide)
|
|
50
|
+
return true;
|
|
51
|
+
if (page.hasConditions && !page.passesConditions)
|
|
52
|
+
return true;
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
function getExperimentKeys(flowJson) {
|
|
56
|
+
if (!flowJson)
|
|
57
|
+
return [];
|
|
58
|
+
const experiments = flowJson.experiments ?? [];
|
|
59
|
+
const connectedExperiments = flowJson.connected_experiments ?? [];
|
|
60
|
+
return [
|
|
61
|
+
...experiments.map((exp) => exp.key),
|
|
62
|
+
...connectedExperiments.map((exp) => exp.experiment_key),
|
|
63
|
+
];
|
|
64
|
+
}
|
|
65
|
+
function hasExperimentCondition({ conditions, experimentKeys, }) {
|
|
66
|
+
if (!conditions?.length || !experimentKeys.length)
|
|
67
|
+
return false;
|
|
68
|
+
return conditions.some((c) => experimentKeys.includes(c.key));
|
|
69
|
+
}
|
|
70
|
+
function HiddenBadge() {
|
|
71
|
+
return (_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94" }), _jsx("path", { d: "M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19" }), _jsx("line", { x1: "1", y1: "1", x2: "23", y2: "23" })] }));
|
|
72
|
+
}
|
|
73
|
+
/** Funnel / filter icon for “has routing conditions”. */
|
|
74
|
+
function ConditionBadge() {
|
|
75
|
+
return (_jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.25", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M22 3H2l8 9.46V19l4 2v-8.54L22 3z" }) }));
|
|
76
|
+
}
|
|
77
|
+
function ExperimentBadge() {
|
|
78
|
+
return (_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M9 3h6v7l4 9H5l4-9V3z" }), _jsx("line", { x1: "9", y1: "3", x2: "15", y2: "3" })] }));
|
|
79
|
+
}
|
|
80
|
+
/** Derive viewport width from flow breakpoints (largest max_width) or default. */
|
|
81
|
+
function getViewportWidth(flow) {
|
|
82
|
+
const breakpoints = flow?.breakpoints;
|
|
83
|
+
if (!breakpoints?.length)
|
|
84
|
+
return DEFAULT_VIEWPORT_WIDTH;
|
|
85
|
+
const max = Math.max(...breakpoints.map((b) => b.max_width));
|
|
86
|
+
return max > 0 ? max : DEFAULT_VIEWPORT_WIDTH;
|
|
87
|
+
}
|
|
88
|
+
export function PageThumbnailStrip({ embeddableId, stripHeight, onStripHeightChange, onStripResizeEnd, workbenchCollapsed, }) {
|
|
89
|
+
const [pages, setPages] = useState([]);
|
|
90
|
+
const [currentPageId, setCurrentPageId] = useState('');
|
|
91
|
+
const [viewportWidth, setViewportWidth] = useState(DEFAULT_VIEWPORT_WIDTH);
|
|
92
|
+
const scrollParentRef = useRef(null);
|
|
93
|
+
const htmlCacheRef = useRef(new Map());
|
|
94
|
+
const [, setCacheVersion] = useState(0);
|
|
95
|
+
const stripDragRef = useRef(null);
|
|
96
|
+
const liveStripHeightRef = useRef(stripHeight);
|
|
97
|
+
const savvy = window.Savvy;
|
|
98
|
+
liveStripHeightRef.current = stripHeight;
|
|
99
|
+
const scrollRowInnerHeight = useMemo(() => Math.max(LABEL_ROW_PX + MIN_PREVIEW_HEIGHT_PX + THUMB_CARD_VERTICAL_BORDER_PX, stripHeight -
|
|
100
|
+
STRIP_HANDLE_ROW_PX -
|
|
101
|
+
SCROLL_PADDING_TOP_PX -
|
|
102
|
+
SCROLL_PADDING_BOTTOM_PX), [stripHeight]);
|
|
103
|
+
/** Preview area only — label + preview + button top/bottom border must equal scroll row height. */
|
|
104
|
+
const previewHeight = useMemo(() => Math.max(MIN_PREVIEW_HEIGHT_PX, scrollRowInnerHeight - LABEL_ROW_PX - THUMB_CARD_VERTICAL_BORDER_PX), [scrollRowInnerHeight]);
|
|
105
|
+
const thumbDisplayWidth = useMemo(() => (previewHeight * THUMB_ASPECT_W) / THUMB_ASPECT_H, [previewHeight]);
|
|
106
|
+
/** Width inside the card after `border-box` borders — iframe/overlay must use this, not `thumbDisplayWidth`. */
|
|
107
|
+
const innerPreviewWidth = useMemo(() => Math.max(1, thumbDisplayWidth - 2 * THUMB_CARD_BORDER_PX), [thumbDisplayWidth]);
|
|
108
|
+
const virtualizer = useVirtualizer({
|
|
109
|
+
count: pages.length,
|
|
110
|
+
getScrollElement: () => scrollParentRef.current,
|
|
111
|
+
estimateSize: () => thumbDisplayWidth,
|
|
112
|
+
gap: THUMB_GAP_PX,
|
|
113
|
+
horizontal: true,
|
|
114
|
+
overscan: VIRTUAL_OVERSCAN,
|
|
115
|
+
paddingStart: SCROLL_PADDING_X_PX,
|
|
116
|
+
paddingEnd: SCROLL_PADDING_X_PX,
|
|
117
|
+
getItemKey: (index) => pages[index]?.id ?? index,
|
|
118
|
+
});
|
|
119
|
+
const refresh = useCallback(() => {
|
|
120
|
+
if (!savvy?.getFlowJson || !savvy?.getUserData)
|
|
121
|
+
return;
|
|
122
|
+
try {
|
|
123
|
+
const flowJson = savvy.getFlowJson(embeddableId);
|
|
124
|
+
const userData = savvy.getUserData(embeddableId);
|
|
125
|
+
const experimentKeys = getExperimentKeys(flowJson);
|
|
126
|
+
if (flowJson?.pages) {
|
|
127
|
+
setPages(flowJson.pages.map((p) => ({
|
|
128
|
+
id: p.id,
|
|
129
|
+
key: p.key,
|
|
130
|
+
hide: p.hide,
|
|
131
|
+
hasConditions: Boolean(p.conditions?.length),
|
|
132
|
+
hasExperimentConditions: hasExperimentCondition({
|
|
133
|
+
conditions: p.conditions,
|
|
134
|
+
experimentKeys,
|
|
135
|
+
}),
|
|
136
|
+
passesConditions: doesElementPassConditions({
|
|
137
|
+
conditions: p.conditions,
|
|
138
|
+
userData: userData,
|
|
139
|
+
}),
|
|
140
|
+
})));
|
|
141
|
+
}
|
|
142
|
+
setViewportWidth(getViewportWidth(flowJson));
|
|
143
|
+
if (userData?.current_page_id) {
|
|
144
|
+
setCurrentPageId(userData.current_page_id);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// ignore errors
|
|
149
|
+
}
|
|
150
|
+
}, [embeddableId, savvy]);
|
|
151
|
+
useEffect(() => {
|
|
152
|
+
const timer = setTimeout(refresh, 100);
|
|
153
|
+
return () => clearTimeout(timer);
|
|
154
|
+
}, [refresh]);
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
const handler = (event) => {
|
|
157
|
+
const detail = event?.detail;
|
|
158
|
+
const eventEmbeddableId = detail?.embeddableId;
|
|
159
|
+
if (typeof eventEmbeddableId === 'string' &&
|
|
160
|
+
eventEmbeddableId.length > 0 &&
|
|
161
|
+
eventEmbeddableId !== embeddableId) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
refresh();
|
|
165
|
+
};
|
|
166
|
+
window.addEventListener(USERDATA_UPDATED_EVENT, handler);
|
|
167
|
+
return () => window.removeEventListener(USERDATA_UPDATED_EVENT, handler);
|
|
168
|
+
}, [embeddableId, refresh]);
|
|
169
|
+
const virtualItems = virtualizer.getVirtualItems();
|
|
170
|
+
const virtualLoadSignature = virtualItems.map((v) => v.index).join(',');
|
|
171
|
+
// Lazy-load static HTML only for visible (and overscanned) thumbnails.
|
|
172
|
+
useEffect(() => {
|
|
173
|
+
if (!savvy?.getStaticHtml || pages.length === 0)
|
|
174
|
+
return;
|
|
175
|
+
const loadIndices = () => {
|
|
176
|
+
const fromVirtual = virtualizer.getVirtualItems().map((v) => v.index);
|
|
177
|
+
if (fromVirtual.length > 0)
|
|
178
|
+
return fromVirtual;
|
|
179
|
+
return Array.from({ length: Math.min(pages.length, VIRTUAL_OVERSCAN * 2 + 1) }, (_, i) => i);
|
|
180
|
+
};
|
|
181
|
+
let changed = false;
|
|
182
|
+
for (const index of loadIndices()) {
|
|
183
|
+
const page = pages[index];
|
|
184
|
+
if (!page || htmlCacheRef.current.has(page.id))
|
|
185
|
+
continue;
|
|
186
|
+
const html = savvy.getStaticHtml?.(embeddableId, page.id);
|
|
187
|
+
if (html != null && html !== '') {
|
|
188
|
+
htmlCacheRef.current.set(page.id, html);
|
|
189
|
+
changed = true;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (changed) {
|
|
193
|
+
setCacheVersion((v) => v + 1);
|
|
194
|
+
}
|
|
195
|
+
}, [embeddableId, pages, savvy, virtualLoadSignature]);
|
|
196
|
+
useEffect(() => {
|
|
197
|
+
const onPointerMove = (event) => {
|
|
198
|
+
const drag = stripDragRef.current;
|
|
199
|
+
if (!drag || event.pointerId !== drag.pointerId)
|
|
200
|
+
return;
|
|
201
|
+
const delta = drag.startY - event.clientY;
|
|
202
|
+
const maxStrip = Math.min(420, Math.floor(window.innerHeight * 0.55));
|
|
203
|
+
const nextHeight = Math.max(MIN_THUMBNAIL_STRIP_HEIGHT_PX, Math.min(maxStrip, drag.startHeight + delta));
|
|
204
|
+
liveStripHeightRef.current = nextHeight;
|
|
205
|
+
onStripHeightChange(nextHeight);
|
|
206
|
+
};
|
|
207
|
+
const endStripDrag = (event) => {
|
|
208
|
+
const drag = stripDragRef.current;
|
|
209
|
+
if (!drag || event.pointerId !== drag.pointerId)
|
|
210
|
+
return;
|
|
211
|
+
stripDragRef.current = null;
|
|
212
|
+
try {
|
|
213
|
+
document.body.style.userSelect = '';
|
|
214
|
+
document.body.style.cursor = '';
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// ignore
|
|
218
|
+
}
|
|
219
|
+
onStripResizeEnd(liveStripHeightRef.current);
|
|
220
|
+
};
|
|
221
|
+
window.addEventListener('pointermove', onPointerMove);
|
|
222
|
+
window.addEventListener('pointerup', endStripDrag);
|
|
223
|
+
window.addEventListener('pointercancel', endStripDrag);
|
|
224
|
+
return () => {
|
|
225
|
+
if (stripDragRef.current !== null) {
|
|
226
|
+
stripDragRef.current = null;
|
|
227
|
+
onStripResizeEnd(liveStripHeightRef.current);
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
document.body.style.userSelect = '';
|
|
231
|
+
document.body.style.cursor = '';
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// ignore
|
|
235
|
+
}
|
|
236
|
+
window.removeEventListener('pointermove', onPointerMove);
|
|
237
|
+
window.removeEventListener('pointerup', endStripDrag);
|
|
238
|
+
window.removeEventListener('pointercancel', endStripDrag);
|
|
239
|
+
};
|
|
240
|
+
}, [onStripHeightChange, onStripResizeEnd]);
|
|
241
|
+
useEffect(() => {
|
|
242
|
+
if (pages.length === 0)
|
|
243
|
+
return;
|
|
244
|
+
const idx = pages.findIndex((p) => p.id === currentPageId);
|
|
245
|
+
if (idx < 0)
|
|
246
|
+
return;
|
|
247
|
+
virtualizer.scrollToIndex(idx, { align: 'center', behavior: 'smooth' });
|
|
248
|
+
}, [currentPageId, pages, virtualizer]);
|
|
249
|
+
const handleClick = (pageId) => {
|
|
250
|
+
if (savvy?.goToPage) {
|
|
251
|
+
savvy.goToPage(embeddableId, pageId);
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
if (pages.length === 0)
|
|
255
|
+
return null;
|
|
256
|
+
/** 1px line above thumbnails; notch is centered on this line (half above, half below). */
|
|
257
|
+
const topDividerClass = workbenchCollapsed ? 'bg-white/25' : 'bg-white/10';
|
|
258
|
+
return (_jsxs("div", { className: "relative flex shrink-0 flex-col overflow-visible bg-slate-950/70", style: { height: stripHeight }, children: [_jsx("div", { className: `pointer-events-none absolute top-0 right-0 left-0 z-10 h-px ${topDividerClass}`, "aria-hidden": true }), _jsx("div", { role: "separator", "aria-orientation": "horizontal", title: "Drag to resize page thumbnail strip", onPointerDown: (event) => {
|
|
259
|
+
event.preventDefault();
|
|
260
|
+
event.stopPropagation();
|
|
261
|
+
stripDragRef.current = {
|
|
262
|
+
pointerId: event.pointerId,
|
|
263
|
+
startY: event.clientY,
|
|
264
|
+
startHeight: stripHeight,
|
|
265
|
+
};
|
|
266
|
+
try {
|
|
267
|
+
;
|
|
268
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
269
|
+
document.body.style.userSelect = 'none';
|
|
270
|
+
document.body.style.cursor = 'ns-resize';
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
// ignore
|
|
274
|
+
}
|
|
275
|
+
}, onClick: (event) => {
|
|
276
|
+
event.preventDefault();
|
|
277
|
+
event.stopPropagation();
|
|
278
|
+
}, className: "relative z-20 flex h-3 shrink-0 cursor-ns-resize touch-none items-center justify-center", children: _jsx("div", { className: "pointer-events-none absolute top-0 left-1/2 z-20 h-1.5 w-14 -translate-x-1/2 -translate-y-1/2 rounded-full border border-slate-500/90 bg-slate-500/95 shadow-sm" }) }), _jsx("div", { ref: scrollParentRef, className: "min-h-0 flex-1 overflow-x-auto overflow-y-hidden pb-2 pt-1", role: "tablist", "aria-label": "Page thumbnails", children: _jsx("div", { className: "relative h-full", style: {
|
|
279
|
+
width: virtualizer.getTotalSize(),
|
|
280
|
+
minWidth: '100%',
|
|
281
|
+
}, children: virtualItems.map((virtualItem) => {
|
|
282
|
+
const index = virtualItem.index;
|
|
283
|
+
const page = pages[index];
|
|
284
|
+
if (!page)
|
|
285
|
+
return null;
|
|
286
|
+
const isCurrent = page.id === currentPageId;
|
|
287
|
+
const isDimmed = shouldShowPageDimmed(page);
|
|
288
|
+
const html = htmlCacheRef.current.get(page.id);
|
|
289
|
+
const hasGetStaticHtml = typeof savvy?.getStaticHtml === 'function';
|
|
290
|
+
const keyDisplay = formatPageKeyMiddleEllipsis({
|
|
291
|
+
key: page.key,
|
|
292
|
+
maxChars: PAGE_KEY_LABEL_MAX_CHARS,
|
|
293
|
+
});
|
|
294
|
+
return (_jsx("div", { className: "absolute top-0 left-0 flex h-full min-w-0 max-w-full", style: {
|
|
295
|
+
width: virtualItem.size,
|
|
296
|
+
maxWidth: virtualItem.size,
|
|
297
|
+
transform: `translateX(${virtualItem.start}px)`,
|
|
298
|
+
}, children: _jsx("button", { type: "button", onClick: () => handleClick(page.id), role: "tab", "aria-selected": isCurrent, "aria-label": `Page ${index + 1}: ${page.key}${page.hide ? ' (hidden)' : page.hasConditions && !page.passesConditions ? ' (conditions not met)' : ''}`, className: `group relative box-border flex h-full min-h-0 max-h-full w-full min-w-0 shrink-0 cursor-pointer flex-col items-stretch overflow-hidden rounded-lg bg-white/5 transition-[box-shadow] duration-150 ${isCurrent
|
|
299
|
+
? 'shadow-[inset_0_0_0_1px_rgba(37,99,235,0.55)]'
|
|
300
|
+
: 'shadow-none'}`, style: {
|
|
301
|
+
width: thumbDisplayWidth,
|
|
302
|
+
maxWidth: thumbDisplayWidth,
|
|
303
|
+
boxSizing: 'border-box',
|
|
304
|
+
borderWidth: THUMB_CARD_BORDER_PX,
|
|
305
|
+
borderStyle: 'solid',
|
|
306
|
+
borderColor: isCurrent ? 'rgb(59 130 246)' : 'rgba(255 255 255 / 0.22)',
|
|
307
|
+
}, children: _jsxs("div", { className: "relative flex min-h-0 w-full min-w-0 flex-1 flex-col overflow-hidden", children: [(page.hide || page.hasConditions || page.hasExperimentConditions) && (_jsxs("div", { className: "absolute top-1 right-1 z-30 flex items-center gap-0.5 pointer-events-none", children: [page.hide && (_jsx("span", { className: "flex items-center justify-center rounded bg-black/70 p-0.5 text-white", title: "Hidden", children: _jsx(HiddenBadge, {}) })), page.hasConditions && (_jsx("span", { className: "flex items-center justify-center rounded bg-black/70 p-0.5 text-amber-400", title: "Has conditions", children: _jsx(ConditionBadge, {}) })), page.hasExperimentConditions && (_jsx("span", { className: "flex items-center justify-center rounded bg-black/70 p-0.5 text-purple-400", title: "Has experiment", children: _jsx(ExperimentBadge, {}) }))] })), _jsxs("div", { className: "relative z-0 w-full min-w-0 max-w-full shrink-0 overflow-hidden bg-slate-950/30", style: { height: previewHeight }, children: [isDimmed && (_jsx("div", { className: "pointer-events-none absolute inset-0 z-20 bg-black/60", "aria-hidden": true })), hasGetStaticHtml && html ? (_jsx("div", { className: "relative z-0 h-full min-h-0 w-full min-w-0 max-w-full overflow-hidden", children: _jsx("iframe", { srcDoc: html, title: `Preview: ${page.key}`, sandbox: "", className: "pointer-events-none relative z-0 block max-w-none", style: {
|
|
308
|
+
width: viewportWidth,
|
|
309
|
+
height: Math.round((viewportWidth * previewHeight) / innerPreviewWidth),
|
|
310
|
+
transform: `scale(${innerPreviewWidth / viewportWidth})`,
|
|
311
|
+
transformOrigin: 'top left',
|
|
312
|
+
} }) })) : (_jsx("div", { className: "flex h-full w-full items-center justify-center bg-slate-800/50 text-[10px] text-slate-500", children: index + 1 })), _jsx("div", { className: "pointer-events-none absolute inset-0 z-10 bg-transparent transition-[background-color,box-shadow] duration-150 group-hover:bg-black/20 group-hover:shadow-[inset_0_0_0_1px_rgba(15,23,42,0.35)]", "aria-hidden": true })] }), _jsxs("div", { className: "absolute bottom-0 left-0 z-30 box-border flex w-full min-w-0 max-w-full shrink-0 items-center gap-1 border-t border-white/15 bg-slate-800 px-1.5 text-left text-[11px] font-medium leading-tight text-white antialiased", style: { height: LABEL_ROW_PX, minHeight: LABEL_ROW_PX }, title: page.key, children: [_jsxs("span", { className: "shrink-0 tabular-nums text-slate-200", children: [index + 1, "."] }), _jsx("span", { className: "min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-white", children: keyDisplay })] })] }) }) }, virtualItem.key));
|
|
313
|
+
}) }) })] }));
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=PageThumbnailStrip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageThumbnailStrip.js","sourceRoot":"","sources":["../../src/workbench/PageThumbnailStrip.tsx"],"names":[],"mappings":"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"}
|