@mieweb/ui 0.6.1 → 0.7.0-dev.178
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/README.md +90 -53
- package/dist/CsvBlock-2A5VEDD3.cjs +15 -0
- package/dist/CsvBlock-2A5VEDD3.cjs.map +1 -0
- package/dist/CsvBlock-D6PWAJ5X.js +6 -0
- package/dist/CsvBlock-D6PWAJ5X.js.map +1 -0
- package/dist/HtmlPreviewBlock-PEHTJ6C3.js +6 -0
- package/dist/HtmlPreviewBlock-PEHTJ6C3.js.map +1 -0
- package/dist/HtmlPreviewBlock-SYXCV5RH.cjs +15 -0
- package/dist/HtmlPreviewBlock-SYXCV5RH.cjs.map +1 -0
- package/dist/MedicationEditor-Bp4NLy7y.d.cts +352 -0
- package/dist/MedicationEditor-Bp4NLy7y.d.ts +352 -0
- package/dist/MermaidBlock-7NK3AVK2.js +6 -0
- package/dist/MermaidBlock-7NK3AVK2.js.map +1 -0
- package/dist/MermaidBlock-AFXNP5NK.cjs +15 -0
- package/dist/MermaidBlock-AFXNP5NK.cjs.map +1 -0
- package/dist/SurveyBlock-6KRNKFH5.cjs +15 -0
- package/dist/SurveyBlock-6KRNKFH5.cjs.map +1 -0
- package/dist/SurveyBlock-NNDGXGG4.js +6 -0
- package/dist/SurveyBlock-NNDGXGG4.js.map +1 -0
- package/dist/ag-grid.cjs +6 -6
- package/dist/ag-grid.cjs.map +1 -1
- package/dist/ag-grid.js +2 -2
- package/dist/ag-grid.js.map +1 -1
- package/dist/brands/index.cjs +17 -17
- package/dist/brands/index.js +4 -4
- package/dist/chunk-372IIHUA.cjs +2017 -0
- package/dist/chunk-372IIHUA.cjs.map +1 -0
- package/dist/{chunk-2DS3RJ2D.js → chunk-3TERETXH.js} +112 -3
- package/dist/chunk-3TERETXH.js.map +1 -0
- package/dist/chunk-44CK4CT2.cjs +336 -0
- package/dist/chunk-44CK4CT2.cjs.map +1 -0
- package/dist/{chunk-FSBFQBNE.cjs → chunk-4GXECTPS.cjs} +2 -2
- package/dist/{chunk-FSBFQBNE.cjs.map → chunk-4GXECTPS.cjs.map} +1 -1
- package/dist/chunk-4LVPQ44A.js +228 -0
- package/dist/chunk-4LVPQ44A.js.map +1 -0
- package/dist/{chunk-6555OYRU.js → chunk-5BQE6BEL.js} +2 -2
- package/dist/{chunk-6555OYRU.js.map → chunk-5BQE6BEL.js.map} +1 -1
- package/dist/chunk-62ZOA6PX.js +31 -0
- package/dist/chunk-62ZOA6PX.js.map +1 -0
- package/dist/chunk-63KVQHGQ.cjs +1802 -0
- package/dist/chunk-63KVQHGQ.cjs.map +1 -0
- package/dist/chunk-6AHYYWVB.js +78 -0
- package/dist/chunk-6AHYYWVB.js.map +1 -0
- package/dist/chunk-6I7IDZ4A.js +51 -0
- package/dist/chunk-6I7IDZ4A.js.map +1 -0
- package/dist/chunk-6ZYE6JUK.cjs +80 -0
- package/dist/chunk-6ZYE6JUK.cjs.map +1 -0
- package/dist/chunk-7QXG5BBB.cjs +164 -0
- package/dist/chunk-7QXG5BBB.cjs.map +1 -0
- package/dist/chunk-7WMSUXOQ.js +182 -0
- package/dist/chunk-7WMSUXOQ.js.map +1 -0
- package/dist/chunk-7XUN3OQT.js +3 -0
- package/dist/{chunk-V2DF2GUE.js.map → chunk-7XUN3OQT.js.map} +1 -1
- package/dist/chunk-7ZVTLTJF.js +109 -0
- package/dist/chunk-7ZVTLTJF.js.map +1 -0
- package/dist/chunk-AES2BKEW.cjs +229 -0
- package/dist/chunk-AES2BKEW.cjs.map +1 -0
- package/dist/chunk-AFKKJEV5.cjs +72 -0
- package/dist/chunk-AFKKJEV5.cjs.map +1 -0
- package/dist/chunk-AT732HC6.cjs +4 -0
- package/dist/{chunk-74K3RRU7.cjs.map → chunk-AT732HC6.cjs.map} +1 -1
- package/dist/chunk-BB4WQ4LV.cjs +137 -0
- package/dist/chunk-BB4WQ4LV.cjs.map +1 -0
- package/dist/chunk-BIT27PPD.js +49 -0
- package/dist/chunk-BIT27PPD.js.map +1 -0
- package/dist/chunk-BLPCYP4D.cjs +537 -0
- package/dist/chunk-BLPCYP4D.cjs.map +1 -0
- package/dist/chunk-BT3ZQJGT.cjs +130 -0
- package/dist/chunk-BT3ZQJGT.cjs.map +1 -0
- package/dist/chunk-BX6BTDTR.js +34 -0
- package/dist/chunk-BX6BTDTR.js.map +1 -0
- package/dist/chunk-C2544GKZ.js +313 -0
- package/dist/chunk-C2544GKZ.js.map +1 -0
- package/dist/chunk-C7RVKV25.cjs +25 -0
- package/dist/chunk-C7RVKV25.cjs.map +1 -0
- package/dist/chunk-CKD554XR.cjs +100 -0
- package/dist/chunk-CKD554XR.cjs.map +1 -0
- package/dist/chunk-CVC4NWFA.cjs +154 -0
- package/dist/chunk-CVC4NWFA.cjs.map +1 -0
- package/dist/{chunk-K3IVCUPP.js → chunk-CYMZ2QS5.js} +2 -2
- package/dist/{chunk-K3IVCUPP.js.map → chunk-CYMZ2QS5.js.map} +1 -1
- package/dist/{chunk-FRT6RQND.cjs → chunk-DAPZPT5N.cjs} +92 -56
- package/dist/chunk-DAPZPT5N.cjs.map +1 -0
- package/dist/chunk-DHKYGVP7.js +3 -0
- package/dist/{chunk-LEMY57MI.js.map → chunk-DHKYGVP7.js.map} +1 -1
- package/dist/chunk-DLNJLCNO.cjs +101 -0
- package/dist/chunk-DLNJLCNO.cjs.map +1 -0
- package/dist/chunk-DUPR6FEL.js +43 -0
- package/dist/chunk-DUPR6FEL.js.map +1 -0
- package/dist/{chunk-4FALCEJI.cjs → chunk-EL2RSQTJ.cjs} +2 -2
- package/dist/{chunk-4FALCEJI.cjs.map → chunk-EL2RSQTJ.cjs.map} +1 -1
- package/dist/chunk-ERLPVXOV.js +22 -0
- package/dist/chunk-ERLPVXOV.js.map +1 -0
- package/dist/chunk-FIWKHLWY.js +197 -0
- package/dist/chunk-FIWKHLWY.js.map +1 -0
- package/dist/chunk-FJH7P5WG.js +513 -0
- package/dist/chunk-FJH7P5WG.js.map +1 -0
- package/dist/chunk-FSGEDDF2.cjs +33 -0
- package/dist/chunk-FSGEDDF2.cjs.map +1 -0
- package/dist/chunk-GLXTVCHN.cjs +4 -0
- package/dist/{chunk-4ZU53GNR.cjs.map → chunk-GLXTVCHN.cjs.map} +1 -1
- package/dist/chunk-HRS6W74P.js +1568 -0
- package/dist/chunk-HRS6W74P.js.map +1 -0
- package/dist/chunk-I2W24RHW.js +196 -0
- package/dist/chunk-I2W24RHW.js.map +1 -0
- package/dist/chunk-I6CY5C6A.js +12 -0
- package/dist/chunk-I6CY5C6A.js.map +1 -0
- package/dist/chunk-IQ4KQJAO.js +3 -0
- package/dist/chunk-IQ4KQJAO.js.map +1 -0
- package/dist/chunk-IWDQPSJN.cjs +1452 -0
- package/dist/chunk-IWDQPSJN.cjs.map +1 -0
- package/dist/chunk-J7KWQJOB.js +14 -0
- package/dist/chunk-J7KWQJOB.js.map +1 -0
- package/dist/{chunk-R25H4N4Z.js → chunk-J7Z7467B.js} +92 -56
- package/dist/chunk-J7Z7467B.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-JCNPVK74.cjs +347 -0
- package/dist/chunk-JCNPVK74.cjs.map +1 -0
- package/dist/chunk-JFLC7SHM.cjs +35 -0
- package/dist/chunk-JFLC7SHM.cjs.map +1 -0
- package/dist/chunk-JHYFHEHS.js +1967 -0
- package/dist/chunk-JHYFHEHS.js.map +1 -0
- package/dist/{chunk-IBZXDX4L.cjs → chunk-JQEY53SH.cjs} +112 -3
- package/dist/chunk-JQEY53SH.cjs.map +1 -0
- package/dist/chunk-JTBQNOSL.cjs +1605 -0
- package/dist/chunk-JTBQNOSL.cjs.map +1 -0
- package/dist/chunk-JYZW2PZS.cjs +166 -0
- package/dist/chunk-JYZW2PZS.cjs.map +1 -0
- package/dist/chunk-KBEKQMVY.cjs +198 -0
- package/dist/chunk-KBEKQMVY.cjs.map +1 -0
- package/dist/chunk-KJ5BSGEO.cjs +258 -0
- package/dist/chunk-KJ5BSGEO.cjs.map +1 -0
- package/dist/{chunk-DNPRRYPQ.js → chunk-KL2S36FM.js} +2 -2
- package/dist/chunk-KL2S36FM.js.map +1 -0
- package/dist/chunk-LIH3IZYK.js +689 -0
- package/dist/chunk-LIH3IZYK.js.map +1 -0
- package/dist/chunk-MAMY5HTT.cjs +1177 -0
- package/dist/chunk-MAMY5HTT.cjs.map +1 -0
- package/dist/{chunk-WFS6R2F5.js → chunk-MKWGKASO.js} +114 -101
- package/dist/chunk-MKWGKASO.js.map +1 -0
- package/dist/{chunk-CV4CVGLO.cjs → chunk-MZPF2QGM.cjs} +95 -74
- package/dist/chunk-MZPF2QGM.cjs.map +1 -0
- package/dist/chunk-NQME7MCK.js +1416 -0
- package/dist/chunk-NQME7MCK.js.map +1 -0
- package/dist/chunk-NTYGCBCL.js +543 -0
- package/dist/chunk-NTYGCBCL.js.map +1 -0
- package/dist/chunk-OF7NTZ2I.js +3 -0
- package/dist/chunk-OF7NTZ2I.js.map +1 -0
- package/dist/chunk-OXYFTCRW.cjs +57 -0
- package/dist/chunk-OXYFTCRW.cjs.map +1 -0
- package/dist/chunk-QA6ZDHFP.js +117 -0
- package/dist/chunk-QA6ZDHFP.js.map +1 -0
- package/dist/chunk-RHNPILZQ.cjs +4 -0
- package/dist/chunk-RHNPILZQ.cjs.map +1 -0
- package/dist/chunk-RHYIFIT5.js +98 -0
- package/dist/chunk-RHYIFIT5.js.map +1 -0
- package/dist/chunk-RI56YPED.cjs +201 -0
- package/dist/chunk-RI56YPED.cjs.map +1 -0
- package/dist/chunk-RISZWWEQ.js +3 -0
- package/dist/chunk-RISZWWEQ.js.map +1 -0
- package/dist/chunk-S6Z3KDEM.js +140 -0
- package/dist/chunk-S6Z3KDEM.js.map +1 -0
- package/dist/chunk-S7JQ3FV5.cjs +16 -0
- package/dist/chunk-S7JQ3FV5.cjs.map +1 -0
- package/dist/{chunk-OXGUG57G.cjs → chunk-SNEQXSC5.cjs} +2 -2
- package/dist/{chunk-OXGUG57G.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-JHPFOG2N.cjs → chunk-ST2RE5UB.cjs} +30 -18
- package/dist/chunk-ST2RE5UB.cjs.map +1 -0
- package/dist/{chunk-QVJBUWJQ.js → chunk-STPK44AU.js} +46 -12
- package/dist/chunk-STPK44AU.js.map +1 -0
- package/dist/chunk-T3C4RNJ4.js +106 -0
- package/dist/chunk-T3C4RNJ4.js.map +1 -0
- package/dist/chunk-T3RWXOCM.js +148 -0
- package/dist/chunk-T3RWXOCM.js.map +1 -0
- package/dist/{chunk-DCER2QQB.js → chunk-T42BCIUA.js} +2 -2
- package/dist/{chunk-DCER2QQB.js.map → chunk-T42BCIUA.js.map} +1 -1
- package/dist/{chunk-OYKS2JBB.cjs → chunk-TN33E2VN.cjs} +2 -2
- package/dist/chunk-TN33E2VN.cjs.map +1 -0
- package/dist/{chunk-K7IGBNZA.cjs → chunk-TR2OJKQ4.cjs} +46 -12
- package/dist/chunk-TR2OJKQ4.cjs.map +1 -0
- package/dist/chunk-UFYXU7KV.js +135 -0
- package/dist/chunk-UFYXU7KV.js.map +1 -0
- package/dist/chunk-UM6NA7HL.js +1145 -0
- package/dist/chunk-UM6NA7HL.js.map +1 -0
- package/dist/chunk-UO3KEUYK.cjs +220 -0
- package/dist/chunk-UO3KEUYK.cjs.map +1 -0
- package/dist/chunk-UOOH356R.cjs +66 -0
- package/dist/chunk-UOOH356R.cjs.map +1 -0
- package/dist/{chunk-4ZU53GNR.cjs → chunk-UTYUT5YY.cjs} +62 -2
- package/dist/chunk-UTYUT5YY.cjs.map +1 -0
- package/dist/chunk-UVSODK6V.cjs +53 -0
- package/dist/chunk-UVSODK6V.cjs.map +1 -0
- package/dist/chunk-V25Z5GR6.cjs +184 -0
- package/dist/chunk-V25Z5GR6.cjs.map +1 -0
- package/dist/chunk-VBWRH4UW.cjs +4 -0
- package/dist/chunk-VBWRH4UW.cjs.map +1 -0
- package/dist/chunk-VJOVJTFP.cjs +370 -0
- package/dist/chunk-VJOVJTFP.cjs.map +1 -0
- package/dist/{chunk-7BARESXI.cjs → chunk-VPNURIAY.cjs} +114 -101
- package/dist/chunk-VPNURIAY.cjs.map +1 -0
- package/dist/{chunk-I56VBDSC.js → chunk-XDFDVF2O.js} +30 -18
- package/dist/chunk-XDFDVF2O.js.map +1 -0
- package/dist/chunk-XL7TTKHP.js +327 -0
- package/dist/chunk-XL7TTKHP.js.map +1 -0
- package/dist/chunk-Y2S6QMKU.js +78 -0
- package/dist/chunk-Y2S6QMKU.js.map +1 -0
- package/dist/chunk-Y4ESBDQ5.cjs +552 -0
- package/dist/chunk-Y4ESBDQ5.cjs.map +1 -0
- package/dist/chunk-Y5KEFV5O.js +192 -0
- package/dist/chunk-Y5KEFV5O.js.map +1 -0
- package/dist/chunk-YBLIDESO.js +365 -0
- package/dist/chunk-YBLIDESO.js.map +1 -0
- package/dist/chunk-YVLP3ATI.js +1776 -0
- package/dist/chunk-YVLP3ATI.js.map +1 -0
- package/dist/chunk-YVPC65ZJ.cjs +134 -0
- package/dist/chunk-YVPC65ZJ.cjs.map +1 -0
- package/dist/{chunk-MPOWJVV4.js → chunk-YZT62IMX.js} +95 -74
- package/dist/chunk-YZT62IMX.js.map +1 -0
- package/dist/chunk-ZAIEQWRA.js +207 -0
- package/dist/chunk-ZAIEQWRA.js.map +1 -0
- package/dist/chunk-ZDEYV373.cjs +139 -0
- package/dist/chunk-ZDEYV373.cjs.map +1 -0
- package/dist/{chunk-Q7NBJFEB.js → chunk-ZGSC2CB2.js} +2 -2
- package/dist/{chunk-Q7NBJFEB.js.map → chunk-ZGSC2CB2.js.map} +1 -1
- package/dist/{chunk-3M4P2KMG.cjs → chunk-ZHBANUBI.cjs} +2 -2
- package/dist/{chunk-3M4P2KMG.cjs.map → chunk-ZHBANUBI.cjs.map} +1 -1
- package/dist/components/AlertDialog/index.cjs +18 -0
- package/dist/components/AlertDialog/index.cjs.map +1 -0
- package/dist/components/AlertDialog/index.d.cts +56 -0
- package/dist/components/AlertDialog/index.d.ts +56 -0
- package/dist/components/AlertDialog/index.js +9 -0
- package/dist/components/AlertDialog/index.js.map +1 -0
- package/dist/components/AudioRecorder/index.d.cts +1 -1
- package/dist/components/AudioRecorder/index.d.ts +1 -1
- package/dist/components/Autocomplete/index.cjs +16 -0
- package/dist/components/Autocomplete/index.cjs.map +1 -0
- package/dist/components/Autocomplete/index.d.cts +77 -0
- package/dist/components/Autocomplete/index.d.ts +77 -0
- package/dist/components/Autocomplete/index.js +7 -0
- package/dist/components/Autocomplete/index.js.map +1 -0
- package/dist/components/Badge/index.cjs +4 -3
- package/dist/components/Badge/index.js +2 -1
- package/dist/components/Card/index.cjs +16 -15
- package/dist/components/Card/index.js +2 -1
- package/dist/components/Collapsible/index.cjs +21 -0
- package/dist/components/Collapsible/index.cjs.map +1 -0
- package/dist/components/Collapsible/index.d.cts +33 -0
- package/dist/components/Collapsible/index.d.ts +33 -0
- package/dist/components/Collapsible/index.js +4 -0
- package/dist/components/Collapsible/index.js.map +1 -0
- package/dist/components/CountryCodeDropdown/index.cjs +6 -5
- package/dist/components/CountryCodeDropdown/index.js +3 -2
- 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/Dropdown/index.cjs +9 -8
- package/dist/components/Dropdown/index.d.cts +2 -1
- package/dist/components/Dropdown/index.d.ts +2 -1
- package/dist/components/Dropdown/index.js +3 -2
- package/dist/components/FloatingWindow/index.cjs +18 -0
- package/dist/components/FloatingWindow/index.cjs.map +1 -0
- package/dist/components/FloatingWindow/index.d.cts +64 -0
- package/dist/components/FloatingWindow/index.d.ts +64 -0
- package/dist/components/FloatingWindow/index.js +5 -0
- package/dist/components/FloatingWindow/index.js.map +1 -0
- package/dist/components/Label/index.cjs +17 -0
- package/dist/components/Label/index.cjs.map +1 -0
- package/dist/components/Label/index.d.cts +23 -0
- package/dist/components/Label/index.d.ts +23 -0
- package/dist/components/Label/index.js +4 -0
- package/dist/components/Label/index.js.map +1 -0
- package/dist/components/Markdown/index.cjs +51 -0
- package/dist/components/Markdown/index.cjs.map +1 -0
- package/dist/components/Markdown/index.css +331 -0
- package/dist/components/Markdown/index.css.map +1 -0
- package/dist/components/Markdown/index.d.cts +82 -0
- package/dist/components/Markdown/index.d.ts +82 -0
- package/dist/components/Markdown/index.js +10 -0
- package/dist/components/Markdown/index.js.map +1 -0
- package/dist/components/Markdown/styles.css +354 -0
- package/dist/components/MediaEditor/index.cjs +44 -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 +19 -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/RecordButton/index.cjs +4 -4
- package/dist/components/RecordButton/index.js +1 -1
- package/dist/components/RichTextEditor/index.cjs +33 -0
- package/dist/components/RichTextEditor/index.cjs.map +1 -0
- package/dist/components/RichTextEditor/index.d.cts +62 -0
- package/dist/components/RichTextEditor/index.d.ts +62 -0
- package/dist/components/RichTextEditor/index.js +12 -0
- package/dist/components/RichTextEditor/index.js.map +1 -0
- package/dist/components/ScrollArea/index.cjs +17 -0
- package/dist/components/ScrollArea/index.cjs.map +1 -0
- package/dist/components/ScrollArea/index.d.cts +22 -0
- package/dist/components/ScrollArea/index.d.ts +22 -0
- package/dist/components/ScrollArea/index.js +4 -0
- package/dist/components/ScrollArea/index.js.map +1 -0
- package/dist/components/Select/index.cjs +5 -3
- package/dist/components/Select/index.js +3 -1
- package/dist/components/Separator/index.cjs +17 -0
- package/dist/components/Separator/index.cjs.map +1 -0
- package/dist/components/Separator/index.d.cts +27 -0
- package/dist/components/Separator/index.d.ts +27 -0
- package/dist/components/Separator/index.js +4 -0
- package/dist/components/Separator/index.js.map +1 -0
- package/dist/components/Sheet/index.cjs +48 -0
- package/dist/components/Sheet/index.cjs.map +1 -0
- package/dist/components/Sheet/index.d.cts +62 -0
- package/dist/components/Sheet/index.d.ts +62 -0
- package/dist/components/Sheet/index.js +7 -0
- package/dist/components/Sheet/index.js.map +1 -0
- package/dist/components/SuperChat/index.cjs +1373 -0
- package/dist/components/SuperChat/index.cjs.map +1 -0
- package/dist/components/SuperChat/index.d.cts +189 -0
- package/dist/components/SuperChat/index.d.ts +189 -0
- package/dist/components/SuperChat/index.js +1336 -0
- package/dist/components/SuperChat/index.js.map +1 -0
- package/dist/components/SuperChat/plugins/index.cjs +1292 -0
- package/dist/components/SuperChat/plugins/index.cjs.map +1 -0
- package/dist/components/SuperChat/plugins/index.d.cts +233 -0
- package/dist/components/SuperChat/plugins/index.d.ts +233 -0
- package/dist/components/SuperChat/plugins/index.js +1252 -0
- package/dist/components/SuperChat/plugins/index.js.map +1 -0
- package/dist/components/Table/index.cjs +9 -9
- package/dist/components/Table/index.d.cts +4 -0
- package/dist/components/Table/index.d.ts +4 -0
- package/dist/components/Table/index.js +1 -1
- package/dist/components/ThemeProvider/index.cjs +7 -7
- package/dist/components/ThemeProvider/index.js +1 -1
- package/dist/components/Toggle/index.cjs +17 -0
- package/dist/components/Toggle/index.cjs.map +1 -0
- package/dist/components/Toggle/index.d.cts +28 -0
- package/dist/components/Toggle/index.d.ts +28 -0
- package/dist/components/Toggle/index.js +4 -0
- package/dist/components/Toggle/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/datavis.cjs +268 -227
- package/dist/datavis.cjs.map +1 -1
- package/dist/datavis.d.cts +83 -9
- package/dist/datavis.d.ts +83 -9
- package/dist/datavis.js +235 -229
- package/dist/datavis.js.map +1 -1
- package/dist/esheet.cjs +184 -0
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.d.cts +117 -0
- package/dist/esheet.d.ts +117 -0
- package/dist/esheet.js +163 -0
- package/dist/esheet.js.map +1 -1
- package/dist/hey-buddy-CLUVAY2X.cjs +1133 -0
- package/dist/hey-buddy-CLUVAY2X.cjs.map +1 -0
- package/dist/hey-buddy-NMSWZ4TN.js +1131 -0
- package/dist/hey-buddy-NMSWZ4TN.js.map +1 -0
- package/dist/hooks/index.cjs +76 -16
- package/dist/hooks/index.d.cts +151 -2
- package/dist/hooks/index.d.ts +151 -2
- package/dist/hooks/index.js +6 -2
- package/dist/html-MdxqSzjD.d.cts +13 -0
- package/dist/html-MdxqSzjD.d.ts +13 -0
- package/dist/index.cjs +10394 -6565
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +331 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +2020 -249
- package/dist/index.d.ts +2020 -249
- package/dist/index.js +9223 -5969
- package/dist/index.js.map +1 -1
- package/dist/kerebron.cjs +119 -0
- package/dist/kerebron.cjs.map +1 -0
- package/dist/kerebron.css +11 -0
- package/dist/kerebron.d.cts +23 -0
- package/dist/kerebron.d.ts +23 -0
- package/dist/kerebron.js +116 -0
- package/dist/kerebron.js.map +1 -0
- package/dist/nitroTableGrid-3J2GY6CK.cjs +47 -0
- package/dist/nitroTableGrid-3J2GY6CK.cjs.map +1 -0
- package/dist/nitroTableGrid-SIMT7635.js +25 -0
- package/dist/nitroTableGrid-SIMT7635.js.map +1 -0
- package/dist/orderRows-BUJYgSc7.d.cts +221 -0
- package/dist/orderRows-BUJYgSc7.d.ts +221 -0
- package/dist/speaker-verify-5GTWAN5Y.cjs +357 -0
- package/dist/speaker-verify-5GTWAN5Y.cjs.map +1 -0
- package/dist/speaker-verify-R67P433H.js +355 -0
- package/dist/speaker-verify-R67P433H.js.map +1 -0
- package/dist/styles/init.css +5 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/transcript-oaWqY3yr.d.cts +81 -0
- package/dist/transcript-oaWqY3yr.d.ts +81 -0
- package/dist/types-BYnLjEFg.d.cts +248 -0
- package/dist/types-BYnLjEFg.d.ts +248 -0
- package/dist/types-CBh8Zlje.d.cts +240 -0
- package/dist/types-CyCwYBlr.d.ts +240 -0
- package/dist/useAnchoredPosition-nXdSFKHf.d.cts +65 -0
- package/dist/useAnchoredPosition-nXdSFKHf.d.ts +65 -0
- package/dist/useTranscriptEdits-BUylQFg0.d.cts +168 -0
- package/dist/useTranscriptEdits-CWYnjbGP.d.ts +168 -0
- package/dist/utils/index.cjs +27 -18
- package/dist/utils/index.d.cts +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +3 -2
- package/package.json +180 -55
- package/dist/chunk-2DS3RJ2D.js.map +0 -1
- package/dist/chunk-74K3RRU7.cjs +0 -4
- package/dist/chunk-7BARESXI.cjs.map +0 -1
- package/dist/chunk-CV4CVGLO.cjs.map +0 -1
- package/dist/chunk-DNPRRYPQ.js.map +0 -1
- package/dist/chunk-FRT6RQND.cjs.map +0 -1
- package/dist/chunk-HYEJLKXI.js +0 -476
- package/dist/chunk-HYEJLKXI.js.map +0 -1
- package/dist/chunk-I56VBDSC.js.map +0 -1
- package/dist/chunk-IBZXDX4L.cjs.map +0 -1
- package/dist/chunk-IKMR2ADM.cjs +0 -25
- package/dist/chunk-IKMR2ADM.cjs.map +0 -1
- package/dist/chunk-JHPFOG2N.cjs.map +0 -1
- package/dist/chunk-K7IGBNZA.cjs.map +0 -1
- package/dist/chunk-LEMY57MI.js +0 -3
- package/dist/chunk-MPOWJVV4.js.map +0 -1
- package/dist/chunk-NINI4WVS.cjs.map +0 -1
- package/dist/chunk-OKBR6PX4.js +0 -23
- package/dist/chunk-OKBR6PX4.js.map +0 -1
- package/dist/chunk-OYKS2JBB.cjs.map +0 -1
- package/dist/chunk-QVJBUWJQ.js.map +0 -1
- package/dist/chunk-R25H4N4Z.js.map +0 -1
- package/dist/chunk-V2DF2GUE.js +0 -3
- package/dist/chunk-WFS6R2F5.js.map +0 -1
- package/dist/ozwell.cjs +0 -385
- package/dist/ozwell.cjs.map +0 -1
- package/dist/ozwell.d.cts +0 -15
- package/dist/ozwell.d.ts +0 -15
- package/dist/ozwell.js +0 -360
- package/dist/ozwell.js.map +0 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkOR5DRJCW_cjs = require('./chunk-OR5DRJCW.cjs');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
function _interopNamespace(e) {
|
|
9
|
+
if (e && e.__esModule) return e;
|
|
10
|
+
var n = Object.create(null);
|
|
11
|
+
if (e) {
|
|
12
|
+
Object.keys(e).forEach(function (k) {
|
|
13
|
+
if (k !== 'default') {
|
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return e[k]; }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
n.default = e;
|
|
23
|
+
return Object.freeze(n);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
|
+
|
|
28
|
+
var toggleVariants = classVarianceAuthority.cva(
|
|
29
|
+
[
|
|
30
|
+
"inline-flex items-center justify-center gap-2",
|
|
31
|
+
"rounded-md text-sm font-medium",
|
|
32
|
+
"transition-colors",
|
|
33
|
+
"hover:bg-muted hover:text-muted-foreground",
|
|
34
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
35
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
36
|
+
"data-[state=on]:bg-primary-800 data-[state=on]:text-primary-foreground"
|
|
37
|
+
],
|
|
38
|
+
{
|
|
39
|
+
variants: {
|
|
40
|
+
variant: {
|
|
41
|
+
default: "bg-transparent",
|
|
42
|
+
outline: "border border-input bg-transparent data-[state=on]:border-transparent"
|
|
43
|
+
},
|
|
44
|
+
size: {
|
|
45
|
+
sm: "h-8 min-w-8 px-2",
|
|
46
|
+
md: "h-9 min-w-9 px-2.5",
|
|
47
|
+
lg: "h-10 min-w-10 px-3"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
defaultVariants: {
|
|
51
|
+
variant: "default",
|
|
52
|
+
size: "md"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
var Toggle = React__namespace.forwardRef(
|
|
57
|
+
({
|
|
58
|
+
className,
|
|
59
|
+
variant,
|
|
60
|
+
size,
|
|
61
|
+
pressed: controlledPressed,
|
|
62
|
+
defaultPressed = false,
|
|
63
|
+
onPressedChange,
|
|
64
|
+
disabled,
|
|
65
|
+
onClick,
|
|
66
|
+
children,
|
|
67
|
+
...props
|
|
68
|
+
}, ref) => {
|
|
69
|
+
const [uncontrolledPressed, setUncontrolledPressed] = React__namespace.useState(defaultPressed);
|
|
70
|
+
const isControlled = controlledPressed !== void 0;
|
|
71
|
+
const isPressed = isControlled ? controlledPressed : uncontrolledPressed;
|
|
72
|
+
const handleClick = (e) => {
|
|
73
|
+
if (disabled) return;
|
|
74
|
+
const next = !isPressed;
|
|
75
|
+
if (!isControlled) setUncontrolledPressed(next);
|
|
76
|
+
onPressedChange?.(next);
|
|
77
|
+
onClick?.(e);
|
|
78
|
+
};
|
|
79
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
"button",
|
|
81
|
+
{
|
|
82
|
+
ref,
|
|
83
|
+
type: "button",
|
|
84
|
+
"data-slot": "toggle",
|
|
85
|
+
"aria-pressed": isPressed,
|
|
86
|
+
"data-state": isPressed ? "on" : "off",
|
|
87
|
+
disabled,
|
|
88
|
+
onClick: handleClick,
|
|
89
|
+
className: chunkOR5DRJCW_cjs.cn(toggleVariants({ variant, size }), className),
|
|
90
|
+
...props,
|
|
91
|
+
children
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
Toggle.displayName = "Toggle";
|
|
97
|
+
|
|
98
|
+
exports.Toggle = Toggle;
|
|
99
|
+
exports.toggleVariants = toggleVariants;
|
|
100
|
+
//# sourceMappingURL=chunk-DLNJLCNO.cjs.map
|
|
101
|
+
//# sourceMappingURL=chunk-DLNJLCNO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Toggle/Toggle.tsx"],"names":["cva","React","jsx","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAM,cAAA,GAAiBA,0BAAA;AAAA,EACrB;AAAA,IACE,+CAAA;AAAA,IACA,gCAAA;AAAA,IACA,mBAAA;AAAA,IACA,4CAAA;AAAA,IACA,qGAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAuBA,IAAM,MAAA,GAAeC,gBAAA,CAAA,UAAA;AAAA,EACnB,CACE;AAAA,IACE,SAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA,EAAS,iBAAA;AAAA,IACT,cAAA,GAAiB,KAAA;AAAA,IACjB,eAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAC1CA,0BAAS,cAAc,CAAA;AAE/B,IAAA,MAAM,eAAe,iBAAA,KAAsB,MAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,eAAe,iBAAA,GAAoB,mBAAA;AAErD,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,MAAM,OAAO,CAAC,SAAA;AACd,MAAA,IAAI,CAAC,YAAA,EAAc,sBAAA,CAAuB,IAAI,CAAA;AAC9C,MAAA,eAAA,GAAkB,IAAI,CAAA;AACtB,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,uBACEC,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,WAAA,EAAU,QAAA;AAAA,QACV,cAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAY,YAAY,IAAA,GAAO,KAAA;AAAA,QAC/B,QAAA;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAWC,qBAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACzD,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-DLNJLCNO.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst toggleVariants = cva(\n [\n 'inline-flex items-center justify-center gap-2',\n 'rounded-md text-sm font-medium',\n 'transition-colors',\n 'hover:bg-muted hover:text-muted-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=on]:bg-primary-800 data-[state=on]:text-primary-foreground',\n ],\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline:\n 'border border-input bg-transparent data-[state=on]:border-transparent',\n },\n size: {\n sm: 'h-8 min-w-8 px-2',\n md: 'h-9 min-w-9 px-2.5',\n lg: 'h-10 min-w-10 px-3',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n);\n\nexport interface ToggleProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>,\n VariantProps<typeof toggleVariants> {\n /** Controlled pressed state */\n pressed?: boolean;\n /** Default pressed state (uncontrolled) */\n defaultPressed?: boolean;\n /** Callback fired when the pressed state changes */\n onPressedChange?: (pressed: boolean) => void;\n}\n\n/**\n * A two-state toggle button.\n *\n * @example\n * ```tsx\n * <Toggle aria-label=\"Bold\"><BoldIcon /></Toggle>\n * <Toggle pressed={italic} onPressedChange={setItalic}>Italic</Toggle>\n * ```\n */\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n className,\n variant,\n size,\n pressed: controlledPressed,\n defaultPressed = false,\n onPressedChange,\n disabled,\n onClick,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledPressed, setUncontrolledPressed] =\n React.useState(defaultPressed);\n\n const isControlled = controlledPressed !== undefined;\n const isPressed = isControlled ? controlledPressed : uncontrolledPressed;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n const next = !isPressed;\n if (!isControlled) setUncontrolledPressed(next);\n onPressedChange?.(next);\n onClick?.(e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"toggle\"\n aria-pressed={isPressed}\n data-state={isPressed ? 'on' : 'off'}\n disabled={disabled}\n onClick={handleClick}\n className={cn(toggleVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nToggle.displayName = 'Toggle';\n\nexport { Toggle, toggleVariants };\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { cn } from './chunk-F3SOEIN2.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var labelVariants = cva(
|
|
7
|
+
[
|
|
8
|
+
"text-foreground font-medium leading-none select-none",
|
|
9
|
+
"peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
10
|
+
],
|
|
11
|
+
{
|
|
12
|
+
variants: {
|
|
13
|
+
size: {
|
|
14
|
+
sm: "text-xs",
|
|
15
|
+
md: "text-sm",
|
|
16
|
+
lg: "text-base"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
size: "md"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
var Label = React.forwardRef(
|
|
25
|
+
({ className, size, required, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
26
|
+
"label",
|
|
27
|
+
{
|
|
28
|
+
ref,
|
|
29
|
+
"data-slot": "label",
|
|
30
|
+
className: cn(labelVariants({ size }), className),
|
|
31
|
+
...props,
|
|
32
|
+
children: [
|
|
33
|
+
children,
|
|
34
|
+
required && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-destructive ml-0.5", children: "*" })
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
);
|
|
39
|
+
Label.displayName = "Label";
|
|
40
|
+
|
|
41
|
+
export { Label, labelVariants };
|
|
42
|
+
//# sourceMappingURL=chunk-DUPR6FEL.js.map
|
|
43
|
+
//# sourceMappingURL=chunk-DUPR6FEL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Label/Label.tsx"],"names":[],"mappings":";;;;;AAIA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB;AAAA,IACE,sDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAmBA,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,IAAA,EAAM,UAAU,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBAClD,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC/C,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,4BACC,GAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,2BAA0B,QAAA,EAAA,GAAA,EAE7D;AAAA;AAAA;AAAA;AAIR;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-DUPR6FEL.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst labelVariants = cva(\n [\n 'text-foreground font-medium leading-none select-none',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n ],\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport interface LabelProps\n extends\n React.LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {\n /** Marks the associated field as required, rendering an asterisk */\n required?: boolean;\n}\n\n/**\n * An accessible form label that associates text with a form control via `htmlFor`.\n *\n * @example\n * ```tsx\n * <Label htmlFor=\"email\" required>Email</Label>\n * <input id=\"email\" type=\"email\" />\n * ```\n */\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, size, required, children, ...props }, ref) => (\n <label\n ref={ref}\n data-slot=\"label\"\n className={cn(labelVariants({ size }), className)}\n {...props}\n >\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive ml-0.5\">\n *\n </span>\n )}\n </label>\n )\n);\n\nLabel.displayName = 'Label';\n\nexport { Label, labelVariants };\n"]}
|
|
@@ -75,5 +75,5 @@ Badge.displayName = "Badge";
|
|
|
75
75
|
|
|
76
76
|
exports.Badge = Badge;
|
|
77
77
|
exports.badgeVariants = badgeVariants;
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
78
|
+
//# sourceMappingURL=chunk-EL2RSQTJ.cjs.map
|
|
79
|
+
//# sourceMappingURL=chunk-EL2RSQTJ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Badge/Badge.tsx"],"names":["cva","React","jsxs","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAM,aAAA,GAAgBA,0BAAA;AAAA,EACpB;AAAA,IACE,yCAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,2EAAA;AAAA,QACF,SAAA,EACE,2EAAA;AAAA,QACF,OAAA,EACE,mEAAA;AAAA,QACF,OAAA,EACE,uEAAA;AAAA,QACF,MAAA,EAAQ,2DAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,uBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAoBA,IAAM,KAAA,GAAcC,gBAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,MAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC/D,IAAA,uBACEC,eAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,OAAA;AAAA,QACV,SAAA,EAAWC,qBAAG,aAAA,CAAc,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACxD,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,IAAA,oBAAQC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAiB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UAC9C;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Badge/Badge.tsx"],"names":["cva","React","jsxs","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAM,aAAA,GAAgBA,0BAAA;AAAA,EACpB;AAAA,IACE,yCAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,2EAAA;AAAA,QACF,SAAA,EACE,2EAAA;AAAA,QACF,OAAA,EACE,mEAAA;AAAA,QACF,OAAA,EACE,uEAAA;AAAA,QACF,MAAA,EAAQ,2DAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,uBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAoBA,IAAM,KAAA,GAAcC,gBAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,MAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC/D,IAAA,uBACEC,eAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,OAAA;AAAA,QACV,SAAA,EAAWC,qBAAG,aAAA,CAAc,EAAE,SAAS,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,QACxD,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,IAAA,oBAAQC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAiB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UAC9C;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-EL2RSQTJ.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst badgeVariants = cva(\n [\n 'inline-flex items-center justify-center',\n 'font-medium',\n 'rounded-full',\n 'transition-colors duration-150',\n ],\n {\n variants: {\n variant: {\n default:\n 'bg-primary-100 text-primary-900 dark:bg-primary-900 dark:text-primary-100',\n secondary:\n 'bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-100',\n success:\n 'bg-green-100 text-green-900 dark:bg-green-900 dark:text-green-100',\n warning:\n 'bg-yellow-100 text-yellow-900 dark:bg-yellow-900 dark:text-yellow-100',\n danger: 'bg-red-100 text-red-900 dark:bg-red-900 dark:text-red-100',\n outline: 'border border-current bg-transparent',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-sm',\n lg: 'px-3 py-1 text-base',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n);\n\nexport interface BadgeProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n /** Optional icon before the text */\n icon?: React.ReactNode;\n}\n\n/**\n * A badge component for displaying status, labels, or counts.\n *\n * @example\n * ```tsx\n * <Badge variant=\"success\">Active</Badge>\n * <Badge variant=\"warning\" size=\"sm\">Pending</Badge>\n * <Badge variant=\"danger\" icon={<AlertIcon />}>Error</Badge>\n * ```\n */\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, icon, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n >\n {icon && <span className=\"mr-1 shrink-0\">{icon}</span>}\n {children}\n </span>\n );\n }\n);\n\nBadge.displayName = 'Badge';\n\nexport { Badge, badgeVariants };\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// src/utils/html.ts
|
|
2
|
+
function stripHtmlTags(html) {
|
|
3
|
+
let result = "";
|
|
4
|
+
let inTag = false;
|
|
5
|
+
for (let i = 0; i < html.length; i++) {
|
|
6
|
+
if (html[i] === "<") {
|
|
7
|
+
inTag = true;
|
|
8
|
+
} else if (html[i] === ">") {
|
|
9
|
+
inTag = false;
|
|
10
|
+
} else if (!inTag) {
|
|
11
|
+
result += html[i];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
function isHtmlEmpty(html) {
|
|
17
|
+
return stripHtmlTags(html).replace(/ /g, " ").trim().length === 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { isHtmlEmpty, stripHtmlTags };
|
|
21
|
+
//# sourceMappingURL=chunk-ERLPVXOV.js.map
|
|
22
|
+
//# sourceMappingURL=chunk-ERLPVXOV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/html.ts"],"names":[],"mappings":";AAKO,SAAS,cAAc,IAAA,EAAsB;AAClD,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK;AACnB,MAAA,KAAA,GAAQ,IAAA;AAAA,IACV,CAAA,MAAA,IAAW,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK;AAC1B,MAAA,KAAA,GAAQ,KAAA;AAAA,IACV,CAAA,MAAA,IAAW,CAAC,KAAA,EAAO;AACjB,MAAA,MAAA,IAAU,KAAK,CAAC,CAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAMO,SAAS,YAAY,IAAA,EAAuB;AACjD,EAAA,OACE,aAAA,CAAc,IAAI,CAAA,CACf,OAAA,CAAQ,WAAW,GAAG,CAAA,CACtB,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA;AAEzB","file":"chunk-ERLPVXOV.js","sourcesContent":["/**\n * Extracts visible text from an HTML string without using regex.\n * Uses a simple character-by-character state machine to skip tags.\n * This avoids CodeQL false-positives associated with regex-based tag stripping.\n */\nexport function stripHtmlTags(html: string): string {\n let result = '';\n let inTag = false;\n for (let i = 0; i < html.length; i++) {\n if (html[i] === '<') {\n inTag = true;\n } else if (html[i] === '>') {\n inTag = false;\n } else if (!inTag) {\n result += html[i];\n }\n }\n return result;\n}\n\n/**\n * Returns true when an HTML string has no visible text content.\n * This is a visibility check, not a sanitizer — do NOT use for XSS prevention.\n */\nexport function isHtmlEmpty(html: string): boolean {\n return (\n stripHtmlTags(html)\n .replace(/ /g, ' ')\n .trim().length === 0\n );\n}\n"]}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/components/TranscriptView/TranscriptView.tsx
|
|
6
|
+
var transcriptViewVariants = cva("flex flex-col text-foreground", {
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
plain: "",
|
|
10
|
+
card: "rounded-xl border border-border bg-card text-card-foreground p-3"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
defaultVariants: {
|
|
14
|
+
variant: "plain"
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
function formatTimestampMs(ms) {
|
|
18
|
+
const totalSeconds = Math.floor(ms / 1e3);
|
|
19
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
20
|
+
const seconds = totalSeconds % 60;
|
|
21
|
+
return `${minutes}:${String(seconds).padStart(2, "0")}`;
|
|
22
|
+
}
|
|
23
|
+
function resolveSpeakerLabel(speakerId, speakerLabels, transcript) {
|
|
24
|
+
if (!speakerId) return void 0;
|
|
25
|
+
return speakerLabels?.[speakerId] ?? transcript.speakers?.find((s) => s.id === speakerId)?.name ?? speakerId;
|
|
26
|
+
}
|
|
27
|
+
function buildSegmentRows(segments, merge) {
|
|
28
|
+
const rows = [];
|
|
29
|
+
for (const segment of segments) {
|
|
30
|
+
const text = segment.text.trim();
|
|
31
|
+
if (!text) continue;
|
|
32
|
+
const prev = rows[rows.length - 1];
|
|
33
|
+
if (merge && prev && prev.speakerId === segment.speakerId) {
|
|
34
|
+
prev.text += " " + text;
|
|
35
|
+
prev.endMs = segment.endMs;
|
|
36
|
+
} else {
|
|
37
|
+
rows.push({
|
|
38
|
+
text,
|
|
39
|
+
startMs: segment.startMs,
|
|
40
|
+
endMs: segment.endMs,
|
|
41
|
+
speakerId: segment.speakerId
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return rows;
|
|
46
|
+
}
|
|
47
|
+
function findActiveIndex(items, timeMs) {
|
|
48
|
+
if (timeMs === void 0) return -1;
|
|
49
|
+
return items.findIndex(
|
|
50
|
+
(item) => timeMs >= item.startMs && timeMs < item.endMs
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
function activationProps(onActivate) {
|
|
54
|
+
return {
|
|
55
|
+
onClick: onActivate,
|
|
56
|
+
onKeyDown: (e) => {
|
|
57
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
onActivate();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
var TranscriptView = React.forwardRef(
|
|
65
|
+
({
|
|
66
|
+
transcript,
|
|
67
|
+
granularity,
|
|
68
|
+
currentTimeMs,
|
|
69
|
+
onSeek,
|
|
70
|
+
followPlayback = true,
|
|
71
|
+
speakerLabels,
|
|
72
|
+
mergeSameSpeaker = false,
|
|
73
|
+
showTimestamps = true,
|
|
74
|
+
actions,
|
|
75
|
+
variant,
|
|
76
|
+
className,
|
|
77
|
+
"aria-label": ariaLabel = "Transcript"
|
|
78
|
+
}, ref) => {
|
|
79
|
+
const contentRef = React.useRef(null);
|
|
80
|
+
const isHoveringRef = React.useRef(false);
|
|
81
|
+
const resolvedGranularity = granularity ?? (transcript.segments && transcript.segments.length > 0 ? "segment" : "word");
|
|
82
|
+
const segmentRows = React.useMemo(
|
|
83
|
+
() => resolvedGranularity === "segment" ? buildSegmentRows(transcript.segments ?? [], mergeSameSpeaker) : [],
|
|
84
|
+
[resolvedGranularity, transcript.segments, mergeSameSpeaker]
|
|
85
|
+
);
|
|
86
|
+
const activeIndex = resolvedGranularity === "segment" ? findActiveIndex(segmentRows, currentTimeMs) : findActiveIndex(transcript.words, currentTimeMs);
|
|
87
|
+
React.useEffect(() => {
|
|
88
|
+
if (!followPlayback || activeIndex < 0 || isHoveringRef.current) return;
|
|
89
|
+
const el = contentRef.current?.querySelector(
|
|
90
|
+
`[data-transcript-index="${activeIndex}"]`
|
|
91
|
+
);
|
|
92
|
+
el?.scrollIntoView({ block: "nearest", behavior: "smooth" });
|
|
93
|
+
}, [followPlayback, activeIndex]);
|
|
94
|
+
const seekTo = (timeMs) => onSeek?.(timeMs);
|
|
95
|
+
const renderWord = (word, index) => {
|
|
96
|
+
const isActive = index === activeIndex;
|
|
97
|
+
const wordType = word.wordType ?? "word";
|
|
98
|
+
const durationSec = ((word.endMs - word.startMs) / 1e3).toFixed(1);
|
|
99
|
+
if (wordType === "silence-newline") {
|
|
100
|
+
return /* @__PURE__ */ jsx(
|
|
101
|
+
"span",
|
|
102
|
+
{
|
|
103
|
+
"data-transcript-index": index,
|
|
104
|
+
role: "button",
|
|
105
|
+
tabIndex: 0,
|
|
106
|
+
"aria-current": isActive ? "true" : void 0,
|
|
107
|
+
"aria-label": `Silence, ${durationSec} seconds`,
|
|
108
|
+
className: `hover:bg-muted focus-visible:ring-ring block h-3 cursor-pointer rounded transition-colors focus-visible:ring-2 focus-visible:outline-none ${isActive ? "bg-primary-500/20" : ""}`,
|
|
109
|
+
...activationProps(() => seekTo(word.startMs))
|
|
110
|
+
},
|
|
111
|
+
index
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
if (wordType === "silence") {
|
|
115
|
+
return /* @__PURE__ */ jsx(
|
|
116
|
+
"span",
|
|
117
|
+
{
|
|
118
|
+
"data-transcript-index": index,
|
|
119
|
+
role: "button",
|
|
120
|
+
tabIndex: 0,
|
|
121
|
+
"aria-current": isActive ? "true" : void 0,
|
|
122
|
+
"aria-label": `Silence, ${durationSec} seconds`,
|
|
123
|
+
className: `text-muted-foreground/60 hover:bg-muted focus-visible:ring-ring cursor-pointer rounded px-0.5 transition-colors focus-visible:ring-2 focus-visible:outline-none ${isActive ? "bg-primary-500/20" : ""}`,
|
|
124
|
+
...activationProps(() => seekTo(word.startMs)),
|
|
125
|
+
children: "\xB7 "
|
|
126
|
+
},
|
|
127
|
+
index
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
return /* @__PURE__ */ jsxs(
|
|
131
|
+
"span",
|
|
132
|
+
{
|
|
133
|
+
"data-transcript-index": index,
|
|
134
|
+
role: "button",
|
|
135
|
+
tabIndex: 0,
|
|
136
|
+
"aria-current": isActive ? "true" : void 0,
|
|
137
|
+
className: `hover:bg-muted focus-visible:ring-ring cursor-pointer rounded px-0.5 transition-colors focus-visible:ring-2 focus-visible:outline-none ${isActive ? "bg-primary-500/20 text-foreground" : ""}`,
|
|
138
|
+
...activationProps(() => seekTo(word.startMs)),
|
|
139
|
+
children: [
|
|
140
|
+
word.text,
|
|
141
|
+
" "
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
index
|
|
145
|
+
);
|
|
146
|
+
};
|
|
147
|
+
const renderSegmentRow = (row, index) => {
|
|
148
|
+
const isActive = index === activeIndex;
|
|
149
|
+
const speaker = resolveSpeakerLabel(
|
|
150
|
+
row.speakerId,
|
|
151
|
+
speakerLabels,
|
|
152
|
+
transcript
|
|
153
|
+
);
|
|
154
|
+
return /* @__PURE__ */ jsx("div", { role: "listitem", children: /* @__PURE__ */ jsxs(
|
|
155
|
+
"button",
|
|
156
|
+
{
|
|
157
|
+
type: "button",
|
|
158
|
+
"data-transcript-index": index,
|
|
159
|
+
"aria-current": isActive ? "true" : void 0,
|
|
160
|
+
className: `hover:bg-muted focus-visible:ring-ring flex w-full cursor-pointer gap-3 rounded px-2 py-1 text-left text-sm transition-colors focus-visible:ring-2 focus-visible:outline-none ${isActive ? "bg-primary-500/20" : ""}`,
|
|
161
|
+
...activationProps(() => seekTo(row.startMs)),
|
|
162
|
+
children: [
|
|
163
|
+
showTimestamps && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground w-12 shrink-0 font-mono", children: formatTimestampMs(row.startMs) }),
|
|
164
|
+
speaker && /* @__PURE__ */ jsxs("span", { className: "text-primary-900 w-24 shrink-0 font-semibold", children: [
|
|
165
|
+
speaker,
|
|
166
|
+
":"
|
|
167
|
+
] }),
|
|
168
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground", children: row.text })
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
) }, index);
|
|
172
|
+
};
|
|
173
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: transcriptViewVariants({ variant, className }), children: [
|
|
174
|
+
actions && /* @__PURE__ */ jsx("div", { className: "border-border mb-2 flex items-center justify-end gap-2 border-b pb-2", children: actions }),
|
|
175
|
+
/* @__PURE__ */ jsx(
|
|
176
|
+
"div",
|
|
177
|
+
{
|
|
178
|
+
ref: contentRef,
|
|
179
|
+
"aria-label": ariaLabel,
|
|
180
|
+
onMouseEnter: () => {
|
|
181
|
+
isHoveringRef.current = true;
|
|
182
|
+
},
|
|
183
|
+
onMouseLeave: () => {
|
|
184
|
+
isHoveringRef.current = false;
|
|
185
|
+
},
|
|
186
|
+
...resolvedGranularity === "segment" ? { role: "list", className: "space-y-2" } : { className: "text-sm leading-relaxed" },
|
|
187
|
+
children: resolvedGranularity === "segment" ? segmentRows.map(renderSegmentRow) : transcript.words.map(renderWord)
|
|
188
|
+
}
|
|
189
|
+
)
|
|
190
|
+
] });
|
|
191
|
+
}
|
|
192
|
+
);
|
|
193
|
+
TranscriptView.displayName = "TranscriptView";
|
|
194
|
+
|
|
195
|
+
export { TranscriptView, formatTimestampMs };
|
|
196
|
+
//# sourceMappingURL=chunk-FIWKHLWY.js.map
|
|
197
|
+
//# sourceMappingURL=chunk-FIWKHLWY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/TranscriptView/TranscriptView.tsx"],"names":[],"mappings":"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","file":"chunk-FIWKHLWY.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type {\n Transcript,\n TranscriptSegment,\n TranscriptWord,\n} from './transcript';\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\nexport type TranscriptGranularity = 'word' | 'segment';\n\nexport interface TranscriptViewProps extends VariantProps<\n typeof transcriptViewVariants\n> {\n /** The transcript to render */\n transcript: Transcript;\n /**\n * Rendering granularity. Defaults to 'segment' when the transcript has\n * segments, otherwise 'word'.\n */\n granularity?: TranscriptGranularity;\n /** Controlled playback position (ms); the matching word/segment is highlighted */\n currentTimeMs?: number;\n /** Called with the start time (ms) of a clicked word/segment; the host performs the seek/play */\n onSeek?: (timeMs: number) => void;\n /** Auto-scroll the active word/segment into view (default true) */\n followPlayback?: boolean;\n /**\n * Maps Speaker.id to a display label (e.g. Clinician/Patient). Falls back to\n * Speaker.name from transcript.speakers, then the raw id.\n */\n speakerLabels?: Record<string, string>;\n /** Segment mode: merge consecutive same-speaker segments into one row (default false) */\n mergeSameSpeaker?: boolean;\n /** Segment mode: show mm:ss timestamps (default true) */\n showTimestamps?: boolean;\n /** Rendered in a header row (host supplies copy/re-transcribe/remove buttons) */\n actions?: React.ReactNode;\n /** Additional class name */\n className?: string;\n /** Accessible label for the transcript container (default 'Transcript') */\n 'aria-label'?: string;\n}\n\n// ============================================================================\n// Variants\n// ============================================================================\n\nconst transcriptViewVariants = cva('flex flex-col text-foreground', {\n variants: {\n variant: {\n plain: '',\n card: 'rounded-xl border border-border bg-card text-card-foreground p-3',\n },\n },\n defaultVariants: {\n variant: 'plain',\n },\n});\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/** Format milliseconds as m:ss (osheet timestamp style) */\nexport function formatTimestampMs(ms: number): string {\n const totalSeconds = Math.floor(ms / 1000);\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n return `${minutes}:${String(seconds).padStart(2, '0')}`;\n}\n\n/** Resolve a speaker id to its display label */\nfunction resolveSpeakerLabel(\n speakerId: string | undefined,\n speakerLabels: Record<string, string> | undefined,\n transcript: Transcript\n): string | undefined {\n if (!speakerId) return undefined;\n return (\n speakerLabels?.[speakerId] ??\n transcript.speakers?.find((s) => s.id === speakerId)?.name ??\n speakerId\n );\n}\n\n/** A display row in segment mode (possibly the merge of several source segments) */\ninterface SegmentRow {\n text: string;\n startMs: number;\n endMs: number;\n speakerId?: string;\n}\n\n/**\n * Build segment display rows, optionally merging consecutive same-speaker\n * segments (osheet formatTranscriptText behavior). Empty segments are skipped.\n */\nfunction buildSegmentRows(\n segments: TranscriptSegment[],\n merge: boolean\n): SegmentRow[] {\n const rows: SegmentRow[] = [];\n for (const segment of segments) {\n const text = segment.text.trim();\n if (!text) continue;\n const prev = rows[rows.length - 1];\n if (merge && prev && prev.speakerId === segment.speakerId) {\n prev.text += ' ' + text;\n prev.endMs = segment.endMs;\n } else {\n rows.push({\n text,\n startMs: segment.startMs,\n endMs: segment.endMs,\n speakerId: segment.speakerId,\n });\n }\n }\n return rows;\n}\n\n/** Index of the item whose [startMs, endMs) range contains timeMs, or -1 */\nfunction findActiveIndex(\n items: ReadonlyArray<{ startMs: number; endMs: number }>,\n timeMs: number | undefined\n): number {\n if (timeMs === undefined) return -1;\n return items.findIndex(\n (item) => timeMs >= item.startMs && timeMs < item.endMs\n );\n}\n\n/** Run onActivate for click and Enter/Space keyboard activation */\nfunction activationProps(onActivate: () => void) {\n return {\n onClick: onActivate,\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onActivate();\n }\n },\n };\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Read-only transcript viewer with word-level and segment-level (diarized)\n * rendering modes.\n *\n * Controlled and persistence-agnostic: the host owns playback and passes the\n * position via `currentTimeMs`; clicking a word/segment reports the target\n * time through `onSeek`. Segment mode matches the osheet artifact-viewer row\n * UX (timestamp | speaker | text, click to seek + play). Editing lives in\n * MediaEditor, not here.\n */\nexport const TranscriptView = React.forwardRef<\n HTMLDivElement,\n TranscriptViewProps\n>(\n (\n {\n transcript,\n granularity,\n currentTimeMs,\n onSeek,\n followPlayback = true,\n speakerLabels,\n mergeSameSpeaker = false,\n showTimestamps = true,\n actions,\n variant,\n className,\n 'aria-label': ariaLabel = 'Transcript',\n },\n ref\n ) => {\n const contentRef = React.useRef<HTMLDivElement>(null);\n const isHoveringRef = React.useRef(false);\n\n const resolvedGranularity: TranscriptGranularity =\n granularity ??\n (transcript.segments && transcript.segments.length > 0\n ? 'segment'\n : 'word');\n\n const segmentRows = React.useMemo(\n () =>\n resolvedGranularity === 'segment'\n ? buildSegmentRows(transcript.segments ?? [], mergeSameSpeaker)\n : [],\n [resolvedGranularity, transcript.segments, mergeSameSpeaker]\n );\n\n const activeIndex =\n resolvedGranularity === 'segment'\n ? findActiveIndex(segmentRows, currentTimeMs)\n : findActiveIndex(transcript.words, currentTimeMs);\n\n // Auto-scroll the active item into view, unless the user is hovering\n React.useEffect(() => {\n if (!followPlayback || activeIndex < 0 || isHoveringRef.current) return;\n const el = contentRef.current?.querySelector(\n `[data-transcript-index=\"${activeIndex}\"]`\n );\n el?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }, [followPlayback, activeIndex]);\n\n const seekTo = (timeMs: number) => onSeek?.(timeMs);\n\n // ------------------------------------------------------------------\n // Word mode rendering\n // ------------------------------------------------------------------\n const renderWord = (word: TranscriptWord, index: number) => {\n const isActive = index === activeIndex;\n const wordType = word.wordType ?? 'word';\n const durationSec = ((word.endMs - word.startMs) / 1000).toFixed(1);\n\n if (wordType === 'silence-newline') {\n // Longer pause: force a line break (block element inside inline flow)\n return (\n <span\n key={index}\n data-transcript-index={index}\n role=\"button\"\n tabIndex={0}\n aria-current={isActive ? 'true' : undefined}\n aria-label={`Silence, ${durationSec} seconds`}\n className={`hover:bg-muted focus-visible:ring-ring block h-3 cursor-pointer rounded transition-colors focus-visible:ring-2 focus-visible:outline-none ${\n isActive ? 'bg-primary-500/20' : ''\n }`}\n {...activationProps(() => seekTo(word.startMs))}\n />\n );\n }\n\n if (wordType === 'silence') {\n // Short gap: subtle interpunct\n return (\n <span\n key={index}\n data-transcript-index={index}\n role=\"button\"\n tabIndex={0}\n aria-current={isActive ? 'true' : undefined}\n aria-label={`Silence, ${durationSec} seconds`}\n className={`text-muted-foreground/60 hover:bg-muted focus-visible:ring-ring cursor-pointer rounded px-0.5 transition-colors focus-visible:ring-2 focus-visible:outline-none ${\n isActive ? 'bg-primary-500/20' : ''\n }`}\n {...activationProps(() => seekTo(word.startMs))}\n >\n {'\\u00B7 '}\n </span>\n );\n }\n\n return (\n <span\n key={index}\n data-transcript-index={index}\n role=\"button\"\n tabIndex={0}\n aria-current={isActive ? 'true' : undefined}\n className={`hover:bg-muted focus-visible:ring-ring cursor-pointer rounded px-0.5 transition-colors focus-visible:ring-2 focus-visible:outline-none ${\n isActive ? 'bg-primary-500/20 text-foreground' : ''\n }`}\n {...activationProps(() => seekTo(word.startMs))}\n >\n {word.text}{' '}\n </span>\n );\n };\n\n // ------------------------------------------------------------------\n // Segment mode rendering (osheet artifact-viewer row parity)\n // ------------------------------------------------------------------\n const renderSegmentRow = (row: SegmentRow, index: number) => {\n const isActive = index === activeIndex;\n const speaker = resolveSpeakerLabel(\n row.speakerId,\n speakerLabels,\n transcript\n );\n\n return (\n <div key={index} role=\"listitem\">\n <button\n type=\"button\"\n data-transcript-index={index}\n aria-current={isActive ? 'true' : undefined}\n className={`hover:bg-muted focus-visible:ring-ring flex w-full cursor-pointer gap-3 rounded px-2 py-1 text-left text-sm transition-colors focus-visible:ring-2 focus-visible:outline-none ${\n isActive ? 'bg-primary-500/20' : ''\n }`}\n {...activationProps(() => seekTo(row.startMs))}\n >\n {showTimestamps && (\n <span className=\"text-muted-foreground w-12 shrink-0 font-mono\">\n {formatTimestampMs(row.startMs)}\n </span>\n )}\n {speaker && (\n <span className=\"text-primary-900 w-24 shrink-0 font-semibold\">\n {speaker}:\n </span>\n )}\n <span className=\"text-foreground\">{row.text}</span>\n </button>\n </div>\n );\n };\n\n return (\n <div ref={ref} className={transcriptViewVariants({ variant, className })}>\n {actions && (\n <div className=\"border-border mb-2 flex items-center justify-end gap-2 border-b pb-2\">\n {actions}\n </div>\n )}\n <div\n ref={contentRef}\n aria-label={ariaLabel}\n onMouseEnter={() => {\n isHoveringRef.current = true;\n }}\n onMouseLeave={() => {\n isHoveringRef.current = false;\n }}\n {...(resolvedGranularity === 'segment'\n ? { role: 'list', className: 'space-y-2' }\n : { className: 'text-sm leading-relaxed' })}\n >\n {resolvedGranularity === 'segment'\n ? segmentRows.map(renderSegmentRow)\n : transcript.words.map(renderWord)}\n </div>\n </div>\n );\n }\n);\n\nTranscriptView.displayName = 'TranscriptView';\n"]}
|