@brett_lamy/docstream 1.23.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -27,7 +27,7 @@ export { ReplayEmbed, ReplayPreview, formatReplayTime } from "./replay/ReplayPre
27
27
  export type { ReplayEventsSource, ReplayEventsUrlSource, ReplayPageSource, ReplayPreviewHandle, ReplayPreviewProps, ReplaySource, } from "./replay/ReplayPreview.js";
28
28
  export type { ReplayEvent } from "./replay/types.js";
29
29
  export { isReplayQaUrl, normalizeReplayEmbedUrl } from "./replay/url.js";
30
- export { ReplayFile, isRrwebUrl } from "./replay/ReplayFile.js";
30
+ export { ReplayFile, isRrwebUrl, splitReplayFragment } from "./replay/ReplayFile.js";
31
31
  export { ImageThumbnail, leadingThumbnail, thumbnailLabel } from "./docs/ImageThumbnail.js";
32
32
  export type { ReplayFileProps } from "./replay/ReplayFile.js";
33
33
  export { VideoEmbed } from "./video/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ export { DemoBlock, DemoFullscreen, DemoViewer, DocstreamDemoContext, DocstreamD
16
16
  export { CitationSources, DocstreamRefContext, InlineReference } from "./docs/reference.js";
17
17
  export { ReplayEmbed, ReplayPreview, formatReplayTime } from "./replay/ReplayPreview.js";
18
18
  export { isReplayQaUrl, normalizeReplayEmbedUrl } from "./replay/url.js";
19
- export { ReplayFile, isRrwebUrl } from "./replay/ReplayFile.js";
19
+ export { ReplayFile, isRrwebUrl, splitReplayFragment } from "./replay/ReplayFile.js";
20
20
  export { ImageThumbnail, leadingThumbnail, thumbnailLabel } from "./docs/ImageThumbnail.js";
21
21
  export { VideoEmbed } from "./video/index.js";
22
22
  export { StlViewer, isStlUrl, parseStl } from "./stl/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,15 @@ export interface ReplayFileProps extends Omit<ReplayPlayerOptions, 'url'> {
6
6
  /**
7
7
  * An rrweb recording file (a JSON event array, or `{ events }`), played in the replay browser frame.
8
8
  * The URL goes through `AssetResolverProvider`, and the file is fetched only once the frame nears the
9
- * viewport, so a page of recordings doesn't download them all up front.
9
+ * viewport, so a page of recordings doesn't download them all up front. A media fragment on the URL,
10
+ * `recording.rrweb#t=4.7,7.4` (seconds), is its `timeWindow`.
10
11
  */
11
12
  export declare function ReplayFile({ url, ...options }: ReplayFileProps): import("react").JSX.Element;
13
+ /** Splits `#t=start,end` (a media fragment, in seconds; `#t=start` runs to the end) off a recording's URL. */
14
+ export declare function splitReplayFragment(url: string): {
15
+ file: string;
16
+ segment?: [number, number];
17
+ };
12
18
  /** True for an rrweb recording file: a URL whose path ends in `.rrweb`. */
13
19
  export declare function isRrwebUrl(url: string): boolean;
14
20
  //# sourceMappingURL=ReplayFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayFile.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayFile.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACvE,yGAAyG;IACzG,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,eAAe,+BAgB9D;AAID,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C"}
1
+ {"version":3,"file":"ReplayFile.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayFile.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACvE,yGAAyG;IACzG,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,eAAe,+BAiB9D;AAED,8GAA8G;AAC9G,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAQ7F;AAID,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C"}
@@ -5,10 +5,12 @@ import { ReplayPreview } from './ReplayPreview.js';
5
5
  /**
6
6
  * An rrweb recording file (a JSON event array, or `{ events }`), played in the replay browser frame.
7
7
  * The URL goes through `AssetResolverProvider`, and the file is fetched only once the frame nears the
8
- * viewport, so a page of recordings doesn't download them all up front.
8
+ * viewport, so a page of recordings doesn't download them all up front. A media fragment on the URL,
9
+ * `recording.rrweb#t=4.7,7.4` (seconds), is its `timeWindow`.
9
10
  */
10
11
  export function ReplayFile({ url, ...options }) {
11
- const src = useAsset(url);
12
+ const { file, segment } = splitReplayFragment(url);
13
+ const src = useAsset(file);
12
14
  const ref = useRef(null);
13
15
  const [near, setNear] = useState(false);
14
16
  useEffect(() => {
@@ -23,7 +25,19 @@ export function ReplayFile({ url, ...options }) {
23
25
  }, [near]);
24
26
  if (!near || src === undefined)
25
27
  return _jsx("div", { ref: ref, className: "docstream-asset-pending", "data-slot": "replay-file", "aria-busy": "true" });
26
- return _jsx(ReplayPreview, { source: { kind: 'events-url', url: src }, chrome: "browser", ...options });
28
+ return _jsx(ReplayPreview, { source: { kind: 'events-url', url: src }, chrome: "browser", timeWindow: segment, ...options });
29
+ }
30
+ /** Splits `#t=start,end` (a media fragment, in seconds; `#t=start` runs to the end) off a recording's URL. */
31
+ export function splitReplayFragment(url) {
32
+ const hash = url.indexOf('#');
33
+ if (hash < 0)
34
+ return { file: url };
35
+ const m = url.slice(hash + 1).match(/(?:^|&)t=(?:npt:)?([\d.]*)(?:,([\d.]+))?(?:&|$)/);
36
+ if (!m)
37
+ return { file: url };
38
+ const start = m[1] ? Number(m[1]) * 1000 : 0;
39
+ const end = m[2] ? Number(m[2]) * 1000 : Infinity;
40
+ return { file: url.slice(0, hash), segment: Number.isFinite(start) && end > start ? [start, end] : undefined };
27
41
  }
28
42
  const RRWEB = /\.rrweb(?:[?#]|$)/i;
29
43
  /** True for an rrweb recording file: a URL whose path ends in `.rrweb`. */
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayFile.js","sourceRoot":"","sources":["../../src/replay/ReplayFile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAmB;IAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI;YAAE,OAAO;QACjB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,IAAI,OAAO,oBAAoB,KAAK,WAAW;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,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,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAClI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,yBAAyB,eAAW,aAAa,eAAW,MAAM,GAAG,CAAC;IACtI,OAAO,KAAC,aAAa,IAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAC,SAAS,KAAK,OAAO,GAAI,CAAC;AACnG,CAAC;AAED,MAAM,KAAK,GAAG,oBAAoB,CAAC;AAEnC,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"ReplayFile.js","sourceRoot":"","sources":["../../src/replay/ReplayFile.tsx"],"names":[],"mappings":"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"}
@@ -29,9 +29,14 @@ export interface ReplayPlayerOptions {
29
29
  /** Play/pause, scrubber, speed and fullscreen (default true). */
30
30
  controls?: boolean;
31
31
  autoplay?: boolean;
32
+ /** Restart at the end (with a `timeWindow`, at the window's end, from its start). */
32
33
  loop?: boolean;
33
- /** Where the player starts, in ms from the start. */
34
+ /** Where the player starts, in ms from the start (default 0, or the `timeWindow`'s start). */
34
35
  initialTime?: number;
36
+ /** `[start, end]` in ms: the segment that matters. The player opens at `start` with the segment highlighted on the
37
+ * scrubber, and playing from inside it stops at `end` (play again to replay it). Scrub or seek outside it and
38
+ * playback runs on through the rest of the recording. */
39
+ timeWindow?: readonly [number, number];
35
40
  /** Speeds the speed button cycles through; the first is the initial speed (default 1, 2, 4, 0.5). */
36
41
  speeds?: number[];
37
42
  /** Markers on the scrubber rail: `true` (default) reads them from the recording, `false` hides the rail,
@@ -69,7 +74,7 @@ export interface ReplayPlayerOptions {
69
74
  style?: CSSProperties;
70
75
  }
71
76
  export declare function formatReplayTime(ms: number): string;
72
- export declare function ReplayPlayer({ events, url, title, chrome, trafficLights, controls, autoplay, loop, initialTime, speeds, markers, markerKinds, cursor, disableDevtools, devtools, defaultDevtoolsTab, inspections, fit, poster, lazy, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }: ReplayPlayerOptions & {
77
+ export declare function ReplayPlayer({ events, url, title, chrome, trafficLights, controls, autoplay, loop, initialTime: initialTimeProp, timeWindow, speeds, markers, markerKinds, cursor, disableDevtools, devtools, defaultDevtoolsTab, inspections, fit, poster, lazy, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }: ReplayPlayerOptions & {
73
78
  events: ReplayEvent[];
74
79
  }): import("react").JSX.Element;
75
80
  /** Splits an address for the URL bar: the host, and the path + query + hash after it. */
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayPlayer.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReplayPlayer.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  follows the recording's navigations, play/pause, a scrubber with the recording's moments on a rail above
5
5
  it, a speed control, fullscreen, a drawn cursor whose clicks ripple, and DevTools: Console and Network buttons
6
6
  in the top bar with what had been logged and requested by the playhead, which open a DevTools panel over the page,
7
- and inspections (inspections.ts) that open it on a request or message as playback reaches them. Until the player is ready a
7
+ and inspections (inspections.ts) that open it on a request or message as playback reaches them. A time window
8
+ highlights a segment on the scrubber, opens there and plays just that, until you scrub outside it. Until the player is ready a
8
9
  poster (a page-shaped skeleton by default) holds the frame's exact size, so nothing jumps.
9
10
 
10
11
  Plain React + plain CSS (`@layer docstream.replay` in styles.css, `[data-slot]` hooks). Keys (focus inside
@@ -29,7 +30,7 @@ export function formatReplayTime(ms) {
29
30
  const MARKER_NOUN = {
30
31
  click: 'Click', error: 'Error', network: 'Request failed', navigation: 'Navigation', custom: 'Checkpoint',
31
32
  };
32
- 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, disableDevtools = false, devtools = true, defaultDevtoolsTab, inspections, fit = 'width', poster, lazy = true, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }) {
33
+ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = 'browser', trafficLights = true, controls = true, autoplay = false, loop = false, initialTime: initialTimeProp, timeWindow, speeds = DEFAULT_PLAYER_SPEEDS, markers = true, markerKinds, cursor = true, disableDevtools = false, devtools = true, defaultDevtoolsTab, inspections, fit = 'width', poster, lazy = true, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress, className, style, }) {
33
34
  const rootRef = useRef(null);
34
35
  const stage = useRef(null);
35
36
  const reduced = useReducedMotion();
@@ -51,12 +52,23 @@ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = '
51
52
  const list = Array.isArray(markers) ? markers : markers ? [...recorded, ...own].sort((a, b) => a.time - b.time) : [];
52
53
  return markerKinds ? list.filter((m) => markerKinds.includes(m.kind)) : list;
53
54
  }, [markers, recorded, markerKinds, inspections, toolsOn]);
55
+ // The time window, clamped to the recording; dropped when it's empty.
56
+ const span = useMemo(() => {
57
+ if (!timeWindow)
58
+ return null;
59
+ const start = Math.max(0, Math.min(timeWindow[0], meta.duration));
60
+ const end = Math.max(start, Math.min(timeWindow[1], meta.duration));
61
+ return end - start >= 1 ? { start, end } : null;
62
+ }, [timeWindow, meta.duration]);
63
+ const initialTime = initialTimeProp ?? span?.start ?? 0;
54
64
  const [visible, setVisible] = useState(!lazy);
55
65
  const [ready, setReady] = useState(false);
56
66
  const [posterGone, setPosterGone] = useState(false);
57
67
  const [time, setTime] = useState(initialTime);
58
68
  const [playing, setPlaying] = useState(false);
59
69
  const [finished, setFinished] = useState(false);
70
+ // Stopped at the window's end: the center button replays the segment.
71
+ const [windowDone, setWindowDone] = useState(false);
60
72
  const [speedIndex, setSpeedIndex] = useState(0);
61
73
  const [fullscreen, setFullscreen] = useState(false);
62
74
  const duration = meta.duration;
@@ -87,25 +99,81 @@ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = '
87
99
  }, [ready, reduced]);
88
100
  const resolvedRef = useRef(resolved);
89
101
  resolvedRef.current = resolved;
90
- const handle = useMemo(() => ({
91
- play: (offset) => { setFinished(false); stage.current?.play(offset); },
92
- pause: (offset) => stage.current?.pause(offset),
93
- seek: (ms) => { setFinished(false); stage.current?.seek(ms); },
94
- toggle: () => { setFinished(false); stage.current?.toggle(); },
95
- getCurrentTime: () => stage.current?.getCurrentTime() ?? 0,
96
- inspect: (id) => {
97
- const inspection = resolvedRef.current.find((x) => x.id === id);
98
- if (!inspection)
99
- return;
102
+ // The window, the playhead and the play state, for the handle (which never re-creates) and onTime.
103
+ const spanRef = useRef(span);
104
+ spanRef.current = span;
105
+ const timeRef = useRef(initialTime);
106
+ const playingRef = useRef(false);
107
+ // Whether playback is held to the window: it is when it starts (or is moved) inside it.
108
+ const inWindow = (ms) => !!spanRef.current && ms >= spanRef.current.start && ms < spanRef.current.end;
109
+ const held = useRef(inWindow(initialTime));
110
+ const handle = useMemo(() => {
111
+ const play = (offset) => {
112
+ const w = spanRef.current;
113
+ if (!w) {
114
+ setFinished(false);
115
+ return stage.current?.play(offset);
116
+ }
117
+ let from = offset ?? timeRef.current;
118
+ // Play at the window's end replays the window.
119
+ if (w && offset === undefined && Math.abs(from - w.end) < 60)
120
+ from = w.start;
121
+ held.current = inWindow(from);
100
122
  setFinished(false);
101
- stage.current?.seek(inspection.time);
102
- setPanel(inspection.tab);
103
- setAutoOpened(false);
104
- },
105
- }), []);
123
+ setWindowDone(false);
124
+ if (from !== timeRef.current)
125
+ stage.current?.play(from);
126
+ else
127
+ stage.current?.play(offset);
128
+ };
129
+ const seek = (ms) => {
130
+ held.current = inWindow(ms);
131
+ setFinished(false);
132
+ setWindowDone(false);
133
+ stage.current?.seek(ms);
134
+ };
135
+ return {
136
+ play,
137
+ pause: (offset) => stage.current?.pause(offset),
138
+ seek,
139
+ toggle: () => {
140
+ if (!spanRef.current) {
141
+ setFinished(false);
142
+ return stage.current?.toggle();
143
+ }
144
+ return playingRef.current ? stage.current?.pause() : play();
145
+ },
146
+ getCurrentTime: () => stage.current?.getCurrentTime() ?? 0,
147
+ inspect: (id) => {
148
+ const inspection = resolvedRef.current.find((x) => x.id === id);
149
+ if (!inspection)
150
+ return;
151
+ seek(inspection.time);
152
+ setPanel(inspection.tab);
153
+ setAutoOpened(false);
154
+ },
155
+ };
156
+ }, []);
106
157
  useImperativeHandle(playerRef, () => handle, [handle]);
107
- const onTime = useCallback((ms) => { setTime(ms); onTimeUpdate?.(ms); }, [onTimeUpdate]);
158
+ const onTime = useCallback((ms) => {
159
+ timeRef.current = ms;
160
+ // Held to the window: stop at its end, or go round again with `loop`.
161
+ const w = spanRef.current;
162
+ if (w && held.current && playingRef.current && ms >= w.end) {
163
+ if (loop)
164
+ stage.current?.seek(w.start);
165
+ else {
166
+ stage.current?.pause(w.end);
167
+ setWindowDone(true);
168
+ ms = w.end;
169
+ timeRef.current = ms;
170
+ }
171
+ }
172
+ setTime(ms);
173
+ onTimeUpdate?.(ms);
174
+ }, [onTimeUpdate, loop]);
108
175
  const onPlaying = useCallback((p) => {
176
+ playingRef.current = p;
109
177
  setPlaying(p);
110
178
  if (p)
111
179
  setFinished(false);
@@ -208,9 +276,9 @@ export function ReplayPlayer({ events, url, title = 'Session replay', chrome = '
208
276
  const root = rootRef.current;
209
277
  if (root && !root.contains(document.activeElement))
210
278
  root.focus({ preventScroll: true });
211
- }, 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, tab: panel, onTab: setPanel, onClose: () => { setPanel(null); rootRef.current?.focus({ preventScroll: true }); }, onSeek: (ms) => handle.seek(ms), inspection: inspection, autoFocus: !autoOpened })) : 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',
279
+ }, 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 && !span, 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, tab: panel, onTab: setPanel, onClose: () => { setPanel(null); rootRef.current?.focus({ preventScroll: true }); }, onSeek: (ms) => handle.seek(ms), inspection: inspection, autoFocus: !autoOpened })) : 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' : windowDone ? 'Replay the segment' : 'Play',
212
280
  // The overlay leaves as playback starts; keep focus (and the keys) in the player.
213
- 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] }));
281
+ onClick: () => { rootRef.current?.focus({ preventScroll: true }); toggle(); }, children: finished || windowDone ? _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, span: span, 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] }));
214
282
  }
215
283
  /* ── parts ───────────────────────────────────────────────────────────────────────── */
216
284
  /** Splits an address for the URL bar: the host, and the path + query + hash after it. */
@@ -241,7 +309,7 @@ const PointerOverlay = memo(function PointerOverlay({ track, time, reduced }) {
241
309
  } }, c.time));
242
310
  }), at ? (_jsx("svg", { "data-slot": "replay-preview-cursor", viewBox: "0 0 20 24", width: "20", height: "24", style: { left: at.x - 2, top: at.y - 1, transform: 'scale(calc(1 / var(--replay-scale, 1)))' }, children: _jsx("path", { d: "M2.5 1.5v18.2l4.7-4.5 3 6.8 3.1-1.4-3-6.6h6.5z", fill: "#000", stroke: "#fff", strokeWidth: "1.4", strokeLinejoin: "round" }) })) : null] }));
243
311
  });
244
- function Scrubber({ time, duration, markers, disabled, onSeek, onMarker }) {
312
+ function Scrubber({ time, duration, span, markers, disabled, onSeek, onMarker }) {
245
313
  const max = Math.max(1, duration);
246
314
  const value = Math.min(time, max);
247
315
  // Dots closer than ~1.5% of the timeline would sit on top of each other: step each one 10px right of the last.
@@ -257,7 +325,10 @@ function Scrubber({ time, duration, markers, disabled, onSeek, onMarker }) {
257
325
  }
258
326
  return out;
259
327
  }, [markers, max]);
260
- return (_jsxs("div", { "data-slot": "replay-preview-scrubber", "data-markers": markers.length ? '' : undefined, children: [markers.length ? (_jsx("div", { "data-slot": "replay-preview-markers", children: markers.map((m) => (_jsx("button", { type: "button", "data-kind": m.kind, "aria-label": `${m.label} at ${formatReplayTime(m.time)}`, title: `${formatReplayTime(m.time)} · ${MARKER_NOUN[m.kind]}\n${m.detail ? `${m.label} — ${m.detail}` : m.label}`, style: { left: `calc(${(m.time / max) * 100}% + ${(nudges.get(m.id) ?? 0) * 10}px)` }, onClick: () => onMarker(m), disabled: disabled }, m.id))) })) : null, _jsx("input", { type: "range", "aria-label": "Playback position", "aria-valuetext": `${formatReplayTime(value)} of ${formatReplayTime(duration)}`, min: 0, max: max, step: 10, value: value, disabled: disabled, style: { '--replay-progress': `${(value / max) * 100}%` }, onChange: (e) => onSeek(Number(e.currentTarget.value)) })] }));
328
+ return (_jsxs("div", { "data-slot": "replay-preview-scrubber", "data-markers": markers.length ? '' : undefined, children: [span ? (_jsx("div", { "data-slot": "replay-preview-window", "aria-hidden": "true", title: `${formatReplayTime(span.start)}–${formatReplayTime(span.end)}`, style: { '--replay-window-start': span.start / max, '--replay-window-size': (span.end - span.start) / max } })) : null, markers.length ? (_jsx("div", { "data-slot": "replay-preview-markers", children: markers.map((m) => (_jsx("button", { type: "button", "data-kind": m.kind, "aria-label": `${m.label} at ${formatReplayTime(m.time)}`, title: `${formatReplayTime(m.time)} · ${MARKER_NOUN[m.kind]}\n${m.detail ? `${m.label} — ${m.detail}` : m.label}`, style: { left: `calc(${(m.time / max) * 100}% + ${(nudges.get(m.id) ?? 0) * 10}px)` }, onClick: () => onMarker(m), disabled: disabled }, m.id))) })) : null, _jsx("input", { type: "range", "aria-label": "Playback position", "aria-valuetext": `${formatReplayTime(value)} of ${formatReplayTime(duration)}${span ? `, segment ${formatReplayTime(span.start)} to ${formatReplayTime(span.end)}` : ''}`, min: 0, max: max, step: 10, value: value, disabled: disabled, style: {
329
+ '--replay-progress': `${(value / max) * 100}%`,
330
+ ...(span ? { '--replay-progress-start': `${(span.start / max) * 100}%` } : {}),
331
+ }, onChange: (e) => onSeek(Number(e.currentTarget.value)) })] }));
261
332
  }
262
333
  /** A page-shaped placeholder: header, hero lines and a card grid, sized to the frame. */
263
334
  function PagePoster({ empty }) {
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayPlayer.js","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReplayPlayer.js","sourceRoot":"","sources":["../../src/replay/ReplayPlayer.tsx"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export type { ReplayInspection, ReplayInspectionTab, ResolvedReplayInspection }
12
12
  export { ReplayEventType, ReplayIncrementalSource, ReplayMouseInteraction } from './types.js';
13
13
  export type { ReplayEvent } from './types.js';
14
14
  export { isReplayQaUrl, normalizeReplayEmbedUrl } from './url.js';
15
- export { ReplayFile, isRrwebUrl } from './ReplayFile.js';
15
+ export { ReplayFile, isRrwebUrl, splitReplayFragment } from './ReplayFile.js';
16
16
  export type { ReplayFileProps } from './ReplayFile.js';
17
17
  export { sanitizeReplayEvent } from './sanitize.js';
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/replay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACpG,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7H,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACnG,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAC3F,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/replay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACpG,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7H,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACnG,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAC3F,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -5,6 +5,6 @@ export { getReplayDevtools, replayDevtoolsAt, requestName } from './devtools.js'
5
5
  export { getReplayInspections, replayInspectionAt, resolveReplayInspections } from './inspections.js';
6
6
  export { ReplayEventType, ReplayIncrementalSource, ReplayMouseInteraction } from './types.js';
7
7
  export { isReplayQaUrl, normalizeReplayEmbedUrl } from './url.js';
8
- export { ReplayFile, isRrwebUrl } from './ReplayFile.js';
8
+ export { ReplayFile, isRrwebUrl, splitReplayFragment } from './ReplayFile.js';
9
9
  export { sanitizeReplayEvent } from './sanitize.js';
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/replay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAa/E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/replay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAa/E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
package/dist/styles.css CHANGED
@@ -4260,6 +4260,24 @@
4260
4260
  transform: translateY(5px);
4261
4261
  }
4262
4262
 
4263
+ /* The time window: a band under the track, on the same geometry as the markers (4px padding, half a thumb). */
4264
+ :where([data-slot="replay-preview-window"]) {
4265
+ position: absolute;
4266
+ top: 50%;
4267
+ left: calc(10px + (100% - 20px) * var(--replay-window-start, 0));
4268
+ width: max(4px, calc((100% - 20px) * var(--replay-window-size, 1)));
4269
+ height: 10px;
4270
+ border-radius: 999px;
4271
+ background: color-mix(in srgb, var(--primary, #4f46e5) 34%, transparent);
4272
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary, #4f46e5) 60%, transparent);
4273
+ translate: 0 -50%;
4274
+ pointer-events: none;
4275
+ }
4276
+
4277
+ :where([data-slot="replay-preview-scrubber"][data-markers] > [data-slot="replay-preview-window"]) {
4278
+ translate: 0 calc(-50% + 5px);
4279
+ }
4280
+
4263
4281
  :where([data-slot="replay-preview-markers"] > button) {
4264
4282
  position: absolute;
4265
4283
  top: 50%;
@@ -4309,6 +4327,8 @@
4309
4327
  }
4310
4328
 
4311
4329
  :where([data-slot="replay-preview-scrubber"] > input[type="range"]) {
4330
+ /* Above the time-window band. */
4331
+ position: relative;
4312
4332
  --replay-track: 4px;
4313
4333
  --replay-thumb: 12px;
4314
4334
  appearance: none;
@@ -4331,8 +4351,11 @@
4331
4351
  [data-slot="replay-preview-scrubber"] > input[type="range"]::-webkit-slider-runnable-track {
4332
4352
  height: var(--replay-track);
4333
4353
  border-radius: 999px;
4354
+ /* Played: from the time window's start (0 without one) to the playhead. */
4334
4355
  background: linear-gradient(
4335
4356
  to right,
4357
+ color-mix(in srgb, var(--muted-foreground, #71717a) 26%, transparent) var(--replay-progress-start, 0%),
4358
+ var(--primary, #4f46e5) var(--replay-progress-start, 0%),
4336
4359
  var(--primary, #4f46e5) var(--replay-progress, 0%),
4337
4360
  color-mix(in srgb, var(--muted-foreground, #71717a) 26%, transparent) var(--replay-progress, 0%)
4338
4361
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brett_lamy/docstream",
3
- "version": "1.23.0",
3
+ "version": "1.24.0",
4
4
  "description": "GitBook-aware readonly markdown and AI stream renderer.",
5
5
  "publishConfig": {
6
6
  "access": "public"
package/src/index.ts CHANGED
@@ -90,7 +90,7 @@ export type {
90
90
  } from "./replay/ReplayPreview"
91
91
  export type { ReplayEvent } from "./replay/types"
92
92
  export { isReplayQaUrl, normalizeReplayEmbedUrl } from "./replay/url"
93
- export { ReplayFile, isRrwebUrl } from "./replay/ReplayFile"
93
+ export { ReplayFile, isRrwebUrl, splitReplayFragment } from "./replay/ReplayFile"
94
94
  export { ImageThumbnail, leadingThumbnail, thumbnailLabel } from "./docs/ImageThumbnail"
95
95
  export type { ReplayFileProps } from "./replay/ReplayFile"
96
96
  export { VideoEmbed } from "./video"
@@ -11,10 +11,12 @@ export interface ReplayFileProps extends Omit<ReplayPlayerOptions, 'url'> {
11
11
  /**
12
12
  * An rrweb recording file (a JSON event array, or `{ events }`), played in the replay browser frame.
13
13
  * The URL goes through `AssetResolverProvider`, and the file is fetched only once the frame nears the
14
- * viewport, so a page of recordings doesn't download them all up front.
14
+ * viewport, so a page of recordings doesn't download them all up front. A media fragment on the URL,
15
+ * `recording.rrweb#t=4.7,7.4` (seconds), is its `timeWindow`.
15
16
  */
16
17
  export function ReplayFile({ url, ...options }: ReplayFileProps) {
17
- const src = useAsset(url);
18
+ const { file, segment } = splitReplayFragment(url);
19
+ const src = useAsset(file);
18
20
  const ref = useRef<HTMLDivElement>(null);
19
21
  const [near, setNear] = useState(false);
20
22
 
@@ -28,7 +30,18 @@ export function ReplayFile({ url, ...options }: ReplayFileProps) {
28
30
  }, [near]);
29
31
 
30
32
  if (!near || src === undefined) return <div ref={ref} className="docstream-asset-pending" data-slot="replay-file" aria-busy="true" />;
31
- return <ReplayPreview source={{ kind: 'events-url', url: src }} chrome="browser" {...options} />;
33
+ return <ReplayPreview source={{ kind: 'events-url', url: src }} chrome="browser" timeWindow={segment} {...options} />;
34
+ }
35
+
36
+ /** Splits `#t=start,end` (a media fragment, in seconds; `#t=start` runs to the end) off a recording's URL. */
37
+ export function splitReplayFragment(url: string): { file: string; segment?: [number, number] } {
38
+ const hash = url.indexOf('#');
39
+ if (hash < 0) return { file: url };
40
+ const m = url.slice(hash + 1).match(/(?:^|&)t=(?:npt:)?([\d.]*)(?:,([\d.]+))?(?:&|$)/);
41
+ if (!m) return { file: url };
42
+ const start = m[1] ? Number(m[1]) * 1000 : 0;
43
+ const end = m[2] ? Number(m[2]) * 1000 : Infinity;
44
+ return { file: url.slice(0, hash), segment: Number.isFinite(start) && end > start ? [start, end] : undefined };
32
45
  }
33
46
 
34
47
  const RRWEB = /\.rrweb(?:[?#]|$)/i;
@@ -3,7 +3,8 @@
3
3
  follows the recording's navigations, play/pause, a scrubber with the recording's moments on a rail above
4
4
  it, a speed control, fullscreen, a drawn cursor whose clicks ripple, and DevTools: Console and Network buttons
5
5
  in the top bar with what had been logged and requested by the playhead, which open a DevTools panel over the page,
6
- and inspections (inspections.ts) that open it on a request or message as playback reaches them. Until the player is ready a
6
+ and inspections (inspections.ts) that open it on a request or message as playback reaches them. A time window
7
+ highlights a segment on the scrubber, opens there and plays just that, until you scrub outside it. Until the player is ready a
7
8
  poster (a page-shaped skeleton by default) holds the frame's exact size, so nothing jumps.
8
9
 
9
10
  Plain React + plain CSS (`@layer docstream.replay` in styles.css, `[data-slot]` hooks). Keys (focus inside
@@ -56,9 +57,14 @@ export interface ReplayPlayerOptions {
56
57
  /** Play/pause, scrubber, speed and fullscreen (default true). */
57
58
  controls?: boolean
58
59
  autoplay?: boolean
60
+ /** Restart at the end (with a `timeWindow`, at the window's end, from its start). */
59
61
  loop?: boolean
60
- /** Where the player starts, in ms from the start. */
62
+ /** Where the player starts, in ms from the start (default 0, or the `timeWindow`'s start). */
61
63
  initialTime?: number
64
+ /** `[start, end]` in ms: the segment that matters. The player opens at `start` with the segment highlighted on the
65
+ * scrubber, and playing from inside it stops at `end` (play again to replay it). Scrub or seek outside it and
66
+ * playback runs on through the rest of the recording. */
67
+ timeWindow?: readonly [number, number]
62
68
  /** Speeds the speed button cycles through; the first is the initial speed (default 1, 2, 4, 0.5). */
63
69
  speeds?: number[]
64
70
  /** Markers on the scrubber rail: `true` (default) reads them from the recording, `false` hides the rail,
@@ -107,7 +113,7 @@ const MARKER_NOUN: Record<ReplayMarkerKind, string> = {
107
113
 
108
114
  export function ReplayPlayer({
109
115
  events, url, title = 'Session replay', chrome = 'browser', trafficLights = true, controls = true,
110
- autoplay = false, loop = false, initialTime = 0, speeds = DEFAULT_PLAYER_SPEEDS, markers = true, markerKinds,
116
+ autoplay = false, loop = false, initialTime: initialTimeProp, timeWindow, speeds = DEFAULT_PLAYER_SPEEDS, markers = true, markerKinds,
111
117
  cursor = true, disableDevtools = false, devtools = true, defaultDevtoolsTab, inspections, fit = 'width', poster, lazy = true, playerRef, onTimeUpdate, onPlayingChange, onMarkerPress,
112
118
  className, style,
113
119
  }: ReplayPlayerOptions & { events: ReplayEvent[] }) {
@@ -138,12 +144,23 @@ export function ReplayPlayer({
138
144
  return markerKinds ? list.filter((m) => markerKinds.includes(m.kind)) : list
139
145
  }, [markers, recorded, markerKinds, inspections, toolsOn])
140
146
 
147
+ // The time window, clamped to the recording; dropped when it's empty.
148
+ const span = useMemo(() => {
149
+ if (!timeWindow) return null
150
+ const start = Math.max(0, Math.min(timeWindow[0], meta.duration))
151
+ const end = Math.max(start, Math.min(timeWindow[1], meta.duration))
152
+ return end - start >= 1 ? { start, end } : null
153
+ }, [timeWindow, meta.duration])
154
+ const initialTime = initialTimeProp ?? span?.start ?? 0
155
+
141
156
  const [visible, setVisible] = useState(!lazy)
142
157
  const [ready, setReady] = useState(false)
143
158
  const [posterGone, setPosterGone] = useState(false)
144
159
  const [time, setTime] = useState(initialTime)
145
160
  const [playing, setPlaying] = useState(false)
146
161
  const [finished, setFinished] = useState(false)
162
+ // Stopped at the window's end: the center button replays the segment.
163
+ const [windowDone, setWindowDone] = useState(false)
147
164
  const [speedIndex, setSpeedIndex] = useState(0)
148
165
  const [fullscreen, setFullscreen] = useState(false)
149
166
  const duration = meta.duration
@@ -175,25 +192,71 @@ export function ReplayPlayer({
175
192
 
176
193
  const resolvedRef = useRef(resolved)
177
194
  resolvedRef.current = resolved
178
- const handle = useMemo<ReplayPreviewHandle>(() => ({
179
- play: (offset) => { setFinished(false); stage.current?.play(offset) },
180
- pause: (offset) => stage.current?.pause(offset),
181
- seek: (ms) => { setFinished(false); stage.current?.seek(ms) },
182
- toggle: () => { setFinished(false); stage.current?.toggle() },
183
- getCurrentTime: () => stage.current?.getCurrentTime() ?? 0,
184
- inspect: (id) => {
185
- const inspection = resolvedRef.current.find((x) => x.id === id)
186
- if (!inspection) return
195
+ // The window, the playhead and the play state, for the handle (which never re-creates) and onTime.
196
+ const spanRef = useRef(span)
197
+ spanRef.current = span
198
+ const timeRef = useRef(initialTime)
199
+ const playingRef = useRef(false)
200
+ // Whether playback is held to the window: it is when it starts (or is moved) inside it.
201
+ const inWindow = (ms: number) => !!spanRef.current && ms >= spanRef.current.start && ms < spanRef.current.end
202
+ const held = useRef(inWindow(initialTime))
203
+ const handle = useMemo<ReplayPreviewHandle>(() => {
204
+ const play = (offset?: number) => {
205
+ const w = spanRef.current
206
+ if (!w) { setFinished(false); return stage.current?.play(offset) }
207
+ let from = offset ?? timeRef.current
208
+ // Play at the window's end replays the window.
209
+ if (w && offset === undefined && Math.abs(from - w.end) < 60) from = w.start
210
+ held.current = inWindow(from)
211
+ setFinished(false)
212
+ setWindowDone(false)
213
+ if (from !== timeRef.current) stage.current?.play(from)
214
+ else stage.current?.play(offset)
215
+ }
216
+ const seek = (ms: number) => {
217
+ held.current = inWindow(ms)
187
218
  setFinished(false)
188
- stage.current?.seek(inspection.time)
189
- setPanel(inspection.tab)
190
- setAutoOpened(false)
191
- },
192
- }), [])
219
+ setWindowDone(false)
220
+ stage.current?.seek(ms)
221
+ }
222
+ return {
223
+ play,
224
+ pause: (offset) => stage.current?.pause(offset),
225
+ seek,
226
+ toggle: () => {
227
+ if (!spanRef.current) { setFinished(false); return stage.current?.toggle() }
228
+ return playingRef.current ? stage.current?.pause() : play()
229
+ },
230
+ getCurrentTime: () => stage.current?.getCurrentTime() ?? 0,
231
+ inspect: (id) => {
232
+ const inspection = resolvedRef.current.find((x) => x.id === id)
233
+ if (!inspection) return
234
+ seek(inspection.time)
235
+ setPanel(inspection.tab)
236
+ setAutoOpened(false)
237
+ },
238
+ }
239
+ }, [])
193
240
  useImperativeHandle(playerRef, () => handle, [handle])
194
241
 
195
- const onTime = useCallback((ms: number) => { setTime(ms); onTimeUpdate?.(ms) }, [onTimeUpdate])
242
+ const onTime = useCallback((ms: number) => {
243
+ timeRef.current = ms
244
+ // Held to the window: stop at its end, or go round again with `loop`.
245
+ const w = spanRef.current
246
+ if (w && held.current && playingRef.current && ms >= w.end) {
247
+ if (loop) stage.current?.seek(w.start)
248
+ else {
249
+ stage.current?.pause(w.end)
250
+ setWindowDone(true)
251
+ ms = w.end
252
+ timeRef.current = ms
253
+ }
254
+ }
255
+ setTime(ms)
256
+ onTimeUpdate?.(ms)
257
+ }, [onTimeUpdate, loop])
196
258
  const onPlaying = useCallback((p: boolean) => {
259
+ playingRef.current = p
197
260
  setPlaying(p)
198
261
  if (p) setFinished(false)
199
262
  onPlayingChange?.(p)
@@ -295,7 +358,7 @@ export function ReplayPlayer({
295
358
  events={events}
296
359
  fit="contain"
297
360
  speed={speed}
298
- loop={loop}
361
+ loop={loop && !span}
299
362
  autoplay={autoplay}
300
363
  initialTime={initialTime}
301
364
  showMouse={false}
@@ -331,11 +394,11 @@ export function ReplayPlayer({
331
394
  <button
332
395
  type="button"
333
396
  tabIndex={-1}
334
- aria-label={finished ? 'Replay from the start' : 'Play'}
397
+ aria-label={finished ? 'Replay from the start' : windowDone ? 'Replay the segment' : 'Play'}
335
398
  // The overlay leaves as playback starts; keep focus (and the keys) in the player.
336
399
  onClick={() => { rootRef.current?.focus({ preventScroll: true }); toggle() }}
337
400
  >
338
- {finished ? <RotateCcw size={22} strokeWidth={2.4} /> : <Play size={22} strokeWidth={2.4} fill="currentColor" />}
401
+ {finished || windowDone ? <RotateCcw size={22} strokeWidth={2.4} /> : <Play size={22} strokeWidth={2.4} fill="currentColor" />}
339
402
  </button>
340
403
  </div>
341
404
  ) : null}
@@ -352,6 +415,7 @@ export function ReplayPlayer({
352
415
  <Scrubber
353
416
  time={time}
354
417
  duration={duration}
418
+ span={span}
355
419
  markers={shown}
356
420
  disabled={!ready}
357
421
  onSeek={(ms) => handle.seek(ms)}
@@ -440,8 +504,8 @@ const PointerOverlay = memo(function PointerOverlay({ track, time, reduced }: {
440
504
  )
441
505
  })
442
506
 
443
- function Scrubber({ time, duration, markers, disabled, onSeek, onMarker }: {
444
- time: number; duration: number; markers: ReplayMarker[]; disabled: boolean
507
+ function Scrubber({ time, duration, span, markers, disabled, onSeek, onMarker }: {
508
+ time: number; duration: number; span: { start: number; end: number } | null; markers: ReplayMarker[]; disabled: boolean
445
509
  onSeek: (ms: number) => void; onMarker: (m: ReplayMarker) => void
446
510
  }) {
447
511
  const max = Math.max(1, duration)
@@ -460,6 +524,14 @@ function Scrubber({ time, duration, markers, disabled, onSeek, onMarker }: {
460
524
  }, [markers, max])
461
525
  return (
462
526
  <div data-slot="replay-preview-scrubber" data-markers={markers.length ? '' : undefined}>
527
+ {span ? (
528
+ <div
529
+ data-slot="replay-preview-window"
530
+ aria-hidden="true"
531
+ title={`${formatReplayTime(span.start)}–${formatReplayTime(span.end)}`}
532
+ style={{ '--replay-window-start': span.start / max, '--replay-window-size': (span.end - span.start) / max } as CSSProperties}
533
+ />
534
+ ) : null}
463
535
  {markers.length ? (
464
536
  <div data-slot="replay-preview-markers">
465
537
  {markers.map((m) => (
@@ -479,13 +551,16 @@ function Scrubber({ time, duration, markers, disabled, onSeek, onMarker }: {
479
551
  <input
480
552
  type="range"
481
553
  aria-label="Playback position"
482
- aria-valuetext={`${formatReplayTime(value)} of ${formatReplayTime(duration)}`}
554
+ aria-valuetext={`${formatReplayTime(value)} of ${formatReplayTime(duration)}${span ? `, segment ${formatReplayTime(span.start)} to ${formatReplayTime(span.end)}` : ''}`}
483
555
  min={0}
484
556
  max={max}
485
557
  step={10}
486
558
  value={value}
487
559
  disabled={disabled}
488
- style={{ '--replay-progress': `${(value / max) * 100}%` } as CSSProperties}
560
+ style={{
561
+ '--replay-progress': `${(value / max) * 100}%`,
562
+ ...(span ? { '--replay-progress-start': `${(span.start / max) * 100}%` } : {}),
563
+ } as CSSProperties}
489
564
  onChange={(e) => onSeek(Number(e.currentTarget.value))}
490
565
  />
491
566
  </div>
@@ -23,6 +23,6 @@ export type { ReplayInspection, ReplayInspectionTab, ResolvedReplayInspection }
23
23
  export { ReplayEventType, ReplayIncrementalSource, ReplayMouseInteraction } from './types';
24
24
  export type { ReplayEvent } from './types';
25
25
  export { isReplayQaUrl, normalizeReplayEmbedUrl } from './url';
26
- export { ReplayFile, isRrwebUrl } from './ReplayFile';
26
+ export { ReplayFile, isRrwebUrl, splitReplayFragment } from './ReplayFile';
27
27
  export type { ReplayFileProps } from './ReplayFile';
28
28
  export { sanitizeReplayEvent } from './sanitize';
package/src/styles.css CHANGED
@@ -4260,6 +4260,24 @@
4260
4260
  transform: translateY(5px);
4261
4261
  }
4262
4262
 
4263
+ /* The time window: a band under the track, on the same geometry as the markers (4px padding, half a thumb). */
4264
+ :where([data-slot="replay-preview-window"]) {
4265
+ position: absolute;
4266
+ top: 50%;
4267
+ left: calc(10px + (100% - 20px) * var(--replay-window-start, 0));
4268
+ width: max(4px, calc((100% - 20px) * var(--replay-window-size, 1)));
4269
+ height: 10px;
4270
+ border-radius: 999px;
4271
+ background: color-mix(in srgb, var(--primary, #4f46e5) 34%, transparent);
4272
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary, #4f46e5) 60%, transparent);
4273
+ translate: 0 -50%;
4274
+ pointer-events: none;
4275
+ }
4276
+
4277
+ :where([data-slot="replay-preview-scrubber"][data-markers] > [data-slot="replay-preview-window"]) {
4278
+ translate: 0 calc(-50% + 5px);
4279
+ }
4280
+
4263
4281
  :where([data-slot="replay-preview-markers"] > button) {
4264
4282
  position: absolute;
4265
4283
  top: 50%;
@@ -4309,6 +4327,8 @@
4309
4327
  }
4310
4328
 
4311
4329
  :where([data-slot="replay-preview-scrubber"] > input[type="range"]) {
4330
+ /* Above the time-window band. */
4331
+ position: relative;
4312
4332
  --replay-track: 4px;
4313
4333
  --replay-thumb: 12px;
4314
4334
  appearance: none;
@@ -4331,8 +4351,11 @@
4331
4351
  [data-slot="replay-preview-scrubber"] > input[type="range"]::-webkit-slider-runnable-track {
4332
4352
  height: var(--replay-track);
4333
4353
  border-radius: 999px;
4354
+ /* Played: from the time window's start (0 without one) to the playhead. */
4334
4355
  background: linear-gradient(
4335
4356
  to right,
4357
+ color-mix(in srgb, var(--muted-foreground, #71717a) 26%, transparent) var(--replay-progress-start, 0%),
4358
+ var(--primary, #4f46e5) var(--replay-progress-start, 0%),
4336
4359
  var(--primary, #4f46e5) var(--replay-progress, 0%),
4337
4360
  color-mix(in srgb, var(--muted-foreground, #71717a) 26%, transparent) var(--replay-progress, 0%)
4338
4361
  );