@arbidocs/blocks 0.5.107 → 0.5.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedCallDock-TDYRHPAK.js → ConnectedCallDock-DV4FU376.js} +8 -8
- package/dist/{ConnectedCallDock-TDYRHPAK.js.map → ConnectedCallDock-DV4FU376.js.map} +1 -1
- package/dist/{ConnectedCallDock-H3WWFGXF.cjs → ConnectedCallDock-EM2VVGZK.cjs} +10 -10
- package/dist/{ConnectedCallDock-H3WWFGXF.cjs.map → ConnectedCallDock-EM2VVGZK.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-55O5OUN7.cjs → ConnectedCallRoom-7WEPEWUJ.cjs} +9 -9
- package/dist/{ConnectedCallRoom-55O5OUN7.cjs.map → ConnectedCallRoom-7WEPEWUJ.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-Z6F6WCLH.js → ConnectedCallRoom-RYTZP34O.js} +8 -8
- package/dist/{ConnectedCallRoom-Z6F6WCLH.js.map → ConnectedCallRoom-RYTZP34O.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-NVZRVNOS.js → ConnectedNativeDocxComparison-2NDXXZLQ.js} +15 -15
- package/dist/{ConnectedNativeDocxComparison-NVZRVNOS.js.map → ConnectedNativeDocxComparison-2NDXXZLQ.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-DGBZJ4XA.cjs → ConnectedNativeDocxComparison-7HOY3AVI.cjs} +16 -16
- package/dist/{ConnectedNativeDocxComparison-DGBZJ4XA.cjs.map → ConnectedNativeDocxComparison-7HOY3AVI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-R4WINUUB.cjs → ConnectedNativeDocxEditor-CUWDPHXN.cjs} +16 -16
- package/dist/{ConnectedNativeDocxEditor-R4WINUUB.cjs.map → ConnectedNativeDocxEditor-CUWDPHXN.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-RSVBN7DY.js → ConnectedNativeDocxEditor-SPZB6Y27.js} +14 -14
- package/dist/{ConnectedNativeDocxEditor-RSVBN7DY.js.map → ConnectedNativeDocxEditor-SPZB6Y27.js.map} +1 -1
- package/dist/{ConnectedProductionSetDialog-2DFBXE2X.js → ConnectedProductionSetDialog-N3EDG3SU.js} +4 -4
- package/dist/{ConnectedProductionSetDialog-2DFBXE2X.js.map → ConnectedProductionSetDialog-N3EDG3SU.js.map} +1 -1
- package/dist/{ConnectedProductionSetDialog-KYDPQ7SG.cjs → ConnectedProductionSetDialog-XAEFEN3N.cjs} +4 -4
- package/dist/{ConnectedProductionSetDialog-KYDPQ7SG.cjs.map → ConnectedProductionSetDialog-XAEFEN3N.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-HLJ5IIOU.js → ConnectedStreamedWordArtifact-6LTGEAJO.js} +15 -15
- package/dist/ConnectedStreamedWordArtifact-6LTGEAJO.js.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-JQ34AOUU.cjs → ConnectedStreamedWordArtifact-HNCRKZTV.cjs} +16 -16
- package/dist/ConnectedStreamedWordArtifact-HNCRKZTV.cjs.map +1 -0
- package/dist/{DocumentReviewCard-7JSXRJZ2.js → DocumentReviewCard-RJD3CO32.js} +8 -8
- package/dist/{DocumentReviewCard-7JSXRJZ2.js.map → DocumentReviewCard-RJD3CO32.js.map} +1 -1
- package/dist/{DocumentReviewCard-C4HVT3WM.cjs → DocumentReviewCard-VON7LOOY.cjs} +8 -8
- package/dist/{DocumentReviewCard-C4HVT3WM.cjs.map → DocumentReviewCard-VON7LOOY.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-IMQTZWKD.js → FilesViewerDialog-7SJGY72Q.js} +21 -21
- package/dist/{FilesViewerDialog-IMQTZWKD.js.map → FilesViewerDialog-7SJGY72Q.js.map} +1 -1
- package/dist/{FilesViewerDialog-UP7GFHYN.cjs → FilesViewerDialog-VIPTC6OT.cjs} +27 -27
- package/dist/{FilesViewerDialog-UP7GFHYN.cjs.map → FilesViewerDialog-VIPTC6OT.cjs.map} +1 -1
- package/dist/{RechartsRenderer-GIRCW7DB.cjs → RechartsRenderer-THES2SE5.cjs} +6 -5
- package/dist/RechartsRenderer-THES2SE5.cjs.map +1 -0
- package/dist/{RechartsRenderer-23OF4H6X.js → RechartsRenderer-XIZLV6GH.js} +6 -5
- package/dist/RechartsRenderer-XIZLV6GH.js.map +1 -0
- package/dist/{WorkspaceTableView-PJM47B5F.cjs → WorkspaceTableView-FNME7TL6.cjs} +9 -9
- package/dist/{WorkspaceTableView-PJM47B5F.cjs.map → WorkspaceTableView-FNME7TL6.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-YDA7A4UJ.js → WorkspaceTableView-XQ6J2JKI.js} +7 -7
- package/dist/{WorkspaceTableView-YDA7A4UJ.js.map → WorkspaceTableView-XQ6J2JKI.js.map} +1 -1
- package/dist/agents/index.cjs +202 -202
- package/dist/agents/index.js +8 -8
- package/dist/{ai-ADS6YSS2.cjs → ai-3SAMEYBB.cjs} +20 -20
- package/dist/ai-3SAMEYBB.cjs.map +1 -0
- package/dist/{ai-KHWTGBT5.js → ai-OTQWSYVK.js} +12 -12
- package/dist/ai-OTQWSYVK.js.map +1 -0
- package/dist/calls/index.cjs +57 -57
- package/dist/calls/index.js +9 -9
- package/dist/chat/index.cjs +3 -3
- package/dist/chat/index.js +3 -3
- package/dist/{chunk-O27K7KTZ.cjs → chunk-2TBQBF4Y.cjs} +5 -5
- package/dist/{chunk-O27K7KTZ.cjs.map → chunk-2TBQBF4Y.cjs.map} +1 -1
- package/dist/{chunk-YJWAGXYM.js → chunk-4ZA2RSQH.js} +3 -3
- package/dist/{chunk-YJWAGXYM.js.map → chunk-4ZA2RSQH.js.map} +1 -1
- package/dist/{chunk-6A4GNM4T.cjs → chunk-5D2ZINOJ.cjs} +16 -16
- package/dist/{chunk-6A4GNM4T.cjs.map → chunk-5D2ZINOJ.cjs.map} +1 -1
- package/dist/{chunk-BFVCYBND.cjs → chunk-5HXQOM3I.cjs} +5 -5
- package/dist/{chunk-BFVCYBND.cjs.map → chunk-5HXQOM3I.cjs.map} +1 -1
- package/dist/{chunk-GSD5U553.cjs → chunk-5KKT65WU.cjs} +3 -3
- package/dist/{chunk-GSD5U553.cjs.map → chunk-5KKT65WU.cjs.map} +1 -1
- package/dist/{chunk-AVGHTUPE.js → chunk-5PWLXLHY.js} +5 -5
- package/dist/chunk-5PWLXLHY.js.map +1 -0
- package/dist/{chunk-BBWLFK3C.js → chunk-5XIMUQ63.js} +3 -3
- package/dist/{chunk-BBWLFK3C.js.map → chunk-5XIMUQ63.js.map} +1 -1
- package/dist/{chunk-AHMRYY7J.cjs → chunk-6DAJXQZZ.cjs} +13 -13
- package/dist/{chunk-AHMRYY7J.cjs.map → chunk-6DAJXQZZ.cjs.map} +1 -1
- package/dist/{chunk-3PV25ICC.js → chunk-6KKVJ2V6.js} +3 -3
- package/dist/{chunk-3PV25ICC.js.map → chunk-6KKVJ2V6.js.map} +1 -1
- package/dist/{chunk-OLAYDOPC.js → chunk-6LUHNFEE.js} +6 -6
- package/dist/{chunk-OLAYDOPC.js.map → chunk-6LUHNFEE.js.map} +1 -1
- package/dist/{chunk-FSXQHEFQ.cjs → chunk-7CDV7Y4U.cjs} +25 -25
- package/dist/{chunk-FSXQHEFQ.cjs.map → chunk-7CDV7Y4U.cjs.map} +1 -1
- package/dist/{chunk-OAIOOVFN.cjs → chunk-7SJXYEZI.cjs} +36 -36
- package/dist/chunk-7SJXYEZI.cjs.map +1 -0
- package/dist/{chunk-LFYKB7KF.cjs → chunk-7V6APLF7.cjs} +19 -19
- package/dist/{chunk-LFYKB7KF.cjs.map → chunk-7V6APLF7.cjs.map} +1 -1
- package/dist/{chunk-4WMGFGYP.cjs → chunk-AJZ66VJC.cjs} +4 -4
- package/dist/{chunk-4WMGFGYP.cjs.map → chunk-AJZ66VJC.cjs.map} +1 -1
- package/dist/{chunk-KCP42W67.cjs → chunk-ARGQ5YZ5.cjs} +3 -3
- package/dist/{chunk-KCP42W67.cjs.map → chunk-ARGQ5YZ5.cjs.map} +1 -1
- package/dist/{chunk-BH6IKGZ3.js → chunk-AUAHGQY6.js} +5 -5
- package/dist/{chunk-BH6IKGZ3.js.map → chunk-AUAHGQY6.js.map} +1 -1
- package/dist/{chunk-KIXFXCHL.js → chunk-CEOCA7ID.js} +3 -3
- package/dist/{chunk-KIXFXCHL.js.map → chunk-CEOCA7ID.js.map} +1 -1
- package/dist/{chunk-TNKPQ3EF.js → chunk-CIRSOYGK.js} +12 -12
- package/dist/{chunk-TNKPQ3EF.js.map → chunk-CIRSOYGK.js.map} +1 -1
- package/dist/{chunk-BAUZUIHB.js → chunk-COL2TJGO.js} +83 -83
- package/dist/chunk-COL2TJGO.js.map +1 -0
- package/dist/{chunk-XHN5KOI2.cjs → chunk-DRLD4P2C.cjs} +8 -8
- package/dist/{chunk-XHN5KOI2.cjs.map → chunk-DRLD4P2C.cjs.map} +1 -1
- package/dist/{chunk-5AC52BHL.cjs → chunk-DYPFNQTQ.cjs} +140 -140
- package/dist/chunk-DYPFNQTQ.cjs.map +1 -0
- package/dist/{chunk-SCLGUHLU.cjs → chunk-E7TGSOPR.cjs} +4 -4
- package/dist/{chunk-SCLGUHLU.cjs.map → chunk-E7TGSOPR.cjs.map} +1 -1
- package/dist/{chunk-CRLFLMTK.cjs → chunk-EOXA4VJH.cjs} +3 -3
- package/dist/{chunk-CRLFLMTK.cjs.map → chunk-EOXA4VJH.cjs.map} +1 -1
- package/dist/{chunk-DBKZANTC.js → chunk-GA47YVW5.js} +3 -3
- package/dist/{chunk-DBKZANTC.js.map → chunk-GA47YVW5.js.map} +1 -1
- package/dist/{chunk-RCZRI72J.cjs → chunk-GMODJT4N.cjs} +4 -4
- package/dist/{chunk-RCZRI72J.cjs.map → chunk-GMODJT4N.cjs.map} +1 -1
- package/dist/{chunk-22KAKJ3W.cjs → chunk-GS5MFUPC.cjs} +4 -4
- package/dist/{chunk-22KAKJ3W.cjs.map → chunk-GS5MFUPC.cjs.map} +1 -1
- package/dist/{chunk-62OMGQHS.js → chunk-H6W3VXHU.js} +3 -3
- package/dist/{chunk-62OMGQHS.js.map → chunk-H6W3VXHU.js.map} +1 -1
- package/dist/{chunk-DX3Z2COD.cjs → chunk-HUYKO2ES.cjs} +3 -3
- package/dist/{chunk-DX3Z2COD.cjs.map → chunk-HUYKO2ES.cjs.map} +1 -1
- package/dist/{chunk-U5F5P4YU.js → chunk-IK234EFX.js} +12 -12
- package/dist/{chunk-U5F5P4YU.js.map → chunk-IK234EFX.js.map} +1 -1
- package/dist/{chunk-UQ2OBHMV.js → chunk-JUGEFTRC.js} +1010 -1010
- package/dist/chunk-JUGEFTRC.js.map +1 -0
- package/dist/{chunk-CHQMVIHR.js → chunk-LPGBRMYS.js} +36 -36
- package/dist/chunk-LPGBRMYS.js.map +1 -0
- package/dist/{chunk-D35EHOK5.cjs → chunk-M23W7IID.cjs} +12 -12
- package/dist/chunk-M23W7IID.cjs.map +1 -0
- package/dist/{chunk-FPOKWML2.js → chunk-MIVNNQO3.js} +21 -4
- package/dist/chunk-MIVNNQO3.js.map +1 -0
- package/dist/{chunk-WI3BVKEC.cjs → chunk-MNFI66H5.cjs} +5 -5
- package/dist/{chunk-WI3BVKEC.cjs.map → chunk-MNFI66H5.cjs.map} +1 -1
- package/dist/{chunk-T5ZMG6MC.js → chunk-NF4M7PUB.js} +3 -3
- package/dist/{chunk-T5ZMG6MC.js.map → chunk-NF4M7PUB.js.map} +1 -1
- package/dist/{chunk-ZNY5W3VX.js → chunk-NPSFPBIB.js} +3 -3
- package/dist/{chunk-ZNY5W3VX.js.map → chunk-NPSFPBIB.js.map} +1 -1
- package/dist/{chunk-LYW5A35J.js → chunk-OMIYTUVR.js} +12 -12
- package/dist/{chunk-LYW5A35J.js.map → chunk-OMIYTUVR.js.map} +1 -1
- package/dist/{chunk-ZMVF7EYJ.cjs → chunk-PBPO54KZ.cjs} +21 -3
- package/dist/chunk-PBPO54KZ.cjs.map +1 -0
- package/dist/{chunk-7V4OCZS6.cjs → chunk-RA3EGF6K.cjs} +6 -6
- package/dist/{chunk-7V4OCZS6.cjs.map → chunk-RA3EGF6K.cjs.map} +1 -1
- package/dist/{chunk-PL7O3RJJ.cjs → chunk-RKBAY7GZ.cjs} +3 -3
- package/dist/{chunk-PL7O3RJJ.cjs.map → chunk-RKBAY7GZ.cjs.map} +1 -1
- package/dist/{chunk-J3E5CSSC.js → chunk-RKFWBIKS.js} +3 -3
- package/dist/{chunk-J3E5CSSC.js.map → chunk-RKFWBIKS.js.map} +1 -1
- package/dist/{chunk-YLKHTBYA.js → chunk-RRP7MQAO.js} +3 -3
- package/dist/{chunk-YLKHTBYA.js.map → chunk-RRP7MQAO.js.map} +1 -1
- package/dist/{chunk-U6LQ6Z3P.cjs → chunk-SP3IKIPA.cjs} +6 -6
- package/dist/{chunk-U6LQ6Z3P.cjs.map → chunk-SP3IKIPA.cjs.map} +1 -1
- package/dist/{chunk-GX75YCWJ.cjs → chunk-SQUOXOY3.cjs} +560 -560
- package/dist/chunk-SQUOXOY3.cjs.map +1 -0
- package/dist/{chunk-6ZYOUT73.js → chunk-T5LORFHL.js} +7 -7
- package/dist/{chunk-6ZYOUT73.js.map → chunk-T5LORFHL.js.map} +1 -1
- package/dist/{chunk-45OU2UAA.cjs → chunk-TEMTKBBL.cjs} +10 -10
- package/dist/{chunk-45OU2UAA.cjs.map → chunk-TEMTKBBL.cjs.map} +1 -1
- package/dist/{chunk-PHDUN4SG.cjs → chunk-THCMGAFX.cjs} +41 -41
- package/dist/{chunk-PHDUN4SG.cjs.map → chunk-THCMGAFX.cjs.map} +1 -1
- package/dist/{chunk-HTGEAQOA.js → chunk-TOMDMKOD.js} +7 -7
- package/dist/{chunk-HTGEAQOA.js.map → chunk-TOMDMKOD.js.map} +1 -1
- package/dist/{chunk-WJHRWXWJ.js → chunk-TXIAF4PX.js} +3 -3
- package/dist/{chunk-WJHRWXWJ.js.map → chunk-TXIAF4PX.js.map} +1 -1
- package/dist/{chunk-6M5NAAWX.js → chunk-UCSEE52D.js} +3 -3
- package/dist/{chunk-6M5NAAWX.js.map → chunk-UCSEE52D.js.map} +1 -1
- package/dist/{chunk-I7CJDF3V.cjs → chunk-UHMP6S7M.cjs} +104 -103
- package/dist/chunk-UHMP6S7M.cjs.map +1 -0
- package/dist/{chunk-PGCKTXYH.js → chunk-UHUI6A36.js} +3 -3
- package/dist/{chunk-PGCKTXYH.js.map → chunk-UHUI6A36.js.map} +1 -1
- package/dist/{chunk-6KQVTMRL.cjs → chunk-UOGXKHTJ.cjs} +3 -3
- package/dist/{chunk-6KQVTMRL.cjs.map → chunk-UOGXKHTJ.cjs.map} +1 -1
- package/dist/{chunk-7S7YVBFK.js → chunk-VDSDG4FR.js} +3 -3
- package/dist/{chunk-7S7YVBFK.js.map → chunk-VDSDG4FR.js.map} +1 -1
- package/dist/{chunk-3GFQNJYE.js → chunk-VGWCHX6G.js} +104 -103
- package/dist/chunk-VGWCHX6G.js.map +1 -0
- package/dist/{chunk-VY3HTT37.js → chunk-VUH547VQ.js} +3 -3
- package/dist/{chunk-VY3HTT37.js.map → chunk-VUH547VQ.js.map} +1 -1
- package/dist/{chunk-AZCMKGDG.js → chunk-W37PFYFL.js} +4 -4
- package/dist/{chunk-AZCMKGDG.js.map → chunk-W37PFYFL.js.map} +1 -1
- package/dist/{chunk-JGUM4EXE.cjs → chunk-W3IX3GZS.cjs} +8 -8
- package/dist/{chunk-JGUM4EXE.cjs.map → chunk-W3IX3GZS.cjs.map} +1 -1
- package/dist/{chunk-UCA4JLLJ.cjs → chunk-X7GT57KW.cjs} +3 -3
- package/dist/{chunk-UCA4JLLJ.cjs.map → chunk-X7GT57KW.cjs.map} +1 -1
- package/dist/{chunk-IXL2KJOZ.cjs → chunk-XBEGD33U.cjs} +40 -40
- package/dist/{chunk-IXL2KJOZ.cjs.map → chunk-XBEGD33U.cjs.map} +1 -1
- package/dist/{chunk-FDNIK5YS.cjs → chunk-XBKIFGBB.cjs} +8 -8
- package/dist/{chunk-FDNIK5YS.cjs.map → chunk-XBKIFGBB.cjs.map} +1 -1
- package/dist/{chunk-HZE5MHQO.js → chunk-XT7HKQ4H.js} +3 -3
- package/dist/{chunk-HZE5MHQO.js.map → chunk-XT7HKQ4H.js.map} +1 -1
- package/dist/{chunk-M3OK6KGR.js → chunk-ZGQKED5T.js} +3 -3
- package/dist/{chunk-M3OK6KGR.js.map → chunk-ZGQKED5T.js.map} +1 -1
- package/dist/{chunk-NWBCZ4PA.js → chunk-ZKBYG6MN.js} +4 -4
- package/dist/{chunk-NWBCZ4PA.js.map → chunk-ZKBYG6MN.js.map} +1 -1
- package/dist/collaboration/index.cjs +1 -1
- package/dist/collaboration/index.js +1 -1
- package/dist/connect/docx.cjs +19 -19
- package/dist/connect/docx.js +15 -15
- package/dist/connect/index.cjs +762 -762
- package/dist/connect/index.js +63 -63
- package/dist/connect/viewer.cjs +14 -14
- package/dist/connect/viewer.js +13 -13
- package/dist/connection/dashboards/ConnectedDashboardsPage.d.ts +6 -0
- package/dist/dashboards/chartModel.d.ts +12 -0
- package/dist/dashboards/index.cjs +113 -42
- package/dist/dashboards/index.cjs.map +1 -1
- package/dist/dashboards/index.js +95 -24
- package/dist/dashboards/index.js.map +1 -1
- package/dist/embed/index.cjs +29 -29
- package/dist/embed/index.js +23 -23
- package/dist/facts/index.cjs +43 -43
- package/dist/facts/index.js +2 -2
- package/dist/files/index.cjs +1 -1
- package/dist/files/index.js +1 -1
- package/dist/home/index.cjs +31 -31
- package/dist/home/index.js +3 -3
- package/dist/index.cjs +383 -383
- package/dist/index.js +21 -21
- package/dist/settings/index.cjs +153 -153
- package/dist/settings/index.js +4 -4
- package/dist/shell/index.cjs +36 -36
- package/dist/shell/index.js +4 -4
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +19 -19
- package/dist/studio/index.js +14 -14
- package/dist/styles.css +1 -1
- package/dist/workflow-canvas/index.cjs +33 -33
- package/dist/workflow-canvas/index.js +22 -22
- package/node_modules/@arbidocs/coedit/package.json +2 -2
- package/node_modules/@docx-editor.dev/core/dist/automation.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/automation.d.ts +60 -13
- package/node_modules/@docx-editor.dev/core/dist/automation.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/binding.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/binding.d.ts +21 -13
- package/node_modules/@docx-editor.dev/core/dist/binding.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{index-Bsg7oIKP.d.ts → chrome-print-CAs51cpq.d.ts} +31 -21
- package/node_modules/@docx-editor.dev/core/dist/{chunk-VDNNLG6X.js → chunk-236O4YQW.js} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-4HENIAFG.js +1 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-SRPILEWV.cjs → chunk-6JPL6ZAS.cjs} +5 -5
- package/node_modules/@docx-editor.dev/core/dist/{chunk-2RC2EPND.js → chunk-6ZQP4HQ7.js} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{chunk-ZUHOMK52.cjs → chunk-7WQ7AAHW.cjs} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{chunk-Z6WBFXJU.js → chunk-BCXH4BXB.js} +3 -3
- package/node_modules/@docx-editor.dev/core/dist/{chunk-QMLCVPCD.cjs → chunk-BY2ACZZ6.cjs} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-CAJEXXVG.cjs +4 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-CPWLFPWC.js +30 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-6APGXLBB.cjs → chunk-D7ZMDMPX.cjs} +2 -2
- package/node_modules/@docx-editor.dev/core/dist/chunk-DOHF6FA7.cjs +30 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-DVX32P2P.js +27 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-6EYYL7FL.js → chunk-E4LOMDNL.js} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-EKLM7NWB.cjs +7 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-G3K63G7P.cjs +27 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-5CSUYANV.js → chunk-G4HOFIKJ.js} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{chunk-K5U2PLDP.cjs → chunk-JLVBDYVQ.cjs} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-LQX36Z5P.js +7 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-TSLBZ26X.js → chunk-LSZ6KPKK.js} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{chunk-O2AL2HSJ.cjs → chunk-MM5QBMTE.cjs} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{chunk-ETTO6GK3.js → chunk-OMCG63ZF.js} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-OSFOJTHU.cjs +18 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-E7BQA6UP.js → chunk-RCLZXP3B.js} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-T6K2QYNZ.cjs +2 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-TRGAVV2Y.js +4 -0
- package/node_modules/@docx-editor.dev/core/dist/chunk-U4JZVSOE.js +2 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-2GO5T2JU.cjs → chunk-UHHYFIDT.cjs} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-V3N4SOAK.cjs +1 -0
- package/node_modules/@docx-editor.dev/core/dist/{chunk-6AWEKBLB.cjs → chunk-W35WTWAO.cjs} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-YQ5G6LC7.js +18 -0
- package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.d.ts +5 -5
- package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/collaboration.d.ts +4 -4
- package/node_modules/@docx-editor.dev/core/dist/contracts/document.d.ts +3 -3
- package/node_modules/@docx-editor.dev/core/dist/contracts/editor.d.ts +9 -10
- package/node_modules/@docx-editor.dev/core/dist/contracts/interaction.d.ts +2 -2
- package/node_modules/@docx-editor.dev/core/dist/contracts/modules.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/contracts/modules.d.ts +33 -9
- package/node_modules/@docx-editor.dev/core/dist/contracts/modules.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/contracts/types.d.ts +2 -2
- package/node_modules/@docx-editor.dev/core/dist/{custom-node-writes-cvL5rhcD.d.ts → custom-node-writes-Bn6uciLb.d.ts} +2 -2
- package/node_modules/@docx-editor.dev/core/dist/diagnostic-context-B8M79cfK.d.ts +30 -0
- package/node_modules/@docx-editor.dev/core/dist/diagnostic-hints-BeVjfNOv.d.ts +113 -0
- package/node_modules/@docx-editor.dev/core/dist/{document-protection-BAGVGqaP.d.ts → document-protection-CUb55pl_.d.ts} +2 -2
- package/node_modules/@docx-editor.dev/core/dist/{editor-Ci7IZGmG.d.ts → editor-CZQZmTIU.d.ts} +386 -9
- package/node_modules/@docx-editor.dev/core/dist/{editor-scope-OHPwVQ5l.d.ts → editor-scope-7o9xweiJ.d.ts} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/editor.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/editor.d.ts +54 -33
- package/node_modules/@docx-editor.dev/core/dist/editor.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/export.cjs +2 -2
- package/node_modules/@docx-editor.dev/core/dist/export.d.ts +13 -14
- package/node_modules/@docx-editor.dev/core/dist/export.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{font-resolver-BVQB14qT.d.ts → font-resolver-lSBLirLR.d.ts} +3 -3
- package/node_modules/@docx-editor.dev/core/dist/{headless-document-view-qH331moE.d.ts → headless-document-view-pp3q7wIh.d.ts} +2 -2
- package/node_modules/@docx-editor.dev/core/dist/{image-resources-BN-hUgCn.d.ts → image-resources-tXLQShoC.d.ts} +2 -2
- package/node_modules/@docx-editor.dev/core/dist/index.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/index.d.ts +65 -20
- package/node_modules/@docx-editor.dev/core/dist/index.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{layout-shaping-BEyuiQOk.d.ts → layout-shaping-BD-dF_rn.d.ts} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/layout.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/layout.d.ts +17 -20
- package/node_modules/@docx-editor.dev/core/dist/layout.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{note-properties-4Y9o6Gyk.d.ts → note-properties-qQUjO1GQ.d.ts} +3 -3
- package/node_modules/@docx-editor.dev/core/dist/{omml-equation-CuzBL5DD.d.ts → omml-equation-BUbU0utM.d.ts} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/output.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/output.d.ts +8 -9
- package/node_modules/@docx-editor.dev/core/dist/output.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{protocol-Bqk4Izjc.d.ts → protocol-DYzzz2ej.d.ts} +2 -2
- package/node_modules/@docx-editor.dev/core/dist/{review-paragraph-order-DT-n6ouC.d.ts → review-paragraph-order-CN_0l2Cb.d.ts} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{semantic-cell-selection-D9D1KSXq.d.ts → semantic-cell-selection-eYag3P47.d.ts} +4 -211
- package/node_modules/@docx-editor.dev/core/dist/{semantic-interaction-CIC-PooQ.d.ts → semantic-interaction-kR_QB845.d.ts} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{semantic-paint-BME37OMv.d.ts → semantic-paint-ZayFF3tD.d.ts} +17 -5
- package/node_modules/@docx-editor.dev/core/dist/{semantic-record-queries-CBlZqZNa.d.ts → semantic-record-queries-Bsgth6lv.d.ts} +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{semantic-records-4B3WwFAi.d.ts → semantic-records-DQmumPgL.d.ts} +1279 -828
- package/node_modules/@docx-editor.dev/core/dist/store.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/store.d.ts +1466 -1464
- package/node_modules/@docx-editor.dev/core/dist/store.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/{tree-package-fragment-BeeKxDw8.d.ts → tree-package-store-CovjNARF.d.ts} +83 -83
- package/node_modules/@docx-editor.dev/core/dist/{tree-session-contract-CVbmlMlq.d.ts → tree-session-contract-CZVAGl51.d.ts} +6 -6
- package/node_modules/@docx-editor.dev/core/dist/{types-barrel-D3xCgQX6.d.ts → types-barrel-DuC5QBNC.d.ts} +548 -527
- package/node_modules/@docx-editor.dev/core/package.json +3 -3
- package/node_modules/@docx-editor.dev/react/dist/index.js +3 -3
- package/node_modules/@docx-editor.dev/react/dist/index.mjs +3 -3
- package/node_modules/@docx-editor.dev/react/package.json +4 -4
- package/package.json +8 -8
- package/dist/ConnectedStreamedWordArtifact-HLJ5IIOU.js.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-JQ34AOUU.cjs.map +0 -1
- package/dist/RechartsRenderer-23OF4H6X.js.map +0 -1
- package/dist/RechartsRenderer-GIRCW7DB.cjs.map +0 -1
- package/dist/ai-ADS6YSS2.cjs.map +0 -1
- package/dist/ai-KHWTGBT5.js.map +0 -1
- package/dist/chunk-3GFQNJYE.js.map +0 -1
- package/dist/chunk-5AC52BHL.cjs.map +0 -1
- package/dist/chunk-AVGHTUPE.js.map +0 -1
- package/dist/chunk-BAUZUIHB.js.map +0 -1
- package/dist/chunk-CHQMVIHR.js.map +0 -1
- package/dist/chunk-D35EHOK5.cjs.map +0 -1
- package/dist/chunk-FPOKWML2.js.map +0 -1
- package/dist/chunk-GX75YCWJ.cjs.map +0 -1
- package/dist/chunk-I7CJDF3V.cjs.map +0 -1
- package/dist/chunk-OAIOOVFN.cjs.map +0 -1
- package/dist/chunk-UQ2OBHMV.js.map +0 -1
- package/dist/chunk-ZMVF7EYJ.cjs.map +0 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-4GBTELJV.cjs +0 -28
- package/node_modules/@docx-editor.dev/core/dist/chunk-4R3TEXMN.js +0 -18
- package/node_modules/@docx-editor.dev/core/dist/chunk-EO4C5QJW.cjs +0 -2
- package/node_modules/@docx-editor.dev/core/dist/chunk-FIJZIQXA.cjs +0 -18
- package/node_modules/@docx-editor.dev/core/dist/chunk-FRXAOVTB.js +0 -28
- package/node_modules/@docx-editor.dev/core/dist/chunk-J6BVWIDB.js +0 -2
- package/node_modules/@docx-editor.dev/core/dist/chunk-JGNVNT2A.cjs +0 -2
- package/node_modules/@docx-editor.dev/core/dist/chunk-KKIJG3C6.js +0 -2
- package/node_modules/@docx-editor.dev/core/dist/chunk-LWDSDCMO.js +0 -27
- package/node_modules/@docx-editor.dev/core/dist/chunk-NBCVVZOM.cjs +0 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-O5INAWZQ.js +0 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-RCHS4ZEH.cjs +0 -27
- package/node_modules/@docx-editor.dev/core/dist/chunk-VHAVHCQY.js +0 -7
- package/node_modules/@docx-editor.dev/core/dist/chunk-VX43VBAX.cjs +0 -7
- package/node_modules/@docx-editor.dev/core/dist/review-pane-D9jm8DcY.d.ts +0 -128
- package/node_modules/@docx-editor.dev/core/dist/revision-projection-DZ4kKVev.d.ts +0 -242
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/dashboards/DashboardGrid.tsx","../src/dashboards/ChartRenderer.tsx","../src/dashboards/PanelView.tsx","../src/connection/dashboards/DashboardPanel.tsx","../src/connection/dashboards/PanelEditor.tsx"],"names":["jsx","cn","lazy","jsxs","sliceColors","useState","useId","Suspense","formatterOf","fmtDate","DataTable","AlertTriangle","ChartNoAxesColumn","MetricCard","Card","DEFAULT_UNIT_FORMATTERS","formatGbp","formatBytes","useBlocksEnvironment","usePanelDataset","useMemo","metricValueOf","chartModelOf","Button","useDataSources","Label","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Fragment","x","Switch","Input","X","Plus"],"mappings":"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","file":"chunk-M23W7IID.cjs","sourcesContent":["/**\n * `DashboardGrid`: a responsive 12-column grid of panels. Each child spans `width` columns on a wide\n * screen and the full width on a phone, where panels stack in order.\n */\nimport type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\n\n/** Literal classes (the stylesheet is generated from the source): `md:col-span-1…12`. */\nconst SPANS = [\n 'md:col-span-1',\n 'md:col-span-2',\n 'md:col-span-3',\n 'md:col-span-4',\n 'md:col-span-5',\n 'md:col-span-6',\n 'md:col-span-7',\n 'md:col-span-8',\n 'md:col-span-9',\n 'md:col-span-10',\n 'md:col-span-11',\n 'md:col-span-12',\n] as const\n\n/** A width in grid columns, kept within 1…12 (default 6, half the row). */\nexport function clampPanelWidth(width: number | undefined): number {\n return Math.min(12, Math.max(1, Math.round(width ?? 6)))\n}\n\nexport interface DashboardGridProps {\n children?: ReactNode\n className?: string\n testId?: string\n}\n\n/** The grid. Wrap each panel in a `DashboardCell`. */\nexport function DashboardGrid({ children, className, testId }: DashboardGridProps) {\n return (\n <div\n className={cn('grid grid-cols-1 gap-4 md:grid-cols-12', className)}\n data-slot=\"dashboard\"\n data-testid={testId}\n >\n {children}\n </div>\n )\n}\n\n/** One cell of the grid, `width` columns wide on a wide screen. */\nexport function DashboardCell({\n width,\n children,\n className,\n}: {\n width?: number\n children?: ReactNode\n className?: string\n}) {\n return (\n <div\n className={cn('col-span-1 min-w-0', SPANS[clampPanelWidth(width) - 1], className)}\n data-slot=\"dashboard-cell\"\n >\n {children}\n </div>\n )\n}\n","/**\n * `ChartRenderer`: draws a `ChartModel`. The drawing library is loaded on demand (a skeleton shows\n * meanwhile), so a page fetches it only when a chart is on screen. Beside the drawing: a legend in\n * the theme's text colours, and a table of the same values one click away (for screen readers,\n * copying, or when colours are hard to tell apart).\n */\nimport { lazy, Suspense, useId, useState } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { sliceColors, type ChartModel } from './chartModel'\n\nconst RechartsRenderer = lazy(() => import('./RechartsRenderer'))\n\nexport interface ChartRendererLabels {\n showTable: string\n showChart: string\n other: string\n}\n\nexport const DEFAULT_CHART_RENDERER_LABELS: ChartRendererLabels = {\n showTable: 'Show table',\n showChart: 'Show chart',\n other: 'Other',\n}\n\nexport interface ChartRendererProps {\n model: ChartModel\n ariaLabel: string\n /** The plot's height in px. Default 240. */\n height?: number\n /** Start on the table. */\n defaultView?: 'chart' | 'table'\n labels?: Partial<ChartRendererLabels>\n className?: string\n testId?: string\n}\n\n/** The values as a table: a row per category, a column per series. */\nexport function ChartTable({\n model,\n caption,\n id,\n}: {\n model: ChartModel\n caption: string\n id?: string\n}) {\n return (\n <div className=\"max-h-72 overflow-auto\">\n <table id={id} className=\"w-full text-left text-xs\" data-slot=\"chart-table\">\n <caption className=\"sr-only\">{caption}</caption>\n <thead>\n <tr className=\"border-b border-border text-muted-foreground\">\n <th scope=\"col\" className=\"py-1.5 pr-3 font-medium\">\n {model.xLabel}\n </th>\n {model.series.map((s) => (\n <th key={s.id} scope=\"col\" className=\"py-1.5 pr-3 text-right font-medium\">\n {s.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {model.categories.map((category, i) => (\n <tr key={`${category}-${i}`} className=\"border-b border-border/60 last:border-0\">\n <th scope=\"row\" className=\"py-1.5 pr-3 font-normal text-foreground\">\n {category}\n </th>\n {model.series.map((s) => (\n <td key={s.id} className=\"py-1.5 pr-3 text-right tabular-nums text-foreground\">\n {s.values[i] === null ? '–' : model.format(s.values[i] as number)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n\nfunction Legend({ model, other }: { model: ChartModel; other: string }) {\n const pie = model.type === 'pie' || model.type === 'donut'\n const items = pie\n ? model.categories.map((label, i) => ({ label, color: sliceColors(model, other)[i] }))\n : model.series.map((s) => ({ label: s.label, color: s.color }))\n if (!pie && items.length < 2) return null\n return (\n <ul className=\"flex flex-wrap justify-center gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n {items.map((item, i) => (\n <li key={`${item.label}-${i}`} className=\"inline-flex items-center gap-1.5\">\n <span\n aria-hidden=\"true\"\n className=\"inline-block size-2 rounded-full\"\n style={{ background: item.color }}\n />\n {item.label}\n </li>\n ))}\n </ul>\n )\n}\n\nexport function ChartRenderer({\n model,\n ariaLabel,\n height = 240,\n defaultView = 'chart',\n labels,\n className,\n testId,\n}: ChartRendererProps) {\n const l = { ...DEFAULT_CHART_RENDERER_LABELS, ...labels }\n const [view, setView] = useState(defaultView)\n const tableId = useId()\n return (\n <figure\n className={cn('flex min-w-0 max-w-full flex-col gap-2', className)}\n data-slot=\"dashboard-chart\"\n data-type={model.type}\n data-testid={testId}\n >\n {view === 'table' ? (\n <ChartTable model={model} caption={ariaLabel} id={tableId} />\n ) : (\n <div className=\"min-w-0\" style={{ height }} role=\"figure\" aria-label={ariaLabel}>\n <Suspense\n fallback={\n <div\n className=\"size-full animate-pulse rounded-md bg-muted\"\n data-slot=\"chart-loading\"\n />\n }\n >\n <RechartsRenderer\n model={model}\n ariaLabel={ariaLabel}\n height={height}\n otherLabel={l.other}\n />\n </Suspense>\n </div>\n )}\n <figcaption className=\"flex flex-wrap items-center justify-between gap-2\">\n <Legend model={model} other={l.other} />\n <button\n type=\"button\"\n className=\"ml-auto rounded-sm text-xs text-muted-foreground underline-offset-2 hover:text-foreground hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring print:hidden\"\n aria-controls={view === 'table' ? tableId : undefined}\n aria-pressed={view === 'table'}\n onClick={() => setView(view === 'table' ? 'chart' : 'table')}\n >\n {view === 'table' ? l.showChart : l.showTable}\n </button>\n </figcaption>\n </figure>\n )\n}\n","/**\n * `PanelView`: one dashboard panel as it looks, from data already in hand: a metric tile, a chart\n * or a table, each with its loading, empty and error state. Presentational: `DashboardPanel` reads\n * the data and renders this.\n */\nimport type { ReactNode } from 'react'\nimport { AlertTriangle, ChartNoAxesColumn } from 'lucide-react'\nimport type { DatasetField, DatasetRow, DatasetValue } from '@arbidocs/react'\nimport { Card, cn } from '@arbidocs/react/ui'\nimport { DataTable, type Column } from '../components/DataTable'\nimport { MetricCard } from '../components/MetricCard'\nimport { fmtDate } from '../lib/format'\nimport { ChartRenderer, ChartTable, type ChartRendererLabels } from './ChartRenderer'\nimport { formatterOf, type ChartModel, type UnitFormatters } from './chartModel'\n\nexport type PanelState = 'loading' | 'empty' | 'error' | 'ready'\n\nexport interface PanelViewLabels extends ChartRendererLabels {\n empty: string\n error: string\n /** Under a table cut short: \"Showing 50 of 1,200 rows\". */\n showingRows: (shown: number, total: number) => string\n yes: string\n no: string\n}\n\nexport const DEFAULT_PANEL_VIEW_LABELS: PanelViewLabels = {\n showTable: 'Show table',\n showChart: 'Show chart',\n other: 'Other',\n empty: 'Nothing to show yet.',\n error: 'This panel could not be loaded.',\n showingRows: (shown, total) =>\n `Showing ${shown.toLocaleString('en-GB')} of ${total.toLocaleString('en-GB')} rows`,\n yes: 'Yes',\n no: 'No',\n}\n\n/** What a panel shows when ready. */\nexport type PanelBody =\n | { kind: 'metric'; value: number | null; format: (value: number) => string }\n | { kind: 'chart'; model: ChartModel }\n /** A table of groups (a chart model shown as a table). */\n | { kind: 'groups'; model: ChartModel }\n /** A table of records. */\n | { kind: 'records'; fields: readonly DatasetField[]; rows: readonly DatasetRow[] }\n\nexport interface PanelViewProps {\n /** What the panel is (it shows as one before its data is in). */\n kind: 'metric' | 'chart' | 'table'\n title: string\n description?: string\n state: PanelState\n body?: PanelBody\n /** The error's own words, shown under the panel's. */\n errorDetail?: string\n /** Shown in the empty state (a link to where data comes from). */\n emptyAction?: ReactNode\n /** Buttons in the panel's corner (edit, remove), for a dashboard being edited. */\n actions?: ReactNode\n /** A metric's tile, with the theme accent token of its icon. */\n metricAccent?: string\n /** `card` (default): a card with the title; `plain`: no card (a chart placed in a page). */\n variant?: 'card' | 'plain'\n /** Most records a table shows. Default 50. */\n maxRows?: number\n formatters?: UnitFormatters\n labels?: Partial<PanelViewLabels>\n className?: string\n testId?: string\n}\n\nfunction cellText(\n value: DatasetValue | undefined,\n field: DatasetField,\n l: PanelViewLabels,\n formatters?: UnitFormatters\n): string {\n if (value === null || value === undefined || value === '') return '–'\n if (Array.isArray(value)) return value.join(', ')\n if (typeof value === 'boolean') return value ? l.yes : l.no\n if (field.type === 'number' && typeof value === 'number')\n return formatterOf(field, formatters)(value)\n if (field.type === 'date' && typeof value === 'string') return fmtDate(value)\n return String(value)\n}\n\nfunction RecordsTable({\n fields,\n rows,\n maxRows,\n l,\n formatters,\n testId,\n}: {\n fields: readonly DatasetField[]\n rows: readonly DatasetRow[]\n maxRows: number\n l: PanelViewLabels\n formatters?: UnitFormatters\n testId?: string\n}) {\n const shown = rows.slice(0, maxRows).map((row, i) => ({ row, i }))\n const columns: Column<{ row: DatasetRow; i: number }>[] = fields.map((field) => ({\n key: field.id,\n header: field.label,\n align: field.type === 'number' ? 'right' : 'left',\n render: ({ row }) => cellText(row[field.id], field, l, formatters),\n className: field.type === 'number' ? 'tabular-nums' : undefined,\n }))\n return (\n <div className=\"space-y-1\">\n <div className=\"max-h-80 overflow-auto\">\n <DataTable\n columns={columns}\n rows={shown}\n getRowId={({ i }) => String(i)}\n area={testId ?? 'dashboard-panel'}\n emptyTitle={l.empty}\n className=\"border-0\"\n />\n </div>\n {rows.length > maxRows && (\n <p className=\"text-xs text-muted-foreground\">{l.showingRows(maxRows, rows.length)}</p>\n )}\n </div>\n )\n}\n\nfunction Message({\n tone,\n text,\n detail,\n action,\n testId,\n}: {\n tone: 'empty' | 'error'\n text: string\n detail?: string\n action?: ReactNode\n testId?: string\n}) {\n const Icon = tone === 'error' ? AlertTriangle : ChartNoAxesColumn\n return (\n <div\n className=\"flex min-h-40 flex-col items-center justify-center gap-2 py-6 text-center\"\n role={tone === 'error' ? 'alert' : undefined}\n data-testid={testId}\n >\n <Icon\n className={cn('size-6', tone === 'error' ? 'text-destructive' : 'text-muted-foreground/50')}\n />\n <p className={cn('text-sm', tone === 'error' ? 'text-destructive' : 'text-muted-foreground')}>\n {text}\n </p>\n {detail && <p className=\"max-w-sm text-xs text-muted-foreground\">{detail}</p>}\n {action}\n </div>\n )\n}\n\nexport function PanelView({\n kind,\n title,\n description,\n state,\n body,\n errorDetail,\n emptyAction,\n actions,\n metricAccent,\n variant = 'card',\n maxRows = 50,\n formatters,\n labels,\n className,\n testId,\n}: PanelViewProps) {\n const l = { ...DEFAULT_PANEL_VIEW_LABELS, ...labels }\n\n // A metric is the KPI tile itself.\n if (kind === 'metric') {\n const metric = body?.kind === 'metric' ? body : undefined\n const hint =\n state === 'error' ? (\n <span className=\"text-destructive\">\n {l.error}\n {errorDetail && ` ${errorDetail}`}\n </span>\n ) : state === 'empty' ? (\n l.empty\n ) : (\n description\n )\n return (\n <div className={cn('relative h-full', className)} data-slot=\"dashboard-panel\">\n <MetricCard\n label={title}\n value={\n metric && metric.value !== null && state === 'ready' ? metric.format(metric.value) : '—'\n }\n hint={hint}\n isLoading={state === 'loading'}\n accent={metricAccent}\n // The edit buttons sit in the corner: the label starts below them.\n className={cn('h-full', actions && 'pt-11')}\n testId={testId}\n />\n {actions && <div className=\"absolute right-2 top-2 flex gap-1\">{actions}</div>}\n </div>\n )\n }\n\n let content: ReactNode\n if (state === 'loading') {\n content = (\n <div className=\"h-60 animate-pulse rounded-md bg-muted\" data-slot=\"panel-loading\" aria-busy />\n )\n } else if (state === 'error') {\n content = (\n <Message\n tone=\"error\"\n text={l.error}\n detail={errorDetail}\n testId={testId && `${testId}-error`}\n />\n )\n } else if (state === 'empty' || !body || body.kind === 'metric') {\n content = (\n <Message\n tone=\"empty\"\n text={l.empty}\n action={emptyAction}\n testId={testId && `${testId}-empty`}\n />\n )\n } else if (body.kind === 'chart') {\n content = (\n <ChartRenderer\n model={body.model}\n ariaLabel={title}\n labels={l}\n testId={testId && `${testId}-chart`}\n />\n )\n } else if (body.kind === 'groups') {\n content = <ChartTable model={body.model} caption={title} />\n } else {\n content = (\n <RecordsTable\n fields={body.fields}\n rows={body.rows}\n maxRows={maxRows}\n l={l}\n formatters={formatters}\n testId={testId}\n />\n )\n }\n\n const header = (\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <h3 className=\"truncate text-sm font-semibold text-foreground\">{title}</h3>\n {description && <p className=\"mt-0.5 text-xs text-muted-foreground\">{description}</p>}\n </div>\n {actions && <div className=\"flex shrink-0 gap-1\">{actions}</div>}\n </div>\n )\n if (variant === 'plain') {\n return (\n <section\n className={cn('flex min-w-0 flex-col gap-3', className)}\n data-slot=\"dashboard-panel\"\n data-testid={testId}\n aria-busy={state === 'loading' || undefined}\n >\n {header}\n <div className=\"min-w-0\">{content}</div>\n </section>\n )\n }\n return (\n <Card\n variant=\"elevated\"\n className={cn('flex h-full min-w-0 flex-col gap-3 rounded-xl p-5', className)}\n data-slot=\"dashboard-panel\"\n data-testid={testId}\n aria-busy={state === 'loading' || undefined}\n >\n {header}\n <div className=\"min-w-0 flex-1\">{content}</div>\n </Card>\n )\n}\n","/**\n * `DashboardPanel`: one panel of a dashboard, from its `PanelSpec`. It looks its source up in the\n * host's registry (`useDataSources`), reads the dataset the spec asks for (`usePanelDataset`:\n * grouped and measured by the source) and shows it through `PanelView`.\n */\nimport { useMemo, type ReactNode } from 'react'\nimport {\n formatGbp,\n useDataSources,\n usePanelDataset,\n type DataSource,\n type PanelSpec,\n} from '@arbidocs/react'\nimport { Button } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { formatBytes } from '../storage/storage-labels'\nimport {\n chartModelOf,\n DEFAULT_UNIT_FORMATTERS,\n formatterOf,\n metricValueOf,\n type DrawnChartType,\n type UnitFormatters,\n} from '../../dashboards/chartModel'\nimport { PanelView, type PanelBody, type PanelViewLabels } from '../../dashboards/PanelView'\n\n/** The package's formatters: the one £ formatter for AI usage, and file sizes. */\nexport const PANEL_FORMATTERS: UnitFormatters = {\n ...DEFAULT_UNIT_FORMATTERS,\n gbp: (v) => formatGbp(v),\n bytes: (v) => formatBytes(v),\n}\n\nexport interface DashboardPanelLabels extends PanelViewLabels {\n /** A panel whose source the host does not offer. */\n unknownSource: (id: string) => string\n /** The empty state's link to the databases (where data is created or imported). */\n openDatabases: string\n}\n\nexport const DEFAULT_DASHBOARD_PANEL_LABELS: Partial<DashboardPanelLabels> = {\n unknownSource: (id) => `This panel reads “${id}”, which is not available here.`,\n openDatabases: 'Open databases',\n}\n\nexport interface DashboardPanelProps {\n panel: PanelSpec\n /** Buttons in the panel's corner (a dashboard being edited). */\n actions?: ReactNode\n /** Don't read data (an editor showing the panel's frame only). */\n enabled?: boolean\n /** `plain`: no card around it (a chart placed in a page). */\n variant?: 'card' | 'plain'\n formatters?: UnitFormatters\n labels?: Partial<DashboardPanelLabels>\n className?: string\n testId?: string\n}\n\nconst DRAWN = new Set(['bar', 'line', 'area', 'pie', 'donut'])\n\nfunction kindOf(panel: PanelSpec): 'metric' | 'chart' | 'table' {\n return panel.chart.type === 'metric' ? 'metric' : panel.chart.type === 'table' ? 'table' : 'chart'\n}\n\nfunction SourcePanel({\n source,\n panel,\n actions,\n enabled,\n variant,\n formatters,\n labels,\n className,\n testId,\n}: DashboardPanelProps & { source: DataSource; labels: Partial<DashboardPanelLabels> }) {\n const environment = useBlocksEnvironment()\n const { chart } = panel\n const { dataset, fields, isLoading, error } = usePanelDataset(\n source,\n panel.source.params,\n chart,\n { enabled }\n )\n const body = useMemo((): PanelBody | undefined => {\n if (!dataset) return undefined\n const other = labels.other\n if (chart.type === 'metric') {\n const valueField = dataset.fields.find((f) => f.id === 'value')\n // Nothing matched: a count or a sum of nothing is 0; an average of nothing has no value.\n const op = chart.aggregate ?? 'count'\n return {\n kind: 'metric',\n value: metricValueOf(dataset) ?? (op === 'count' || op === 'sum' ? 0 : null),\n format: formatterOf(valueField, formatters),\n }\n }\n if (DRAWN.has(chart.type)) {\n return {\n kind: 'chart',\n model: chartModelOf({ ...chart, type: chart.type as DrawnChartType }, dataset, {\n fields,\n formatters,\n otherLabel: other,\n }),\n }\n }\n if (chart.x) {\n return {\n kind: 'groups',\n model: chartModelOf({ ...chart, type: 'bar' }, dataset, {\n fields,\n formatters,\n otherLabel: other,\n }),\n }\n }\n const shown = chart.columns?.length\n ? chart.columns.flatMap((id) => dataset.fields.filter((f) => f.id === id))\n : dataset.fields\n return { kind: 'records', fields: shown, rows: dataset.rows }\n }, [dataset, chart, fields, formatters, labels.other])\n\n const state = error\n ? 'error'\n : !dataset\n ? isLoading\n ? 'loading'\n : 'empty'\n : chart.type !== 'metric' && dataset.rows.length === 0\n ? 'empty'\n : 'ready'\n\n const emptyAction =\n source.id === 'database' && environment.openDatabases ? (\n <Button variant=\"outline\" size=\"sm\" onClick={() => environment.openDatabases?.()}>\n {labels.openDatabases}\n </Button>\n ) : undefined\n\n return (\n <PanelView\n kind={kindOf(panel)}\n title={panel.title}\n description={panel.description}\n state={state}\n body={body}\n errorDetail={error instanceof Error ? error.message : undefined}\n emptyAction={emptyAction}\n actions={actions}\n variant={variant}\n formatters={formatters}\n labels={labels}\n className={className}\n testId={testId}\n />\n )\n}\n\nexport function DashboardPanel({\n formatters = PANEL_FORMATTERS,\n labels,\n ...props\n}: DashboardPanelProps) {\n const registry = useDataSources()\n const l = { ...DEFAULT_DASHBOARD_PANEL_LABELS, ...labels }\n const source = registry.get(props.panel.source.id)\n if (!source) {\n return (\n <PanelView\n kind={kindOf(props.panel)}\n title={props.panel.title}\n state=\"error\"\n errorDetail={l.unknownSource?.(props.panel.source.id)}\n actions={props.actions}\n labels={l}\n className={props.className}\n testId={props.testId}\n />\n )\n }\n // Keyed by source: a source's hooks differ from another's, so a new source mounts afresh.\n return (\n <SourcePanel key={source.id} source={source} formatters={formatters} labels={l} {...props} />\n )\n}\n","/**\n * `PanelEditor`: build a panel without code. Pick a source (and its parameters: a database, one of\n * its saved views), how to show it, then what to group by, split by and measure, from the source's\n * own fields. Every choice is a field of the `PanelSpec`, previewed live underneath.\n */\nimport { useId, useMemo, type ReactNode } from 'react'\nimport { Plus, X } from 'lucide-react'\nimport {\n useDataSources,\n type AggregateOp,\n type ChartSpec,\n type ChartType,\n type DataSource,\n type DataSourceParam,\n type DataSourceParams,\n type DatasetField,\n type DatasetFilter,\n type DatasetSort,\n type FilterOp,\n type PanelSpec,\n type TimeBucket,\n} from '@arbidocs/react'\nimport {\n Button,\n cn,\n Input,\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n} from '@arbidocs/react/ui'\nimport { clampPanelWidth } from '../../dashboards/DashboardGrid'\nimport { DashboardPanel } from './DashboardPanel'\n\nexport interface PanelEditorLabels {\n title: string\n description: string\n source: string\n showAs: string\n types: Record<ChartType, string>\n groupBy: string\n groupByNone: string\n /** A table without \"group by\" lists the records. */\n groupByRecords: string\n bucket: string\n buckets: Record<TimeBucket, string>\n splitBy: string\n splitByNone: string\n measure: string\n aggregates: Record<AggregateOp, string>\n ofField: string\n stacked: string\n sort: string\n sorts: Record<DatasetSort, string>\n limit: string\n /** A table of records: the fields shown. */\n columns: string\n orderBy: string\n orderNone: string\n directions: { asc: string; desc: string }\n width: string\n widths: Record<'3' | '4' | '6' | '8' | '12', string>\n filters: string\n addFilter: string\n removeFilter: string\n filterOps: Record<FilterOp, string>\n filterField: string\n filterOp: string\n filterValue: string\n noFields: string\n preview: string\n}\n\nexport const DEFAULT_PANEL_EDITOR_LABELS: PanelEditorLabels = {\n title: 'Title',\n description: 'Description',\n source: 'Data',\n showAs: 'Show as',\n types: {\n metric: 'Number',\n bar: 'Bar chart',\n line: 'Line chart',\n area: 'Area chart',\n pie: 'Pie chart',\n donut: 'Donut chart',\n table: 'Table',\n },\n groupBy: 'Group by',\n groupByNone: 'Choose a field',\n groupByRecords: 'Nothing: list the records',\n bucket: 'Per',\n buckets: { day: 'Day', week: 'Week', month: 'Month', quarter: 'Quarter', year: 'Year' },\n splitBy: 'Split by',\n splitByNone: 'Nothing',\n measure: 'Measure',\n aggregates: { count: 'Count', sum: 'Sum', avg: 'Average', min: 'Minimum', max: 'Maximum' },\n ofField: 'Of',\n stacked: 'Stack the series',\n sort: 'Order',\n sorts: { label: 'By name or date', 'value-desc': 'Largest first', 'value-asc': 'Smallest first' },\n limit: 'At most',\n columns: 'Columns',\n orderBy: 'Order by',\n orderNone: 'As read',\n directions: { asc: 'Ascending', desc: 'Descending' },\n width: 'Width',\n widths: { '3': 'Quarter', '4': 'Third', '6': 'Half', '8': 'Two thirds', '12': 'Full width' },\n filters: 'Only where',\n addFilter: 'Add a condition',\n removeFilter: 'Remove the condition',\n filterOps: {\n eq: 'is',\n neq: 'is not',\n contains: 'contains',\n gt: 'is above',\n gte: 'is at least',\n lt: 'is below',\n lte: 'is at most',\n empty: 'is empty',\n not_empty: 'is not empty',\n },\n filterField: 'Field',\n filterOp: 'Condition',\n filterValue: 'Value',\n noFields: 'Choose the data first.',\n preview: 'Preview',\n}\n\nexport interface PanelEditorProps {\n value: PanelSpec\n onChange: (panel: PanelSpec) => void\n /** Show the panel live under the form. Default true. */\n preview?: boolean\n /** Offer the width (a dashboard's grid). Default true. */\n showWidth?: boolean\n labels?: Partial<PanelEditorLabels>\n testId?: string\n}\n\n/** A select of the editor; `''` is \"nothing chosen\" (Radix items cannot take an empty value). */\nconst NONE = '__none'\n\nfunction Field({\n label,\n htmlFor,\n children,\n}: {\n label: string\n htmlFor?: string\n children: ReactNode\n}) {\n return (\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <Label htmlFor={htmlFor} className=\"text-xs font-medium text-muted-foreground\">\n {label}\n </Label>\n {children}\n </div>\n )\n}\n\nfunction EditorSelect({\n label,\n value,\n onChange,\n options,\n placeholder,\n none,\n testId,\n}: {\n label: string\n value: string | undefined\n onChange: (value: string | undefined) => void\n options: readonly { value: string; label: string }[]\n placeholder?: string\n /** Offer \"nothing\" with these words. */\n none?: string\n testId?: string\n}) {\n const id = useId()\n return (\n <Field label={label} htmlFor={id}>\n <div data-testid={testId}>\n <Select\n value={value ?? (none ? NONE : '')}\n onValueChange={(v) => onChange(v === NONE ? undefined : v)}\n >\n <SelectTrigger id={id} className=\"bg-card text-sm\" aria-label={label}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {none && <SelectItem value={NONE}>{none}</SelectItem>}\n {options.map((o) => (\n <SelectItem key={o.value} value={o.value}>\n {o.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </Field>\n )\n}\n\nfunction ParamField({\n param,\n params,\n onChange,\n testId,\n}: {\n param: DataSourceParam\n params: DataSourceParams\n onChange: (value: string | undefined) => void\n testId?: string\n}) {\n const { options } = param.useOptions(params)\n const value = params[param.id]\n return (\n <EditorSelect\n label={param.label}\n value={typeof value === 'string' && value ? value : undefined}\n onChange={onChange}\n options={options}\n placeholder={param.placeholder}\n none={param.required ? undefined : (param.placeholder ?? '—')}\n testId={testId}\n />\n )\n}\n\nconst WIDTHS = ['3', '4', '6', '8', '12'] as const\nconst NEEDS_VALUE = (op: FilterOp) => op !== 'empty' && op !== 'not_empty'\n\nfunction ChartFields({\n source,\n value,\n onChange,\n showWidth,\n l,\n testId,\n}: {\n source: DataSource\n value: PanelSpec\n onChange: (panel: PanelSpec) => void\n showWidth: boolean\n l: PanelEditorLabels\n testId?: string\n}) {\n const params = value.source.params ?? {}\n const { fields } = source.useFields(params)\n const chart = value.chart\n const setChart = (patch: Partial<ChartSpec>) =>\n onChange({ ...value, chart: { ...chart, ...patch } })\n const byId = useMemo(() => new Map(fields.map((f) => [f.id, f])), [fields])\n const groupable = fields.filter((f) => f.type !== 'number')\n const numbers = fields.filter((f) => f.type === 'number')\n const opts = (list: readonly DatasetField[]) => list.map((f) => ({ value: f.id, label: f.label }))\n const x = chart.x ? byId.get(chart.x) : undefined\n const aggregate = chart.aggregate ?? 'count'\n const isMetric = chart.type === 'metric'\n const isRecords = chart.type === 'table' && !chart.x\n const canSplit = chart.type === 'bar' || chart.type === 'line' || chart.type === 'area'\n const filters = chart.filters ?? []\n const setFilter = (i: number, patch: Partial<DatasetFilter>) =>\n setChart({ filters: filters.map((f, j) => (j === i ? { ...f, ...patch } : f)) })\n\n return (\n <>\n <EditorSelect\n label={l.showAs}\n value={chart.type}\n onChange={(type) => setChart({ type: (type ?? 'bar') as ChartType })}\n options={(Object.keys(l.types) as ChartType[]).map((t) => ({\n value: t,\n label: l.types[t],\n }))}\n testId={testId && `${testId}-type`}\n />\n {!isMetric && (\n <EditorSelect\n label={l.groupBy}\n value={chart.x}\n onChange={(x) => setChart({ x })}\n options={opts(groupable)}\n placeholder={l.groupByNone}\n none={chart.type === 'table' ? l.groupByRecords : undefined}\n testId={testId && `${testId}-x`}\n />\n )}\n {!isMetric && x?.type === 'date' && (\n <EditorSelect\n label={l.bucket}\n value={chart.bucket ?? 'month'}\n onChange={(bucket) => setChart({ bucket: (bucket ?? 'month') as TimeBucket })}\n options={(Object.keys(l.buckets) as TimeBucket[]).map((b) => ({\n value: b,\n label: l.buckets[b],\n }))}\n testId={testId && `${testId}-bucket`}\n />\n )}\n {canSplit && (\n <EditorSelect\n label={l.splitBy}\n value={chart.series}\n onChange={(series) => setChart({ series })}\n options={opts(groupable.filter((f) => f.id !== chart.x))}\n none={l.splitByNone}\n testId={testId && `${testId}-series`}\n />\n )}\n {!isRecords && (\n <div className=\"grid grid-cols-2 gap-3\">\n <EditorSelect\n label={l.measure}\n value={aggregate}\n onChange={(op) => {\n const next = (op ?? 'count') as AggregateOp\n setChart({\n aggregate: next,\n y: next === 'count' ? undefined : (chart.y ?? numbers[0]?.id),\n })\n }}\n options={(Object.keys(l.aggregates) as AggregateOp[])\n .filter((op) => op === 'count' || numbers.length > 0)\n .map((op) => ({ value: op, label: l.aggregates[op] }))}\n testId={testId && `${testId}-aggregate`}\n />\n {aggregate !== 'count' && (\n <EditorSelect\n label={l.ofField}\n value={chart.y}\n onChange={(y) => setChart({ y })}\n options={opts(numbers)}\n testId={testId && `${testId}-y`}\n />\n )}\n </div>\n )}\n {canSplit && chart.series && chart.type !== 'line' && (\n <label className=\"flex items-center gap-2 text-sm\">\n <Switch\n checked={Boolean(chart.stacked)}\n onCheckedChange={(stacked) => setChart({ stacked })}\n data-testid={testId && `${testId}-stacked`}\n />\n {l.stacked}\n </label>\n )}\n {!isMetric && !isRecords && (\n <div className=\"grid grid-cols-2 gap-3\">\n <EditorSelect\n label={l.sort}\n value={chart.sort ?? (x?.type === 'date' ? 'label' : 'value-desc')}\n onChange={(sort) => setChart({ sort: sort as DatasetSort })}\n options={(Object.keys(l.sorts) as DatasetSort[]).map((s) => ({\n value: s,\n label: l.sorts[s],\n }))}\n testId={testId && `${testId}-sort`}\n />\n <Field label={l.limit}>\n <Input\n type=\"number\"\n min={1}\n max={500}\n value={chart.limit ?? ''}\n placeholder=\"50\"\n onChange={(e) =>\n setChart({\n limit: e.target.value ? Math.max(1, Number(e.target.value)) : undefined,\n })\n }\n data-testid={testId && `${testId}-limit`}\n />\n </Field>\n </div>\n )}\n {isRecords && (\n <fieldset className=\"flex flex-col gap-1.5\" data-testid={testId && `${testId}-columns`}>\n <legend className=\"mb-1.5 text-xs font-medium text-muted-foreground\">{l.columns}</legend>\n {fields.map((field) => {\n const shown = chart.columns ?? fields.map((f) => f.id)\n const checked = shown.includes(field.id)\n return (\n <label key={field.id} className=\"flex items-center gap-2 text-sm\">\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={() =>\n setChart({\n columns: checked\n ? shown.filter((id) => id !== field.id)\n : fields\n .map((f) => f.id)\n .filter((id) => id === field.id || shown.includes(id)),\n })\n }\n />\n {field.label}\n </label>\n )\n })}\n </fieldset>\n )}\n {isRecords && (\n <div className=\"grid grid-cols-2 gap-3\">\n <EditorSelect\n label={l.orderBy}\n value={chart.orderBy?.field}\n onChange={(field) =>\n setChart({\n orderBy: field\n ? { field, direction: chart.orderBy?.direction ?? 'asc' }\n : undefined,\n })\n }\n options={opts(fields)}\n none={l.orderNone}\n testId={testId && `${testId}-order`}\n />\n {chart.orderBy && (\n <EditorSelect\n label={l.orderBy}\n value={chart.orderBy.direction ?? 'asc'}\n onChange={(direction) =>\n setChart({\n orderBy: {\n field: chart.orderBy?.field ?? '',\n direction: direction === 'desc' ? 'desc' : 'asc',\n },\n })\n }\n options={[\n { value: 'asc', label: l.directions.asc },\n { value: 'desc', label: l.directions.desc },\n ]}\n testId={testId && `${testId}-direction`}\n />\n )}\n </div>\n )}\n <div className=\"flex flex-col gap-2\" data-testid={testId && `${testId}-filters`}>\n <span className=\"text-xs font-medium text-muted-foreground\">{l.filters}</span>\n {filters.map((filter, i) => (\n <div key={i} className=\"grid grid-cols-[1fr_1fr_1fr_auto] items-end gap-2\">\n <EditorSelect\n label={l.filterField}\n value={filter.field}\n onChange={(field) => setFilter(i, { field: field ?? '' })}\n options={opts(fields)}\n />\n <EditorSelect\n label={l.filterOp}\n value={filter.op}\n onChange={(op) => setFilter(i, { op: (op ?? 'eq') as FilterOp })}\n options={(Object.keys(l.filterOps) as FilterOp[]).map((op) => ({\n value: op,\n label: l.filterOps[op],\n }))}\n />\n {NEEDS_VALUE(filter.op) ? (\n <Field label={l.filterValue}>\n <Input\n value={\n filter.value === null || filter.value === undefined ? '' : String(filter.value)\n }\n type={byId.get(filter.field)?.type === 'number' ? 'number' : 'text'}\n onChange={(e) =>\n setFilter(i, {\n value:\n byId.get(filter.field)?.type === 'number' && e.target.value !== ''\n ? Number(e.target.value)\n : e.target.value,\n })\n }\n />\n </Field>\n ) : (\n <span />\n )}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={l.removeFilter}\n onClick={() => setChart({ filters: filters.filter((_, j) => j !== i) })}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n ))}\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"self-start\"\n disabled={!fields.length}\n onClick={() =>\n setChart({ filters: [...filters, { field: fields[0]?.id ?? '', op: 'eq', value: '' }] })\n }\n >\n <Plus className=\"size-3.5\" /> {l.addFilter}\n </Button>\n </div>\n {showWidth && (\n <EditorSelect\n label={l.width}\n value={String(clampPanelWidth(value.width))}\n onChange={(w) => onChange({ ...value, width: Number(w ?? 6) })}\n options={WIDTHS.map((w) => ({ value: w, label: l.widths[w] }))}\n testId={testId && `${testId}-width`}\n />\n )}\n {!fields.length && <p className=\"text-sm text-muted-foreground\">{l.noFields}</p>}\n </>\n )\n}\n\nexport function PanelEditor({\n value,\n onChange,\n preview = true,\n showWidth = true,\n labels,\n testId,\n}: PanelEditorProps) {\n const l = { ...DEFAULT_PANEL_EDITOR_LABELS, ...labels }\n const registry = useDataSources()\n const source = registry.get(value.source.id)\n const params = value.source.params ?? {}\n const titleId = useId()\n const descriptionId = useId()\n\n return (\n <div\n className={cn(\n 'grid min-w-0 gap-6',\n preview && 'lg:grid-cols-[minmax(0,22rem)_minmax(0,1fr)]'\n )}\n data-testid={testId}\n >\n <div className=\"flex min-w-0 flex-col gap-4\">\n <Field label={l.title} htmlFor={titleId}>\n <Input\n id={titleId}\n value={value.title}\n onChange={(e) => onChange({ ...value, title: e.target.value })}\n data-testid={testId && `${testId}-title`}\n />\n </Field>\n <Field label={l.description} htmlFor={descriptionId}>\n <Input\n id={descriptionId}\n value={value.description ?? ''}\n onChange={(e) => onChange({ ...value, description: e.target.value || undefined })}\n />\n </Field>\n <EditorSelect\n label={l.source}\n value={value.source.id}\n onChange={(id) =>\n onChange({\n ...value,\n source: { id: id ?? value.source.id },\n // Another source has other fields: what was grouped and measured no longer applies.\n chart: { type: value.chart.type },\n })\n }\n options={registry.list.map((s) => ({ value: s.id, label: s.label }))}\n testId={testId && `${testId}-source`}\n />\n {source?.description && (\n <p className=\"-mt-2 text-xs text-muted-foreground\">{source.description}</p>\n )}\n {source?.params?.map((param) => (\n <ParamField\n key={`${source.id}-${param.id}`}\n param={param}\n params={params}\n testId={testId && `${testId}-param-${param.id}`}\n onChange={(v) =>\n onChange({\n ...value,\n source: { ...value.source, params: { ...params, [param.id]: v ?? null } },\n // A different database has other columns.\n ...(param.id === 'databaseId' || param.id === 'view'\n ? { chart: { type: value.chart.type } }\n : {}),\n })\n }\n />\n ))}\n {source && (\n <ChartFields\n key={source.id}\n source={source}\n value={value}\n onChange={onChange}\n showWidth={showWidth}\n l={l}\n testId={testId}\n />\n )}\n </div>\n {preview && (\n <div className=\"flex min-w-0 flex-col gap-2 self-start lg:sticky lg:top-0\">\n <span className=\"text-xs font-medium text-muted-foreground\">{l.preview}</span>\n <DashboardPanel panel={value} testId={testId && `${testId}-preview`} />\n </div>\n )}\n </div>\n )\n}\n"]}
|
|
@@ -42,6 +42,12 @@ var DEFAULT_UNIT_FORMATTERS = {
|
|
|
42
42
|
bytes: (v) => v < 1024 ? `${v} B` : v < 1024 ** 2 ? `${(v / 1024).toFixed(1)} KB` : v < 1024 ** 3 ? `${(v / 1024 ** 2).toFixed(1)} MB` : `${(v / 1024 ** 3).toFixed(1)} GB`,
|
|
43
43
|
tokens: formatCompact
|
|
44
44
|
};
|
|
45
|
+
function formatGbpTick(value) {
|
|
46
|
+
const abs = Math.abs(value);
|
|
47
|
+
if (abs >= 1e3) return `${value < 0 ? "-" : ""}\xA3${formatCompact(abs)}`;
|
|
48
|
+
const digits = abs === 0 || abs >= 1 ? 2 : Math.min(6, Math.max(2, -Math.floor(Math.log10(abs)) + 1));
|
|
49
|
+
return `${value < 0 ? "-" : ""}\xA3${abs.toLocaleString("en-GB", { maximumFractionDigits: digits })}`;
|
|
50
|
+
}
|
|
45
51
|
function formatterOf(field, formatters = DEFAULT_UNIT_FORMATTERS) {
|
|
46
52
|
const unit = field?.unit;
|
|
47
53
|
if (!unit) return (v) => plain.format(v);
|
|
@@ -123,9 +129,20 @@ function chartModelOf(spec, dataset, options = {}) {
|
|
|
123
129
|
xLabel: xField?.label ?? "",
|
|
124
130
|
valueLabel,
|
|
125
131
|
format,
|
|
126
|
-
formatTick: valueField?.unit === "gbp"
|
|
132
|
+
formatTick: valueField?.unit === "gbp" ? formatGbpTick : valueField?.unit === "bytes" ? format : formatCompact,
|
|
133
|
+
integer: series.every((s) => s.values.every((v) => v === null || Number.isInteger(v)))
|
|
127
134
|
};
|
|
128
135
|
}
|
|
136
|
+
function valueAxisWidth(model) {
|
|
137
|
+
const totals = model.categories.map(
|
|
138
|
+
(_, i) => model.stacked ? model.series.reduce((sum, s) => sum + Math.abs(s.values[i] ?? 0), 0) : Math.max(0, ...model.series.map((s) => Math.abs(s.values[i] ?? 0)))
|
|
139
|
+
);
|
|
140
|
+
const max = Math.max(0, ...totals);
|
|
141
|
+
const longest = Math.max(
|
|
142
|
+
...[1, 0.75, 0.5, 0.25, 0.15].map((f) => model.formatTick(max * f).length)
|
|
143
|
+
);
|
|
144
|
+
return Math.max(48, Math.ceil(longest * 6.5) + 10);
|
|
145
|
+
}
|
|
129
146
|
function sliceColors(model, otherLabel = "Other") {
|
|
130
147
|
return model.categories.map(
|
|
131
148
|
(c, i) => c === otherLabel && i === model.categories.length - 1 && i >= MAX_COLORED - 1 ? OTHER_COLOR : SERIES_COLORS[i % SERIES_COLORS.length]
|
|
@@ -139,6 +156,6 @@ function metricValueOf(dataset) {
|
|
|
139
156
|
}, null);
|
|
140
157
|
}
|
|
141
158
|
|
|
142
|
-
export { DEFAULT_UNIT_FORMATTERS, chartModelOf, formatBucketLabel, formatterOf, metricValueOf, sliceColors };
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
159
|
+
export { DEFAULT_UNIT_FORMATTERS, chartModelOf, formatBucketLabel, formatterOf, metricValueOf, sliceColors, valueAxisWidth };
|
|
160
|
+
//# sourceMappingURL=chunk-MIVNNQO3.js.map
|
|
161
|
+
//# sourceMappingURL=chunk-MIVNNQO3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/dashboards/chartModel.ts"],"names":["divisor"],"mappings":";AAeA,IAAM,CAAA,GAAI;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,GAAA,EAAK,KAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAqCO,IAAM,aAAA,GAAgB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,gBAAA,EAAmB,CAAC,CAAA,EAAA,CAAI,CAAA;AACzE,IAAM,WAAA,GAAc,8BAAA;AAE3B,IAAM,MAAA,GAAS,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAG3F,SAAS,iBAAA,CAAkB,GAAA,EAAa,MAAA,GAAqB,OAAA,EAAiB;AACnF,EAAA,IAAI,CAAA;AACJ,EAAA,IAAI,MAAA,KAAW,KAAA,KAAU,CAAA,GAAI,GAAA,CAAI,MAAM,2BAA2B,CAAA,CAAA;AAChE,IAAA,OAAO,GAAG,MAAA,CAAO,CAAA,CAAE,CAAC,CAAC,CAAC,IAAI,MAAA,CAAO,MAAA,CAAO,CAAA,CAAE,CAAC,CAAC,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AAC5D,EAAA,IAAI,WAAW,MAAA,KAAW,CAAA,GAAI,GAAA,CAAI,KAAA,CAAM,oBAAoB,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,MAAA,CAAO,EAAE,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AAC/F,EAAA,IAAI,MAAA,KAAW,OAAA,KAAY,CAAA,GAAI,GAAA,CAAI,MAAM,mBAAmB,CAAA,CAAA;AAC1D,IAAA,OAAO,CAAA,EAAG,MAAA,CAAO,MAAA,CAAO,CAAA,CAAE,CAAC,CAAC,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AAC5C,EAAA,IAAI,MAAA,KAAW,SAAA,KAAc,CAAA,GAAI,GAAA,CAAI,MAAM,iBAAiB,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AACvF,EAAA,OAAO,GAAA;AACT;AAEA,IAAM,KAAA,GAAQ,IAAI,IAAA,CAAK,YAAA,CAAa,SAAS,EAAE,qBAAA,EAAuB,GAAG,CAAA;AACzE,IAAM,UAAA,GAAa,IAAI,IAAA,CAAK,YAAA,CAAa,SAAS,EAAE,qBAAA,EAAuB,GAAG,CAAA;AAC9E,IAAM,aAAA,GAA6C;AAAA,EACjD,CAAC,MAAM,GAAG,CAAA;AAAA,EACV,CAAC,KAAK,GAAG,CAAA;AAAA,EACT,CAAC,KAAK,GAAG,CAAA;AAAA,EACT,CAAC,KAAK,GAAG;AACX,CAAA;AAMA,SAAS,cAAc,KAAA,EAAuB;AAC5C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA;AAC3B,EAAA,MAAM,EAAA,GAAK,cAAc,SAAA,CAAU,CAAC,CAACA,QAAO,CAAA,KAAM,QAAQA,QAAO,CAAA;AACjE,EAAA,IAAI,EAAA,KAAO,EAAA,EAAI,OAAO,UAAA,CAAW,OAAO,KAAK,CAAA;AAE7C,EAAA,MAAM,CAAC,SAAS,MAAM,CAAA,GACpB,KAAK,CAAA,IAAK,IAAA,CAAK,KAAA,CAAO,IAAA,GAAO,aAAA,CAAc,EAAE,EAAE,CAAC,CAAA,GAAK,EAAE,CAAA,GAAI,EAAA,IAAM,GAAA,GAC7D,cAAc,EAAA,GAAK,CAAC,CAAA,GACpB,aAAA,CAAc,EAAE,CAAA;AACtB,EAAA,OAAO,GAAG,UAAA,CAAW,MAAA,CAAO,QAAQ,OAAO,CAAC,GAAG,MAAM,CAAA,CAAA;AACvD;AAGO,IAAM,uBAAA,GAA0C;AAAA,EACrD,GAAA,EAAK,CAAC,CAAA,KACJ,CAAA,EAAG,IAAI,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,IAAA,EAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,CAAE,eAAe,OAAA,EAAS;AAAA,IACzD,qBAAA,EAAuB,MAAA,CAAO,SAAA,CAAU,CAAC,IAAI,CAAA,GAAI,CAAA;AAAA,IACjD,qBAAA,EAAuB;AAAA,GACxB,CAAC,CAAA,CAAA;AAAA,EACJ,KAAA,EAAO,CAAC,CAAA,KACN,CAAA,GAAI,OACA,CAAA,EAAG,CAAC,CAAA,EAAA,CAAA,GACJ,CAAA,GAAI,QAAQ,CAAA,GACV,CAAA,EAAA,CAAI,CAAA,GAAI,IAAA,EAAM,QAAQ,CAAC,CAAC,CAAA,GAAA,CAAA,GACxB,CAAA,GAAI,QAAQ,CAAA,GACV,CAAA,EAAA,CAAI,CAAA,GAAI,IAAA,IAAQ,GAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA,GAC7B,IAAI,CAAA,GAAI,IAAA,IAAQ,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AAAA,EACvC,MAAA,EAAQ;AACV;AAMO,SAAS,cAAc,KAAA,EAAuB;AACnD,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA;AAC1B,EAAA,IAAI,GAAA,IAAO,GAAA,EAAM,OAAO,CAAA,EAAG,KAAA,GAAQ,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,IAAA,EAAI,aAAA,CAAc,GAAG,CAAC,CAAA,CAAA;AACrE,EAAA,MAAM,MAAA,GACJ,QAAQ,CAAA,IAAK,GAAA,IAAO,IAAI,CAAA,GAAI,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAG,CAAC,KAAK,KAAA,CAAM,IAAA,CAAK,MAAM,GAAG,CAAC,CAAA,GAAI,CAAC,CAAC,CAAA;AACvF,EAAA,OAAO,CAAA,EAAG,KAAA,GAAQ,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,IAAA,EAAI,GAAA,CAAI,cAAA,CAAe,OAAA,EAAS,EAAE,qBAAA,EAAuB,MAAA,EAAQ,CAAC,CAAA,CAAA;AAClG;AAGO,SAAS,WAAA,CACd,KAAA,EACA,UAAA,GAA6B,uBAAA,EACF;AAC3B,EAAA,MAAM,OAAO,KAAA,EAAO,IAAA;AACpB,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA,KAAM,KAAA,CAAM,OAAO,CAAC,CAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,IAAI,CAAA,IAAK,wBAAwB,IAAI,CAAA;AAC9D,EAAA,OAAO,KAAA,KAAU,CAAC,CAAA,KAAM,CAAA,EAAG,MAAM,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AACpD;AAGO,IAAM,cAAc,aAAA,CAAc,MAAA;AAEzC,IAAM,QAAA,GAAW,CAAC,IAAA,KAAA,CACf,IAAA,CAAK,aAAa,OAAA,MAAa,OAAA,IAAW,KAAK,SAAA,KAAc,KAAA;AAEhE,IAAM,MAAM,CAAC,CAAA,KAAiC,OAAO,CAAA,KAAM,WAAW,CAAA,GAAI,IAAA;AAcnE,SAAS,YAAA,CACd,IAAA,EACA,OAAA,EACA,OAAA,GAA6B,EAAC,EAClB;AACZ,EAAA,MAAM,KAAA,GAAQ,QAAQ,UAAA,IAAc,OAAA;AACpC,EAAA,MAAM,UAAA,GAAa,QAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,CAAA,CAAE,KAAK,CAAA;AAC9D,EAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,IAAA,CAAK,CAAC,CAAA;AAC1D,EAAA,MAAM,MAAA,GAAS,QAAQ,IAAA,KAAS,MAAA;AAChC,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAoB;AACvC,EAAA,MAAM,YAAsB,EAAC;AAC7B,EAAA,MAAM,KAAA,uBAAY,GAAA,EAA2B;AAC7C,EAAA,KAAA,MAAW,GAAA,IAAO,QAAQ,IAAA,EAAM;AAC9B,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,GAAG,KAAK,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,IAAK,EAAE,CAAA;AACnD,IAAA,IAAI,CAAC,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA,EAAG;AACpB,MAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,MAAA,MAAM,QAAQ,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,KAAK,KAAK,GAAG,CAAA;AACxC,MAAA,MAAA,CAAO,GAAA,CAAI,KAAK,MAAA,IAAU,GAAA,GAAM,kBAAkB,GAAA,EAAK,IAAA,CAAK,MAAM,CAAA,GAAI,KAAK,CAAA;AAAA,IAC7E;AACA,IAAA,MAAM,CAAA,GAAI,GAAA,CAAI,CAAA,CAAE,MAAM,CAAA,KAAM,MAAA,GAAY,EAAA,GAAK,MAAA,CAAO,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AACjE,IAAA,IAAI,CAAC,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,EAAG,SAAA,CAAU,KAAK,CAAC,CAAA;AAC5C,IAAA,KAAA,CAAM,GAAA,CAAI,CAAA,EAAG,GAAG,CAAA,EAAA,EAAS,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,EACjD;AACA,EAAA,MAAM,UAAA,GAAa,YAAY,KAAA,IAAS,OAAA;AACxC,EAAA,IAAI,MAAA,GAAS,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACjC,EAAA,EAAI,KAAK,CAAA,CAAE,KAAA;AAAA,IACX,OAAO,CAAA,IAAK,UAAA;AAAA,IACZ,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,KAAA,CAAM,GAAA,CAAI,CAAA,EAAG,CAAC,CAAA,EAAA,EAAS,CAAC,CAAA,CAAE,KAAK,IAAI;AAAA,GAC7D,CAAE,CAAA;AACF,EAAA,IAAI,UAAA,GAAa,KAAK,GAAA,CAAI,CAAC,MAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,IAAK,CAAC,CAAA;AACnD,EAAA,MAAM,GAAA,GAAM,CAAC,MAAA,KAA8B,MAAA,CAAO,MAAA,CAAe,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,IAAK,CAAA,IAAK,CAAA,CAAA,EAAI,CAAC,CAAA;AAE1F,EAAA,IAAI,IAAA,CAAK,IAAA,KAAS,KAAA,IAAS,IAAA,CAAK,SAAS,OAAA,EAAS;AAChD,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,CAAC,CAAA,EAAG,UAAU,EAAC;AACrC,IAAA,IAAI,UAAA,CAAW,SAAS,WAAA,EAAa;AACnC,MAAA,MAAM,QAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAA,CAAO,OAAO,CAAC,CAAA,IAAK,MAAM,MAAA,CAAO,CAAC,KAAK,CAAA,CAAE,CAAA;AACxF,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,cAAc,CAAC,CAAA;AAC3C,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,WAAA,GAAc,CAAC,CAAA;AACxC,MAAA,UAAA,GAAa,CAAC,GAAG,IAAA,CAAK,IAAI,CAAC,CAAA,KAAM,WAAW,CAAC,CAAC,CAAA,EAAG,GAAI,SAAS,IAAI,CAAA,GAAI,CAAC,KAAK,CAAA,GAAI,EAAG,CAAA;AACnF,MAAA,MAAM,aAAa,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5C,MAAA,MAAA,GAAS;AAAA,QACP;AAAA,UACE,GAAG,OAAO,CAAC,CAAA;AAAA,UACX,QAAQ,QAAA,CAAS,IAAI,CAAA,GAAI,CAAC,GAAG,UAAA,EAAY,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,CAAC,CAAC,CAAC,CAAC,CAAA,GAAI;AAAA;AAC9E,OACF;AAAA,IACF;AAAA,EACF,CAAA,MAAA,IAAW,MAAA,CAAO,MAAA,GAAS,WAAA,EAAa;AACtC,IAAA,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,GAAA,CAAI,EAAE,MAAM,CAAA,GAAI,GAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AACtE,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,cAAc,CAAC,CAAA;AAC3C,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,WAAA,GAAc,CAAC,CAAA;AACxC,IAAA,MAAA,GAAS;AAAA,MACP,GAAG,OAAO,MAAA,CAAO,CAAC,MAAM,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,MACxC,GAAI,QAAA,CAAS,IAAI,CAAA,GACb;AAAA,QACE;AAAA,UACE,EAAA,EAAI,SAAA;AAAA,UACJ,KAAA,EAAO,KAAA;AAAA,UACP,QAAQ,IAAA,CAAK,GAAA;AAAA,YAAI,CAAC,GAAG,CAAA,KACnB,IAAA,CAAK,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,IAAI,CAAA,GAAI,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,GAAI;AAAA;AAC/E;AACF,UAEF;AAAC,KACP;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,UAAA,EAAY,OAAA,CAAQ,UAAU,CAAA;AACzD,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,OAAA,EAAS,QAAQ,IAAA,CAAK,OAAO,MAAM,IAAA,CAAK,IAAA,KAAS,KAAA,IAAS,IAAA,CAAK,IAAA,KAAS,MAAA,CAAA;AAAA,IACxE,UAAA;AAAA,IACA,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,GAAG,CAAA,MAAO;AAAA,MAC5B,GAAG,CAAA;AAAA,MACH,KAAA,EAAO,EAAE,EAAA,KAAO,SAAA,GAAY,cAAc,aAAA,CAAc,CAAA,GAAI,cAAc,MAAM;AAAA,KAClF,CAAE,CAAA;AAAA,IACF,MAAA,EAAQ,QAAQ,KAAA,IAAS,EAAA;AAAA,IACzB,UAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA,EACE,YAAY,IAAA,KAAS,KAAA,GACjB,gBACA,UAAA,EAAY,IAAA,KAAS,UACnB,MAAA,GACA,aAAA;AAAA,IACR,SAAS,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,KAAM,EAAE,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,KAAM,MAAM,IAAA,IAAQ,MAAA,CAAO,SAAA,CAAU,CAAC,CAAC,CAAC;AAAA,GACvF;AACF;AAMO,SAAS,eAAe,KAAA,EAA2B;AACxD,EAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW,GAAA;AAAA,IAAI,CAAC,CAAA,EAAG,CAAA,KACtC,KAAA,CAAM,OAAA,GACF,MAAM,MAAA,CAAO,MAAA,CAAO,CAAC,GAAA,EAAK,MAAM,GAAA,GAAM,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,IAAK,CAAC,CAAA,EAAG,CAAC,IACnE,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,KAAA,CAAM,OAAO,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,IAAK,CAAC,CAAC,CAAC;AAAA,GACxE;AACA,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,MAAM,CAAA;AACjC,EAAA,MAAM,UAAU,IAAA,CAAK,GAAA;AAAA,IACnB,GAAG,CAAC,CAAA,EAAG,IAAA,EAAM,GAAA,EAAK,MAAM,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,KAAA,CAAM,UAAA,CAAW,GAAA,GAAM,CAAC,EAAE,MAAM;AAAA,GAC3E;AACA,EAAA,OAAO,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA,CAAK,KAAK,OAAA,GAAU,GAAG,IAAI,EAAE,CAAA;AACnD;AAGO,SAAS,WAAA,CAAY,KAAA,EAAuC,UAAA,GAAa,OAAA,EAAS;AACvF,EAAA,OAAO,MAAM,UAAA,CAAW,GAAA;AAAA,IAAI,CAAC,CAAA,EAAG,CAAA,KAC9B,CAAA,KAAM,UAAA,IAAc,MAAM,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAA,IAAK,KAAK,WAAA,GAAc,CAAA,GACxE,cACA,aAAA,CAAc,CAAA,GAAI,cAAc,MAAM;AAAA,GAC5C;AACF;AAGO,SAAS,cAAc,OAAA,EAA6C;AACzE,EAAA,IAAI,CAAC,OAAA,EAAS,IAAA,CAAK,MAAA,EAAQ,OAAO,IAAA;AAClC,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAsB,CAAC,OAAO,GAAA,KAAQ;AACxD,IAAA,MAAM,CAAA,GAAI,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1B,IAAA,OAAO,CAAA,KAAM,IAAA,GAAO,KAAA,GAAA,CAAS,KAAA,IAAS,CAAA,IAAK,CAAA;AAAA,EAC7C,GAAG,IAAI,CAAA;AACT","file":"chunk-MIVNNQO3.js","sourcesContent":["/**\n * The renderer adapter's first half: a `ChartSpec` and its aggregated `Dataset` (long form: a row\n * per group and series) become a `ChartModel`, the categories and series a drawing component plots.\n * Nothing here knows the drawing library, so it can change without touching specs or sources.\n */\nimport type {\n AGGREGATE_FIELDS,\n ChartSpec,\n Dataset,\n DatasetField,\n DatasetValue,\n TimeBucket,\n} from '@arbidocs/react'\n\n/** The aggregated dataset's field ids (`@arbidocs/react`'s `AGGREGATE_FIELDS`, checked). */\nconst F = {\n group: 'group',\n key: 'key',\n series: 'series',\n value: 'value',\n} as const satisfies typeof AGGREGATE_FIELDS\n\n/** The drawing types (a metric and a table are not drawn). */\nexport type DrawnChartType = 'bar' | 'line' | 'area' | 'pie' | 'donut'\n\nexport interface ChartModelSeries {\n id: string\n label: string\n /** One per category; `null` where the group has no value. */\n values: (number | null)[]\n /** The series' colour as a CSS value (a theme token). */\n color: string\n}\n\n/** What a chart plots, library-free. */\nexport interface ChartModel {\n type: DrawnChartType\n stacked: boolean\n /** Category labels, in order (x axis, or pie slices). */\n categories: string[]\n series: ChartModelSeries[]\n /** The x axis's name (the grouped field). */\n xLabel: string\n /** The value's name (\"count\", \"sum of Fee\"). */\n valueLabel: string\n /** Formats a value for ticks, the tooltip and the table. */\n format: (value: number) => string\n /** Short form of `format` for axis ticks. */\n formatTick: (value: number) => string\n /** Every value is a whole number (a count, a sum of counts): the value axis has no 0.5 ticks. */\n integer: boolean\n}\n\n/** Formats by unit (`gbp`, `bytes`, `tokens`, …); a host passes its own (the SDK's £ formatter). */\nexport type UnitFormatters = Readonly<Record<string, (value: number) => string>>\n\n/** The theme's series colours, then a muted \"Other\". */\nexport const SERIES_COLORS = [1, 2, 3, 4, 5].map((i) => `hsl(var(--chart-${i}))`)\nexport const OTHER_COLOR = 'hsl(var(--muted-foreground))'\n\nconst MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n\n/** A date bucket key as people read it: \"12 Jun 2026\", \"W24 2026\", \"Jun 2026\", \"Q2 2026\", \"2026\". */\nexport function formatBucketLabel(key: string, bucket: TimeBucket = 'month'): string {\n let m: RegExpMatchArray | null\n if (bucket === 'day' && (m = key.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/)))\n return `${Number(m[3])} ${MONTHS[Number(m[2]) - 1]} ${m[1]}`\n if (bucket === 'week' && (m = key.match(/^(\\d{4})-W(\\d{2})$/))) return `W${Number(m[2])} ${m[1]}`\n if (bucket === 'month' && (m = key.match(/^(\\d{4})-(\\d{2})$/)))\n return `${MONTHS[Number(m[2]) - 1]} ${m[1]}`\n if (bucket === 'quarter' && (m = key.match(/^(\\d{4})-Q(\\d)$/))) return `Q${m[2]} ${m[1]}`\n return key\n}\n\nconst plain = new Intl.NumberFormat('en-GB', { maximumFractionDigits: 2 })\nconst oneDecimal = new Intl.NumberFormat('en-GB', { maximumFractionDigits: 1 })\nconst COMPACT_UNITS: readonly [number, string][] = [\n [1e12, 'T'],\n [1e9, 'B'],\n [1e6, 'M'],\n [1e3, 'K'],\n]\n\n/**\n * A number in fixed suffixes (950, 1.2K, 1.5M, 3B), the same in every browser and runtime:\n * `Intl`'s compact notation follows the ICU data, which writes \"1.5m\" in some versions.\n */\nfunction formatCompact(value: number): string {\n const size = Math.abs(value)\n const at = COMPACT_UNITS.findIndex(([divisor]) => size >= divisor)\n if (at === -1) return oneDecimal.format(value)\n // 999,950 rounds to \"1000K\": the next suffix up reads it.\n const [divisor, suffix] =\n at > 0 && Math.round((size / COMPACT_UNITS[at][0]) * 10) / 10 >= 1000\n ? COMPACT_UNITS[at - 1]\n : COMPACT_UNITS[at]\n return `${oneDecimal.format(value / divisor)}${suffix}`\n}\n\n/** The default formatters: £ with pence, bytes in KB/MB/GB, tokens compact. */\nexport const DEFAULT_UNIT_FORMATTERS: UnitFormatters = {\n gbp: (v) =>\n `${v < 0 ? '-' : ''}£${Math.abs(v).toLocaleString('en-GB', {\n minimumFractionDigits: Number.isInteger(v) ? 0 : 2,\n maximumFractionDigits: 2,\n })}`,\n bytes: (v) =>\n v < 1024\n ? `${v} B`\n : v < 1024 ** 2\n ? `${(v / 1024).toFixed(1)} KB`\n : v < 1024 ** 3\n ? `${(v / 1024 ** 2).toFixed(1)} MB`\n : `${(v / 1024 ** 3).toFixed(1)} GB`,\n tokens: formatCompact,\n}\n\n/**\n * A £ axis tick with the pence it needs: £0.0025 where every amount is under a penny (where the\n * display form says \"<£0.01\" on every tick), £12.5 and £1.2K above.\n */\nexport function formatGbpTick(value: number): string {\n const abs = Math.abs(value)\n if (abs >= 1000) return `${value < 0 ? '-' : ''}£${formatCompact(abs)}`\n const digits =\n abs === 0 || abs >= 1 ? 2 : Math.min(6, Math.max(2, -Math.floor(Math.log10(abs)) + 1))\n return `${value < 0 ? '-' : ''}£${abs.toLocaleString('en-GB', { maximumFractionDigits: digits })}`\n}\n\n/** The formatter of a value field: by its unit, a suffix for any other unit, else a number. */\nexport function formatterOf(\n field: Pick<DatasetField, 'unit'> | undefined,\n formatters: UnitFormatters = DEFAULT_UNIT_FORMATTERS\n): (value: number) => string {\n const unit = field?.unit\n if (!unit) return (v) => plain.format(v)\n const known = formatters[unit] ?? DEFAULT_UNIT_FORMATTERS[unit]\n return known ?? ((v) => `${plain.format(v)} ${unit}`)\n}\n\n/** The most series (or pie slices) drawn in their own colour; the rest fold into \"Other\". */\nexport const MAX_COLORED = SERIES_COLORS.length\n\nconst additive = (spec: ChartSpec) =>\n (spec.aggregate ?? 'count') === 'count' || spec.aggregate === 'sum'\n\nconst num = (v: DatasetValue | undefined) => (typeof v === 'number' ? v : null)\n\nexport interface ChartModelOptions {\n /** The source's fields, for the x axis's name. */\n fields?: readonly DatasetField[]\n formatters?: UnitFormatters\n /** The words for the folded series and slices. Default \"Other\". */\n otherLabel?: string\n}\n\n/**\n * Turn an aggregated dataset into what a chart plots. Series (and pie slices) beyond the theme's\n * colours fold into \"Other\" when the values add up (count, sum); otherwise the smallest are left out.\n */\nexport function chartModelOf(\n spec: ChartSpec & { type: DrawnChartType },\n dataset: Dataset,\n options: ChartModelOptions = {}\n): ChartModel {\n const other = options.otherLabel ?? 'Other'\n const valueField = dataset.fields.find((f) => f.id === F.value)\n const xField = options.fields?.find((f) => f.id === spec.x)\n const isDate = xField?.type === 'date'\n const keys: string[] = []\n const labels = new Map<string, string>()\n const seriesIds: string[] = []\n const cells = new Map<string, number | null>()\n for (const row of dataset.rows) {\n const key = String(row[F.key] ?? row[F.group] ?? '')\n if (!labels.has(key)) {\n keys.push(key)\n const label = String(row[F.group] ?? key)\n labels.set(key, isDate && key ? formatBucketLabel(key, spec.bucket) : label)\n }\n const s = row[F.series] === undefined ? '' : String(row[F.series])\n if (!seriesIds.includes(s)) seriesIds.push(s)\n cells.set(`${key}\\u0000${s}`, num(row[F.value]))\n }\n const valueLabel = valueField?.label ?? 'value'\n let series = seriesIds.map((s) => ({\n id: s || F.value,\n label: s || valueLabel,\n values: keys.map((k) => cells.get(`${k}\\u0000${s}`) ?? null),\n }))\n let categories = keys.map((k) => labels.get(k) ?? k)\n const sum = (values: (number | null)[]) => values.reduce<number>((a, v) => a + (v ?? 0), 0)\n\n if (spec.type === 'pie' || spec.type === 'donut') {\n const values = series[0]?.values ?? []\n if (categories.length > MAX_COLORED) {\n const order = values.map((_, i) => i).sort((a, b) => (values[b] ?? 0) - (values[a] ?? 0))\n const kept = order.slice(0, MAX_COLORED - 1)\n const rest = order.slice(MAX_COLORED - 1)\n categories = [...kept.map((i) => categories[i]), ...(additive(spec) ? [other] : [])]\n const keptValues = kept.map((i) => values[i])\n series = [\n {\n ...series[0],\n values: additive(spec) ? [...keptValues, sum(rest.map((i) => values[i]))] : keptValues,\n },\n ]\n }\n } else if (series.length > MAX_COLORED) {\n const order = [...series].sort((a, b) => sum(b.values) - sum(a.values))\n const kept = order.slice(0, MAX_COLORED - 1)\n const rest = order.slice(MAX_COLORED - 1)\n series = [\n ...series.filter((s) => kept.includes(s)),\n ...(additive(spec)\n ? [\n {\n id: '__other',\n label: other,\n values: keys.map((_, i) =>\n rest.some((s) => s.values[i] !== null) ? sum(rest.map((s) => s.values[i])) : null\n ),\n },\n ]\n : []),\n ]\n }\n\n const format = formatterOf(valueField, options.formatters)\n return {\n type: spec.type,\n stacked: Boolean(spec.stacked) && (spec.type === 'bar' || spec.type === 'area'),\n categories,\n series: series.map((s, i) => ({\n ...s,\n color: s.id === '__other' ? OTHER_COLOR : SERIES_COLORS[i % SERIES_COLORS.length],\n })),\n xLabel: xField?.label ?? '',\n valueLabel,\n format,\n formatTick:\n valueField?.unit === 'gbp'\n ? formatGbpTick\n : valueField?.unit === 'bytes'\n ? format\n : formatCompact,\n integer: series.every((s) => s.values.every((v) => v === null || Number.isInteger(v))),\n }\n}\n\n/**\n * The value axis's width: room for its longest tick (at 11px, about 6.5px a character), at least\n * 48px. Ticks fall within the largest value (a stack's total), so its fractions stand for them.\n */\nexport function valueAxisWidth(model: ChartModel): number {\n const totals = model.categories.map((_, i) =>\n model.stacked\n ? model.series.reduce((sum, s) => sum + Math.abs(s.values[i] ?? 0), 0)\n : Math.max(0, ...model.series.map((s) => Math.abs(s.values[i] ?? 0)))\n )\n const max = Math.max(0, ...totals)\n const longest = Math.max(\n ...[1, 0.75, 0.5, 0.25, 0.15].map((f) => model.formatTick(max * f).length)\n )\n return Math.max(48, Math.ceil(longest * 6.5) + 10)\n}\n\n/** The pie slice colours (one per category; \"Other\" muted). */\nexport function sliceColors(model: Pick<ChartModel, 'categories'>, otherLabel = 'Other') {\n return model.categories.map((c, i) =>\n c === otherLabel && i === model.categories.length - 1 && i >= MAX_COLORED - 1\n ? OTHER_COLOR\n : SERIES_COLORS[i % SERIES_COLORS.length]\n )\n}\n\n/** The single value of a metric (an aggregated dataset with one group), or null. */\nexport function metricValueOf(dataset: Dataset | undefined): number | null {\n if (!dataset?.rows.length) return null\n return dataset.rows.reduce<number | null>((total, row) => {\n const v = num(row[F.value])\n return v === null ? total : (total ?? 0) + v\n }, null)\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunk7V6APLF7_cjs = require('./chunk-7V6APLF7.cjs');
|
|
5
5
|
var chunk7JLJH5CW_cjs = require('./chunk-7JLJH5CW.cjs');
|
|
6
6
|
var chunk5F4DCIHS_cjs = require('./chunk-5F4DCIHS.cjs');
|
|
7
7
|
var chunk75BNMCUX_cjs = require('./chunk-75BNMCUX.cjs');
|
|
@@ -34,8 +34,8 @@ function useSlashField({
|
|
|
34
34
|
send
|
|
35
35
|
}) {
|
|
36
36
|
const { openSkillsBrowser } = chunkWGWP4ATS_cjs.useBlocksEnvironment();
|
|
37
|
-
const { slashToken, filteredItems, isOpen, canBrowseSkills } =
|
|
38
|
-
const slashWorkflows =
|
|
37
|
+
const { slashToken, filteredItems, isOpen, canBrowseSkills } = chunk7V6APLF7_cjs.useSlashItems(text, chunk7JLJH5CW_cjs.BUILTIN_SKILLS);
|
|
38
|
+
const slashWorkflows = chunk7V6APLF7_cjs.useSlashSkillWorkflows({ landing, send });
|
|
39
39
|
const insert = (item) => {
|
|
40
40
|
if (slashWorkflows.openFor(item)) {
|
|
41
41
|
setText("");
|
|
@@ -86,5 +86,5 @@ exports.DEFAULT_ASK_SUGGESTIONS = DEFAULT_ASK_SUGGESTIONS;
|
|
|
86
86
|
exports.DEFAULT_DOCUMENT_VIEWER_LABELS = DEFAULT_DOCUMENT_VIEWER_LABELS;
|
|
87
87
|
exports.DEFAULT_DOCUMENT_VIEWER_TABS = DEFAULT_DOCUMENT_VIEWER_TABS;
|
|
88
88
|
exports.useSlashField = useSlashField;
|
|
89
|
-
//# sourceMappingURL=chunk-
|
|
90
|
-
//# sourceMappingURL=chunk-
|
|
89
|
+
//# sourceMappingURL=chunk-MNFI66H5.cjs.map
|
|
90
|
+
//# sourceMappingURL=chunk-MNFI66H5.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/viewer/documentViewerTabs.ts","../src/connection/ask/useSlashField.tsx"],"names":["useBlocksEnvironment","useSlashItems","BUILTIN_SKILLS","useSlashSkillWorkflows","useListKeyNav","jsx","SlashMenu"],"mappings":";;;;;;;;;;AASO,IAAM,4BAAA,GAA6D;AAAA,EACxE,QAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF;AAaO,IAAM,8BAAA,GAAuE;AAAA,EAClF,MAAA,EAAQ,QAAA;AAAA,EACR,QAAA,EAAU,UAAA;AAAA,EACV,GAAA,EAAK,QAAA;AAAA,EACL,QAAA,EACE,4GAAA;AAAA,EACF,cAAA,EAAgB;AAClB;AAEO,IAAM,uBAAA,GAA6C;AAAA,EACxD,0BAAA;AAAA,EACA,0CAAA;AAAA,EACA;AACF;ACHO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAIA,sCAAA,EAAqB;AACnD,EAAA,MAAM,EAAE,YAAY,aAAA,EAAe,MAAA,EAAQ,iBAAgB,GAAIC,+BAAA,CAAc,MAAMC,gCAAc,CAAA;AACjG,EAAA,MAAM,cAAA,GAAiBC,wCAAA,CAAuB,EAAE,OAAA,EAAS,MAAM,CAAA;AAE/D,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAwB;AACtC,IAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,IAAI,CAAA,EAAG;AAChC,MAAA,OAAA,CAAQ,EAAE,CAAA;AACV,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,CAAA,CAAA;AAC1B,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,KAAA,CAAM,KAAA,EAAM;AACZ,MAAA,KAAA,CAAM,iBAAA,CAAkB,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,WAAWC,+BAAA,CAAc;AAAA,IAC7B,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,aAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,MAAM,OAAA,CAAQ,EAAE,CAAA;AAAA,IAC3B,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,OAAO;AAAA,IACL,UAAU,cAAA,CAAe,QAAA;AAAA,IACzB,WAAW,CAAC,KAAA,KAAsC,KAAK,QAAA,CAAS,cAAc,KAAK,CAAA;AAAA,IACnF,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,WAAA,EAAa,CAAC,QAAA,KAA8B;AAC1C,MAAA,IAAI,CAAC,cAAA,CAAe,YAAA,CAAa,QAAQ,GAAG,OAAO,KAAA;AACnD,MAAA,OAAA,CAAQ,EAAE,CAAA;AACV,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,IAAA,kBACEC,cAAA;AAAA,MAACC,2BAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,MAAA;AAAA,QACN,SAAA,EAAU,OAAA;AAAA,QACV,KAAA,EAAO,aAAA;AAAA,QACP,eAAe,QAAA,CAAS,aAAA;AAAA,QACxB,kBAAkB,QAAA,CAAS,gBAAA;AAAA,QAC3B,WAAW,QAAA,CAAS,SAAA;AAAA,QACpB,QAAA,EAAU,MAAA;AAAA,QACV,QAAA,EAAU,eAAA,IAAmB,iBAAA,GAAoB,MAAM,mBAAkB,GAAI;AAAA;AAAA;AAC/E,GAEJ;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/connection/viewer/documentViewerTabs.ts","../src/connection/ask/useSlashField.tsx"],"names":["useBlocksEnvironment","useSlashItems","BUILTIN_SKILLS","useSlashSkillWorkflows","useListKeyNav","jsx","SlashMenu"],"mappings":";;;;;;;;;;AASO,IAAM,4BAAA,GAA6D;AAAA,EACxE,QAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF;AAaO,IAAM,8BAAA,GAAuE;AAAA,EAClF,MAAA,EAAQ,QAAA;AAAA,EACR,QAAA,EAAU,UAAA;AAAA,EACV,GAAA,EAAK,QAAA;AAAA,EACL,QAAA,EACE,4GAAA;AAAA,EACF,cAAA,EAAgB;AAClB;AAEO,IAAM,uBAAA,GAA6C;AAAA,EACxD,0BAAA;AAAA,EACA,0CAAA;AAAA,EACA;AACF;ACHO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAIA,sCAAA,EAAqB;AACnD,EAAA,MAAM,EAAE,YAAY,aAAA,EAAe,MAAA,EAAQ,iBAAgB,GAAIC,+BAAA,CAAc,MAAMC,gCAAc,CAAA;AACjG,EAAA,MAAM,cAAA,GAAiBC,wCAAA,CAAuB,EAAE,OAAA,EAAS,MAAM,CAAA;AAE/D,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAwB;AACtC,IAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,IAAI,CAAA,EAAG;AAChC,MAAA,OAAA,CAAQ,EAAE,CAAA;AACV,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,CAAA,CAAA;AAC1B,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,KAAA,CAAM,KAAA,EAAM;AACZ,MAAA,KAAA,CAAM,iBAAA,CAAkB,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,WAAWC,+BAAA,CAAc;AAAA,IAC7B,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,aAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,MAAM,OAAA,CAAQ,EAAE,CAAA;AAAA,IAC3B,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,OAAO;AAAA,IACL,UAAU,cAAA,CAAe,QAAA;AAAA,IACzB,WAAW,CAAC,KAAA,KAAsC,KAAK,QAAA,CAAS,cAAc,KAAK,CAAA;AAAA,IACnF,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,WAAA,EAAa,CAAC,QAAA,KAA8B;AAC1C,MAAA,IAAI,CAAC,cAAA,CAAe,YAAA,CAAa,QAAQ,GAAG,OAAO,KAAA;AACnD,MAAA,OAAA,CAAQ,EAAE,CAAA;AACV,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,IAAA,kBACEC,cAAA;AAAA,MAACC,2BAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,MAAA;AAAA,QACN,SAAA,EAAU,OAAA;AAAA,QACV,KAAA,EAAO,aAAA;AAAA,QACP,eAAe,QAAA,CAAS,aAAA;AAAA,QACxB,kBAAkB,QAAA,CAAS,gBAAA;AAAA,QAC3B,WAAW,QAAA,CAAS,SAAA;AAAA,QACpB,QAAA,EAAU,MAAA;AAAA,QACV,QAAA,EAAU,eAAA,IAAmB,iBAAA,GAAoB,MAAM,mBAAkB,GAAI;AAAA;AAAA;AAC/E,GAEJ;AACF","file":"chunk-MNFI66H5.cjs","sourcesContent":["/** The views of the document dialog (`DocumentViewerDialog`, the files page's own viewer). */\n\n/**\n * - `review`: the parsed document with its AI findings, a cited passage marked;\n * - `document`: the whole viewer (PDF and text, markup, signing, versions, sharing);\n * - `ask`: a question about the document, which starts a thread about it.\n */\nexport type DocumentViewerTab = 'review' | 'document' | 'ask'\n\nexport const DEFAULT_DOCUMENT_VIEWER_TABS: readonly DocumentViewerTab[] = [\n 'review',\n 'document',\n 'ask',\n]\n\n/** The dialog's words; each has a neutral default. */\nexport interface DocumentViewerDialogLabels {\n review?: string\n document?: string\n ask?: string\n /** Above the ask bar. */\n askIntro?: string\n /** The ask bar's placeholder; `{title}` is the document's title. */\n askPlaceholder?: string\n}\n\nexport const DEFAULT_DOCUMENT_VIEWER_LABELS: Required<DocumentViewerDialogLabels> = {\n review: 'Review',\n document: 'Document',\n ask: 'Ask AI',\n askIntro:\n 'Your question starts a new thread about this document. The answer cites its passages and takes follow-ups.',\n askPlaceholder: 'Ask about {title}…',\n}\n\nexport const DEFAULT_ASK_SUGGESTIONS: readonly string[] = [\n 'Summarise the key points',\n 'List the dates and deadlines it mentions',\n 'Who are the people and organisations named, and what are their roles?',\n]\n","/**\n * The `/` menu of a one-line ask field (the workspace ask field, the document ask), the chat\n * composer's rules: `/` opens the menu over the same rows, arrows move, Enter/Tab insert the slug,\n * Escape clears the slash. A skill (picked, or typed as `/slug text` and submitted) opens its form\n * instead (`useSlashSkillWorkflows`).\n */\nimport type { KeyboardEvent, ReactNode, RefObject } from 'react'\nimport { SlashMenu, type SlashMenuItem } from '../../chat/SlashMenu'\nimport type { WorkflowLanding } from '../../agents/workflows/types'\nimport { useListKeyNav, type UseListKeyNav } from '../../lib/useListKeyNav'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useSlashItems } from '../conversation/useSlashItems'\nimport { BUILTIN_SKILLS } from '../../agents/workflows/catalogue/seed'\nimport { useSlashSkillWorkflows } from '../workflows/useSlashSkillWorkflows'\n\nexport interface UseSlashFieldOptions {\n text: string\n setText: (text: string) => void\n inputRef: RefObject<HTMLInputElement | null>\n /** Where a skill's run lands (`useSlashSkillWorkflows`). */\n landing: WorkflowLanding\n /** A skill run's own send, for a field that asks its own way (`useSlashSkillWorkflows`). */\n send?: (prompt: string) => void\n}\n\nexport interface SlashField {\n /** Render once beside the field (the skill's form). */\n launcher: ReactNode\n onKeyDown: (event: KeyboardEvent<HTMLElement>) => void\n comboboxProps: UseListKeyNav['comboboxProps']\n /** A submitted question: true when it named a skill (its form opened), so nothing is asked. */\n startsSkill: (question: string) => boolean\n /** The menu, for the field's `menu` slot (it opens below the field). */\n menu: ReactNode\n}\n\nexport function useSlashField({\n text,\n setText,\n inputRef,\n landing,\n send,\n}: UseSlashFieldOptions): SlashField {\n const { openSkillsBrowser } = useBlocksEnvironment()\n const { slashToken, filteredItems, isOpen, canBrowseSkills } = useSlashItems(text, BUILTIN_SKILLS)\n const slashWorkflows = useSlashSkillWorkflows({ landing, send })\n\n const insert = (item: SlashMenuItem) => {\n if (slashWorkflows.openFor(item)) {\n setText('')\n return\n }\n const next = `/${item.name} `\n setText(next)\n requestAnimationFrame(() => {\n const input = inputRef.current\n if (!input) return\n input.focus()\n input.setSelectionRange(next.length, next.length)\n })\n }\n\n const slashNav = useListKeyNav({\n open: isOpen,\n items: filteredItems,\n onPick: insert,\n onDismiss: () => setText(''),\n resetKey: slashToken,\n })\n\n return {\n launcher: slashWorkflows.launcher,\n onKeyDown: (event: KeyboardEvent<HTMLElement>) => void slashNav.handleKeyDown(event),\n comboboxProps: slashNav.comboboxProps,\n startsSkill: (question: string): boolean => {\n if (!slashWorkflows.openForDraft(question)) return false\n setText('')\n return true\n },\n menu: (\n <SlashMenu\n open={isOpen}\n placement=\"below\"\n items={filteredItems}\n selectedIndex={slashNav.selectedIndex}\n setSelectedIndex={slashNav.setSelectedIndex}\n listboxId={slashNav.listboxId}\n onSelect={insert}\n onBrowse={canBrowseSkills && openSkillsBrowser ? () => openSkillsBrowser() : undefined}\n />\n ),\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { CallUserPill } from './chunk-
|
|
2
|
+
import { CallUserPill } from './chunk-VGWCHX6G.js';
|
|
3
3
|
import { TranscriptLine, transcriptRuns } from './chunk-H773F7OR.js';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
import { createContext, useContext } from 'react';
|
|
@@ -52,5 +52,5 @@ function threadTranscriptRuns(messages) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export { TranscriptEntry, TranscriptRunsContext, threadTranscriptRuns, useTranscriptRuns };
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
56
|
-
//# sourceMappingURL=chunk-
|
|
55
|
+
//# sourceMappingURL=chunk-NF4M7PUB.js.map
|
|
56
|
+
//# sourceMappingURL=chunk-NF4M7PUB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/calls/connected/TranscriptEntry.tsx","../src/calls/connected/transcript-runs-context.ts"],"names":[],"mappings":";;;;;;AAUA,SAAS,WAAW,GAAA,EAAwC;AAC1D,EAAA,IAAI,CAAC,KAAK,OAAO,EAAA;AACjB,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AACzB,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,EAAE,CAAA,EAAG,OAAO,EAAA;AAC7B,EAAA,OAAO,IAAI,IAAA,CAAK,EAAE,CAAA,CAAE,kBAAA,CAAmB,EAAC,EAAG,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,CAAA;AACnF;AAEO,SAAS,eAAA,CAAgB;AAAA,EAC9B,SAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ;AACF,CAAA,EAWiB;AACf,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,WAAA;AAAA,MACA,yBAAS,GAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAU,SAAA,EAAW,MAAM,WAAA,EAAa,CAAA;AAAA,MAC/D,IAAA,EAAM,WAAW,EAAE,CAAA;AAAA,MACnB,IAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;AClCA,IAAM,KAAA,GAA2B,EAAE,SAAA,kBAAW,IAAI,KAAI,EAAE;AAEjD,IAAM,qBAAA,GAAwB,cAAiC,KAAK;AAEpE,SAAS,iBAAA,GAAuC;AACrD,EAAA,OAAO,WAAW,qBAAqB,CAAA;AACzC;AAUO,SAAS,qBAAqB,QAAA,EAAkD;AACrF,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAyB,mBAAA,CAAoB,EAAE,KAAA,IAAS,CAAA,CAAE,MAAM,KAAK,CAAA;AACxF,EAAA,MAAM,cAAA,GAAiB,cAAA;AAAA,IACrB,QAAA;AAAA,IACA,CAAC,CAAA,KAAM,SAAA,CAAU,CAAC,GAAG,cAAA,IAAkB,IAAA;AAAA,IACvC,CAAC,CAAA,KAAM,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,EAAG,UAAA,IAAc,CAAA,CAAE,UAAA,IAAc,EAAE,CAAA,IAAK;AAAA,GACvE;AACA,EAAA,OAAO;AAAA,IACL,WAAW,IAAI,GAAA;AAAA,MACb,CAAC,GAAG,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,EAAE,MAAA,CAAO,CAAC,EAAA,KAAqB,CAAC,CAAC,EAAE;AAAA;AACjF,GACF;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/calls/connected/TranscriptEntry.tsx","../src/calls/connected/transcript-runs-context.ts"],"names":[],"mappings":";;;;;;AAUA,SAAS,WAAW,GAAA,EAAwC;AAC1D,EAAA,IAAI,CAAC,KAAK,OAAO,EAAA;AACjB,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AACzB,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,EAAE,CAAA,EAAG,OAAO,EAAA;AAC7B,EAAA,OAAO,IAAI,IAAA,CAAK,EAAE,CAAA,CAAE,kBAAA,CAAmB,EAAC,EAAG,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,CAAA;AACnF;AAEO,SAAS,eAAA,CAAgB;AAAA,EAC9B,SAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ;AACF,CAAA,EAWiB;AACf,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,WAAA;AAAA,MACA,yBAAS,GAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAU,SAAA,EAAW,MAAM,WAAA,EAAa,CAAA;AAAA,MAC/D,IAAA,EAAM,WAAW,EAAE,CAAA;AAAA,MACnB,IAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;AClCA,IAAM,KAAA,GAA2B,EAAE,SAAA,kBAAW,IAAI,KAAI,EAAE;AAEjD,IAAM,qBAAA,GAAwB,cAAiC,KAAK;AAEpE,SAAS,iBAAA,GAAuC;AACrD,EAAA,OAAO,WAAW,qBAAqB,CAAA;AACzC;AAUO,SAAS,qBAAqB,QAAA,EAAkD;AACrF,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAyB,mBAAA,CAAoB,EAAE,KAAA,IAAS,CAAA,CAAE,MAAM,KAAK,CAAA;AACxF,EAAA,MAAM,cAAA,GAAiB,cAAA;AAAA,IACrB,QAAA;AAAA,IACA,CAAC,CAAA,KAAM,SAAA,CAAU,CAAC,GAAG,cAAA,IAAkB,IAAA;AAAA,IACvC,CAAC,CAAA,KAAM,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,EAAG,UAAA,IAAc,CAAA,CAAE,UAAA,IAAc,EAAE,CAAA,IAAK;AAAA,GACvE;AACA,EAAA,OAAO;AAAA,IACL,WAAW,IAAI,GAAA;AAAA,MACb,CAAC,GAAG,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,EAAE,MAAA,CAAO,CAAC,EAAA,KAAqB,CAAC,CAAC,EAAE;AAAA;AACjF,GACF;AACF","file":"chunk-NF4M7PUB.js","sourcesContent":["/**\n * One stored line of a call transcript in its conversation (meeting chat or workspace meeting\n * thread): `TranscriptLine` from `@arbidocs/blocks`, centred for everyone. What someone is saying\n * right now shows as a provisional \"is speaking…\" row below, not as a highlight on a past line.\n */\n\nimport type { ReactElement } from 'react'\nimport { TranscriptLine } from '../../chat/TranscriptLine'\nimport { CallUserPill } from './CallUserPill'\n\nfunction formatTime(iso: string | null | undefined): string {\n if (!iso) return ''\n const at = Date.parse(iso)\n if (Number.isNaN(at)) return ''\n return new Date(at).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })\n}\n\nexport function TranscriptEntry({\n speakerId,\n speakerName,\n text,\n at,\n continued = false,\n className,\n}: {\n /** The speaker's identity (user ext id), for `data-speaker`. */\n speakerId: string\n /** The name to show (\"Me\" for my own lines). */\n speakerName: string\n text: string\n /** ISO time the segment started (or the message was stored). */\n at: string | null | undefined\n /** A further line of the same speaker's run (no name repeated). */\n continued?: boolean\n className?: string\n}): ReactElement {\n return (\n <TranscriptLine\n speakerId={speakerId}\n speakerName={speakerName}\n speaker={<CallUserPill identity={speakerId} name={speakerName} />}\n time={formatTime(at)}\n text={text}\n continued={continued}\n className={className}\n />\n )\n}\n","/**\n * How a meeting thread's transcript lines group: which messages continue their speaker's run (the\n * name is not repeated). Provided by the conversation page, read by each transcript message.\n */\n\nimport { createContext, useContext } from 'react'\nimport { transcriptRuns } from '../../chat/transcript-runs'\nimport { transcriptSegmentOf } from '@arbidocs/react'\n\nexport interface TranscriptRunInfo {\n continued: ReadonlySet<string>\n}\n\nconst EMPTY: TranscriptRunInfo = { continued: new Set() }\n\nexport const TranscriptRunsContext = createContext<TranscriptRunInfo>(EMPTY)\n\nexport function useTranscriptRuns(): TranscriptRunInfo {\n return useContext(TranscriptRunsContext)\n}\n\ninterface ThreadMessageLike {\n external_id?: string | null\n created_at?: string | null\n tools?: unknown\n meta?: { tools?: unknown } | null\n}\n\n/** Runs of a thread's messages (in display order). */\nexport function threadTranscriptRuns(messages: ThreadMessageLike[]): TranscriptRunInfo {\n const segmentOf = (m: ThreadMessageLike) => transcriptSegmentOf(m.tools ?? m.meta?.tools)\n const continuedItems = transcriptRuns(\n messages,\n (m) => segmentOf(m)?.speaker_ext_id ?? null,\n (m) => Date.parse(segmentOf(m)?.started_at ?? m.created_at ?? '') || 0\n )\n return {\n continued: new Set(\n [...continuedItems].map((m) => m.external_id).filter((id): id is string => !!id)\n ),\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { page, minuteUtc, cell, paragraph, documentXml, docxPackage, TABLE_DOCUM
|
|
|
3
3
|
import { guidedCursor, useMountedSurface } from './chunk-NFK2SEUD.js';
|
|
4
4
|
import { RowNavigatorControls } from './chunk-ELA7Y5YW.js';
|
|
5
5
|
import { DetailLoading, DetailBody, DetailSection, DetailLinkList, DetailLinkItem, DetailEmpty, DetailFields, DetailField } from './chunk-OC2PD52M.js';
|
|
6
|
-
import { taskActivityHeadline, DEFAULT_TASK_ACTIVITY_LABELS } from './chunk-
|
|
6
|
+
import { taskActivityHeadline, DEFAULT_TASK_ACTIVITY_LABELS } from './chunk-TOMDMKOD.js';
|
|
7
7
|
import { GridView } from './chunk-IU5CHOEU.js';
|
|
8
8
|
import { DocumentPicker } from './chunk-WNDIVNPT.js';
|
|
9
9
|
import { ModalHeader } from './chunk-TX2ZICS7.js';
|
|
@@ -2050,5 +2050,5 @@ function ExtractEntitiesDialog({
|
|
|
2050
2050
|
}
|
|
2051
2051
|
|
|
2052
2052
|
export { DEFAULT_GLOSSARY_LABELS, DEFAULT_TAG_COLUMNS_EDITOR_LABELS, DEFAULT_TAG_DETAIL_LABELS, DEFAULT_TAG_TABLE_DOCX_LABELS, DEFAULT_TAG_TABLE_LABELS, DEFAULT_WORKSPACE_ACTIVITY_LABELS, EXTRACT_LIMIT, EntityIdentityBar, ExtractEntitiesDialog, GridRowNavigator, GuidedCursor, IDENTITY_NAME_MAX_LENGTH, LoadingIndicator, TAG_TABLE_DOCX_LANDSCAPE_AFTER, TagColumnsEditor, TagDetail, TagTable, TagTableCell, Toolbar, WorkspaceActivityList, cellText, cellValue, documentCount, entitiesPhrase, fieldWrites, glossaryDocumentXml, glossaryDocx, glossaryEntries, glossaryFileName, glossaryMarkdown, isGap, parseCell, rowLinks, tagDetailLabels, tagKindDescription, tagNoteLabel, tagTableDocumentXml, tagTableDocx, tagTableLabels, tagTableMarkdown, tagsPageNouns, useTipsPlacement, workspaceActivityHeadline, workspaceActivityTarget };
|
|
2053
|
-
//# sourceMappingURL=chunk-
|
|
2054
|
-
//# sourceMappingURL=chunk-
|
|
2053
|
+
//# sourceMappingURL=chunk-NPSFPBIB.js.map
|
|
2054
|
+
//# sourceMappingURL=chunk-NPSFPBIB.js.map
|