@mieweb/ui 0.6.1 → 0.7.0-dev.179
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 +2022 -249
- package/dist/index.d.ts +2022 -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 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-UTYUT5YY.cjs","sourcesContent":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/components/AI/HeyOzwell/WakeWord/lib/opfs.js
|
|
4
|
+
var DIR = "ozwell-models";
|
|
5
|
+
function fileNameFor(url) {
|
|
6
|
+
const base = (url.split("?")[0].split("/").pop() || "model").replace(/[^a-zA-Z0-9._-]/g, "_");
|
|
7
|
+
let h = 0;
|
|
8
|
+
for (let i = 0; i < url.length; i++) h = Math.imul(h, 31) + url.charCodeAt(i) | 0;
|
|
9
|
+
return `${(h >>> 0).toString(36)}-${base}`;
|
|
10
|
+
}
|
|
11
|
+
function opfsAvailable() {
|
|
12
|
+
return typeof navigator !== "undefined" && navigator.storage && typeof navigator.storage.getDirectory === "function";
|
|
13
|
+
}
|
|
14
|
+
async function modelsDir() {
|
|
15
|
+
const root = await navigator.storage.getDirectory();
|
|
16
|
+
return root.getDirectoryHandle(DIR, { create: true });
|
|
17
|
+
}
|
|
18
|
+
async function fetchBytes(url) {
|
|
19
|
+
const resp = await fetch(url);
|
|
20
|
+
if (!resp || !resp.ok) throw new Error(`[opfs] fetch ${url} \u2192 ${resp ? resp.status : "no response"}`);
|
|
21
|
+
return resp.arrayBuffer();
|
|
22
|
+
}
|
|
23
|
+
async function getModelBytes(url) {
|
|
24
|
+
if (!opfsAvailable()) return new Uint8Array(await fetchBytes(url));
|
|
25
|
+
const name = fileNameFor(url);
|
|
26
|
+
try {
|
|
27
|
+
const dir = await modelsDir();
|
|
28
|
+
try {
|
|
29
|
+
const fh = await dir.getFileHandle(name);
|
|
30
|
+
const file = await fh.getFile();
|
|
31
|
+
return new Uint8Array(await file.arrayBuffer());
|
|
32
|
+
} catch {
|
|
33
|
+
}
|
|
34
|
+
const buf = await fetchBytes(url);
|
|
35
|
+
try {
|
|
36
|
+
const fh = await dir.getFileHandle(name, { create: true });
|
|
37
|
+
const writable = await fh.createWritable();
|
|
38
|
+
await writable.write(buf);
|
|
39
|
+
await writable.close();
|
|
40
|
+
console.log(`[opfs] stored ${name} (${(buf.byteLength / 1e6).toFixed(1)} MB)`);
|
|
41
|
+
} catch (e) {
|
|
42
|
+
console.warn("[opfs] store failed for", name, e);
|
|
43
|
+
}
|
|
44
|
+
return new Uint8Array(buf);
|
|
45
|
+
} catch (e) {
|
|
46
|
+
console.warn("[opfs] unavailable, falling back to network for", url, e);
|
|
47
|
+
return new Uint8Array(await fetchBytes(url));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
exports.getModelBytes = getModelBytes;
|
|
52
|
+
//# sourceMappingURL=chunk-UVSODK6V.cjs.map
|
|
53
|
+
//# sourceMappingURL=chunk-UVSODK6V.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AI/HeyOzwell/WakeWord/lib/opfs.js"],"names":[],"mappings":"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","file":"chunk-UVSODK6V.cjs","sourcesContent":["/** @module opfs\n *\n * OPFS-backed cache for the wake-word ONNX model files.\n *\n * Per the storage architecture (horner's breakdown): MODEL FILES live in OPFS — app-private, offline,\n * versioned — not the service-worker Cache API (which is for runtime/app assets). We control these models'\n * fetch (onnxruntime-web accepts raw bytes), so OPFS slots cleanly in front of the network:\n *\n * serve from OPFS if present → else fetch once, store in OPFS, return the bytes.\n *\n * The file key is derived from the full URL, so a hosting move (different base URL) yields a new key and a\n * fresh download — implicit versioning. Falls back to a plain network fetch if OPFS is unavailable.\n */\n\nconst DIR = 'ozwell-models';\n\n// Stable, filesystem-safe name from a URL: basename (readable) + a short hash of the FULL url (so two hosts\n// sharing a basename don't collide, and a URL change busts the cache).\nfunction fileNameFor(url) {\n const base = (url.split('?')[0].split('/').pop() || 'model').replace(/[^a-zA-Z0-9._-]/g, '_');\n let h = 0;\n for (let i = 0; i < url.length; i++) h = (Math.imul(h, 31) + url.charCodeAt(i)) | 0;\n return `${(h >>> 0).toString(36)}-${base}`;\n}\n\nfunction opfsAvailable() {\n return typeof navigator !== 'undefined' && navigator.storage && typeof navigator.storage.getDirectory === 'function';\n}\n\nasync function modelsDir() {\n const root = await navigator.storage.getDirectory();\n return root.getDirectoryHandle(DIR, { create: true });\n}\n\nasync function fetchBytes(url) {\n const resp = await fetch(url);\n if (!resp || !resp.ok) throw new Error(`[opfs] fetch ${url} → ${resp ? resp.status : 'no response'}`);\n return resp.arrayBuffer();\n}\n\n/**\n * Return the model bytes (Uint8Array). OPFS-first; on a miss, fetch once and persist. Any OPFS failure\n * falls back to the network so the detector still loads.\n * @param {string} url - The model URL.\n * @returns {Promise<Uint8Array>}\n */\nexport async function getModelBytes(url) {\n if (!opfsAvailable()) return new Uint8Array(await fetchBytes(url));\n\n const name = fileNameFor(url);\n try {\n const dir = await modelsDir();\n\n // hit?\n try {\n const fh = await dir.getFileHandle(name); // rejects if absent\n const file = await fh.getFile();\n return new Uint8Array(await file.arrayBuffer());\n } catch {\n // miss → fetch + store\n }\n\n const buf = await fetchBytes(url);\n try {\n const fh = await dir.getFileHandle(name, { create: true });\n const writable = await fh.createWritable();\n await writable.write(buf);\n await writable.close();\n console.log(`[opfs] stored ${name} (${(buf.byteLength / 1e6).toFixed(1)} MB)`);\n } catch (e) {\n console.warn('[opfs] store failed for', name, e); // serve the bytes anyway\n }\n return new Uint8Array(buf);\n } catch (e) {\n console.warn('[opfs] unavailable, falling back to network for', url, e);\n return new Uint8Array(await fetchBytes(url));\n }\n}\n\n/** Remove all cached model files (e.g. to force a re-download). Best-effort. */\nexport async function clearModelCache() {\n if (!opfsAvailable()) return;\n try {\n const root = await navigator.storage.getDirectory();\n await root.removeEntry(DIR, { recursive: true });\n } catch (e) {\n console.warn('[opfs] clear failed', e);\n }\n}\n"]}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkCKD554XR_cjs = require('./chunk-CKD554XR.cjs');
|
|
4
|
+
var chunkA2QVQF54_cjs = require('./chunk-A2QVQF54.cjs');
|
|
5
|
+
var lucideReact = require('lucide-react');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
var papaPromise = null;
|
|
10
|
+
function loadPapa() {
|
|
11
|
+
if (!papaPromise) {
|
|
12
|
+
papaPromise = import(
|
|
13
|
+
/* @vite-ignore */
|
|
14
|
+
'papaparse'
|
|
15
|
+
).then((mod) => {
|
|
16
|
+
const api = mod.default ?? mod;
|
|
17
|
+
if (!api?.parse) throw new Error("papaparse export not found");
|
|
18
|
+
return api;
|
|
19
|
+
}).catch((err) => {
|
|
20
|
+
papaPromise = null;
|
|
21
|
+
throw err;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return papaPromise;
|
|
25
|
+
}
|
|
26
|
+
var CsvBlock = ({ code, id }) => {
|
|
27
|
+
const [sortConfig, setSortConfig] = react.useState(null);
|
|
28
|
+
const [papa, setPapa] = react.useState(null);
|
|
29
|
+
const [loadError, setLoadError] = react.useState(null);
|
|
30
|
+
react.useEffect(() => {
|
|
31
|
+
let cancelled = false;
|
|
32
|
+
loadPapa().then((api) => {
|
|
33
|
+
if (!cancelled) setPapa(api);
|
|
34
|
+
}).catch(() => {
|
|
35
|
+
if (!cancelled)
|
|
36
|
+
setLoadError(
|
|
37
|
+
"CSV preview requires the `papaparse` package. Install it with `npm install papaparse`."
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
return () => {
|
|
41
|
+
cancelled = true;
|
|
42
|
+
};
|
|
43
|
+
}, []);
|
|
44
|
+
const parsed = react.useMemo(() => {
|
|
45
|
+
if (!papa) return { headers: [], rows: [], error: null };
|
|
46
|
+
try {
|
|
47
|
+
const result = papa.parse(code, {
|
|
48
|
+
header: true,
|
|
49
|
+
dynamicTyping: true,
|
|
50
|
+
skipEmptyLines: "greedy"
|
|
51
|
+
});
|
|
52
|
+
if (result.errors?.length) {
|
|
53
|
+
return {
|
|
54
|
+
headers: result.meta.fields ?? [],
|
|
55
|
+
rows: result.data,
|
|
56
|
+
error: result.errors.map((e) => e.message).join("; ")
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
headers: result.meta.fields ?? [],
|
|
61
|
+
rows: result.data,
|
|
62
|
+
error: null
|
|
63
|
+
};
|
|
64
|
+
} catch (err) {
|
|
65
|
+
return { headers: [], rows: [], error: err.message };
|
|
66
|
+
}
|
|
67
|
+
}, [code, papa]);
|
|
68
|
+
const sortedRows = react.useMemo(() => {
|
|
69
|
+
if (!sortConfig || parsed.error) return parsed.rows;
|
|
70
|
+
return [...parsed.rows].sort((a, b) => {
|
|
71
|
+
const aVal = a[sortConfig.column];
|
|
72
|
+
const bVal = b[sortConfig.column];
|
|
73
|
+
if (aVal == null && bVal == null) return 0;
|
|
74
|
+
if (aVal == null) return 1;
|
|
75
|
+
if (bVal == null) return -1;
|
|
76
|
+
const cmp = typeof aVal === "number" && typeof bVal === "number" ? aVal - bVal : String(aVal).localeCompare(String(bVal));
|
|
77
|
+
return sortConfig.direction === "asc" ? cmp : -cmp;
|
|
78
|
+
});
|
|
79
|
+
}, [parsed.rows, sortConfig, parsed.error]);
|
|
80
|
+
const handleSort = react.useCallback((column) => {
|
|
81
|
+
setSortConfig((prev) => {
|
|
82
|
+
if (prev?.column === column) {
|
|
83
|
+
return prev.direction === "asc" ? { column, direction: "desc" } : null;
|
|
84
|
+
}
|
|
85
|
+
return { column, direction: "asc" };
|
|
86
|
+
});
|
|
87
|
+
}, []);
|
|
88
|
+
const handleExportCsv = react.useCallback(() => {
|
|
89
|
+
if (!papa) return;
|
|
90
|
+
const csvContent = papa.unparse(sortedRows);
|
|
91
|
+
const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" });
|
|
92
|
+
const url = URL.createObjectURL(blob);
|
|
93
|
+
const link = document.createElement("a");
|
|
94
|
+
link.href = url;
|
|
95
|
+
link.download = `data-${id}.csv`;
|
|
96
|
+
document.body.appendChild(link);
|
|
97
|
+
link.click();
|
|
98
|
+
document.body.removeChild(link);
|
|
99
|
+
setTimeout(() => URL.revokeObjectURL(url), 100);
|
|
100
|
+
}, [sortedRows, id, papa]);
|
|
101
|
+
if (loadError) {
|
|
102
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkCKD554XR_cjs.FenceBlock, { code, language: "csv", error: loadError, children: /* @__PURE__ */ jsxRuntime.jsx("div", {}) });
|
|
103
|
+
}
|
|
104
|
+
if (!papa) {
|
|
105
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkCKD554XR_cjs.FenceBlock, { code, language: "csv", supportsRawView: true, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center p-6 text-sm text-neutral-500", children: "Loading CSV parser\u2026" }) });
|
|
106
|
+
}
|
|
107
|
+
if (parsed.error) {
|
|
108
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkCKD554XR_cjs.FenceBlock, { code, language: "csv", error: parsed.error, children: /* @__PURE__ */ jsxRuntime.jsx("div", {}) });
|
|
109
|
+
}
|
|
110
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkCKD554XR_cjs.FenceBlock, { code, language: "csv", supportsRawView: true, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
111
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-b border-neutral-200 px-3 py-1.5 dark:border-neutral-700", children: [
|
|
112
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-neutral-500 dark:text-neutral-400", children: [
|
|
113
|
+
sortedRows.length,
|
|
114
|
+
" row",
|
|
115
|
+
sortedRows.length !== 1 ? "s" : "",
|
|
116
|
+
" \xD7",
|
|
117
|
+
" ",
|
|
118
|
+
parsed.headers.length,
|
|
119
|
+
" column",
|
|
120
|
+
parsed.headers.length !== 1 ? "s" : ""
|
|
121
|
+
] }),
|
|
122
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
123
|
+
chunkA2QVQF54_cjs.Button,
|
|
124
|
+
{
|
|
125
|
+
variant: "ghost",
|
|
126
|
+
size: "sm",
|
|
127
|
+
onClick: handleExportCsv,
|
|
128
|
+
"aria-label": "Export CSV",
|
|
129
|
+
className: "h-7 gap-1 px-2 text-xs",
|
|
130
|
+
children: [
|
|
131
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "h-3 w-3" }),
|
|
132
|
+
"Export"
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
] }),
|
|
137
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-96 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "min-w-full text-sm", children: [
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { className: "sticky top-0 bg-neutral-100 dark:bg-neutral-800", children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: parsed.headers.map((header) => {
|
|
139
|
+
const isSorted = sortConfig?.column === header;
|
|
140
|
+
const ariaSort = isSorted ? sortConfig.direction === "asc" ? "ascending" : "descending" : "none";
|
|
141
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
142
|
+
"th",
|
|
143
|
+
{
|
|
144
|
+
scope: "col",
|
|
145
|
+
"aria-sort": ariaSort,
|
|
146
|
+
className: "px-3 py-2 text-left text-xs font-medium whitespace-nowrap text-neutral-600 dark:text-neutral-400",
|
|
147
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
148
|
+
"button",
|
|
149
|
+
{
|
|
150
|
+
type: "button",
|
|
151
|
+
onClick: () => handleSort(header),
|
|
152
|
+
className: "flex w-full cursor-pointer items-center gap-1 text-left font-medium select-none hover:text-neutral-900 dark:hover:text-neutral-200",
|
|
153
|
+
children: [
|
|
154
|
+
header,
|
|
155
|
+
isSorted && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: sortConfig.direction === "asc" ? "\u2191" : "\u2193" })
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
},
|
|
160
|
+
header
|
|
161
|
+
);
|
|
162
|
+
}) }) }),
|
|
163
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-neutral-200 dark:divide-neutral-700", children: sortedRows.map((row, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
164
|
+
"tr",
|
|
165
|
+
{
|
|
166
|
+
className: "hover:bg-neutral-50 dark:hover:bg-neutral-800/50",
|
|
167
|
+
children: parsed.headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
168
|
+
"td",
|
|
169
|
+
{
|
|
170
|
+
className: "px-3 py-1.5 whitespace-nowrap text-neutral-700 dark:text-neutral-300",
|
|
171
|
+
children: row[header] != null ? String(row[header]) : ""
|
|
172
|
+
},
|
|
173
|
+
header
|
|
174
|
+
))
|
|
175
|
+
},
|
|
176
|
+
i
|
|
177
|
+
)) })
|
|
178
|
+
] }) })
|
|
179
|
+
] }) });
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
exports.CsvBlock = CsvBlock;
|
|
183
|
+
//# sourceMappingURL=chunk-V25Z5GR6.cjs.map
|
|
184
|
+
//# sourceMappingURL=chunk-V25Z5GR6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Markdown/CsvBlock.tsx"],"names":["useState","useEffect","useMemo","useCallback","jsx","FenceBlock","jsxs","Button","Download"],"mappings":"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","file":"chunk-V25Z5GR6.cjs","sourcesContent":["/** CSV data rendered as a sortable table. Requires `papaparse`. */\nimport { Download } from 'lucide-react';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Button } from '../Button';\nimport { FenceBlock } from './FenceBlock';\n\ninterface CsvBlockProps {\n code: string;\n id: string;\n}\n\ninterface SortConfig {\n column: string;\n direction: 'asc' | 'desc';\n}\n\ntype CsvRow = Record<string, unknown>;\n// Minimal surface of papaparse we actually use, avoiding overload conflicts.\ninterface PapaApi {\n parse(\n input: string,\n config?: Record<string, unknown>\n ): {\n meta: { fields?: string[] };\n data: CsvRow[];\n errors: Array<{ message: string }>;\n };\n unparse(data: unknown): string;\n}\n\nlet papaPromise: Promise<PapaApi> | null = null;\nfunction loadPapa() {\n if (!papaPromise) {\n papaPromise = import(/* @vite-ignore */ 'papaparse')\n .then((mod: { default?: PapaApi } & Partial<PapaApi>) => {\n const api: PapaApi = (mod.default ?? mod) as PapaApi;\n if (!api?.parse) throw new Error('papaparse export not found');\n return api;\n })\n .catch((err) => {\n papaPromise = null;\n throw err as Error;\n });\n }\n return papaPromise;\n}\n\ninterface ParsedCsv {\n headers: string[];\n rows: CsvRow[];\n error: string | null;\n}\n\nexport const CsvBlock: React.FC<CsvBlockProps> = ({ code, id }) => {\n const [sortConfig, setSortConfig] = useState<SortConfig | null>(null);\n const [papa, setPapa] = useState<PapaApi | null>(null);\n const [loadError, setLoadError] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n loadPapa()\n .then((api) => {\n if (!cancelled) setPapa(api);\n })\n .catch(() => {\n if (!cancelled)\n setLoadError(\n 'CSV preview requires the `papaparse` package. Install it with `npm install papaparse`.'\n );\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n const parsed = useMemo<ParsedCsv>(() => {\n if (!papa) return { headers: [], rows: [], error: null };\n try {\n const result = papa.parse(code, {\n header: true,\n dynamicTyping: true,\n skipEmptyLines: 'greedy',\n });\n if (result.errors?.length) {\n return {\n headers: result.meta.fields ?? [],\n rows: result.data,\n error: result.errors.map((e) => e.message).join('; '),\n };\n }\n return {\n headers: result.meta.fields ?? [],\n rows: result.data,\n error: null,\n };\n } catch (err) {\n return { headers: [], rows: [], error: (err as Error).message };\n }\n }, [code, papa]);\n\n const sortedRows = useMemo(() => {\n if (!sortConfig || parsed.error) return parsed.rows;\n return [...parsed.rows].sort((a, b) => {\n const aVal = a[sortConfig.column];\n const bVal = b[sortConfig.column];\n if (aVal == null && bVal == null) return 0;\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n const cmp =\n typeof aVal === 'number' && typeof bVal === 'number'\n ? aVal - bVal\n : String(aVal).localeCompare(String(bVal));\n return sortConfig.direction === 'asc' ? cmp : -cmp;\n });\n }, [parsed.rows, sortConfig, parsed.error]);\n\n const handleSort = useCallback((column: string) => {\n setSortConfig((prev) => {\n if (prev?.column === column) {\n return prev.direction === 'asc' ? { column, direction: 'desc' } : null;\n }\n return { column, direction: 'asc' };\n });\n }, []);\n\n const handleExportCsv = useCallback(() => {\n if (!papa) return;\n const csvContent = papa.unparse(sortedRows);\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `data-${id}.csv`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setTimeout(() => URL.revokeObjectURL(url), 100);\n }, [sortedRows, id, papa]);\n\n if (loadError) {\n return (\n <FenceBlock code={code} language=\"csv\" error={loadError}>\n <div />\n </FenceBlock>\n );\n }\n\n if (!papa) {\n return (\n <FenceBlock code={code} language=\"csv\" supportsRawView>\n <div className=\"flex items-center justify-center p-6 text-sm text-neutral-500\">\n Loading CSV parser…\n </div>\n </FenceBlock>\n );\n }\n\n if (parsed.error) {\n return (\n <FenceBlock code={code} language=\"csv\" error={parsed.error}>\n <div />\n </FenceBlock>\n );\n }\n\n return (\n <FenceBlock code={code} language=\"csv\" supportsRawView>\n <div className=\"relative\">\n <div className=\"flex items-center justify-between border-b border-neutral-200 px-3 py-1.5 dark:border-neutral-700\">\n <span className=\"text-xs text-neutral-500 dark:text-neutral-400\">\n {sortedRows.length} row{sortedRows.length !== 1 ? 's' : ''} ×{' '}\n {parsed.headers.length} column\n {parsed.headers.length !== 1 ? 's' : ''}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleExportCsv}\n aria-label=\"Export CSV\"\n className=\"h-7 gap-1 px-2 text-xs\"\n >\n <Download className=\"h-3 w-3\" />\n Export\n </Button>\n </div>\n\n <div className=\"max-h-96 overflow-auto\">\n <table className=\"min-w-full text-sm\">\n <thead className=\"sticky top-0 bg-neutral-100 dark:bg-neutral-800\">\n <tr>\n {parsed.headers.map((header) => {\n const isSorted = sortConfig?.column === header;\n const ariaSort = isSorted\n ? sortConfig.direction === 'asc'\n ? 'ascending'\n : 'descending'\n : 'none';\n return (\n <th\n key={header}\n scope=\"col\"\n aria-sort={ariaSort}\n className=\"px-3 py-2 text-left text-xs font-medium whitespace-nowrap text-neutral-600 dark:text-neutral-400\"\n >\n <button\n type=\"button\"\n onClick={() => handleSort(header)}\n className=\"flex w-full cursor-pointer items-center gap-1 text-left font-medium select-none hover:text-neutral-900 dark:hover:text-neutral-200\"\n >\n {header}\n {isSorted && (\n <span aria-hidden=\"true\">\n {sortConfig.direction === 'asc' ? '↑' : '↓'}\n </span>\n )}\n </button>\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-neutral-200 dark:divide-neutral-700\">\n {sortedRows.map((row, i) => (\n <tr\n key={i}\n className=\"hover:bg-neutral-50 dark:hover:bg-neutral-800/50\"\n >\n {parsed.headers.map((header) => (\n <td\n key={header}\n className=\"px-3 py-1.5 whitespace-nowrap text-neutral-700 dark:text-neutral-300\"\n >\n {row[header] != null ? String(row[header]) : ''}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </FenceBlock>\n );\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-VBWRH4UW.cjs"}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var datavisAce = require('datavis-ace');
|
|
5
|
+
var datavis = require('@mieweb/datavis');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
// src/components/DataVisNITRO/DataVisNITRO.tsx
|
|
9
|
+
var DataVisNitroContext = react.createContext(null);
|
|
10
|
+
function isObject(value) {
|
|
11
|
+
return typeof value === "object" && value !== null;
|
|
12
|
+
}
|
|
13
|
+
function normalizeTypeInfo(typeInfo) {
|
|
14
|
+
if (Array.isArray(typeInfo)) {
|
|
15
|
+
return Object.fromEntries(
|
|
16
|
+
typeInfo.filter(isObject).map((entry) => [entry.field, entry])
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
if (!isObject(typeInfo)) {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
const maybeOrdMap = typeInfo;
|
|
23
|
+
if (typeof maybeOrdMap.keys === "function" && typeof maybeOrdMap.get === "function") {
|
|
24
|
+
return Object.fromEntries(
|
|
25
|
+
maybeOrdMap.keys().map((field) => [field, maybeOrdMap.get?.(field) ?? {}])
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
return Object.fromEntries(
|
|
29
|
+
Object.entries(typeInfo).filter(([, value]) => isObject(value))
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
function normalizeFieldType(type) {
|
|
33
|
+
if (!type) return void 0;
|
|
34
|
+
if (type === "integer") return "number";
|
|
35
|
+
if (type === "boolean") return "string";
|
|
36
|
+
return type;
|
|
37
|
+
}
|
|
38
|
+
function buildColumnFromField(field, typeInfo) {
|
|
39
|
+
const info = typeInfo[field];
|
|
40
|
+
const normalizedType = normalizeFieldType(info?.type);
|
|
41
|
+
return {
|
|
42
|
+
field,
|
|
43
|
+
header: info?.displayText ?? field,
|
|
44
|
+
sortable: true,
|
|
45
|
+
filterable: true,
|
|
46
|
+
resizable: true,
|
|
47
|
+
reorderable: true,
|
|
48
|
+
...normalizedType ? {
|
|
49
|
+
typeInfo: {
|
|
50
|
+
type: normalizedType,
|
|
51
|
+
...info?.format !== void 0 ? { format: info.format } : {},
|
|
52
|
+
...info?.internalType !== void 0 ? { internalType: info.internalType } : {}
|
|
53
|
+
}
|
|
54
|
+
} : {}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function mergeColumnWithTypeInfo(column, typeInfo) {
|
|
58
|
+
const fallbackColumn = buildColumnFromField(column.field, typeInfo);
|
|
59
|
+
return {
|
|
60
|
+
...fallbackColumn,
|
|
61
|
+
...column,
|
|
62
|
+
header: column.header ?? fallbackColumn.header,
|
|
63
|
+
typeInfo: column.typeInfo ?? fallbackColumn.typeInfo
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function buildResolvedColumns(columns, fallbackFields, typeInfo) {
|
|
67
|
+
if (columns && columns.length > 0) {
|
|
68
|
+
return columns.map((column) => {
|
|
69
|
+
if (typeof column === "string") {
|
|
70
|
+
return buildColumnFromField(column, typeInfo);
|
|
71
|
+
}
|
|
72
|
+
return mergeColumnWithTypeInfo(column, typeInfo);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return fallbackFields.map((field) => buildColumnFromField(field, typeInfo));
|
|
76
|
+
}
|
|
77
|
+
function buildFallbackFieldOrder(typeInfo, data) {
|
|
78
|
+
const rows = Array.isArray(data) ? data.filter((row) => isObject(row)) : null;
|
|
79
|
+
const normalizedEntries = Object.fromEntries(
|
|
80
|
+
Object.entries(typeInfo).map(([field, info]) => [
|
|
81
|
+
field,
|
|
82
|
+
{
|
|
83
|
+
type: normalizeFieldType(info.type) ?? "string",
|
|
84
|
+
...info.displayText !== void 0 ? { displayText: info.displayText } : {}
|
|
85
|
+
}
|
|
86
|
+
])
|
|
87
|
+
);
|
|
88
|
+
return datavis.determineColumns(null, normalizedEntries, rows);
|
|
89
|
+
}
|
|
90
|
+
function buildControlFields(columns) {
|
|
91
|
+
return columns.map((column) => ({
|
|
92
|
+
field: column.field,
|
|
93
|
+
displayName: column.header,
|
|
94
|
+
type: column.typeInfo?.type
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
function buildAggregateFields(columns) {
|
|
98
|
+
return columns.map((column) => ({
|
|
99
|
+
field: column.field,
|
|
100
|
+
displayName: column.header
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
function mergeTableDef(tableDef, features) {
|
|
104
|
+
if (!tableDef && !features) {
|
|
105
|
+
return void 0;
|
|
106
|
+
}
|
|
107
|
+
const { rowMode, ...featureFlags } = features ?? {};
|
|
108
|
+
const mergedFeatures = Object.keys(featureFlags).length > 0 ? {
|
|
109
|
+
...tableDef?.features ?? {},
|
|
110
|
+
...featureFlags
|
|
111
|
+
} : void 0;
|
|
112
|
+
return {
|
|
113
|
+
...tableDef,
|
|
114
|
+
...rowMode !== void 0 ? { rowMode } : {},
|
|
115
|
+
...mergedFeatures ? { features: mergedFeatures } : {}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function DataVisNitroSource(props) {
|
|
119
|
+
const { type, children } = props;
|
|
120
|
+
const url = props.type === "http" ? props.url : void 0;
|
|
121
|
+
const varName = props.type === "local" ? props.varName : void 0;
|
|
122
|
+
const viewRef = react.useRef(null);
|
|
123
|
+
if (viewRef.current === null || viewRef.current._dvType !== type || viewRef.current._dvUrl !== url || viewRef.current._dvVarName !== varName) {
|
|
124
|
+
const source = props.type === "http" ? new datavisAce.Source({ type, url: props.url }) : new datavisAce.Source(
|
|
125
|
+
props.type === "local" && props.varName ? { type, varName: props.varName } : { type }
|
|
126
|
+
);
|
|
127
|
+
viewRef.current = Object.assign(
|
|
128
|
+
new datavisAce.ComputedView(source),
|
|
129
|
+
{ _dvType: type, _dvUrl: url, _dvVarName: varName }
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DataVisNitroContext.Provider, { value: viewRef.current, children });
|
|
133
|
+
}
|
|
134
|
+
function DataVisNitroGridInner({
|
|
135
|
+
computedView,
|
|
136
|
+
columns,
|
|
137
|
+
allColumns,
|
|
138
|
+
features,
|
|
139
|
+
filterColumns,
|
|
140
|
+
controlFields,
|
|
141
|
+
aggregateFields,
|
|
142
|
+
aggregateFunctions,
|
|
143
|
+
groupFunctionDefs,
|
|
144
|
+
tableDef,
|
|
145
|
+
formatCell,
|
|
146
|
+
onColumnReorder,
|
|
147
|
+
onColumnResize,
|
|
148
|
+
onHeaderContextMenu,
|
|
149
|
+
onRowClick,
|
|
150
|
+
onRowDoubleClick,
|
|
151
|
+
onSelectionChange,
|
|
152
|
+
style,
|
|
153
|
+
trans,
|
|
154
|
+
...dataGridProps
|
|
155
|
+
}) {
|
|
156
|
+
const viewState = datavis.useView(computedView, false);
|
|
157
|
+
const normalizedTypeInfo = react.useMemo(
|
|
158
|
+
() => normalizeTypeInfo(viewState.typeInfo ?? computedView?.typeInfo ?? null),
|
|
159
|
+
[computedView, viewState.typeInfo]
|
|
160
|
+
);
|
|
161
|
+
const fallbackFields = react.useMemo(
|
|
162
|
+
() => buildFallbackFieldOrder(normalizedTypeInfo, viewState.data?.data ?? null),
|
|
163
|
+
[normalizedTypeInfo, viewState.data?.data]
|
|
164
|
+
);
|
|
165
|
+
const resolvedAllColumns = react.useMemo(() => {
|
|
166
|
+
if (allColumns && allColumns.length > 0) {
|
|
167
|
+
return allColumns.map(
|
|
168
|
+
(column) => mergeColumnWithTypeInfo(column, normalizedTypeInfo)
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return buildResolvedColumns(columns, fallbackFields, normalizedTypeInfo);
|
|
172
|
+
}, [allColumns, columns, fallbackFields, normalizedTypeInfo]);
|
|
173
|
+
const resolvedColumns = react.useMemo(() => {
|
|
174
|
+
if (columns && columns.length > 0) {
|
|
175
|
+
return buildResolvedColumns(
|
|
176
|
+
columns,
|
|
177
|
+
fallbackFields,
|
|
178
|
+
normalizedTypeInfo
|
|
179
|
+
).filter((column) => column.visible !== false);
|
|
180
|
+
}
|
|
181
|
+
return resolvedAllColumns.filter((column) => column.visible !== false);
|
|
182
|
+
}, [columns, fallbackFields, normalizedTypeInfo, resolvedAllColumns]);
|
|
183
|
+
const effectiveAggregateFunctions = react.useMemo(
|
|
184
|
+
() => aggregateFunctions ?? datavis.buildAggregateFunctions(),
|
|
185
|
+
[aggregateFunctions]
|
|
186
|
+
);
|
|
187
|
+
const effectiveGroupFunctionDefs = react.useMemo(
|
|
188
|
+
() => groupFunctionDefs ?? datavis.getBuiltinGroupFunctions(trans),
|
|
189
|
+
[groupFunctionDefs, trans]
|
|
190
|
+
);
|
|
191
|
+
const effectiveTableDef = react.useMemo(
|
|
192
|
+
() => mergeTableDef(tableDef, features),
|
|
193
|
+
[tableDef, features]
|
|
194
|
+
);
|
|
195
|
+
const aggFnLabels = react.useMemo(
|
|
196
|
+
() => Object.fromEntries(
|
|
197
|
+
effectiveAggregateFunctions.map((fn) => [fn.name, fn.label])
|
|
198
|
+
),
|
|
199
|
+
[effectiveAggregateFunctions]
|
|
200
|
+
);
|
|
201
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { style, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
202
|
+
datavis.DataGrid,
|
|
203
|
+
{
|
|
204
|
+
...dataGridProps,
|
|
205
|
+
view: computedView,
|
|
206
|
+
tableDef: effectiveTableDef,
|
|
207
|
+
allColumns: resolvedAllColumns,
|
|
208
|
+
filterColumns: filterColumns ?? [],
|
|
209
|
+
controlFields: controlFields ?? buildControlFields(resolvedAllColumns),
|
|
210
|
+
aggregateFields: aggregateFields ?? buildAggregateFields(resolvedAllColumns),
|
|
211
|
+
aggregateFunctions: effectiveAggregateFunctions,
|
|
212
|
+
groupFunctionDefs: effectiveGroupFunctionDefs,
|
|
213
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
214
|
+
datavis.TableRenderer,
|
|
215
|
+
{
|
|
216
|
+
viewData: viewState.data,
|
|
217
|
+
columns: resolvedColumns,
|
|
218
|
+
features: effectiveTableDef?.features ?? features,
|
|
219
|
+
totalRows: viewState.totalRowCount ?? viewState.rowCount,
|
|
220
|
+
loading: viewState.loading || !viewState.ready,
|
|
221
|
+
formatCell,
|
|
222
|
+
aggFnLabels,
|
|
223
|
+
onColumnReorder,
|
|
224
|
+
onColumnResize,
|
|
225
|
+
onHeaderContextMenu,
|
|
226
|
+
onRowClick,
|
|
227
|
+
onRowDoubleClick,
|
|
228
|
+
onSelectionChange
|
|
229
|
+
}
|
|
230
|
+
)
|
|
231
|
+
}
|
|
232
|
+
) });
|
|
233
|
+
}
|
|
234
|
+
function DataVisNitroGrid(props) {
|
|
235
|
+
const computedView = react.useContext(DataVisNitroContext);
|
|
236
|
+
if (computedView === null) {
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DataVisNitroGridInner, { ...props, computedView });
|
|
240
|
+
}
|
|
241
|
+
DataVisNitroSource.displayName = "DataVisNitroSource";
|
|
242
|
+
DataVisNitroGrid.displayName = "DataVisNitroGrid";
|
|
243
|
+
function isObject2(value) {
|
|
244
|
+
return typeof value === "object" && value !== null;
|
|
245
|
+
}
|
|
246
|
+
function normalizeTypeInfo2(typeInfo) {
|
|
247
|
+
if (Array.isArray(typeInfo)) {
|
|
248
|
+
return Object.fromEntries(
|
|
249
|
+
typeInfo.filter(isObject2).map((entry) => [entry.field, entry])
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
if (!isObject2(typeInfo)) {
|
|
253
|
+
return {};
|
|
254
|
+
}
|
|
255
|
+
const maybeOrdMap = typeInfo;
|
|
256
|
+
if (typeof maybeOrdMap.keys === "function" && typeof maybeOrdMap.get === "function") {
|
|
257
|
+
return Object.fromEntries(
|
|
258
|
+
maybeOrdMap.keys().map((field) => [field, maybeOrdMap.get?.(field) ?? {}])
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
return Object.fromEntries(
|
|
262
|
+
Object.entries(typeInfo).filter(([, value]) => isObject2(value))
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
function normalizeFieldType2(type) {
|
|
266
|
+
if (!type) return void 0;
|
|
267
|
+
if (type === "integer") return "number";
|
|
268
|
+
if (type === "boolean") return "string";
|
|
269
|
+
return type;
|
|
270
|
+
}
|
|
271
|
+
function buildColumnFromField2(field, typeInfo) {
|
|
272
|
+
const info = typeInfo[field];
|
|
273
|
+
const normalizedType = normalizeFieldType2(info?.type);
|
|
274
|
+
return {
|
|
275
|
+
field,
|
|
276
|
+
header: info?.displayText ?? field,
|
|
277
|
+
sortable: true,
|
|
278
|
+
filterable: true,
|
|
279
|
+
resizable: true,
|
|
280
|
+
reorderable: true,
|
|
281
|
+
...normalizedType ? {
|
|
282
|
+
typeInfo: {
|
|
283
|
+
type: normalizedType,
|
|
284
|
+
...info?.format !== void 0 ? { format: info.format } : {},
|
|
285
|
+
...info?.internalType !== void 0 ? { internalType: info.internalType } : {}
|
|
286
|
+
}
|
|
287
|
+
} : {}
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
function buildResolvedColumns2(columns, fallbackFields, typeInfo) {
|
|
291
|
+
if (columns && columns.length > 0) {
|
|
292
|
+
return columns.map((column) => {
|
|
293
|
+
if (typeof column === "string") {
|
|
294
|
+
return buildColumnFromField2(column, typeInfo);
|
|
295
|
+
}
|
|
296
|
+
return column;
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
return fallbackFields.map((field) => buildColumnFromField2(field, typeInfo));
|
|
300
|
+
}
|
|
301
|
+
function buildFallbackFieldOrder2(typeInfo, data) {
|
|
302
|
+
const rows = Array.isArray(data) ? data.filter((row) => isObject2(row)) : null;
|
|
303
|
+
const normalizedEntries = Object.fromEntries(
|
|
304
|
+
Object.entries(typeInfo).map(([field, info]) => [
|
|
305
|
+
field,
|
|
306
|
+
{
|
|
307
|
+
type: normalizeFieldType2(info.type) ?? "string",
|
|
308
|
+
...info.displayText !== void 0 ? { displayText: info.displayText } : {}
|
|
309
|
+
}
|
|
310
|
+
])
|
|
311
|
+
);
|
|
312
|
+
return datavis.determineColumns(null, normalizedEntries, rows);
|
|
313
|
+
}
|
|
314
|
+
function DataVisNitroGraphInner({
|
|
315
|
+
computedView,
|
|
316
|
+
columns,
|
|
317
|
+
config: initialConfig,
|
|
318
|
+
locale,
|
|
319
|
+
className,
|
|
320
|
+
height,
|
|
321
|
+
onConfigChange
|
|
322
|
+
}) {
|
|
323
|
+
const viewState = datavis.useView(computedView);
|
|
324
|
+
const [liveConfig, setLiveConfig] = react.useState(initialConfig);
|
|
325
|
+
const handleConfigChange = react.useCallback(
|
|
326
|
+
(newConfig) => {
|
|
327
|
+
setLiveConfig(newConfig);
|
|
328
|
+
onConfigChange?.(newConfig);
|
|
329
|
+
},
|
|
330
|
+
[onConfigChange]
|
|
331
|
+
);
|
|
332
|
+
const normalizedTypeInfo = react.useMemo(
|
|
333
|
+
() => normalizeTypeInfo2(viewState.typeInfo ?? computedView?.typeInfo ?? null),
|
|
334
|
+
[computedView, viewState.typeInfo]
|
|
335
|
+
);
|
|
336
|
+
const fallbackFields = react.useMemo(
|
|
337
|
+
() => buildFallbackFieldOrder2(normalizedTypeInfo, viewState.data?.data ?? null),
|
|
338
|
+
[normalizedTypeInfo, viewState.data?.data]
|
|
339
|
+
);
|
|
340
|
+
const resolvedColumns = react.useMemo(
|
|
341
|
+
() => buildResolvedColumns2(columns, fallbackFields, normalizedTypeInfo),
|
|
342
|
+
[columns, fallbackFields, normalizedTypeInfo]
|
|
343
|
+
);
|
|
344
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "wcdv-graph", style: height ? { height } : void 0, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
345
|
+
datavis.GraphView,
|
|
346
|
+
{
|
|
347
|
+
viewData: viewState.data,
|
|
348
|
+
columns: resolvedColumns,
|
|
349
|
+
config: liveConfig,
|
|
350
|
+
locale,
|
|
351
|
+
className,
|
|
352
|
+
onConfigChange: handleConfigChange
|
|
353
|
+
}
|
|
354
|
+
) });
|
|
355
|
+
}
|
|
356
|
+
function DataVisNitroGraph(props) {
|
|
357
|
+
const computedView = react.useContext(DataVisNitroContext);
|
|
358
|
+
if (computedView === null) {
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DataVisNitroGraphInner, { ...props, computedView });
|
|
362
|
+
}
|
|
363
|
+
DataVisNitroGraph.displayName = "DataVisNitroGraph";
|
|
364
|
+
|
|
365
|
+
exports.DataVisNitroContext = DataVisNitroContext;
|
|
366
|
+
exports.DataVisNitroGraph = DataVisNitroGraph;
|
|
367
|
+
exports.DataVisNitroGrid = DataVisNitroGrid;
|
|
368
|
+
exports.DataVisNitroSource = DataVisNitroSource;
|
|
369
|
+
//# sourceMappingURL=chunk-VJOVJTFP.cjs.map
|
|
370
|
+
//# sourceMappingURL=chunk-VJOVJTFP.cjs.map
|