@brett_lamy/docstream 1.21.0 → 1.22.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.
@@ -0,0 +1,18 @@
1
+ import type { ReplayDevtoolsState } from './devtools.js';
2
+ export type ReplayDevtoolsTab = 'console' | 'network';
3
+ /** The two buttons for the top bar (or the controls row): icon, request count and, in red, what failed. */
4
+ export declare function DevtoolsButtons({ state, open, onOpen }: {
5
+ state: ReplayDevtoolsState;
6
+ open: ReplayDevtoolsTab | null;
7
+ onOpen: (tab: ReplayDevtoolsTab) => void;
8
+ }): import("react").JSX.Element;
9
+ /** The panel over the page: Console and Network, cut at the playhead. */
10
+ export declare function DevtoolsPanel({ state, at, tab, onTab, onClose, onSeek }: {
11
+ state: ReplayDevtoolsState;
12
+ at: number;
13
+ tab: ReplayDevtoolsTab;
14
+ onTab: (tab: ReplayDevtoolsTab) => void;
15
+ onClose: () => void;
16
+ onSeek: (ms: number) => void;
17
+ }): import("react").JSX.Element;
18
+ //# sourceMappingURL=ReplayDevtools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplayDevtools.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayDevtools.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAsB,mBAAmB,EAAiB,MAAM,YAAY,CAAA;AAExF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAA;AAQrD,2GAA2G;AAC3G,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACvD,KAAK,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACrG,+BAgCA;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACxE,KAAK,EAAE,mBAAmB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACvG,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,+BA+DA"}
@@ -0,0 +1,137 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* The player's DevTools: a Console and a Network button in the top bar, with what had happened by the playhead —
3
+ requests sent and, in red, how many had failed; console errors in red — and, behind them, a panel over the
4
+ page in the manner of Chrome's DevTools. The Console lists what had been logged, warnings and errors on their
5
+ tinted rows with their stack traces; the Network tab lists the requests that had been sent (a request still
6
+ waiting at the playhead shows as pending), and a request's row opens its headers, payload and response.
7
+
8
+ Everything is a function of the playhead: scrub back and the lists shrink to what DevTools showed then. A row's
9
+ time jumps the player there. Esc closes the panel. Plain React + plain CSS, like the player. */
10
+ import { useEffect, useMemo, useRef, useState } from 'react';
11
+ import { ChevronRight, CircleX, Info, Network, SquareTerminal, TriangleAlert, X } from 'lucide-react';
12
+ const time = (ms) => {
13
+ const s = Math.max(0, ms) / 1000;
14
+ return `${Math.floor(s / 60)}:${(s % 60).toFixed(1).padStart(4, '0')}`;
15
+ };
16
+ const duration = (ms) => (ms === undefined ? '—' : ms < 1000 ? `${Math.round(ms)} ms` : `${(ms / 1000).toFixed(2)} s`);
17
+ /** The two buttons for the top bar (or the controls row): icon, request count and, in red, what failed. */
18
+ export function DevtoolsButtons({ state, open, onOpen }) {
19
+ const { requests, failed, errors, warnings } = state.counts;
20
+ return (_jsxs("div", { "data-slot": "replay-devtools-buttons", children: [_jsxs("button", { type: "button", "data-slot": "replay-devtools-button", "data-tab": "console", "aria-pressed": open === 'console', "aria-label": `Console: ${errors} ${errors === 1 ? 'error' : 'errors'}, ${warnings} ${warnings === 1 ? 'warning' : 'warnings'}`, title: "Console", onClick: () => onOpen('console'), children: [_jsx(SquareTerminal, { size: 14, strokeWidth: 2 }), errors ? _jsx("span", { "data-part": "failed", children: errors }) : null, warnings ? _jsx("span", { "data-part": "warn", children: warnings }) : null] }), _jsxs("button", { type: "button", "data-slot": "replay-devtools-button", "data-tab": "network", "aria-pressed": open === 'network', "aria-label": `Network: ${requests} ${requests === 1 ? 'request' : 'requests'}, ${failed} failed`, title: "Network", onClick: () => onOpen('network'), children: [_jsx(Network, { size: 14, strokeWidth: 2 }), _jsx("span", { "data-part": "count", children: requests }), failed ? _jsx("span", { "data-part": "failed", children: failed }) : null] })] }));
21
+ }
22
+ /** The panel over the page: Console and Network, cut at the playhead. */
23
+ export function DevtoolsPanel({ state, at, tab, onTab, onClose, onSeek }) {
24
+ const panel = useRef(null);
25
+ const [height, setHeight] = useState(58);
26
+ useEffect(() => { panel.current?.focus({ preventScroll: true }); }, []);
27
+ // Drag the top edge to resize, as a fraction of the stage.
28
+ const resize = (e) => {
29
+ const stage = panel.current?.parentElement;
30
+ if (!stage)
31
+ return;
32
+ e.preventDefault();
33
+ const el = e.currentTarget;
34
+ el.setPointerCapture(e.pointerId);
35
+ const box = stage.getBoundingClientRect();
36
+ const move = (ev) => setHeight(Math.min(92, Math.max(22, ((box.bottom - ev.clientY) / box.height) * 100)));
37
+ const up = () => { el.removeEventListener('pointermove', move); el.removeEventListener('pointerup', up); };
38
+ el.addEventListener('pointermove', move);
39
+ el.addEventListener('pointerup', up);
40
+ };
41
+ const onKeyDown = (e) => {
42
+ if (e.key === 'Escape') {
43
+ e.stopPropagation();
44
+ onClose();
45
+ }
46
+ // The player's own keys (space, arrows, J/K/L) stay out of the panel.
47
+ else if (!e.target.closest('input'))
48
+ e.stopPropagation();
49
+ };
50
+ const tabs = [{ id: 'console', label: 'Console' }, { id: 'network', label: 'Network' }];
51
+ return (_jsxs("div", { ref: panel, "data-slot": "replay-devtools", role: "dialog", "aria-label": "DevTools", tabIndex: -1, onKeyDown: onKeyDown, style: { height: `${height}%` }, children: [_jsx("div", { "data-slot": "replay-devtools-resize", "aria-hidden": "true", onPointerDown: resize }), _jsxs("div", { "data-slot": "replay-devtools-tabs", children: [_jsx("div", { "data-slot": "replay-devtools-tablist", role: "tablist", "aria-label": "DevTools panels", children: tabs.map((t) => (_jsxs("button", { type: "button", role: "tab", "aria-selected": tab === t.id, onClick: () => onTab(t.id), onKeyDown: (e) => {
52
+ if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {
53
+ e.preventDefault();
54
+ onTab(t.id === 'console' ? 'network' : 'console');
55
+ }
56
+ }, tabIndex: tab === t.id ? 0 : -1, children: [t.label, t.id === 'console' && state.counts.errors ? _jsx("span", { "data-part": "failed", children: state.counts.errors }) : null, t.id === 'network' && state.counts.failed ? _jsx("span", { "data-part": "failed", children: state.counts.failed }) : null] }, t.id))) }), _jsxs("span", { "data-part": "at", children: ["As of ", time(at)] }), _jsx("button", { type: "button", "data-slot": "replay-devtools-close", "aria-label": "Close DevTools", onClick: onClose, children: _jsx(X, { size: 14 }) })] }), tab === 'console' ? _jsx(ConsolePane, { state: state, onSeek: onSeek }) : _jsx(NetworkPane, { state: state, onSeek: onSeek })] }));
57
+ }
58
+ const LEVEL_ICON = { error: CircleX, warn: TriangleAlert, info: Info };
59
+ function ConsolePane({ state, onSeek }) {
60
+ const [query, setQuery] = useState('');
61
+ const [level, setLevel] = useState('all');
62
+ const list = useRef(null);
63
+ const rows = useMemo(() => {
64
+ const q = query.trim().toLowerCase();
65
+ return state.console.filter((e) => (level === 'all' || (level === 'info' ? e.level === 'info' || e.level === 'log' || e.level === 'debug' : e.level === level)) &&
66
+ (!q || e.message.toLowerCase().includes(q)));
67
+ }, [state.console, query, level]);
68
+ // Follow new messages as they're logged, unless you've scrolled up to read.
69
+ const pinned = useRef(true);
70
+ useEffect(() => {
71
+ const el = list.current;
72
+ if (el && pinned.current)
73
+ el.scrollTop = el.scrollHeight;
74
+ }, [rows.length]);
75
+ return (_jsxs("div", { "data-slot": "replay-devtools-pane", "data-pane": "console", children: [_jsxs("div", { "data-slot": "replay-devtools-toolbar", children: [_jsx("input", { type: "search", "aria-label": "Filter console", placeholder: "Filter", value: query, onChange: (e) => setQuery(e.currentTarget.value) }), _jsxs("select", { "aria-label": "Log levels", value: level, onChange: (e) => setLevel(e.currentTarget.value), children: [_jsx("option", { value: "all", children: "All levels" }), _jsx("option", { value: "error", children: "Errors" }), _jsx("option", { value: "warn", children: "Warnings" }), _jsx("option", { value: "info", children: "Info" })] }), _jsxs("span", { "data-part": "summary", children: [state.counts.errors ? _jsxs("span", { "data-part": "failed", children: [state.counts.errors, " ", state.counts.errors === 1 ? 'error' : 'errors'] }) : null, state.counts.warnings ? _jsxs("span", { "data-part": "warn", children: [state.counts.warnings, " ", state.counts.warnings === 1 ? 'warning' : 'warnings'] }) : null] })] }), _jsxs("div", { ref: list, "data-slot": "replay-devtools-list", role: "log", "aria-label": "Console messages", onScroll: (e) => { const el = e.currentTarget; pinned.current = el.scrollHeight - el.scrollTop - el.clientHeight < 8; }, children: [rows.map((entry) => _jsx(ConsoleRow, { entry: entry, onSeek: onSeek }, entry.id)), !rows.length ? _jsx("p", { "data-slot": "replay-devtools-empty", children: state.console.length ? 'No messages match the filter' : 'Nothing logged yet' }) : null, state.counts.laterMessages ? _jsxs("p", { "data-slot": "replay-devtools-later", children: [state.counts.laterMessages, " more later in the recording"] }) : null] })] }));
76
+ }
77
+ function ConsoleRow({ entry, onSeek }) {
78
+ const Glyph = entry.level === 'error' || entry.level === 'warn' || entry.level === 'info' ? LEVEL_ICON[entry.level] : null;
79
+ const body = (_jsxs(_Fragment, { children: [_jsx("span", { "data-part": "icon", "aria-hidden": "true", children: Glyph ? _jsx(Glyph, { size: 12, strokeWidth: 2.2 }) : null }), _jsx("span", { "data-part": "message", children: entry.message || ' ' })] }));
80
+ return (_jsxs("div", { "data-slot": "replay-devtools-message", "data-level": entry.level, children: [entry.trace?.length ? (_jsxs("details", { children: [_jsx("summary", { children: body }), _jsx("ol", { "data-part": "trace", children: entry.trace.map((frame, i) => _jsx("li", { children: frame }, i)) })] })) : _jsx("div", { "data-part": "line", children: body }), _jsx("button", { type: "button", "data-part": "time", "aria-label": `Go to ${time(entry.time)}`, onClick: () => onSeek(entry.time), children: time(entry.time) })] }));
81
+ }
82
+ const statusText = (r) => (r.pending ? '(pending)' : r.status === undefined ? (r.failed ? '(failed)' : '—') : r.status === 0 ? '(failed)' : String(r.status));
83
+ function NetworkPane({ state, onSeek }) {
84
+ const [query, setQuery] = useState('');
85
+ const [filter, setFilter] = useState('all');
86
+ const [selectedId, setSelectedId] = useState(null);
87
+ const rows = useMemo(() => {
88
+ const q = query.trim().toLowerCase();
89
+ return state.network.filter((r) => (filter === 'all' || (filter === 'failed' ? r.failed && !r.pending : r.type === 'fetch' || r.type === 'xhr')) &&
90
+ (!q || r.url.toLowerCase().includes(q) || r.method.toLowerCase() === q));
91
+ }, [state.network, query, filter]);
92
+ const selected = state.network.find((r) => r.id === selectedId) ?? null;
93
+ // The waterfall spans from the first request to the last answer seen by the playhead.
94
+ const span = useMemo(() => {
95
+ const first = state.network[0]?.time ?? 0;
96
+ let last = first + 1;
97
+ for (const r of state.network)
98
+ last = Math.max(last, r.time + (r.duration ?? 0));
99
+ return { first, length: last - first };
100
+ }, [state.network]);
101
+ return (_jsxs("div", { "data-slot": "replay-devtools-pane", "data-pane": "network", "data-detail": selected ? '' : undefined, children: [_jsxs("div", { "data-slot": "replay-devtools-toolbar", children: [_jsx("input", { type: "search", "aria-label": "Filter requests", placeholder: "Filter", value: query, onChange: (e) => setQuery(e.currentTarget.value) }), _jsx("div", { "data-slot": "replay-devtools-chips", role: "radiogroup", "aria-label": "Request types", children: ['all', 'fetch', 'failed'].map((f) => (_jsx("button", { type: "button", role: "radio", "aria-checked": filter === f, onClick: () => setFilter(f), children: f === 'all' ? 'All' : f === 'fetch' ? 'Fetch/XHR' : 'Failed' }, f))) })] }), _jsxs("div", { "data-slot": "replay-devtools-network", children: [_jsxs("div", { "data-slot": "replay-devtools-table-wrap", children: [_jsxs("table", { "data-slot": "replay-devtools-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: "Name" }), _jsx("th", { scope: "col", children: "Status" }), selected ? null : _jsxs(_Fragment, { children: [_jsx("th", { scope: "col", children: "Method" }), _jsx("th", { scope: "col", children: "Type" }), _jsx("th", { scope: "col", children: "Time" }), _jsx("th", { scope: "col", "data-col": "waterfall", children: "Waterfall" })] })] }) }), _jsx("tbody", { children: rows.map((r) => (_jsxs("tr", { "data-failed": (r.failed && !r.pending) || undefined, "data-pending": r.pending || undefined, "aria-selected": r.id === selectedId, tabIndex: 0, onClick: () => setSelectedId(r.id === selectedId ? null : r.id), onKeyDown: (e) => { if (e.key === 'Enter' || e.key === ' ') {
102
+ e.preventDefault();
103
+ setSelectedId(r.id === selectedId ? null : r.id);
104
+ } }, children: [_jsx("td", { title: r.url, children: _jsx("span", { "data-part": "name", children: r.name }) }), _jsx("td", { children: statusText(r) }), selected ? null : (_jsxs(_Fragment, { children: [_jsx("td", { children: r.method }), _jsx("td", { children: r.type }), _jsx("td", { children: r.pending ? 'Pending' : duration(r.duration) }), _jsx("td", { "data-col": "waterfall", children: _jsx("span", { "data-part": "bar", style: {
105
+ left: `${((r.time - span.first) / span.length) * 100}%`,
106
+ width: `max(2px, ${(((r.duration ?? 0) / span.length) * 100).toFixed(2)}%)`,
107
+ } }) })] }))] }, r.id))) })] }), !rows.length ? _jsx("p", { "data-slot": "replay-devtools-empty", children: state.network.length ? 'No requests match the filter' : 'No requests yet' }) : null] }), selected ? _jsx(RequestDetail, { request: selected, onClose: () => setSelectedId(null), onSeek: onSeek }) : null] }), _jsxs("div", { "data-slot": "replay-devtools-status", children: [_jsxs("span", { children: [state.counts.requests, " ", state.counts.requests === 1 ? 'request' : 'requests'] }), state.counts.failed ? _jsxs("span", { "data-part": "failed", children: [state.counts.failed, " failed"] }) : null, state.counts.laterRequests ? _jsxs("span", { children: [state.counts.laterRequests, " more later in the recording"] }) : null] })] }));
108
+ }
109
+ function RequestDetail({ request, onClose, onSeek }) {
110
+ const [tab, setTab] = useState('headers');
111
+ const pretty = (body) => {
112
+ if (body === undefined || body === '')
113
+ return undefined;
114
+ try {
115
+ return JSON.stringify(JSON.parse(body), null, 2);
116
+ }
117
+ catch {
118
+ return body;
119
+ }
120
+ };
121
+ const general = [
122
+ ['Request URL', request.url],
123
+ ['Request Method', request.method],
124
+ ['Status Code', request.pending ? 'Pending' : request.status !== undefined ? `${request.status}${request.statusText ? ` ${request.statusText}` : ''}` : request.failed ? 'Failed' : 'Unknown'],
125
+ ...(request.error ? [['Error', request.error]] : []),
126
+ ['Sent at', time(request.time)],
127
+ ['Duration', duration(request.duration)],
128
+ ];
129
+ return (_jsxs("div", { "data-slot": "replay-devtools-detail", children: [_jsxs("div", { "data-slot": "replay-devtools-detail-tabs", children: [_jsx("button", { type: "button", "aria-label": "Close request details", "data-slot": "replay-devtools-close", onClick: onClose, children: _jsx(X, { size: 13 }) }), _jsx("div", { "data-slot": "replay-devtools-tablist", role: "tablist", "aria-label": `${request.name} details`, children: ['headers', 'payload', 'response'].map((t) => (_jsx("button", { type: "button", role: "tab", "aria-selected": tab === t, onClick: () => setTab(t), children: t[0].toUpperCase() + t.slice(1) }, t))) })] }), _jsx("div", { "data-slot": "replay-devtools-detail-body", children: tab === 'headers' ? (_jsxs(_Fragment, { children: [_jsx(Section, { title: "General", rows: general }), request.responseHeaders ? _jsx(Section, { title: "Response Headers", rows: Object.entries(request.responseHeaders) }) : null, request.requestHeaders ? _jsx(Section, { title: "Request Headers", rows: Object.entries(request.requestHeaders) }) : null, _jsxs("button", { type: "button", "data-slot": "replay-devtools-jump", onClick: () => onSeek(request.time), children: ["Go to ", time(request.time), " in the recording"] })] })) : (_jsx(Body, { text: pretty(tab === 'payload' ? request.requestBody : request.responseBody), empty: tab === 'payload' ? 'This request has no recorded payload' : request.pending ? 'Waiting for the response' : 'The recording has no response body for this request' })) })] }));
130
+ }
131
+ function Section({ title, rows }) {
132
+ return (_jsxs("details", { open: true, "data-slot": "replay-devtools-section", children: [_jsxs("summary", { children: [_jsx(ChevronRight, { size: 12, "data-part": "chevron" }), title] }), _jsx("dl", { children: rows.map(([k, v]) => (_jsxs("div", { children: [_jsx("dt", { children: k }), _jsx("dd", { children: v })] }, k))) })] }));
133
+ }
134
+ function Body({ text, empty }) {
135
+ return text !== undefined ? _jsx("pre", { "data-slot": "replay-devtools-body", children: text }) : _jsx("p", { "data-slot": "replay-devtools-empty", children: empty });
136
+ }
137
+ //# sourceMappingURL=ReplayDevtools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplayDevtools.js","sourceRoot":"","sources":["../../src/replay/ReplayDevtools.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type CSSProperties, type ReactNode, type Ref } from 'react';
2
+ import { type ReplayDevtoolsTab } from './ReplayDevtools.js';
2
3
  import type { ReplayMarker, ReplayMarkerKind } from './markers.js';
3
4
  import type { ReplayEvent } from './types.js';
4
5
  export declare const DEFAULT_PLAYER_SPEEDS: number[];
@@ -35,6 +36,12 @@ export interface ReplayPlayerOptions {
35
36
  markers?: boolean | ReplayMarker[];
36
37
  /** Which recorded marker kinds to show (default all). */
37
38
  markerKinds?: ReplayMarkerKind[];
39
+ /** Console and Network buttons (in the top bar, or beside the controls without the browser chrome) that open a
40
+ * DevTools panel cut at the playhead. `true` (default) shows them when the recording has console messages or
41
+ * requests; `false` hides them. */
42
+ devtools?: boolean;
43
+ /** Open the DevTools panel on this tab at mount. */
44
+ defaultDevtoolsTab?: ReplayDevtoolsTab;
38
45
  /** Draw the recorded pointer and click ripples (default true). */
39
46
  cursor?: boolean;
40
47
  /** `width` (default): the page scales to the frame's width and sets its height. `contain`: fill the frame's
@@ -53,7 +60,7 @@ export interface ReplayPlayerOptions {
53
60
  style?: CSSProperties;
54
61
  }
55
62
  export declare function formatReplayTime(ms: number): string;
56
- export declare function ReplayPlayer({ events, url, title, chrome, trafficLights, controls, autoplay, loop, initialTime, speeds, markers, markerKinds, cursor, fit, poster, lazy, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }: ReplayPlayerOptions & {
63
+ export declare function ReplayPlayer({ events, url, title, chrome, trafficLights, controls, autoplay, loop, initialTime, speeds, markers, markerKinds, cursor, devtools, defaultDevtoolsTab, fit, poster, lazy, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }: ReplayPlayerOptions & {
57
64
  events: ReplayEvent[];
58
65
  }): import("react").JSX.Element;
59
66
  /** Splits an address for the URL bar: the host, and the path + query + hash after it. */
@@ -61,9 +68,10 @@ export declare function splitReplayAddress(href: string): {
61
68
  host: string;
62
69
  path: string;
63
70
  };
64
- export declare function BrowserBar({ href, trafficLights, loading }: {
71
+ export declare function BrowserBar({ href, trafficLights, loading, actions }: {
65
72
  href: string;
66
73
  trafficLights: boolean;
67
74
  loading: boolean;
75
+ actions?: ReactNode;
68
76
  }): import("react").JSX.Element;
69
77
  //# sourceMappingURL=ReplayPlayer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayPlayer.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,aAAa,EAA4C,KAAK,SAAS,EAAE,KAAK,GAAG,EACvF,MAAM,OAAO,CAAA;AAKd,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAsB,MAAM,WAAW,CAAA;AAEnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAG1C,eAAO,MAAM,qBAAqB,UAAiB,CAAA;AAGnD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,IAAI,IAAI,CAAA;IACd,cAAc,IAAI,MAAM,CAAA;CACzB;AAED,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,kGAAkG;IAClG,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;wEACoE;IACpE,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qGAAqG;IACrG,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;4BACwB;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE,CAAA;IAClC,yDAAyD;IACzD,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;uDACmD;IACnD,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzB,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,8CAA8C;IAC9C,SAAS,CAAC,EAAE,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,UAG1C;AAMD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EAAE,GAAG,EAAE,KAAwB,EAAE,MAAkB,EAAE,aAAoB,EAAE,QAAe,EAChG,QAAgB,EAAE,IAAY,EAAE,WAAe,EAAE,MAA8B,EAAE,OAAc,EAAE,WAAW,EAC5G,MAAa,EAAE,GAAa,EAAE,MAAM,EAAE,IAAW,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAC1G,SAAS,EAAE,KAAK,GACjB,EAAE,mBAAmB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,+BAuMjD;AAID,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAI/E;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,+BAwBtH"}
1
+ {"version":3,"file":"ReplayPlayer.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /* The player behind `ReplayPreview`: an rrweb session replay in a browser frame. The headless `ReplayStage`
3
3
  plays the recording (rrweb loads lazily, on first render); this adds the chrome around it: a URL bar that
4
4
  follows the recording's navigations, play/pause, a scrubber with the recording's moments on a rail above
5
- it, a speed control, fullscreen, and a drawn cursor whose clicks ripple. Until the player is ready a
5
+ it, a speed control, fullscreen, a drawn cursor whose clicks ripple, and DevTools: Console and Network buttons
6
+ in the top bar with what had been logged and requested by the playhead, which open a DevTools panel over the page. Until the player is ready a
6
7
  poster (a page-shaped skeleton by default) holds the frame's exact size, so nothing jumps.
7
8
 
8
9
  Plain React + plain CSS (`@layer docstream.replay` in styles.css, `[data-slot]` hooks). Keys (focus inside
@@ -13,6 +14,8 @@ import { memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, use
13
14
  import { useReducedMotion } from 'framer-motion';
14
15
  import { Lock, Maximize, Minimize, Pause, Play, RotateCcw } from 'lucide-react';
15
16
  import { ReplayStage } from './ReplayStage.js';
17
+ import { DevtoolsButtons, DevtoolsPanel } from './ReplayDevtools.js';
18
+ import { getReplayDevtools, replayDevtoolsAt } from './devtools.js';
16
19
  import { getReplayMarkers, getReplayMeta, getReplayPointerTrack, replayPointerAt } from './markers.js';
17
20
  const TRAFFIC_LIGHTS = ['#FF5F57', '#FEBC2E', '#28C840'];
18
21
  export const DEFAULT_PLAYER_SPEEDS = [1, 2, 4, 0.5];
@@ -24,7 +27,7 @@ export function formatReplayTime(ms) {
24
27
  const MARKER_NOUN = {
25
28
  click: 'Click', error: 'Error', network: 'Request failed', navigation: 'Navigation', custom: 'Checkpoint',
26
29
  };
27
- export function ReplayPlayer({ events, url, title = 'Session replay', chrome = 'browser', trafficLights = true, controls = true, autoplay = false, loop = false, initialTime = 0, speeds = DEFAULT_PLAYER_SPEEDS, markers = true, markerKinds, cursor = true, fit = 'width', poster, lazy = true, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }) {
30
+ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = 'browser', trafficLights = true, controls = true, autoplay = false, loop = false, initialTime = 0, speeds = DEFAULT_PLAYER_SPEEDS, markers = true, markerKinds, cursor = true, devtools = true, defaultDevtoolsTab, fit = 'width', poster, lazy = true, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }) {
28
31
  const rootRef = useRef(null);
29
32
  const stage = useRef(null);
30
33
  const reduced = useReducedMotion();
@@ -35,6 +38,9 @@ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = '
35
38
  const list = Array.isArray(markers) ? markers : markers ? recorded : [];
36
39
  return markerKinds ? list.filter((m) => markerKinds.includes(m.kind)) : list;
37
40
  }, [markers, recorded, markerKinds]);
41
+ const tools = useMemo(() => getReplayDevtools(events), [events]);
42
+ const showTools = devtools && (tools.console.length > 0 || tools.network.length > 0);
43
+ const [panel, setPanel] = useState(defaultDevtoolsTab ?? null);
38
44
  const [visible, setVisible] = useState(!lazy);
39
45
  const [ready, setReady] = useState(false);
40
46
  const [posterGone, setPosterGone] = useState(false);
@@ -151,6 +157,9 @@ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = '
151
157
  current = m.detail;
152
158
  return current;
153
159
  }, [url, meta.href, recorded, time]);
160
+ const toolsState = useMemo(() => replayDevtoolsAt(tools, time), [tools, time]);
161
+ const openTools = (tab) => setPanel((p) => (p === tab ? null : tab));
162
+ const toolButtons = showTools ? _jsx(DevtoolsButtons, { state: toolsState, open: panel, onOpen: openTools }) : null;
154
163
  const w = meta.width || 1280;
155
164
  const h = meta.height || 800;
156
165
  const contain = fit === 'contain' || fullscreen;
@@ -160,9 +169,9 @@ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = '
160
169
  const root = rootRef.current;
161
170
  if (root && !root.contains(document.activeElement))
162
171
  root.focus({ preventScroll: true });
163
- }, style: style, children: [chrome === 'browser' ? _jsx(BrowserBar, { href: href, trafficLights: trafficLights, loading: !ready && meta.playable }) : null, _jsxs("div", { "data-slot": "replay-preview-stage", style: { '--replay-ar': `${w} / ${h}` }, children: [visible && meta.playable ? (_jsx(ReplayStage, { ref: stage, events: events, fit: "contain", speed: speed, loop: loop, autoplay: autoplay, initialTime: initialTime, showMouse: false, className: "replay-preview__page", overlay: cursor ? _jsx(PointerOverlay, { track: track, time: time, reduced: !!reduced }) : null, onReady: () => setReady(true), onTimeUpdate: onTime, onPlayingChange: onPlaying, onFinish: () => setFinished(true) })) : null, !posterGone ? (_jsx("div", { "data-slot": "replay-preview-poster", "data-leaving": ready || undefined, children: poster ?? _jsx(PagePoster, { empty: !meta.playable }) })) : null, controls ? (_jsx("div", { "data-slot": "replay-preview-center", "data-show": (ready && !playing) || undefined, children: _jsx("button", { type: "button", tabIndex: -1, "aria-label": finished ? 'Replay from the start' : 'Play',
172
+ }, style: style, children: [chrome === 'browser' ? _jsx(BrowserBar, { href: href, trafficLights: trafficLights, loading: !ready && meta.playable, actions: toolButtons }) : null, _jsxs("div", { "data-slot": "replay-preview-stage", style: { '--replay-ar': `${w} / ${h}` }, children: [visible && meta.playable ? (_jsx(ReplayStage, { ref: stage, events: events, fit: "contain", speed: speed, loop: loop, autoplay: autoplay, initialTime: initialTime, showMouse: false, className: "replay-preview__page", overlay: cursor ? _jsx(PointerOverlay, { track: track, time: time, reduced: !!reduced }) : null, onReady: () => setReady(true), onTimeUpdate: onTime, onPlayingChange: onPlaying, onFinish: () => setFinished(true) })) : null, !posterGone ? (_jsx("div", { "data-slot": "replay-preview-poster", "data-leaving": ready || undefined, children: poster ?? _jsx(PagePoster, { empty: !meta.playable }) })) : null, showTools && panel ? (_jsx(DevtoolsPanel, { state: toolsState, at: time, tab: panel, onTab: setPanel, onClose: () => { setPanel(null); rootRef.current?.focus({ preventScroll: true }); }, onSeek: (ms) => handle.seek(ms) })) : null, controls ? (_jsx("div", { "data-slot": "replay-preview-center", "data-show": (ready && !playing && !(showTools && panel)) || undefined, children: _jsx("button", { type: "button", tabIndex: -1, "aria-label": finished ? 'Replay from the start' : 'Play',
164
173
  // The overlay leaves as playback starts; keep focus (and the keys) in the player.
165
- onClick: () => { rootRef.current?.focus({ preventScroll: true }); toggle(); }, children: finished ? _jsx(RotateCcw, { size: 22, strokeWidth: 2.4 }) : _jsx(Play, { size: 22, strokeWidth: 2.4, fill: "currentColor" }) }) })) : null] }), controls ? (_jsxs("div", { "data-slot": "replay-preview-controls", children: [_jsx("button", { type: "button", "data-slot": "replay-preview-play", "aria-label": playing ? 'Pause' : 'Play', onClick: toggle, disabled: !ready, children: playing ? _jsx(Pause, { size: 15, fill: "currentColor" }) : _jsx(Play, { size: 15, fill: "currentColor" }) }), _jsxs("span", { "data-slot": "replay-preview-time", children: [_jsx("span", { children: formatReplayTime(time) }), " / ", formatReplayTime(duration)] }), _jsx(Scrubber, { time: time, duration: duration, markers: shown, disabled: !ready, onSeek: (ms) => handle.seek(ms), onMarker: jumpTo }), _jsx("button", { type: "button", "data-slot": "replay-preview-speed", "aria-label": `Playback speed ${speed}×`, onClick: () => cycleSpeed(1), children: `${speed}×` }), _jsx("button", { type: "button", "data-slot": "replay-preview-fullscreen", "aria-label": fullscreen ? 'Exit full screen' : 'Full screen', onClick: toggleFullscreen, children: fullscreen ? _jsx(Minimize, { size: 15 }) : _jsx(Maximize, { size: 15 }) })] })) : null] }));
174
+ onClick: () => { rootRef.current?.focus({ preventScroll: true }); toggle(); }, children: finished ? _jsx(RotateCcw, { size: 22, strokeWidth: 2.4 }) : _jsx(Play, { size: 22, strokeWidth: 2.4, fill: "currentColor" }) }) })) : null] }), controls ? (_jsxs("div", { "data-slot": "replay-preview-controls", children: [_jsx("button", { type: "button", "data-slot": "replay-preview-play", "aria-label": playing ? 'Pause' : 'Play', onClick: toggle, disabled: !ready, children: playing ? _jsx(Pause, { size: 15, fill: "currentColor" }) : _jsx(Play, { size: 15, fill: "currentColor" }) }), _jsxs("span", { "data-slot": "replay-preview-time", children: [_jsx("span", { children: formatReplayTime(time) }), " / ", formatReplayTime(duration)] }), _jsx(Scrubber, { time: time, duration: duration, markers: shown, disabled: !ready, onSeek: (ms) => handle.seek(ms), onMarker: jumpTo }), chrome !== 'browser' ? toolButtons : null, _jsx("button", { type: "button", "data-slot": "replay-preview-speed", "aria-label": `Playback speed ${speed}×`, onClick: () => cycleSpeed(1), children: `${speed}×` }), _jsx("button", { type: "button", "data-slot": "replay-preview-fullscreen", "aria-label": fullscreen ? 'Exit full screen' : 'Full screen', onClick: toggleFullscreen, children: fullscreen ? _jsx(Minimize, { size: 15 }) : _jsx(Maximize, { size: 15 }) })] })) : null] }));
166
175
  }
167
176
  /* ── parts ───────────────────────────────────────────────────────────────────────── */
168
177
  /** Splits an address for the URL bar: the host, and the path + query + hash after it. */
@@ -171,12 +180,13 @@ export function splitReplayAddress(href) {
171
180
  const cut = shown.search(/[/?#]/);
172
181
  return cut < 0 ? { host: shown, path: '' } : { host: shown.slice(0, cut), path: shown.slice(cut) };
173
182
  }
174
- export function BrowserBar({ href, trafficLights, loading }) {
183
+ export function BrowserBar({ href, trafficLights, loading, actions }) {
175
184
  const { host, path } = splitReplayAddress(href);
176
185
  // Once the recording is past the site root, where it is (path, query, hash) is what matters:
177
186
  // it leads and keeps its room, and the host dims and gives way first.
178
187
  const primary = path && path !== '/' ? 'path' : 'host';
179
- return (_jsxs("div", { "data-slot": "replay-preview-bar", children: [trafficLights ? (_jsx("span", { "aria-hidden": "true", "data-slot": "replay-preview-lights", children: TRAFFIC_LIGHTS.map((c) => _jsx("span", { style: { '--light': c } }, c)) })) : null, _jsxs("div", { "data-slot": "replay-preview-address", children: [_jsx("span", { "data-slot": "replay-preview-lock", "aria-hidden": "true", children: loading ? _jsx("span", { "data-slot": "replay-preview-spinner" }) : _jsx(Lock, { size: 10, strokeWidth: 2.5 }) }), _jsxs("span", { "data-slot": "replay-preview-url", "data-primary": primary, title: href, children: [_jsx("span", { "data-part": "host", children: host }), path ? _jsx("span", { "data-part": "path", children: path }) : null] })] }), trafficLights ? _jsx("span", { "aria-hidden": "true", "data-slot": "replay-preview-lights-spacer" }) : null] }));
188
+ return (_jsxs("div", { "data-slot": "replay-preview-bar", children: [trafficLights ? (_jsx("span", { "aria-hidden": "true", "data-slot": "replay-preview-lights", children: TRAFFIC_LIGHTS.map((c) => _jsx("span", { style: { '--light': c } }, c)) })) : null, _jsxs("div", { "data-slot": "replay-preview-address", children: [_jsx("span", { "data-slot": "replay-preview-lock", "aria-hidden": "true", children: loading ? _jsx("span", { "data-slot": "replay-preview-spinner" }) : _jsx(Lock, { size: 10, strokeWidth: 2.5 }) }), _jsxs("span", { "data-slot": "replay-preview-url", "data-primary": primary, title: href, children: [_jsx("span", { "data-part": "host", children: host }), path ? _jsx("span", { "data-part": "path", children: path }) : null] })] }), actions ? _jsx("div", { "data-slot": "replay-preview-actions", children: actions })
189
+ : trafficLights ? _jsx("span", { "aria-hidden": "true", "data-slot": "replay-preview-lights-spacer" }) : null] }));
180
190
  }
181
191
  /** The recorded pointer and its click ripples, in recorded-viewport coordinates. */
182
192
  const PointerOverlay = memo(function PointerOverlay({ track, time, reduced }) {
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayPlayer.js","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;kCASkC;AAClC,OAAO,EACL,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAE7E,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAKnG,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA;AACjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;AACnD,MAAM,SAAS,GAAG,GAAG,CAAA;AAuDrB,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IAC5C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AACnE,CAAC;AAED,MAAM,WAAW,GAAqC;IACpD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY;CAC1G,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAChG,QAAQ,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,GAAG,qBAAqB,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,EAC5G,MAAM,GAAG,IAAI,EAAE,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAC1G,SAAS,EAAE,KAAK,GACgC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;QACvE,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9E,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;IAEpC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAA;IAChE,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAE3D,sFAAsF;IACtF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO;YAAE,OAAM;QACnB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;QAC1B,IAAI,CAAC,EAAE,IAAI,OAAO,oBAAoB,KAAK,WAAW;YAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;QAC/E,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;QACpI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACd,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAA;IAC9B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QAC9E,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;QACjD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,2EAA2E;IAC3E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK;YAAE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACxE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;IAEpB,MAAM,MAAM,GAAG,OAAO,CAAsB,GAAG,EAAE,CAAC,CAAC;QACjD,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;QACrE,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;QAC/C,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA,CAAC,CAAC;QAC7D,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC;KAC3D,CAAC,EAAE,EAAE,CAAC,CAAA;IACP,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEtD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAC/F,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAU,EAAE,EAAE;QAC3C,UAAU,CAAC,CAAC,CAAC,CAAA;QACb,IAAI,CAAC;YAAE,WAAW,CAAC,KAAK,CAAC,CAAA;QACzB,eAAe,EAAE,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAA;IAErB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACpF,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IACjG,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;QAC1B,IAAI,CAAC,EAAE;YAAE,OAAM;QACf,IAAI,QAAQ,CAAC,iBAAiB;YAAE,KAAK,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;;YAC3E,KAAK,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACpD,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CAAe,EAAE,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;QACtC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,CAAqB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB,CAAA;QACtC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,2DAA2D,CAAC;YAAE,OAAM;QAC7H,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,CAAC,EAAc,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAA,CAAC,CAAC,CAAA;QAC5D,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,GAAG,CAAC;YAAC,KAAK,GAAG,CAAC;YAAC,KAAK,GAAG;gBAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG;oBAAE,OAAO;gBAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAA;YACvG,KAAK,WAAW;gBAAE,IAAI,QAAQ;oBAAE,OAAO;gBAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACvE,KAAK,YAAY;gBAAE,IAAI,QAAQ;oBAAE,OAAO;gBAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACvE,KAAK,GAAG,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YACpD,KAAK,GAAG,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACnD,KAAK,MAAM;gBAAE,IAAI,QAAQ;oBAAE,OAAO;gBAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACnE,KAAK,KAAK;gBAAE,IAAI,QAAQ;oBAAE,OAAO;gBAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;YACzE,KAAK,GAAG,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;YACnD,KAAK,GAAG,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACpD,KAAK,GAAG,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAClD,CAAC;IACH,CAAC,CAAA;IAED,sFAAsF;IACtF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;QACxB,IAAI,GAAG;YAAE,OAAO,GAAG,CAAA;QACnB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;QAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM;gBAAE,OAAO,GAAG,CAAC,CAAC,MAAM,CAAA;QACvG,OAAO,OAAO,CAAA;IAChB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IAEpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAA;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAA;IAC5B,MAAM,OAAO,GAAG,GAAG,KAAK,SAAS,IAAI,UAAU,CAAA;IAE/C,OAAO,CACL,eACE,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC,CAAC,gBAAgB,eAC7D,gBAAgB,yBACN,OAAO,iBACd,MAAM,cACT,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,gBAC3B,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,qBAC9C,UAAU,IAAI,SAAS,EACxC,IAAI,EAAC,OAAO,gBACA,KAAK,eACN,CAAC,KAAK,IAAI,SAAS,EAC9B,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAE,SAAS;QACpB,kGAAkG;QAClG,aAAa,EAAE,GAAG,EAAE;YAClB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAA;YAC5B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QACzF,CAAC,EACD,KAAK,EAAE,KAAK,aAEX,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAI,CAAC,CAAC,CAAC,IAAI,EAEzH,4BAAe,sBAAsB,EAAC,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAmB,aAC3F,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1B,KAAC,WAAW,IACV,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAC,SAAS,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,KAAK,EAChB,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,GAAI,CAAC,CAAC,CAAC,IAAI,EACzF,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,SAAS,EAC1B,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GACjC,CACH,CAAC,CAAC,CAAC,IAAI,EAEP,CAAC,UAAU,CAAC,CAAC,CAAC,CACb,2BAAe,uBAAuB,kBAAe,KAAK,IAAI,SAAS,YACpE,MAAM,IAAI,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAI,GAC5C,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,QAAQ,CAAC,CAAC,CAAC,CACV,2BAAe,uBAAuB,eAAY,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,YAChF,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,gBACA,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM;4BACvD,kFAAkF;4BAClF,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA,CAAC,CAAC,YAE3E,QAAQ,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAC,cAAc,GAAG,GACzG,GACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EAEL,QAAQ,CAAC,CAAC,CAAC,CACV,4BAAe,yBAAyB,aACtC,iBAAQ,IAAI,EAAC,QAAQ,eAAW,qBAAqB,gBAAa,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,YAC5H,OAAO,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAC,cAAc,GAAG,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAC,cAAc,GAAG,GACpF,EACT,6BAAgB,qBAAqB,aACnC,yBAAO,gBAAgB,CAAC,IAAI,CAAC,GAAQ,SAAI,gBAAgB,CAAC,QAAQ,CAAC,IAC9D,EACP,KAAC,QAAQ,IACP,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,CAAC,KAAK,EAChB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAC/B,QAAQ,EAAE,MAAM,GAChB,EACF,iBAAQ,IAAI,EAAC,QAAQ,eAAW,sBAAsB,gBAAa,kBAAkB,KAAK,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,YACxH,GAAG,KAAK,GAAG,GACL,EACT,iBAAQ,IAAI,EAAC,QAAQ,eAAW,2BAA2B,gBAAa,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,YAC/I,UAAU,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,GACtD,IACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,wFAAwF;AAExF,yFAAyF;AACzF,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAA;AACpG,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAA8D;IACrH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAC/C,6FAA6F;IAC7F,sEAAsE;IACtE,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IACtD,OAAO,CACL,4BAAe,oBAAoB,aAChC,aAAa,CAAC,CAAC,CAAC,CACf,8BAAkB,MAAM,eAAW,uBAAuB,YACvD,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAc,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAmB,IAA3C,CAAC,CAA8C,CAAC,GACjF,CACR,CAAC,CAAC,CAAC,IAAI,EACR,4BAAe,wBAAwB,aACrC,4BAAgB,qBAAqB,iBAAa,MAAM,YACrD,OAAO,CAAC,CAAC,CAAC,4BAAgB,wBAAwB,GAAG,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAI,GACxF,EACP,6BAAgB,oBAAoB,kBAAe,OAAO,EAAE,KAAK,EAAE,IAAI,aACrE,4BAAgB,MAAM,YAAE,IAAI,GAAQ,EACnC,IAAI,CAAC,CAAC,CAAC,4BAAgB,MAAM,YAAE,IAAI,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC9C,IACH,EACL,aAAa,CAAC,CAAC,CAAC,8BAAkB,MAAM,eAAW,8BAA8B,GAAG,CAAC,CAAC,CAAC,IAAI,IACxF,CACP,CAAA;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAiE;IACzI,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;IACvF,OAAO,CACL,4BAAe,wBAAwB,iBAAa,MAAM,aACvD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjB,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;gBACrC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;gBAC7B,OAAO,CACL,4BAEY,uBAAuB,EACjC,KAAK,EAAE;wBACL,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;wBACnB,SAAS,EAAE,oCAAoC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,6BAA6B;wBAC9G,OAAO,EAAE,CAAC,GAAG,CAAC;qBACf,IANI,CAAC,CAAC,IAAI,CAOX,CACH,CAAA;YACH,CAAC,CAAC,EACD,EAAE,CAAC,CAAC,CAAC,CACJ,2BACY,uBAAuB,EACjC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,yCAAyC,EAAE,YAE9F,eAAM,CAAC,EAAC,gDAAgD,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,KAAK,EAAC,cAAc,EAAC,OAAO,GAAG,GAC1H,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAGtE;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACjC,+GAA+G;IAC/G,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;QACrC,IAAI,IAAI,GAAuC,IAAI,CAAA;QACnD,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAQ;YAChC,MAAM,CAAC,GAAW,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3E,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAChB,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAA;QAC5B,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;IAClB,OAAO,CACL,4BAAe,yBAAyB,kBAAe,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,aACnF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAChB,2BAAe,wBAAwB,YACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,iBAEE,IAAI,EAAC,QAAQ,eACF,CAAC,CAAC,IAAI,gBACL,GAAG,CAAC,CAAC,KAAK,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EACvD,KAAK,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EACjH,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EACrF,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1B,QAAQ,EAAE,QAAQ,IAPb,CAAC,CAAC,EAAE,CAQT,CACH,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACR,gBACE,IAAI,EAAC,OAAO,gBACD,mBAAmB,oBACd,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAC7E,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,EAAE,mBAAmB,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,EAAmB,EAC1E,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GACtD,IACE,CACP,CAAA;AACH,CAAC;AAED,yFAAyF;AACzF,SAAS,UAAU,CAAC,EAAE,KAAK,EAAsB;IAC/C,OAAO,CACL,4BAAe,yBAAyB,aACtC,4BAAe,QAAQ,aACrB,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAI,EAC9B,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAI,EAC7B,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAI,EAC7B,gBAAQ,EACR,yBAAa,OAAO,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAI,IAC3C,EACN,4BAAe,MAAM,aACnB,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,GAAI,EAC1C,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,GAAI,IACrC,EACN,2BAAe,MAAM,YAClB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAqB,OAAO,IAApB,CAAC,CAAsB,CAAC,GACrD,EACL,KAAK,CAAC,CAAC,CAAC,4BAAgB,OAAO,YAAC,yEAAwD,GAAO,CAAC,CAAC,CAAC,IAAI,IACnG,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ReplayPlayer.js","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/replay/demo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO5C,eAAO,MAAM,gBAAgB,EAAE,WAAW,EA2DzC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/replay/demo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAS5C,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAoEzC,CAAC"}
@@ -1,12 +1,17 @@
1
- /* A small synthetic rrweb recording (58 events, ~9 s, 1280×800) for ReplayPreview's stories, docs and the loop-qa
1
+ /* A small synthetic rrweb recording (67 events, ~9 s, 1280×800) for ReplayPreview's stories, docs and the loop-qa
2
2
  block: a shopper on a mock "Northwind" storefront adds two products, opens the cart, types an email and a
3
3
  promo code, and "Place order" fails — a custom `network` event (POST /api/checkout 500) and an `error` event
4
- mark the moment. Recorded with rrweb 2.0.0-alpha.20 against a local page (no external assets), timestamps
4
+ mark the moment. Console messages (rrweb/console@1) and the page's other requests (rrweb/network@1, with
5
+ headers and bodies) were added by hand so the player's DevTools have something to show; none of them fail, so the
6
+ timeline markers are unchanged. Recorded with rrweb 2.0.0-alpha.20 against a local page (no external assets), timestamps
5
7
  rebased to 2026-09-24 14:32:08 UTC so every render is identical. */
6
8
  export const replayDemoEvents = [
7
9
  { "type": 4, "data": { "href": "https://shop.northwind.test/collections/trail", "width": 1280, "height": 800 }, "timestamp": 1790260328000 },
8
10
  { "type": 2, "data": { "node": { "type": 0, "childNodes": [{ "type": 1, "name": "html", "publicId": "", "systemId": "", "id": 2 }, { "type": 2, "tagName": "html", "attributes": {}, "childNodes": [{ "type": 2, "tagName": "head", "attributes": {}, "childNodes": [{ "type": 2, "tagName": "meta", "attributes": { "charset": "utf-8" }, "childNodes": [], "id": 5 }, { "type": 2, "tagName": "title", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "Northwind Outfitters", "id": 7 }], "id": 6 }, { "type": 3, "textContent": "\n", "id": 8 }, { "type": 2, "tagName": "style", "attributes": { "_cssText": "* { box-sizing: border-box; }body { margin: 0px; font: 14px / 1.45 -apple-system, BlinkMacSystemFont, \"Segoe UI\", Inter, sans-serif; color: rgb(28, 25, 23); background: rgb(250, 250, 249); }header { display: flex; align-items: center; gap: 28px; height: 64px; padding: 0px 40px; background: rgb(255, 255, 255); border-bottom: 1px solid rgb(231, 229, 228); }.logo { font-weight: 700; font-size: 17px; letter-spacing: -0.02em; }.logo b { color: rgb(13, 148, 136); }nav a { color: rgb(87, 83, 78); text-decoration: none; margin-right: 20px; }.sp { flex: 1 1 0%; }.cart { position: relative; border: 1px solid rgb(214, 211, 209); background: rgb(255, 255, 255); border-radius: 999px; padding: 7px 14px; font: inherit; cursor: pointer; }.badge { position: absolute; top: -6px; right: -6px; min-width: 18px; height: 18px; border-radius: 9px; background: rgb(13, 148, 136); color: rgb(255, 255, 255); font-size: 11px; display: grid; place-items: center; padding: 0px 5px; }.hero { padding: 36px 40px 12px; }.hero h1 { margin: 0px; font-size: 30px; letter-spacing: -0.03em; }.hero p { margin: 6px 0px 0px; color: rgb(120, 113, 108); }.grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; padding: 20px 40px; }.card { background: rgb(255, 255, 255); border: 1px solid rgb(231, 229, 228); border-radius: 14px; overflow: hidden; transition: box-shadow 0.2s; }.card:hover { box-shadow: rgba(0, 0, 0, 0.08) 0px 8px 24px; }.img { height: 150px; }.i1 { background: linear-gradient(135deg, rgb(153, 246, 228), rgb(13, 148, 136)); }.i2 { background: linear-gradient(135deg, rgb(253, 230, 138), rgb(217, 119, 6)); }.i3 { background: linear-gradient(135deg, rgb(199, 210, 254), rgb(79, 70, 229)); }.i4 { background: linear-gradient(135deg, rgb(254, 205, 211), rgb(225, 29, 72)); }.body { padding: 12px 14px 14px; }.name { font-weight: 600; }.price { color: rgb(120, 113, 108); margin: 2px 0px 10px; }.add { width: 100%; border: 0px; border-radius: 9px; background: rgb(28, 25, 23); color: rgb(255, 255, 255); padding: 9px; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-language-override: inherit; font-weight: 600; cursor: pointer; }.drawer { position: fixed; top: 0px; right: 0px; bottom: 0px; width: 380px; background: rgb(255, 255, 255); border-left: 1px solid rgb(231, 229, 228); box-shadow: rgba(0, 0, 0, 0.12) -12px 0px 40px; padding: 24px; transform: translateX(100%); transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1); }.drawer.open { transform: none; }.drawer h2 { margin: 0px 0px 16px; font-size: 18px; }.line { display: flex; justify-content: space-between; padding: 10px 0px; border-bottom: 1px solid rgb(245, 245, 244); }label { display: block; font-size: 12px; color: rgb(120, 113, 108); margin: 14px 0px 4px; }input { width: 100%; border: 1px solid rgb(214, 211, 209); border-radius: 9px; padding: 9px 11px; font: inherit; }.pay { margin-top: 18px; width: 100%; border: 0px; border-radius: 10px; background: rgb(13, 148, 136); color: rgb(255, 255, 255); padding: 11px; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-language-override: inherit; font-weight: 600; cursor: pointer; }.err { display: none; margin-top: 14px; border-radius: 10px; background: rgb(254, 242, 242); border: 1px solid rgb(254, 202, 202); color: rgb(185, 28, 28); padding: 10px 12px; font-size: 13px; }.err.show { display: block; }" }, "childNodes": [{ "type": 3, "textContent": "", "id": 10 }], "id": 9 }, { "type": 2, "tagName": "script", "attributes": { "type": "text/javascript" }, "childNodes": [{ "type": 3, "textContent": "SCRIPT_PLACEHOLDER", "id": 12 }], "id": 11 }], "id": 4 }, { "type": 2, "tagName": "body", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "\n", "id": 14 }, { "type": 2, "tagName": "header", "attributes": {}, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "logo" }, "childNodes": [{ "type": 3, "textContent": "north", "id": 17 }, { "type": 2, "tagName": "b", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "wind", "id": 19 }], "id": 18 }], "id": 16 }, { "type": 2, "tagName": "nav", "attributes": {}, "childNodes": [{ "type": 2, "tagName": "a", "attributes": { "href": "file:///tmp/rr/page.html#" }, "childNodes": [{ "type": 3, "textContent": "New", "id": 22 }], "id": 21 }, { "type": 2, "tagName": "a", "attributes": { "href": "file:///tmp/rr/page.html#" }, "childNodes": [{ "type": 3, "textContent": "Trail", "id": 24 }], "id": 23 }, { "type": 2, "tagName": "a", "attributes": { "href": "file:///tmp/rr/page.html#" }, "childNodes": [{ "type": 3, "textContent": "Road", "id": 26 }], "id": 25 }, { "type": 2, "tagName": "a", "attributes": { "href": "file:///tmp/rr/page.html#" }, "childNodes": [{ "type": 3, "textContent": "Sale", "id": 28 }], "id": 27 }], "id": 20 }, { "type": 2, "tagName": "div", "attributes": { "class": "sp" }, "childNodes": [], "id": 29 }, { "type": 2, "tagName": "button", "attributes": { "class": "cart", "id": "cart" }, "childNodes": [{ "type": 3, "textContent": "Cart ", "id": 31 }, { "type": 2, "tagName": "span", "attributes": { "class": "badge", "id": "count" }, "childNodes": [{ "type": 3, "textContent": "0", "id": 33 }], "id": 32 }], "id": 30 }], "id": 15 }, { "type": 3, "textContent": "\n", "id": 34 }, { "type": 2, "tagName": "section", "attributes": { "class": "hero" }, "childNodes": [{ "type": 2, "tagName": "h1", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "Fall trail collection", "id": 37 }], "id": 36 }, { "type": 2, "tagName": "p", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "Built for mud, rain and long miles.", "id": 39 }], "id": 38 }], "id": 35 }, { "type": 3, "textContent": "\n", "id": 40 }, { "type": 2, "tagName": "section", "attributes": { "class": "grid" }, "childNodes": [{ "type": 3, "textContent": "\n", "id": 42 }, { "type": 2, "tagName": "div", "attributes": { "class": "card" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "img i1" }, "childNodes": [], "id": 44 }, { "type": 2, "tagName": "div", "attributes": { "class": "body" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "name" }, "childNodes": [{ "type": 3, "textContent": "Trail Runner 2", "id": 47 }], "id": 46 }, { "type": 2, "tagName": "div", "attributes": { "class": "price" }, "childNodes": [{ "type": 3, "textContent": "$148", "id": 49 }], "id": 48 }, { "type": 2, "tagName": "button", "attributes": { "class": "add", "data-p": "Trail Runner 2", "data-c": "148" }, "childNodes": [{ "type": 3, "textContent": "Add to cart", "id": 51 }], "id": 50 }], "id": 45 }], "id": 43 }, { "type": 3, "textContent": "\n", "id": 52 }, { "type": 2, "tagName": "div", "attributes": { "class": "card" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "img i2" }, "childNodes": [], "id": 54 }, { "type": 2, "tagName": "div", "attributes": { "class": "body" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "name" }, "childNodes": [{ "type": 3, "textContent": "Summit Shell", "id": 57 }], "id": 56 }, { "type": 2, "tagName": "div", "attributes": { "class": "price" }, "childNodes": [{ "type": 3, "textContent": "$229", "id": 59 }], "id": 58 }, { "type": 2, "tagName": "button", "attributes": { "class": "add", "data-p": "Summit Shell", "data-c": "229" }, "childNodes": [{ "type": 3, "textContent": "Add to cart", "id": 61 }], "id": 60 }], "id": 55 }], "id": 53 }, { "type": 3, "textContent": "\n", "id": 62 }, { "type": 2, "tagName": "div", "attributes": { "class": "card" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "img i3" }, "childNodes": [], "id": 64 }, { "type": 2, "tagName": "div", "attributes": { "class": "body" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "name" }, "childNodes": [{ "type": 3, "textContent": "Ridge Pack 28L", "id": 67 }], "id": 66 }, { "type": 2, "tagName": "div", "attributes": { "class": "price" }, "childNodes": [{ "type": 3, "textContent": "$119", "id": 69 }], "id": 68 }, { "type": 2, "tagName": "button", "attributes": { "class": "add", "data-p": "Ridge Pack 28L", "data-c": "119" }, "childNodes": [{ "type": 3, "textContent": "Add to cart", "id": 71 }], "id": 70 }], "id": 65 }], "id": 63 }, { "type": 3, "textContent": "\n", "id": 72 }, { "type": 2, "tagName": "div", "attributes": { "class": "card" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "img i4" }, "childNodes": [], "id": 74 }, { "type": 2, "tagName": "div", "attributes": { "class": "body" }, "childNodes": [{ "type": 2, "tagName": "div", "attributes": { "class": "name" }, "childNodes": [{ "type": 3, "textContent": "Merino Crew", "id": 77 }], "id": 76 }, { "type": 2, "tagName": "div", "attributes": { "class": "price" }, "childNodes": [{ "type": 3, "textContent": "$68", "id": 79 }], "id": 78 }, { "type": 2, "tagName": "button", "attributes": { "class": "add", "data-p": "Merino Crew", "data-c": "68" }, "childNodes": [{ "type": 3, "textContent": "Add to cart", "id": 81 }], "id": 80 }], "id": 75 }], "id": 73 }, { "type": 3, "textContent": "\n", "id": 82 }], "id": 41 }, { "type": 3, "textContent": "\n", "id": 83 }, { "type": 2, "tagName": "aside", "attributes": { "class": "drawer", "id": "drawer" }, "childNodes": [{ "type": 2, "tagName": "h2", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "Your cart", "id": 86 }], "id": 85 }, { "type": 2, "tagName": "div", "attributes": { "id": "lines" }, "childNodes": [], "id": 87 }, { "type": 2, "tagName": "div", "attributes": { "class": "line" }, "childNodes": [{ "type": 2, "tagName": "b", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "Total", "id": 90 }], "id": 89 }, { "type": 2, "tagName": "b", "attributes": { "id": "total" }, "childNodes": [{ "type": 3, "textContent": "$0", "id": 92 }], "id": 91 }], "id": 88 }, { "type": 3, "textContent": "\n", "id": 93 }, { "type": 2, "tagName": "label", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "Email", "id": 95 }], "id": 94 }, { "type": 2, "tagName": "input", "attributes": { "id": "email", "placeholder": "you@example.com" }, "childNodes": [], "id": 96 }, { "type": 2, "tagName": "label", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "Promo code", "id": 98 }], "id": 97 }, { "type": 2, "tagName": "input", "attributes": { "id": "promo", "placeholder": "Optional" }, "childNodes": [], "id": 99 }, { "type": 3, "textContent": "\n", "id": 100 }, { "type": 2, "tagName": "button", "attributes": { "class": "pay", "id": "pay" }, "childNodes": [{ "type": 3, "textContent": "Place order", "id": 102 }], "id": 101 }, { "type": 2, "tagName": "div", "attributes": { "class": "err", "id": "err" }, "childNodes": [{ "type": 3, "textContent": "Something went wrong. Please try again.", "id": 104 }], "id": 103 }], "id": 84 }, { "type": 3, "textContent": "\n", "id": 105 }, { "type": 2, "tagName": "script", "attributes": {}, "childNodes": [{ "type": 3, "textContent": "SCRIPT_PLACEHOLDER", "id": 107 }], "id": 106 }, { "type": 3, "textContent": "\n", "id": 108 }], "id": 13 }], "id": 3 }], "id": 1 }, "initialOffset": { "left": 0, "top": 0 } }, "timestamp": 1790260328004 },
9
11
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 640, "y": 300, "id": 41, "timeOffset": 0 }] }, "timestamp": 1790260328010 },
12
+ { "type": 6, "data": { "plugin": "rrweb/network@1", "payload": { "requests": [{ "url": "https://shop.northwind.test/collections/trail", "method": "GET", "initiatorType": "navigation", "status": 200, "startTime": 0, "endTime": 186, "requestHeaders": { "accept": "*/*" }, "responseHeaders": { "content-type": "text/html; charset=utf-8", "cache-control": "max-age=31536000" } }, { "url": "https://shop.northwind.test/assets/app-4f2a.js", "method": "GET", "initiatorType": "script", "status": 200, "startTime": 120, "endTime": 214, "requestHeaders": { "accept": "*/*" }, "responseHeaders": { "content-type": "text/javascript", "cache-control": "max-age=31536000" } }, { "url": "https://shop.northwind.test/assets/app-4f2a.css", "method": "GET", "initiatorType": "link", "status": 200, "startTime": 122, "endTime": 183, "requestHeaders": { "accept": "*/*" }, "responseHeaders": { "content-type": "text/css", "cache-control": "max-age=31536000" } }] } }, "timestamp": 1790260328190 },
13
+ { "type": 6, "data": { "plugin": "rrweb/console@1", "payload": { "level": "log", "trace": [], "payload": ["\"[northwind] storefront ready\"", "\"build 4.12.0\""] } }, "timestamp": 1790260328240 },
14
+ { "type": 6, "data": { "plugin": "rrweb/network@1", "payload": { "requests": [{ "url": "https://shop.northwind.test/api/products?collection=trail", "method": "GET", "initiatorType": "fetch", "status": 200, "startTime": 300, "endTime": 442, "requestHeaders": { "accept": "application/json" }, "responseHeaders": { "content-type": "application/json; charset=utf-8", "cache-control": "no-store" }, "responseBody": "{\"products\": [{\"sku\": \"TR2\", \"name\": \"Trail Runner 2\", \"price\": 148}, {\"sku\": \"SS1\", \"name\": \"Summit Shell\", \"price\": 229}, {\"sku\": \"RP28\", \"name\": \"Ridge Pack 28L\", \"price\": 119}, {\"sku\": \"MC1\", \"name\": \"Merino Crew\", \"price\": 68}]}" }] } }, "timestamp": 1790260328420 },
10
15
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 608, "y": 302, "id": 54, "timeOffset": -99 }, { "x": 357, "y": 319, "id": 54, "timeOffset": -35 }] }, "timestamp": 1790260328511 },
11
16
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 223, "y": 330, "id": 44, "timeOffset": 0 }] }, "timestamp": 1790260329021 },
12
17
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 410, "y": 330, "id": 54, "timeOffset": -438 }, { "x": 454, "y": 341, "id": 54, "timeOffset": -109 }, { "x": 247, "y": 433, "id": 50, "timeOffset": -46 }] }, "timestamp": 1790260329522 },
@@ -15,6 +20,8 @@ export const replayDemoEvents = [
15
20
  { "type": 3, "data": { "source": 2, "type": 0, "id": 50, "x": 182.5, "y": 436.5299987792969 }, "timestamp": 1790260329770 },
16
21
  { "type": 3, "data": { "source": 2, "type": 2, "id": 50, "x": 182, "y": 436, "pointerType": 0 }, "timestamp": 1790260329770 },
17
22
  { "type": 3, "data": { "source": 0, "texts": [], "attributes": [], "removes": [{ "parentId": 32, "id": 33 }, { "parentId": 91, "id": 92 }], "adds": [{ "parentId": 32, "nextId": null, "node": { "type": 3, "textContent": "1", "id": 109 } }, { "parentId": 87, "nextId": null, "node": { "type": 2, "tagName": "div", "attributes": { "class": "line" }, "childNodes": [], "id": 110 } }, { "parentId": 110, "nextId": null, "node": { "type": 2, "tagName": "span", "attributes": {}, "childNodes": [], "id": 111 } }, { "parentId": 111, "nextId": null, "node": { "type": 3, "textContent": "$148", "id": 112 } }, { "parentId": 91, "nextId": null, "node": { "type": 3, "textContent": "$148", "id": 113 } }, { "parentId": 110, "nextId": 111, "node": { "type": 2, "tagName": "span", "attributes": {}, "childNodes": [], "id": 114 } }, { "parentId": 114, "nextId": null, "node": { "type": 3, "textContent": "Trail Runner 2", "id": 115 } }] }, "timestamp": 1790260329771 },
23
+ { "type": 6, "data": { "plugin": "rrweb/network@1", "payload": { "requests": [{ "url": "https://shop.northwind.test/api/cart", "method": "POST", "initiatorType": "fetch", "status": 200, "startTime": 2000, "endTime": 2168, "requestHeaders": { "accept": "application/json", "content-type": "application/json" }, "responseHeaders": { "content-type": "application/json; charset=utf-8", "cache-control": "no-store" }, "requestBody": "{\"sku\": \"TR2\", \"qty\": 1}", "responseBody": "{\"items\": 1, \"total\": 148}" }] } }, "timestamp": 1790260329939 },
24
+ { "type": 6, "data": { "plugin": "rrweb/console@1", "payload": { "level": "info", "trace": [], "payload": ["\"cart: added\"", "\"Trail Runner 2\""] } }, "timestamp": 1790260329941 },
18
25
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 182, "y": 436, "id": 50, "timeOffset": -253 }] }, "timestamp": 1790260330023 },
19
26
  { "type": 5, "data": { "tag": "checkpoint", "payload": { "label": "Added Trail Runner 2" } }, "timestamp": 1790260330279 },
20
27
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 223, "y": 438, "id": 50, "timeOffset": -243 }, { "x": 512, "y": 454, "id": 60, "timeOffset": -181 }] }, "timestamp": 1790260330524 },
@@ -24,6 +31,8 @@ export const replayDemoEvents = [
24
31
  { "type": 3, "data": { "source": 2, "type": 0, "id": 70, "x": 792.5, "y": 436.5299987792969 }, "timestamp": 1790260330663 },
25
32
  { "type": 3, "data": { "source": 2, "type": 2, "id": 70, "x": 792, "y": 436, "pointerType": 0 }, "timestamp": 1790260330663 },
26
33
  { "type": 3, "data": { "source": 0, "texts": [], "attributes": [], "removes": [{ "parentId": 32, "id": 109 }, { "parentId": 87, "id": 110 }, { "parentId": 91, "id": 113 }], "adds": [{ "parentId": 32, "nextId": null, "node": { "type": 3, "textContent": "2", "id": 116 } }, { "parentId": 87, "nextId": null, "node": { "type": 2, "tagName": "div", "attributes": { "class": "line" }, "childNodes": [], "id": 117 } }, { "parentId": 117, "nextId": null, "node": { "type": 2, "tagName": "span", "attributes": {}, "childNodes": [], "id": 118 } }, { "parentId": 118, "nextId": null, "node": { "type": 3, "textContent": "$119", "id": 119 } }, { "parentId": 91, "nextId": null, "node": { "type": 3, "textContent": "$267", "id": 120 } }, { "parentId": 87, "nextId": 117, "node": { "type": 2, "tagName": "div", "attributes": { "class": "line" }, "childNodes": [], "id": 121 } }, { "parentId": 121, "nextId": null, "node": { "type": 2, "tagName": "span", "attributes": {}, "childNodes": [], "id": 122 } }, { "parentId": 121, "nextId": 122, "node": { "type": 2, "tagName": "span", "attributes": {}, "childNodes": [], "id": 123 } }, { "parentId": 123, "nextId": null, "node": { "type": 3, "textContent": "Trail Runner 2", "id": 124 } }, { "parentId": 122, "nextId": null, "node": { "type": 3, "textContent": "$148", "id": 125 } }, { "parentId": 117, "nextId": 118, "node": { "type": 2, "tagName": "span", "attributes": {}, "childNodes": [], "id": 126 } }, { "parentId": 126, "nextId": null, "node": { "type": 3, "textContent": "Ridge Pack 28L", "id": 127 } }] }, "timestamp": 1790260330664 },
34
+ { "type": 6, "data": { "plugin": "rrweb/network@1", "payload": { "requests": [{ "url": "https://shop.northwind.test/api/cart", "method": "POST", "initiatorType": "fetch", "status": 200, "startTime": 2900, "endTime": 3052, "requestHeaders": { "accept": "application/json", "content-type": "application/json" }, "responseHeaders": { "content-type": "application/json; charset=utf-8", "cache-control": "no-store" }, "requestBody": "{\"sku\": \"RP28\", \"qty\": 1}", "responseBody": "{\"items\": 2, \"total\": 267}" }] } }, "timestamp": 1790260330816 },
35
+ { "type": 6, "data": { "plugin": "rrweb/console@1", "payload": { "level": "info", "trace": [], "payload": ["\"cart: added\"", "\"Ridge Pack 28L\""] } }, "timestamp": 1790260330818 },
27
36
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 792, "y": 436, "id": 70, "timeOffset": -363 }] }, "timestamp": 1790260331025 },
28
37
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 815, "y": 414, "id": 65, "timeOffset": -249 }, { "x": 1003, "y": 234, "id": 74, "timeOffset": -183 }, { "x": 1191, "y": 54, "id": 15, "timeOffset": -116 }] }, "timestamp": 1790260331526 },
29
38
  { "type": 3, "data": { "source": 2, "type": 1, "id": 30, "x": 1211.1400146484375, "y": 31.489999771118164 }, "timestamp": 1790260331688 },
@@ -48,6 +57,8 @@ export const replayDemoEvents = [
48
57
  { "type": 3, "data": { "source": 2, "type": 0, "id": 99, "x": 1090.5, "y": 321.2099914550781 }, "timestamp": 1790260333914 },
49
58
  { "type": 3, "data": { "source": 2, "type": 2, "id": 99, "x": 1090, "y": 321, "pointerType": 0 }, "timestamp": 1790260333914 },
50
59
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 1090, "y": 321, "id": 99, "timeOffset": -441 }] }, "timestamp": 1790260334354 },
60
+ { "type": 6, "data": { "plugin": "rrweb/console@1", "payload": { "level": "warn", "trace": ["applyPromo (checkout.ts:71)", "HTMLInputElement.onchange (checkout.ts:40)"], "payload": ["\"[promo] `code` is deprecated; send `promoCode` instead\""] } }, "timestamp": 1790260334694 },
61
+ { "type": 6, "data": { "plugin": "rrweb/network@1", "payload": { "requests": [{ "url": "https://shop.northwind.test/api/promo/validate?code=FALL25", "method": "GET", "initiatorType": "fetch", "status": 200, "startTime": 6800, "endTime": 6918, "requestHeaders": { "accept": "application/json" }, "responseHeaders": { "content-type": "application/json; charset=utf-8", "cache-control": "no-store" }, "responseBody": "{\"valid\": true, \"discount\": 0.15}" }] } }, "timestamp": 1790260334834 },
51
62
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 1090, "y": 330, "id": 99, "timeOffset": -193 }, { "x": 1090, "y": 401, "id": 101, "timeOffset": -128 }] }, "timestamp": 1790260334855 },
52
63
  { "type": 3, "data": { "source": 2, "type": 1, "id": 101, "x": 1090.5, "y": 380.5 }, "timestamp": 1790260334954 },
53
64
  { "type": 3, "data": { "source": 5, "text": "FALL25", "isChecked": false, "id": 99 }, "timestamp": 1790260334954 },
@@ -57,8 +68,8 @@ export const replayDemoEvents = [
57
68
  { "type": 3, "data": { "source": 2, "type": 2, "id": 101, "x": 1090, "y": 380, "pointerType": 0 }, "timestamp": 1790260334954 },
58
69
  { "type": 3, "data": { "source": 0, "texts": [], "attributes": [], "removes": [{ "parentId": 101, "id": 102 }], "adds": [{ "parentId": 101, "nextId": null, "node": { "type": 3, "textContent": "Placing order…", "id": 128 } }] }, "timestamp": 1790260334954 },
59
70
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 1090, "y": 380, "id": 101, "timeOffset": -402 }] }, "timestamp": 1790260335356 },
60
- { "type": 5, "data": { "tag": "network", "payload": { "method": "POST", "status": 500, "url": "/api/checkout", "label": "POST /api/checkout 500" } }, "timestamp": 1790260335855 },
61
- { "type": 5, "data": { "tag": "error", "payload": { "label": "TypeError", "message": "Cannot read properties of undefined (reading 'total') at applyPromo (checkout.ts:88)" } }, "timestamp": 1790260335856 },
71
+ { "type": 5, "data": { "tag": "network", "payload": { "method": "POST", "status": 500, "url": "/api/checkout", "label": "POST /api/checkout 500", "duration": 412, "type": "fetch", "requestHeaders": { "content-type": "application/json" }, "requestBody": "{\"email\": \"sam@example.com\", \"promoCode\": null, \"code\": \"FALL25\", \"items\": [\"TR2\", \"RP28\"]}", "responseHeaders": { "content-type": "application/json; charset=utf-8", "x-request-id": "req_7Hq2c9" }, "responseBody": "{\"error\": \"internal_error\", \"message\": \"Cannot read properties of undefined (reading 'total')\"}" } }, "timestamp": 1790260335855 },
72
+ { "type": 5, "data": { "tag": "error", "payload": { "label": "TypeError", "message": "Cannot read properties of undefined (reading 'total') at applyPromo (checkout.ts:88)", "stack": ["at applyPromo (checkout.ts:88:19)", "at placeOrder (checkout.ts:132:5)", "at HTMLButtonElement.onclick (checkout.ts:44:3)"] } }, "timestamp": 1790260335856 },
62
73
  { "type": 3, "data": { "source": 0, "texts": [], "attributes": [{ "id": 103, "attributes": { "class": "err show" } }], "removes": [{ "parentId": 101, "id": 128 }], "adds": [{ "parentId": 101, "nextId": null, "node": { "type": 3, "textContent": "Place order", "id": 129 } }] }, "timestamp": 1790260335856 },
63
74
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 1085, "y": 388, "id": 101, "timeOffset": 0 }] }, "timestamp": 1790260336357 },
64
75
  { "type": 3, "data": { "source": 1, "positions": [{ "x": 1050, "y": 444, "id": 103, "timeOffset": -441 }] }, "timestamp": 1790260336859 },