@mieweb/ui 0.6.1-dev.168 → 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.
- package/dist/brands/index.cjs +18 -18
- package/dist/brands/index.js +3 -3
- package/dist/chunk-3Q2VWPML.cjs +1802 -0
- package/dist/chunk-3Q2VWPML.cjs.map +1 -0
- package/dist/{chunk-67CEEDAP.cjs → chunk-3YRDZBW6.cjs} +7 -7
- package/dist/{chunk-67CEEDAP.cjs.map → chunk-3YRDZBW6.cjs.map} +1 -1
- package/dist/{chunk-UVQEHZRF.js → chunk-6VGXX6L6.js} +2 -2
- package/dist/{chunk-UVQEHZRF.js.map → chunk-6VGXX6L6.js.map} +1 -1
- package/dist/chunk-CH26CHPH.js +1776 -0
- package/dist/chunk-CH26CHPH.js.map +1 -0
- package/dist/{chunk-TXRQQMG5.js → chunk-CYMZ2QS5.js} +2 -2
- package/dist/{chunk-TXRQQMG5.js.map → chunk-CYMZ2QS5.js.map} +1 -1
- package/dist/chunk-FGP64Z24.js +131 -0
- package/dist/chunk-FGP64Z24.js.map +1 -0
- package/dist/chunk-FIWKHLWY.js +197 -0
- package/dist/chunk-FIWKHLWY.js.map +1 -0
- package/dist/chunk-GLXTVCHN.cjs +4 -0
- package/dist/chunk-GLXTVCHN.cjs.map +1 -0
- package/dist/chunk-J7KWQJOB.js +14 -0
- package/dist/chunk-J7KWQJOB.js.map +1 -0
- package/dist/{chunk-NINI4WVS.cjs → chunk-JC6Y3LGF.cjs} +297 -84
- package/dist/chunk-JC6Y3LGF.cjs.map +1 -0
- package/dist/chunk-JYZW2PZS.cjs +166 -0
- package/dist/chunk-JYZW2PZS.cjs.map +1 -0
- package/dist/chunk-LIH3IZYK.js +689 -0
- package/dist/chunk-LIH3IZYK.js.map +1 -0
- package/dist/{chunk-XVF472GT.js → chunk-NSLR3B7K.js} +2 -2
- package/dist/{chunk-XVF472GT.js.map → chunk-NSLR3B7K.js.map} +1 -1
- package/dist/chunk-NTYGCBCL.js +543 -0
- package/dist/chunk-NTYGCBCL.js.map +1 -0
- package/dist/chunk-RISZWWEQ.js +3 -0
- package/dist/chunk-RISZWWEQ.js.map +1 -0
- package/dist/chunk-S7JQ3FV5.cjs +16 -0
- package/dist/chunk-S7JQ3FV5.cjs.map +1 -0
- package/dist/{chunk-JWTCEWQ4.cjs → chunk-SNEQXSC5.cjs} +2 -2
- package/dist/{chunk-JWTCEWQ4.cjs.map → chunk-SNEQXSC5.cjs.map} +1 -1
- package/dist/chunk-SQHMGT4W.js +164 -0
- package/dist/chunk-SQHMGT4W.js.map +1 -0
- package/dist/chunk-UO3KEUYK.cjs +220 -0
- package/dist/chunk-UO3KEUYK.cjs.map +1 -0
- package/dist/{chunk-HUXOASEB.js → chunk-X763OLF2.js} +4 -4
- package/dist/{chunk-HUXOASEB.js.map → chunk-X763OLF2.js.map} +1 -1
- package/dist/{chunk-DKGUOMBC.cjs → chunk-X7J45FU5.cjs} +2 -2
- package/dist/{chunk-DKGUOMBC.cjs.map → chunk-X7J45FU5.cjs.map} +1 -1
- package/dist/chunk-Y4ESBDQ5.cjs +552 -0
- package/dist/chunk-Y4ESBDQ5.cjs.map +1 -0
- package/dist/{chunk-MJ7YITLN.cjs → chunk-Y65SK5Y2.cjs} +2 -2
- package/dist/{chunk-MJ7YITLN.cjs.map → chunk-Y65SK5Y2.cjs.map} +1 -1
- package/dist/chunk-YD23ZGRU.cjs +155 -0
- package/dist/chunk-YD23ZGRU.cjs.map +1 -0
- package/dist/components/DateInput/index.cjs +2 -2
- package/dist/components/DateInput/index.d.cts +8 -2
- package/dist/components/DateInput/index.d.ts +8 -2
- package/dist/components/DateInput/index.js +1 -1
- package/dist/components/Markdown/index.cjs +10 -10
- package/dist/components/Markdown/index.js +2 -2
- package/dist/components/MediaEditor/index.cjs +42 -0
- package/dist/components/MediaEditor/index.cjs.map +1 -0
- package/dist/components/MediaEditor/index.d.cts +151 -0
- package/dist/components/MediaEditor/index.d.ts +151 -0
- package/dist/components/MediaEditor/index.js +17 -0
- package/dist/components/MediaEditor/index.js.map +1 -0
- package/dist/components/MediaPlayer/index.cjs +24 -0
- package/dist/components/MediaPlayer/index.cjs.map +1 -0
- package/dist/components/MediaPlayer/index.d.cts +71 -0
- package/dist/components/MediaPlayer/index.d.ts +71 -0
- package/dist/components/MediaPlayer/index.js +7 -0
- package/dist/components/MediaPlayer/index.js.map +1 -0
- package/dist/components/TranscriptView/index.cjs +21 -0
- package/dist/components/TranscriptView/index.cjs.map +1 -0
- package/dist/components/TranscriptView/index.d.cts +55 -0
- package/dist/components/TranscriptView/index.d.ts +55 -0
- package/dist/components/TranscriptView/index.js +4 -0
- package/dist/components/TranscriptView/index.js.map +1 -0
- package/dist/esheet.cjs +6 -6
- package/dist/esheet.js +3 -3
- package/dist/hooks/index.cjs +49 -11
- package/dist/hooks/index.d.cts +88 -1
- package/dist/hooks/index.d.ts +88 -1
- package/dist/hooks/index.js +3 -1
- package/dist/index.cjs +380 -253
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +89 -42
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/transcript-oaWqY3yr.d.cts +81 -0
- package/dist/transcript-oaWqY3yr.d.ts +81 -0
- package/dist/useTranscriptEdits-BUylQFg0.d.cts +168 -0
- package/dist/useTranscriptEdits-CWYnjbGP.d.ts +168 -0
- package/package.json +1 -1
- package/dist/chunk-HYEJLKXI.js +0 -476
- package/dist/chunk-HYEJLKXI.js.map +0 -1
- package/dist/chunk-NINI4WVS.cjs.map +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import { T as Transcript } from '../../transcript-oaWqY3yr.js';
|
|
5
|
+
export { E as EditableWord, c as PLAYBACK_SPEEDS, a as PlaybackSegment, P as PlaybackSpeed, d as Speaker, S as SpeedMarker, e as TranscriptSegment, b as TranscriptWord, W as WordType } from '../../transcript-oaWqY3yr.js';
|
|
6
|
+
|
|
7
|
+
type TranscriptGranularity = 'word' | 'segment';
|
|
8
|
+
interface TranscriptViewProps extends VariantProps<typeof transcriptViewVariants> {
|
|
9
|
+
/** The transcript to render */
|
|
10
|
+
transcript: Transcript;
|
|
11
|
+
/**
|
|
12
|
+
* Rendering granularity. Defaults to 'segment' when the transcript has
|
|
13
|
+
* segments, otherwise 'word'.
|
|
14
|
+
*/
|
|
15
|
+
granularity?: TranscriptGranularity;
|
|
16
|
+
/** Controlled playback position (ms); the matching word/segment is highlighted */
|
|
17
|
+
currentTimeMs?: number;
|
|
18
|
+
/** Called with the start time (ms) of a clicked word/segment; the host performs the seek/play */
|
|
19
|
+
onSeek?: (timeMs: number) => void;
|
|
20
|
+
/** Auto-scroll the active word/segment into view (default true) */
|
|
21
|
+
followPlayback?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Maps Speaker.id to a display label (e.g. Clinician/Patient). Falls back to
|
|
24
|
+
* Speaker.name from transcript.speakers, then the raw id.
|
|
25
|
+
*/
|
|
26
|
+
speakerLabels?: Record<string, string>;
|
|
27
|
+
/** Segment mode: merge consecutive same-speaker segments into one row (default false) */
|
|
28
|
+
mergeSameSpeaker?: boolean;
|
|
29
|
+
/** Segment mode: show mm:ss timestamps (default true) */
|
|
30
|
+
showTimestamps?: boolean;
|
|
31
|
+
/** Rendered in a header row (host supplies copy/re-transcribe/remove buttons) */
|
|
32
|
+
actions?: React.ReactNode;
|
|
33
|
+
/** Additional class name */
|
|
34
|
+
className?: string;
|
|
35
|
+
/** Accessible label for the transcript container (default 'Transcript') */
|
|
36
|
+
'aria-label'?: string;
|
|
37
|
+
}
|
|
38
|
+
declare const transcriptViewVariants: (props?: ({
|
|
39
|
+
variant?: "card" | "plain" | null | undefined;
|
|
40
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
41
|
+
/** Format milliseconds as m:ss (osheet timestamp style) */
|
|
42
|
+
declare function formatTimestampMs(ms: number): string;
|
|
43
|
+
/**
|
|
44
|
+
* Read-only transcript viewer with word-level and segment-level (diarized)
|
|
45
|
+
* rendering modes.
|
|
46
|
+
*
|
|
47
|
+
* Controlled and persistence-agnostic: the host owns playback and passes the
|
|
48
|
+
* position via `currentTimeMs`; clicking a word/segment reports the target
|
|
49
|
+
* time through `onSeek`. Segment mode matches the osheet artifact-viewer row
|
|
50
|
+
* UX (timestamp | speaker | text, click to seek + play). Editing lives in
|
|
51
|
+
* MediaEditor, not here.
|
|
52
|
+
*/
|
|
53
|
+
declare const TranscriptView: React.ForwardRefExoticComponent<TranscriptViewProps & React.RefAttributes<HTMLDivElement>>;
|
|
54
|
+
|
|
55
|
+
export { Transcript, type TranscriptGranularity, TranscriptView, type TranscriptViewProps, formatTimestampMs };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/esheet.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
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
|
-
require('./chunk-
|
|
10
|
+
require('./chunk-JC6Y3LGF.cjs');
|
|
11
11
|
require('./chunk-KJPOFUF5.cjs');
|
|
12
12
|
require('./chunk-MSRU3XBH.cjs');
|
|
13
13
|
require('./chunk-UTYUT5YY.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
|
-
|
|
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 =
|
|
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
|
-
|
|
145
|
+
chunk3YRDZBW6_cjs.AllergyManager,
|
|
146
146
|
{
|
|
147
147
|
allergies: value.allergies,
|
|
148
148
|
onChange: (allergies) => commit({
|
package/dist/esheet.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-
|
|
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
|
-
import './chunk-
|
|
8
|
+
import './chunk-LIH3IZYK.js';
|
|
9
9
|
import './chunk-IUFDGB5O.js';
|
|
10
10
|
import './chunk-PVUDXJAI.js';
|
|
11
11
|
import './chunk-DHKYGVP7.js';
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
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
|
|
18
|
+
get: function () { return chunkX7J45FU5_cjs.useCommandK; }
|
|
17
19
|
});
|
|
18
20
|
Object.defineProperty(exports, "useIsDesktop", {
|
|
19
21
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkX7J45FU5_cjs.useIsDesktop; }
|
|
21
23
|
});
|
|
22
24
|
Object.defineProperty(exports, "useIsLargeDesktop", {
|
|
23
25
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkX7J45FU5_cjs.useIsLargeDesktop; }
|
|
25
27
|
});
|
|
26
28
|
Object.defineProperty(exports, "useIsMobile", {
|
|
27
29
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunkX7J45FU5_cjs.useIsMobile; }
|
|
29
31
|
});
|
|
30
32
|
Object.defineProperty(exports, "useIsMobileOrTablet", {
|
|
31
33
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunkX7J45FU5_cjs.useIsMobileOrTablet; }
|
|
33
35
|
});
|
|
34
36
|
Object.defineProperty(exports, "useIsSmallTablet", {
|
|
35
37
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunkX7J45FU5_cjs.useIsSmallTablet; }
|
|
37
39
|
});
|
|
38
40
|
Object.defineProperty(exports, "useIsTablet", {
|
|
39
41
|
enumerable: true,
|
|
40
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunkX7J45FU5_cjs.useIsTablet; }
|
|
41
43
|
});
|
|
42
44
|
Object.defineProperty(exports, "useKeyboardShortcut", {
|
|
43
45
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunkX7J45FU5_cjs.useKeyboardShortcut; }
|
|
45
47
|
});
|
|
46
48
|
Object.defineProperty(exports, "useMediaQuery", {
|
|
47
49
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunkX7J45FU5_cjs.useMediaQuery; }
|
|
49
51
|
});
|
|
50
52
|
Object.defineProperty(exports, "useScrollSpy", {
|
|
51
53
|
enumerable: true,
|
|
52
|
-
get: function () { return
|
|
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; }
|
package/dist/hooks/index.d.cts
CHANGED
|
@@ -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
|
-
|
|
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 };
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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 };
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export { useCommandK, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery, useScrollSpy } from '../chunk-
|
|
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';
|