@mieweb/ui 0.6.1-dev.169 → 0.6.1-dev.170

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.
Files changed (84) hide show
  1. package/dist/brands/index.cjs +18 -18
  2. package/dist/brands/index.js +3 -3
  3. package/dist/chunk-3Q2VWPML.cjs +1802 -0
  4. package/dist/chunk-3Q2VWPML.cjs.map +1 -0
  5. package/dist/{chunk-6W3HLFAJ.cjs → chunk-3YRDZBW6.cjs} +3 -3
  6. package/dist/{chunk-6W3HLFAJ.cjs.map → chunk-3YRDZBW6.cjs.map} +1 -1
  7. package/dist/{chunk-UVQEHZRF.js → chunk-6VGXX6L6.js} +2 -2
  8. package/dist/{chunk-UVQEHZRF.js.map → chunk-6VGXX6L6.js.map} +1 -1
  9. package/dist/chunk-CH26CHPH.js +1776 -0
  10. package/dist/chunk-CH26CHPH.js.map +1 -0
  11. package/dist/{chunk-TXRQQMG5.js → chunk-CYMZ2QS5.js} +2 -2
  12. package/dist/{chunk-TXRQQMG5.js.map → chunk-CYMZ2QS5.js.map} +1 -1
  13. package/dist/chunk-FGP64Z24.js +131 -0
  14. package/dist/chunk-FGP64Z24.js.map +1 -0
  15. package/dist/chunk-FIWKHLWY.js +197 -0
  16. package/dist/chunk-FIWKHLWY.js.map +1 -0
  17. package/dist/chunk-GLXTVCHN.cjs +4 -0
  18. package/dist/chunk-GLXTVCHN.cjs.map +1 -0
  19. package/dist/chunk-J7KWQJOB.js +14 -0
  20. package/dist/chunk-J7KWQJOB.js.map +1 -0
  21. package/dist/chunk-JYZW2PZS.cjs +166 -0
  22. package/dist/chunk-JYZW2PZS.cjs.map +1 -0
  23. package/dist/{chunk-XVF472GT.js → chunk-NSLR3B7K.js} +2 -2
  24. package/dist/{chunk-XVF472GT.js.map → chunk-NSLR3B7K.js.map} +1 -1
  25. package/dist/chunk-NTYGCBCL.js +543 -0
  26. package/dist/chunk-NTYGCBCL.js.map +1 -0
  27. package/dist/chunk-RISZWWEQ.js +3 -0
  28. package/dist/chunk-RISZWWEQ.js.map +1 -0
  29. package/dist/chunk-S7JQ3FV5.cjs +16 -0
  30. package/dist/chunk-S7JQ3FV5.cjs.map +1 -0
  31. package/dist/{chunk-JWTCEWQ4.cjs → chunk-SNEQXSC5.cjs} +2 -2
  32. package/dist/{chunk-JWTCEWQ4.cjs.map → chunk-SNEQXSC5.cjs.map} +1 -1
  33. package/dist/chunk-SQHMGT4W.js +164 -0
  34. package/dist/chunk-SQHMGT4W.js.map +1 -0
  35. package/dist/chunk-UO3KEUYK.cjs +220 -0
  36. package/dist/chunk-UO3KEUYK.cjs.map +1 -0
  37. package/dist/{chunk-FETRH4V5.js → chunk-X763OLF2.js} +3 -3
  38. package/dist/{chunk-FETRH4V5.js.map → chunk-X763OLF2.js.map} +1 -1
  39. package/dist/{chunk-DKGUOMBC.cjs → chunk-X7J45FU5.cjs} +2 -2
  40. package/dist/{chunk-DKGUOMBC.cjs.map → chunk-X7J45FU5.cjs.map} +1 -1
  41. package/dist/chunk-Y4ESBDQ5.cjs +552 -0
  42. package/dist/chunk-Y4ESBDQ5.cjs.map +1 -0
  43. package/dist/{chunk-MJ7YITLN.cjs → chunk-Y65SK5Y2.cjs} +2 -2
  44. package/dist/{chunk-MJ7YITLN.cjs.map → chunk-Y65SK5Y2.cjs.map} +1 -1
  45. package/dist/chunk-YD23ZGRU.cjs +155 -0
  46. package/dist/chunk-YD23ZGRU.cjs.map +1 -0
  47. package/dist/components/Markdown/index.cjs +10 -10
  48. package/dist/components/Markdown/index.js +2 -2
  49. package/dist/components/MediaEditor/index.cjs +42 -0
  50. package/dist/components/MediaEditor/index.cjs.map +1 -0
  51. package/dist/components/MediaEditor/index.d.cts +151 -0
  52. package/dist/components/MediaEditor/index.d.ts +151 -0
  53. package/dist/components/MediaEditor/index.js +17 -0
  54. package/dist/components/MediaEditor/index.js.map +1 -0
  55. package/dist/components/MediaPlayer/index.cjs +24 -0
  56. package/dist/components/MediaPlayer/index.cjs.map +1 -0
  57. package/dist/components/MediaPlayer/index.d.cts +71 -0
  58. package/dist/components/MediaPlayer/index.d.ts +71 -0
  59. package/dist/components/MediaPlayer/index.js +7 -0
  60. package/dist/components/MediaPlayer/index.js.map +1 -0
  61. package/dist/components/TranscriptView/index.cjs +21 -0
  62. package/dist/components/TranscriptView/index.cjs.map +1 -0
  63. package/dist/components/TranscriptView/index.d.cts +55 -0
  64. package/dist/components/TranscriptView/index.d.ts +55 -0
  65. package/dist/components/TranscriptView/index.js +4 -0
  66. package/dist/components/TranscriptView/index.js.map +1 -0
  67. package/dist/esheet.cjs +5 -5
  68. package/dist/esheet.js +2 -2
  69. package/dist/hooks/index.cjs +49 -11
  70. package/dist/hooks/index.d.cts +88 -1
  71. package/dist/hooks/index.d.ts +88 -1
  72. package/dist/hooks/index.js +3 -1
  73. package/dist/index.cjs +374 -247
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.d.cts +6 -1
  76. package/dist/index.d.ts +6 -1
  77. package/dist/index.js +87 -40
  78. package/dist/index.js.map +1 -1
  79. package/dist/styles.css +1 -1
  80. package/dist/transcript-oaWqY3yr.d.cts +81 -0
  81. package/dist/transcript-oaWqY3yr.d.ts +81 -0
  82. package/dist/useTranscriptEdits-BUylQFg0.d.cts +168 -0
  83. package/dist/useTranscriptEdits-CWYnjbGP.d.ts +168 -0
  84. package/package.json +1 -1
package/dist/esheet.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunk6W3HLFAJ_cjs = require('./chunk-6W3HLFAJ.cjs');
3
+ var chunk3YRDZBW6_cjs = require('./chunk-3YRDZBW6.cjs');
4
4
  require('./chunk-U3ABLVYH.cjs');
5
5
  require('./chunk-RH43XBNV.cjs');
6
6
  require('./chunk-XP6HELVG.cjs');
7
- require('./chunk-FRT6RQND.cjs');
8
7
  require('./chunk-UOOH356R.cjs');
8
+ require('./chunk-FRT6RQND.cjs');
9
9
  require('./chunk-ZHBANUBI.cjs');
10
10
  require('./chunk-JC6Y3LGF.cjs');
11
11
  require('./chunk-KJPOFUF5.cjs');
@@ -75,7 +75,7 @@ function MedicationListField({
75
75
  return definition.medications ?? [];
76
76
  }, [response?.answer, definition.medications]);
77
77
  return /* @__PURE__ */ jsxRuntime.jsx(
78
- chunk6W3HLFAJ_cjs.MedicationReconciliation,
78
+ chunk3YRDZBW6_cjs.MedicationReconciliation,
79
79
  {
80
80
  medications,
81
81
  onChange: (next) => onResponse({ answer: JSON.stringify({ medications: next }) }),
@@ -132,7 +132,7 @@ function AllergyListField({
132
132
  codeLookup
133
133
  }) {
134
134
  const definition = field.definition;
135
- const ambientCodeLookup = chunk6W3HLFAJ_cjs.useCodeLookupConfig();
135
+ const ambientCodeLookup = chunk3YRDZBW6_cjs.useCodeLookupConfig();
136
136
  const effectiveCodeLookup = codeLookup === false ? void 0 : codeLookup ?? ambientCodeLookup ?? void 0;
137
137
  const value = React__namespace.useMemo(() => {
138
138
  if (response?.answer) return parseValue2(response.answer);
@@ -142,7 +142,7 @@ function AllergyListField({
142
142
  onResponse({ answer: JSON.stringify(next) });
143
143
  };
144
144
  return /* @__PURE__ */ jsxRuntime.jsx(
145
- chunk6W3HLFAJ_cjs.AllergyManager,
145
+ chunk3YRDZBW6_cjs.AllergyManager,
146
146
  {
147
147
  allergies: value.allergies,
148
148
  onChange: (allergies) => commit({
package/dist/esheet.js CHANGED
@@ -1,9 +1,9 @@
1
- import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-FETRH4V5.js';
1
+ import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-X763OLF2.js';
2
2
  import './chunk-6LFG4JFF.js';
3
3
  import './chunk-FZJBFJJR.js';
4
4
  import './chunk-EZKRAW2X.js';
5
- import './chunk-R25H4N4Z.js';
6
5
  import './chunk-DUPR6FEL.js';
6
+ import './chunk-R25H4N4Z.js';
7
7
  import './chunk-5BQE6BEL.js';
8
8
  import './chunk-LIH3IZYK.js';
9
9
  import './chunk-IUFDGB5O.js';
@@ -1,7 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkDKGUOMBC_cjs = require('../chunk-DKGUOMBC.cjs');
3
+ var chunkX7J45FU5_cjs = require('../chunk-X7J45FU5.cjs');
4
4
  var chunk2O7D6F67_cjs = require('../chunk-2O7D6F67.cjs');
5
+ var chunkY4ESBDQ5_cjs = require('../chunk-Y4ESBDQ5.cjs');
6
+ var chunkJYZW2PZS_cjs = require('../chunk-JYZW2PZS.cjs');
5
7
  var chunkIKMR2ADM_cjs = require('../chunk-IKMR2ADM.cjs');
6
8
  var chunkYVPC65ZJ_cjs = require('../chunk-YVPC65ZJ.cjs');
7
9
  var chunk6HFFWEM3_cjs = require('../chunk-6HFFWEM3.cjs');
@@ -13,48 +15,84 @@ require('../chunk-SCV7C55E.cjs');
13
15
 
14
16
  Object.defineProperty(exports, "useCommandK", {
15
17
  enumerable: true,
16
- get: function () { return chunkDKGUOMBC_cjs.useCommandK; }
18
+ get: function () { return chunkX7J45FU5_cjs.useCommandK; }
17
19
  });
18
20
  Object.defineProperty(exports, "useIsDesktop", {
19
21
  enumerable: true,
20
- get: function () { return chunkDKGUOMBC_cjs.useIsDesktop; }
22
+ get: function () { return chunkX7J45FU5_cjs.useIsDesktop; }
21
23
  });
22
24
  Object.defineProperty(exports, "useIsLargeDesktop", {
23
25
  enumerable: true,
24
- get: function () { return chunkDKGUOMBC_cjs.useIsLargeDesktop; }
26
+ get: function () { return chunkX7J45FU5_cjs.useIsLargeDesktop; }
25
27
  });
26
28
  Object.defineProperty(exports, "useIsMobile", {
27
29
  enumerable: true,
28
- get: function () { return chunkDKGUOMBC_cjs.useIsMobile; }
30
+ get: function () { return chunkX7J45FU5_cjs.useIsMobile; }
29
31
  });
30
32
  Object.defineProperty(exports, "useIsMobileOrTablet", {
31
33
  enumerable: true,
32
- get: function () { return chunkDKGUOMBC_cjs.useIsMobileOrTablet; }
34
+ get: function () { return chunkX7J45FU5_cjs.useIsMobileOrTablet; }
33
35
  });
34
36
  Object.defineProperty(exports, "useIsSmallTablet", {
35
37
  enumerable: true,
36
- get: function () { return chunkDKGUOMBC_cjs.useIsSmallTablet; }
38
+ get: function () { return chunkX7J45FU5_cjs.useIsSmallTablet; }
37
39
  });
38
40
  Object.defineProperty(exports, "useIsTablet", {
39
41
  enumerable: true,
40
- get: function () { return chunkDKGUOMBC_cjs.useIsTablet; }
42
+ get: function () { return chunkX7J45FU5_cjs.useIsTablet; }
41
43
  });
42
44
  Object.defineProperty(exports, "useKeyboardShortcut", {
43
45
  enumerable: true,
44
- get: function () { return chunkDKGUOMBC_cjs.useKeyboardShortcut; }
46
+ get: function () { return chunkX7J45FU5_cjs.useKeyboardShortcut; }
45
47
  });
46
48
  Object.defineProperty(exports, "useMediaQuery", {
47
49
  enumerable: true,
48
- get: function () { return chunkDKGUOMBC_cjs.useMediaQuery; }
50
+ get: function () { return chunkX7J45FU5_cjs.useMediaQuery; }
49
51
  });
50
52
  Object.defineProperty(exports, "useScrollSpy", {
51
53
  enumerable: true,
52
- get: function () { return chunkDKGUOMBC_cjs.useScrollSpy; }
54
+ get: function () { return chunkX7J45FU5_cjs.useScrollSpy; }
53
55
  });
54
56
  Object.defineProperty(exports, "useTheme", {
55
57
  enumerable: true,
56
58
  get: function () { return chunk2O7D6F67_cjs.useTheme; }
57
59
  });
60
+ Object.defineProperty(exports, "DEFAULT_FILLER_WORDS", {
61
+ enumerable: true,
62
+ get: function () { return chunkY4ESBDQ5_cjs.DEFAULT_FILLER_WORDS; }
63
+ });
64
+ Object.defineProperty(exports, "DEFAULT_MIN_SILENCE_MS", {
65
+ enumerable: true,
66
+ get: function () { return chunkY4ESBDQ5_cjs.DEFAULT_MIN_SILENCE_MS; }
67
+ });
68
+ Object.defineProperty(exports, "DEFAULT_NL_SILENCE_MS", {
69
+ enumerable: true,
70
+ get: function () { return chunkY4ESBDQ5_cjs.DEFAULT_NL_SILENCE_MS; }
71
+ });
72
+ Object.defineProperty(exports, "buildPlaybackSegments", {
73
+ enumerable: true,
74
+ get: function () { return chunkY4ESBDQ5_cjs.buildPlaybackSegments; }
75
+ });
76
+ Object.defineProperty(exports, "getSpeedAtIndex", {
77
+ enumerable: true,
78
+ get: function () { return chunkY4ESBDQ5_cjs.getSpeedAtIndex; }
79
+ });
80
+ Object.defineProperty(exports, "initEditableWords", {
81
+ enumerable: true,
82
+ get: function () { return chunkY4ESBDQ5_cjs.initEditableWords; }
83
+ });
84
+ Object.defineProperty(exports, "insertSilences", {
85
+ enumerable: true,
86
+ get: function () { return chunkY4ESBDQ5_cjs.insertSilences; }
87
+ });
88
+ Object.defineProperty(exports, "useTranscriptEdits", {
89
+ enumerable: true,
90
+ get: function () { return chunkY4ESBDQ5_cjs.useTranscriptEdits; }
91
+ });
92
+ Object.defineProperty(exports, "useMediaTransport", {
93
+ enumerable: true,
94
+ get: function () { return chunkJYZW2PZS_cjs.useMediaTransport; }
95
+ });
58
96
  Object.defineProperty(exports, "useClickOutside", {
59
97
  enumerable: true,
60
98
  get: function () { return chunkIKMR2ADM_cjs.useClickOutside; }
@@ -1,6 +1,8 @@
1
1
  export { R as ResolvedTheme, T as Theme, u as useTheme } from '../useTheme-B9SWu6ui.cjs';
2
2
  import * as React from 'react';
3
3
  import { RefObject } from 'react';
4
+ export { D as DEFAULT_FILLER_WORDS, a as DEFAULT_MIN_SILENCE_MS, b as DEFAULT_NL_SILENCE_MS, F as FillerAnalysis, S as SilenceThresholdCount, T as TranscriptClipboard, c as TranscriptEditStats, U as UseTranscriptEditsOptions, d as UseTranscriptEditsResult, e as buildPlaybackSegments, g as getSpeedAtIndex, i as initEditableWords, f as insertSilences, u as useTranscriptEdits } from '../useTranscriptEdits-BUylQFg0.cjs';
5
+ import '../transcript-oaWqY3yr.cjs';
4
6
 
5
7
  interface UseScrollSpyOptions {
6
8
  /** CSS selector for the elements to observe (e.g. 'h2, h3, h4') */
@@ -273,4 +275,89 @@ declare function dragIndicatorClasses(drag: Pick<UseDragReorderReturn, 'dragging
273
275
  */
274
276
  declare function useLiveAnnouncement(): [string, (message: string) => void];
275
277
 
276
- export { type DragOverState, type KeyboardShortcutOptions, type UseDragReorderOptions, type UseDragReorderReturn, type UseScrollSpyOptions, type UseScrollSpyReturn, dragIndicatorClasses, reorderIds, useClickOutside, useCommandK, useDragReorder, useEscapeKey, useFocusTrap, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useLiveAnnouncement, useMediaQuery, usePrefersReducedMotion, useScrollSpy };
278
+ type MediaTransportState = 'idle' | 'loading' | 'playing' | 'paused' | 'error';
279
+ interface UseMediaTransportOptions {
280
+ /** Fired on every native `timeupdate` and on metadata load, in milliseconds. */
281
+ onTimeUpdate?: (currentTimeMs: number, durationMs: number) => void;
282
+ /** Fired whenever the derived transport state changes. */
283
+ onStateChange?: (state: MediaTransportState) => void;
284
+ /** Fired when playback reaches the end. */
285
+ onEnded?: () => void;
286
+ /** Fired on a media error, with a descriptive Error. */
287
+ onError?: (error: Error) => void;
288
+ /** Initial playback rate (default `1`). Kept in sync with the element. */
289
+ initialRate?: number;
290
+ /** Transport state to enter when playback ends (default `'paused'`). */
291
+ endedState?: Extract<MediaTransportState, 'idle' | 'paused'>;
292
+ /** Reset the position to `0` when playback ends (default `false`). */
293
+ resetTimeOnEnd?: boolean;
294
+ /** Human-readable label used in the error message (default `'media'`). */
295
+ errorLabel?: string;
296
+ }
297
+ interface UseMediaTransportReturn {
298
+ /**
299
+ * Callback ref for the `<audio>`/`<video>` element to control. Pass this to
300
+ * the element's `ref` (or call it imperatively). Transport listeners attach
301
+ * when an element mounts and detach when it unmounts.
302
+ */
303
+ setMediaElement: (element: HTMLMediaElement | null) => void;
304
+ /** The currently attached media element, or `null`. */
305
+ mediaElement: HTMLMediaElement | null;
306
+ /** Derived transport state. */
307
+ state: MediaTransportState;
308
+ /** Current playback position in milliseconds. */
309
+ currentTimeMs: number;
310
+ /** Media duration in milliseconds (`0` until known / non-finite). */
311
+ durationMs: number;
312
+ /** Current playback rate. */
313
+ playbackRate: number;
314
+ /** `true` while `state === 'playing'`. */
315
+ isPlaying: boolean;
316
+ /** `true` while `state === 'loading'`. */
317
+ isLoading: boolean;
318
+ /** Start playback. */
319
+ play: () => void;
320
+ /** Pause playback. */
321
+ pause: () => void;
322
+ /** Toggle between play and pause. */
323
+ togglePlay: () => void;
324
+ /** Seek to a position in milliseconds. */
325
+ seekToMs: (timeMs: number) => void;
326
+ /** Set the playback rate multiplier. */
327
+ setPlaybackRate: (rate: number) => void;
328
+ /** Read the current position in milliseconds. */
329
+ getCurrentTimeMs: () => number;
330
+ /** Read the duration in milliseconds (`0` when unknown). */
331
+ getDurationMs: () => number;
332
+ /** Whether playback is currently paused (reads the element directly). */
333
+ isPaused: () => boolean;
334
+ }
335
+ /**
336
+ * Headless playback transport for a native `HTMLMediaElement`.
337
+ *
338
+ * Owns the derived transport state (idle/loading/playing/paused/error),
339
+ * position, duration and playback rate, and exposes imperative controls — all
340
+ * in **milliseconds**. It never creates or renders an element: pass the
341
+ * returned {@link UseMediaTransportReturn.setMediaElement} callback to an
342
+ * `<audio>`/`<video>` `ref` and the hook wires the native listeners.
343
+ *
344
+ * Shared by `MediaPlayer` (ms API) and, at the boundary, `AudioPlayer`
345
+ * (seconds API — convert with `ms / 1000`). The WaveSurfer waveform variant is
346
+ * out of scope; this hook targets native media transport only.
347
+ *
348
+ * @example
349
+ * ```tsx
350
+ * function Player({ src }: { src: string }) {
351
+ * const t = useMediaTransport({ onEnded: () => console.log('done') });
352
+ * return (
353
+ * <div>
354
+ * <video ref={t.setMediaElement} src={src} controls />
355
+ * <button onClick={t.togglePlay}>{t.isPlaying ? 'Pause' : 'Play'}</button>
356
+ * </div>
357
+ * );
358
+ * }
359
+ * ```
360
+ */
361
+ declare function useMediaTransport(options?: UseMediaTransportOptions): UseMediaTransportReturn;
362
+
363
+ export { type DragOverState, type KeyboardShortcutOptions, type MediaTransportState, type UseDragReorderOptions, type UseDragReorderReturn, type UseMediaTransportOptions, type UseMediaTransportReturn, type UseScrollSpyOptions, type UseScrollSpyReturn, dragIndicatorClasses, reorderIds, useClickOutside, useCommandK, useDragReorder, useEscapeKey, useFocusTrap, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useLiveAnnouncement, useMediaQuery, useMediaTransport, usePrefersReducedMotion, useScrollSpy };
@@ -1,6 +1,8 @@
1
1
  export { R as ResolvedTheme, T as Theme, u as useTheme } from '../useTheme-B9SWu6ui.js';
2
2
  import * as React from 'react';
3
3
  import { RefObject } from 'react';
4
+ export { D as DEFAULT_FILLER_WORDS, a as DEFAULT_MIN_SILENCE_MS, b as DEFAULT_NL_SILENCE_MS, F as FillerAnalysis, S as SilenceThresholdCount, T as TranscriptClipboard, c as TranscriptEditStats, U as UseTranscriptEditsOptions, d as UseTranscriptEditsResult, e as buildPlaybackSegments, g as getSpeedAtIndex, i as initEditableWords, f as insertSilences, u as useTranscriptEdits } from '../useTranscriptEdits-CWYnjbGP.js';
5
+ import '../transcript-oaWqY3yr.js';
4
6
 
5
7
  interface UseScrollSpyOptions {
6
8
  /** CSS selector for the elements to observe (e.g. 'h2, h3, h4') */
@@ -273,4 +275,89 @@ declare function dragIndicatorClasses(drag: Pick<UseDragReorderReturn, 'dragging
273
275
  */
274
276
  declare function useLiveAnnouncement(): [string, (message: string) => void];
275
277
 
276
- export { type DragOverState, type KeyboardShortcutOptions, type UseDragReorderOptions, type UseDragReorderReturn, type UseScrollSpyOptions, type UseScrollSpyReturn, dragIndicatorClasses, reorderIds, useClickOutside, useCommandK, useDragReorder, useEscapeKey, useFocusTrap, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useLiveAnnouncement, useMediaQuery, usePrefersReducedMotion, useScrollSpy };
278
+ type MediaTransportState = 'idle' | 'loading' | 'playing' | 'paused' | 'error';
279
+ interface UseMediaTransportOptions {
280
+ /** Fired on every native `timeupdate` and on metadata load, in milliseconds. */
281
+ onTimeUpdate?: (currentTimeMs: number, durationMs: number) => void;
282
+ /** Fired whenever the derived transport state changes. */
283
+ onStateChange?: (state: MediaTransportState) => void;
284
+ /** Fired when playback reaches the end. */
285
+ onEnded?: () => void;
286
+ /** Fired on a media error, with a descriptive Error. */
287
+ onError?: (error: Error) => void;
288
+ /** Initial playback rate (default `1`). Kept in sync with the element. */
289
+ initialRate?: number;
290
+ /** Transport state to enter when playback ends (default `'paused'`). */
291
+ endedState?: Extract<MediaTransportState, 'idle' | 'paused'>;
292
+ /** Reset the position to `0` when playback ends (default `false`). */
293
+ resetTimeOnEnd?: boolean;
294
+ /** Human-readable label used in the error message (default `'media'`). */
295
+ errorLabel?: string;
296
+ }
297
+ interface UseMediaTransportReturn {
298
+ /**
299
+ * Callback ref for the `<audio>`/`<video>` element to control. Pass this to
300
+ * the element's `ref` (or call it imperatively). Transport listeners attach
301
+ * when an element mounts and detach when it unmounts.
302
+ */
303
+ setMediaElement: (element: HTMLMediaElement | null) => void;
304
+ /** The currently attached media element, or `null`. */
305
+ mediaElement: HTMLMediaElement | null;
306
+ /** Derived transport state. */
307
+ state: MediaTransportState;
308
+ /** Current playback position in milliseconds. */
309
+ currentTimeMs: number;
310
+ /** Media duration in milliseconds (`0` until known / non-finite). */
311
+ durationMs: number;
312
+ /** Current playback rate. */
313
+ playbackRate: number;
314
+ /** `true` while `state === 'playing'`. */
315
+ isPlaying: boolean;
316
+ /** `true` while `state === 'loading'`. */
317
+ isLoading: boolean;
318
+ /** Start playback. */
319
+ play: () => void;
320
+ /** Pause playback. */
321
+ pause: () => void;
322
+ /** Toggle between play and pause. */
323
+ togglePlay: () => void;
324
+ /** Seek to a position in milliseconds. */
325
+ seekToMs: (timeMs: number) => void;
326
+ /** Set the playback rate multiplier. */
327
+ setPlaybackRate: (rate: number) => void;
328
+ /** Read the current position in milliseconds. */
329
+ getCurrentTimeMs: () => number;
330
+ /** Read the duration in milliseconds (`0` when unknown). */
331
+ getDurationMs: () => number;
332
+ /** Whether playback is currently paused (reads the element directly). */
333
+ isPaused: () => boolean;
334
+ }
335
+ /**
336
+ * Headless playback transport for a native `HTMLMediaElement`.
337
+ *
338
+ * Owns the derived transport state (idle/loading/playing/paused/error),
339
+ * position, duration and playback rate, and exposes imperative controls — all
340
+ * in **milliseconds**. It never creates or renders an element: pass the
341
+ * returned {@link UseMediaTransportReturn.setMediaElement} callback to an
342
+ * `<audio>`/`<video>` `ref` and the hook wires the native listeners.
343
+ *
344
+ * Shared by `MediaPlayer` (ms API) and, at the boundary, `AudioPlayer`
345
+ * (seconds API — convert with `ms / 1000`). The WaveSurfer waveform variant is
346
+ * out of scope; this hook targets native media transport only.
347
+ *
348
+ * @example
349
+ * ```tsx
350
+ * function Player({ src }: { src: string }) {
351
+ * const t = useMediaTransport({ onEnded: () => console.log('done') });
352
+ * return (
353
+ * <div>
354
+ * <video ref={t.setMediaElement} src={src} controls />
355
+ * <button onClick={t.togglePlay}>{t.isPlaying ? 'Pause' : 'Play'}</button>
356
+ * </div>
357
+ * );
358
+ * }
359
+ * ```
360
+ */
361
+ declare function useMediaTransport(options?: UseMediaTransportOptions): UseMediaTransportReturn;
362
+
363
+ export { type DragOverState, type KeyboardShortcutOptions, type MediaTransportState, type UseDragReorderOptions, type UseDragReorderReturn, type UseMediaTransportOptions, type UseMediaTransportReturn, type UseScrollSpyOptions, type UseScrollSpyReturn, dragIndicatorClasses, reorderIds, useClickOutside, useCommandK, useDragReorder, useEscapeKey, useFocusTrap, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useLiveAnnouncement, useMediaQuery, useMediaTransport, usePrefersReducedMotion, useScrollSpy };
@@ -1,5 +1,7 @@
1
- export { useCommandK, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery, useScrollSpy } from '../chunk-UVQEHZRF.js';
1
+ export { useCommandK, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery, useScrollSpy } from '../chunk-6VGXX6L6.js';
2
2
  export { useTheme } from '../chunk-KJZNEVYM.js';
3
+ export { DEFAULT_FILLER_WORDS, DEFAULT_MIN_SILENCE_MS, DEFAULT_NL_SILENCE_MS, buildPlaybackSegments, getSpeedAtIndex, initEditableWords, insertSilences, useTranscriptEdits } from '../chunk-NTYGCBCL.js';
4
+ export { useMediaTransport } from '../chunk-SQHMGT4W.js';
3
5
  export { useClickOutside } from '../chunk-OKBR6PX4.js';
4
6
  export { dragIndicatorClasses, reorderIds, useDragReorder, useLiveAnnouncement } from '../chunk-7ZVTLTJF.js';
5
7
  export { usePrefersReducedMotion } from '../chunk-HB7C7NB5.js';