@mieweb/ui 0.10.0-dev.3 → 0.10.0-dev.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/agent/mieweb-ui.instructions.md +90 -1
- package/dist/CsvBlock-FX5YNGNE.cjs +17 -0
- package/dist/{CsvBlock-ROJCKJDP.cjs.map → CsvBlock-FX5YNGNE.cjs.map} +1 -1
- package/dist/CsvBlock-VLMG7GUO.js +8 -0
- package/dist/{CsvBlock-UWPMTLE2.js.map → CsvBlock-VLMG7GUO.js.map} +1 -1
- package/dist/HtmlPreviewBlock-5JE7L3GR.js +8 -0
- package/dist/{HtmlPreviewBlock-ME5U3XNS.js.map → HtmlPreviewBlock-5JE7L3GR.js.map} +1 -1
- package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +17 -0
- package/dist/{HtmlPreviewBlock-DWFN6EUB.cjs.map → HtmlPreviewBlock-UO37JQ3K.cjs.map} +1 -1
- package/dist/Input-yN516s5_.d.cts +3 -0
- package/dist/Input-yN516s5_.d.ts +3 -0
- package/dist/MermaidBlock-3XHFBAMV.js +8 -0
- package/dist/{MermaidBlock-2B6CPD6Y.js.map → MermaidBlock-3XHFBAMV.js.map} +1 -1
- package/dist/MermaidBlock-RZ75RPZA.cjs +17 -0
- package/dist/{MermaidBlock-D2UC5M55.cjs.map → MermaidBlock-RZ75RPZA.cjs.map} +1 -1
- package/dist/SurveyBlock-MUVJ3JUI.js +8 -0
- package/dist/{SurveyBlock-4DO62RBT.js.map → SurveyBlock-MUVJ3JUI.js.map} +1 -1
- package/dist/SurveyBlock-VH47YXZC.cjs +17 -0
- package/dist/{SurveyBlock-4CD4AYMJ.cjs.map → SurveyBlock-VH47YXZC.cjs.map} +1 -1
- package/dist/ag-grid.d.cts +142 -1
- package/dist/ag-grid.d.ts +142 -1
- package/dist/brands/bluehive.cjs +3 -3
- package/dist/brands/bluehive.css +3 -0
- package/dist/brands/bluehive.js +1 -1
- package/dist/brands/index.cjs +14 -14
- package/dist/brands/index.js +4 -4
- package/dist/{chunk-JYZW2PZS.cjs → chunk-254QK722.cjs} +7 -7
- package/dist/chunk-254QK722.cjs.map +1 -0
- package/dist/{chunk-VKELAMAZ.js → chunk-2JICT4A2.js} +27 -11
- package/dist/chunk-2JICT4A2.js.map +1 -0
- package/dist/{chunk-VPWJCJCX.cjs → chunk-35Y4ILCU.cjs} +7 -7
- package/dist/{chunk-VPWJCJCX.cjs.map → chunk-35Y4ILCU.cjs.map} +1 -1
- package/dist/{chunk-G3JX3UAU.cjs → chunk-3KPDQG5O.cjs} +5 -5
- package/dist/{chunk-G3JX3UAU.cjs.map → chunk-3KPDQG5O.cjs.map} +1 -1
- package/dist/{chunk-Y5HFM7LO.js → chunk-3RXZWHCU.js} +4 -4
- package/dist/{chunk-Y5HFM7LO.js.map → chunk-3RXZWHCU.js.map} +1 -1
- package/dist/chunk-3YBS4WUQ.js +52 -0
- package/dist/chunk-3YBS4WUQ.js.map +1 -0
- package/dist/{chunk-WNJRS7Y7.cjs → chunk-3ZWCIPFT.cjs} +4 -2
- package/dist/chunk-3ZWCIPFT.cjs.map +1 -0
- package/dist/chunk-4HC2IBOX.js +258 -0
- package/dist/chunk-4HC2IBOX.js.map +1 -0
- package/dist/chunk-4IS3QCOQ.cjs +453 -0
- package/dist/chunk-4IS3QCOQ.cjs.map +1 -0
- package/dist/chunk-4NCDU5IG.cjs +56 -0
- package/dist/chunk-4NCDU5IG.cjs.map +1 -0
- package/dist/{chunk-E4IBHYJ7.cjs → chunk-6N6LIAUJ.cjs} +9 -9
- package/dist/{chunk-E4IBHYJ7.cjs.map → chunk-6N6LIAUJ.cjs.map} +1 -1
- package/dist/{chunk-3M7TAXNR.js → chunk-6ZPTZTKN.js} +3 -3
- package/dist/{chunk-3M7TAXNR.js.map → chunk-6ZPTZTKN.js.map} +1 -1
- package/dist/{chunk-MWVW4APN.cjs → chunk-7UTBDFFL.cjs} +4 -4
- package/dist/{chunk-MWVW4APN.cjs.map → chunk-7UTBDFFL.cjs.map} +1 -1
- package/dist/{chunk-FJ7YPVKV.js → chunk-7X6R3JIA.js} +3 -3
- package/dist/{chunk-FJ7YPVKV.js.map → chunk-7X6R3JIA.js.map} +1 -1
- package/dist/{chunk-GOALNQZ2.js → chunk-7YO7DNUV.js} +4 -83
- package/dist/chunk-7YO7DNUV.js.map +1 -0
- package/dist/{chunk-P2CA3XGI.js → chunk-7ZV67VZE.js} +4 -4
- package/dist/{chunk-P2CA3XGI.js.map → chunk-7ZV67VZE.js.map} +1 -1
- package/dist/chunk-ADW7ZYCY.cjs +2707 -0
- package/dist/chunk-ADW7ZYCY.cjs.map +1 -0
- package/dist/{chunk-2G75X6TS.cjs → chunk-AHHFFXJR.cjs} +3 -3
- package/dist/{chunk-2G75X6TS.cjs.map → chunk-AHHFFXJR.cjs.map} +1 -1
- package/dist/{chunk-VILW53UZ.js → chunk-BIQ7GSO2.js} +3 -3
- package/dist/{chunk-VILW53UZ.js.map → chunk-BIQ7GSO2.js.map} +1 -1
- package/dist/chunk-BM35CACB.js +148 -0
- package/dist/chunk-BM35CACB.js.map +1 -0
- package/dist/chunk-BNH4SXJB.js +874 -0
- package/dist/chunk-BNH4SXJB.js.map +1 -0
- package/dist/{chunk-XEAT7XJG.cjs → chunk-BUT6MF5K.cjs} +29 -13
- package/dist/chunk-BUT6MF5K.cjs.map +1 -0
- package/dist/{chunk-UAMXCMST.cjs → chunk-CFI3TQMA.cjs} +3 -3
- package/dist/{chunk-UAMXCMST.cjs.map → chunk-CFI3TQMA.cjs.map} +1 -1
- package/dist/{chunk-J5CSLNCN.cjs → chunk-COM7RNZU.cjs} +2 -2
- package/dist/{chunk-J5CSLNCN.cjs.map → chunk-COM7RNZU.cjs.map} +1 -1
- package/dist/{chunk-XI34EGK5.cjs → chunk-CPPUT74P.cjs} +9 -9
- package/dist/{chunk-XI34EGK5.cjs.map → chunk-CPPUT74P.cjs.map} +1 -1
- package/dist/{chunk-ACCAXVOG.js → chunk-CRS2CQWM.js} +134 -56
- package/dist/chunk-CRS2CQWM.js.map +1 -0
- package/dist/{chunk-OE5CKRUC.js → chunk-D22GE27K.js} +4 -4
- package/dist/{chunk-OE5CKRUC.js.map → chunk-D22GE27K.js.map} +1 -1
- package/dist/chunk-DXEPYK3I.cjs +92 -0
- package/dist/chunk-DXEPYK3I.cjs.map +1 -0
- package/dist/{chunk-ZGRCSNPK.js → chunk-E2PBPQGS.js} +4 -4
- package/dist/{chunk-ZGRCSNPK.js.map → chunk-E2PBPQGS.js.map} +1 -1
- package/dist/{chunk-5JJ2DAE4.js → chunk-ENMXHZNE.js} +3 -3
- package/dist/{chunk-5JJ2DAE4.js.map → chunk-ENMXHZNE.js.map} +1 -1
- package/dist/{chunk-XCP454Q6.js → chunk-F4N67NAF.js} +12 -3
- package/dist/chunk-F4N67NAF.js.map +1 -0
- package/dist/chunk-FBCDYTWM.js +385 -0
- package/dist/chunk-FBCDYTWM.js.map +1 -0
- package/dist/{chunk-VU6UTJRM.js → chunk-FIKO4WR6.js} +3 -3
- package/dist/{chunk-VU6UTJRM.js.map → chunk-FIKO4WR6.js.map} +1 -1
- package/dist/{chunk-DEDN5HAG.js → chunk-FZURBQJ2.js} +3 -3
- package/dist/{chunk-DEDN5HAG.js.map → chunk-FZURBQJ2.js.map} +1 -1
- package/dist/{chunk-JHULS3EC.js → chunk-GBUVIGD5.js} +89 -3
- package/dist/chunk-GBUVIGD5.js.map +1 -0
- package/dist/chunk-GU5OS7JJ.cjs +281 -0
- package/dist/chunk-GU5OS7JJ.cjs.map +1 -0
- package/dist/{chunk-V7D3YGUV.js → chunk-GVLNXPJX.js} +4 -4
- package/dist/{chunk-V7D3YGUV.js.map → chunk-GVLNXPJX.js.map} +1 -1
- package/dist/chunk-GVM6DTR5.js +90 -0
- package/dist/chunk-GVM6DTR5.js.map +1 -0
- package/dist/{chunk-SQHMGT4W.js → chunk-GW4RFJZ5.js} +7 -7
- package/dist/chunk-GW4RFJZ5.js.map +1 -0
- package/dist/{chunk-3QEVGSFG.cjs → chunk-GYXUS65N.cjs} +5 -5
- package/dist/{chunk-3QEVGSFG.cjs.map → chunk-GYXUS65N.cjs.map} +1 -1
- package/dist/{chunk-WGPLUCBD.js → chunk-H2IAMSHK.js} +3 -3
- package/dist/{chunk-WGPLUCBD.js.map → chunk-H2IAMSHK.js.map} +1 -1
- package/dist/{chunk-JID7AZTO.cjs → chunk-H3ROMJYI.cjs} +4 -4
- package/dist/{chunk-JID7AZTO.cjs.map → chunk-H3ROMJYI.cjs.map} +1 -1
- package/dist/{chunk-GD7EBGC4.cjs → chunk-HC3NAN55.cjs} +19 -19
- package/dist/{chunk-GD7EBGC4.cjs.map → chunk-HC3NAN55.cjs.map} +1 -1
- package/dist/{chunk-7ZXAQTV4.cjs → chunk-HIZWOAWY.cjs} +8 -8
- package/dist/{chunk-7ZXAQTV4.cjs.map → chunk-HIZWOAWY.cjs.map} +1 -1
- package/dist/{chunk-NV2CWBI2.cjs → chunk-IEY3ZJIT.cjs} +12 -3
- package/dist/chunk-IEY3ZJIT.cjs.map +1 -0
- package/dist/chunk-IT775BYG.js +179 -0
- package/dist/chunk-IT775BYG.js.map +1 -0
- package/dist/chunk-IYWG72DM.js +166 -0
- package/dist/chunk-IYWG72DM.js.map +1 -0
- package/dist/{chunk-2YCERQWC.js → chunk-JBIGSP2T.js} +6 -6
- package/dist/{chunk-2YCERQWC.js.map → chunk-JBIGSP2T.js.map} +1 -1
- package/dist/{chunk-IX6KFB3K.cjs → chunk-JELTRRR5.cjs} +9 -9
- package/dist/{chunk-IX6KFB3K.cjs.map → chunk-JELTRRR5.cjs.map} +1 -1
- package/dist/{chunk-YQDA366U.js → chunk-JHG3ELS2.js} +2 -2
- package/dist/{chunk-YQDA366U.js.map → chunk-JHG3ELS2.js.map} +1 -1
- package/dist/{chunk-WWJIW2IH.cjs → chunk-JSXIB6EJ.cjs} +4 -4
- package/dist/{chunk-WWJIW2IH.cjs.map → chunk-JSXIB6EJ.cjs.map} +1 -1
- package/dist/{chunk-WNM7IZJ7.js → chunk-K34DXMLZ.js} +7 -7
- package/dist/{chunk-WNM7IZJ7.js.map → chunk-K34DXMLZ.js.map} +1 -1
- package/dist/{chunk-FXO5ARBB.cjs → chunk-KDW6BD4O.cjs} +4 -4
- package/dist/{chunk-FXO5ARBB.cjs.map → chunk-KDW6BD4O.cjs.map} +1 -1
- package/dist/{chunk-Z5V7SAZ4.js → chunk-KFEN2SRZ.js} +3 -3
- package/dist/{chunk-Z5V7SAZ4.js.map → chunk-KFEN2SRZ.js.map} +1 -1
- package/dist/{chunk-2QKBTPUC.cjs → chunk-KGKBZN3T.cjs} +8 -8
- package/dist/{chunk-2QKBTPUC.cjs.map → chunk-KGKBZN3T.cjs.map} +1 -1
- package/dist/{chunk-UV2FVNWT.cjs → chunk-LFPJ3OUM.cjs} +5 -5
- package/dist/{chunk-UV2FVNWT.cjs.map → chunk-LFPJ3OUM.cjs.map} +1 -1
- package/dist/{chunk-WNAA6CLE.cjs → chunk-LHBWRMNC.cjs} +94 -2
- package/dist/chunk-LHBWRMNC.cjs.map +1 -0
- package/dist/{chunk-JI244Y7C.js → chunk-MLAWXPRY.js} +190 -5
- package/dist/chunk-MLAWXPRY.js.map +1 -0
- package/dist/chunk-N7C4OEP7.cjs +356 -0
- package/dist/chunk-N7C4OEP7.cjs.map +1 -0
- package/dist/{chunk-WNZAYBVB.cjs → chunk-NKV76R65.cjs} +48 -48
- package/dist/{chunk-WNZAYBVB.cjs.map → chunk-NKV76R65.cjs.map} +1 -1
- package/dist/{chunk-PYJDVWXM.js → chunk-NUB5HRKS.js} +3 -3
- package/dist/{chunk-PYJDVWXM.js.map → chunk-NUB5HRKS.js.map} +1 -1
- package/dist/{chunk-LL6IWKI3.js → chunk-OW3SQJ7P.js} +3 -3
- package/dist/{chunk-LL6IWKI3.js.map → chunk-OW3SQJ7P.js.map} +1 -1
- package/dist/{chunk-5GUOOLPR.cjs → chunk-P5CMZZRZ.cjs} +5 -5
- package/dist/{chunk-5GUOOLPR.cjs.map → chunk-P5CMZZRZ.cjs.map} +1 -1
- package/dist/{chunk-3T7QGLNB.js → chunk-PJEL5ZZV.js} +4 -2
- package/dist/chunk-PJEL5ZZV.js.map +1 -0
- package/dist/{chunk-H4ZXMQQW.js → chunk-QOVJ6Z6R.js} +3 -3
- package/dist/{chunk-H4ZXMQQW.js.map → chunk-QOVJ6Z6R.js.map} +1 -1
- package/dist/{chunk-U42F3HLE.cjs → chunk-QURJVPRH.cjs} +190 -5
- package/dist/chunk-QURJVPRH.cjs.map +1 -0
- package/dist/{chunk-X4XPNTCZ.cjs → chunk-R5Z7AOVU.cjs} +136 -58
- package/dist/chunk-R5Z7AOVU.cjs.map +1 -0
- package/dist/{chunk-TMMVIUUN.js → chunk-R6KPWIGO.js} +4 -4
- package/dist/{chunk-TMMVIUUN.js.map → chunk-R6KPWIGO.js.map} +1 -1
- package/dist/{chunk-22CYDCXA.js → chunk-RM2HPQIC.js} +105 -14
- package/dist/chunk-RM2HPQIC.js.map +1 -0
- package/dist/{chunk-ENKFJJZX.js → chunk-SD7ONW6S.js} +6 -6
- package/dist/{chunk-ENKFJJZX.js.map → chunk-SD7ONW6S.js.map} +1 -1
- package/dist/{chunk-RJ6NTJHC.js → chunk-SRMTRD7F.js} +3 -3
- package/dist/{chunk-RJ6NTJHC.js.map → chunk-SRMTRD7F.js.map} +1 -1
- package/dist/chunk-T4JYUICS.js +2657 -0
- package/dist/chunk-T4JYUICS.js.map +1 -0
- package/dist/{chunk-7ZDPD5ZX.cjs → chunk-T4L7Q5FA.cjs} +7 -7
- package/dist/{chunk-7ZDPD5ZX.cjs.map → chunk-T4L7Q5FA.cjs.map} +1 -1
- package/dist/{chunk-NJ6MY6V5.js → chunk-T5BBZQ66.js} +3 -3
- package/dist/{chunk-NJ6MY6V5.js.map → chunk-T5BBZQ66.js.map} +1 -1
- package/dist/{chunk-2IZLKPUW.js → chunk-THLIL6PY.js} +3 -3
- package/dist/{chunk-2IZLKPUW.js.map → chunk-THLIL6PY.js.map} +1 -1
- package/dist/{chunk-SGFYA22I.cjs → chunk-TJCX4OML.cjs} +8 -8
- package/dist/{chunk-SGFYA22I.cjs.map → chunk-TJCX4OML.cjs.map} +1 -1
- package/dist/{chunk-N6IY47YA.cjs → chunk-TTSSUOEV.cjs} +8 -8
- package/dist/{chunk-N6IY47YA.cjs.map → chunk-TTSSUOEV.cjs.map} +1 -1
- package/dist/{chunk-5MCBWTIF.cjs → chunk-TYE5K5WV.cjs} +4 -4
- package/dist/{chunk-5MCBWTIF.cjs.map → chunk-TYE5K5WV.cjs.map} +1 -1
- package/dist/{chunk-VOKVG3ER.js → chunk-UBSH27C2.js} +4 -4
- package/dist/{chunk-VOKVG3ER.js.map → chunk-UBSH27C2.js.map} +1 -1
- package/dist/{chunk-TAXD5ADA.cjs → chunk-UEDTZYGI.cjs} +3 -3
- package/dist/{chunk-TAXD5ADA.cjs.map → chunk-UEDTZYGI.cjs.map} +1 -1
- package/dist/{chunk-UQ3VVR6A.cjs → chunk-UPWIJC6I.cjs} +3 -3
- package/dist/{chunk-UQ3VVR6A.cjs.map → chunk-UPWIJC6I.cjs.map} +1 -1
- package/dist/{chunk-S7WCHDBO.js → chunk-VCI2Y7ST.js} +3 -3
- package/dist/{chunk-S7WCHDBO.js.map → chunk-VCI2Y7ST.js.map} +1 -1
- package/dist/chunk-VINZZQBD.cjs +323 -0
- package/dist/chunk-VINZZQBD.cjs.map +1 -0
- package/dist/{chunk-OD47TTAW.cjs → chunk-VOQJHSXN.cjs} +9 -9
- package/dist/{chunk-OD47TTAW.cjs.map → chunk-VOQJHSXN.cjs.map} +1 -1
- package/dist/chunk-VPTASZ2O.cjs +171 -0
- package/dist/chunk-VPTASZ2O.cjs.map +1 -0
- package/dist/chunk-WXFGHDTV.cjs +896 -0
- package/dist/chunk-WXFGHDTV.cjs.map +1 -0
- package/dist/{chunk-VNYW4C4J.cjs → chunk-X6A27RGO.cjs} +4 -84
- package/dist/chunk-X6A27RGO.cjs.map +1 -0
- package/dist/chunk-XBTKZCZF.js +333 -0
- package/dist/chunk-XBTKZCZF.js.map +1 -0
- package/dist/chunk-XDIMTPZU.cjs +202 -0
- package/dist/chunk-XDIMTPZU.cjs.map +1 -0
- package/dist/chunk-XDU65GLW.js +21 -0
- package/dist/chunk-XDU65GLW.js.map +1 -0
- package/dist/chunk-XI74P5F2.cjs +424 -0
- package/dist/chunk-XI74P5F2.cjs.map +1 -0
- package/dist/{chunk-WIAQQNFU.cjs → chunk-XRVMYT5G.cjs} +106 -13
- package/dist/chunk-XRVMYT5G.cjs.map +1 -0
- package/dist/chunk-XVW5DPPP.js +429 -0
- package/dist/chunk-XVW5DPPP.js.map +1 -0
- package/dist/chunk-Y4E2WRUR.cjs +188 -0
- package/dist/chunk-Y4E2WRUR.cjs.map +1 -0
- package/dist/chunk-Y4QNLW7W.js +300 -0
- package/dist/chunk-Y4QNLW7W.js.map +1 -0
- package/dist/{chunk-6EN3IQQI.cjs → chunk-YRHBSSQ3.cjs} +6 -6
- package/dist/{chunk-6EN3IQQI.cjs.map → chunk-YRHBSSQ3.cjs.map} +1 -1
- package/dist/{chunk-KZFBQ7GY.js → chunk-YU55JD35.js} +3 -3
- package/dist/{chunk-KZFBQ7GY.js.map → chunk-YU55JD35.js.map} +1 -1
- package/dist/chunk-YW2AKBLS.cjs +23 -0
- package/dist/chunk-YW2AKBLS.cjs.map +1 -0
- package/dist/{chunk-ELPW32ZI.cjs → chunk-ZTMYKAVU.cjs} +45 -45
- package/dist/{chunk-ELPW32ZI.cjs.map → chunk-ZTMYKAVU.cjs.map} +1 -1
- package/dist/{chunk-3QGS6CXD.js → chunk-ZYL4SNOR.js} +3 -3
- package/dist/{chunk-3QGS6CXD.js.map → chunk-ZYL4SNOR.js.map} +1 -1
- package/dist/components/Alert/index.d.cts +1 -1
- package/dist/components/Alert/index.d.ts +1 -1
- package/dist/components/AlertDialog/index.cjs +6 -5
- package/dist/components/AlertDialog/index.d.cts +28 -3
- package/dist/components/AlertDialog/index.d.ts +28 -3
- package/dist/components/AlertDialog/index.js +5 -4
- package/dist/components/AudioRecorder/index.d.cts +2 -2
- package/dist/components/AudioRecorder/index.d.ts +2 -2
- package/dist/components/Autocomplete/index.d.cts +8 -2
- package/dist/components/Autocomplete/index.d.ts +8 -2
- package/dist/components/Avatar/index.d.cts +1 -1
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/Badge/index.d.cts +1 -1
- package/dist/components/Badge/index.d.ts +1 -1
- package/dist/components/BoardView/index.cjs +24 -0
- package/dist/components/BoardView/index.cjs.map +1 -0
- package/dist/components/BoardView/index.d.cts +41 -0
- package/dist/components/BoardView/index.d.ts +41 -0
- package/dist/components/BoardView/index.js +7 -0
- package/dist/components/BoardView/index.js.map +1 -0
- package/dist/components/Button/index.cjs +4 -3
- package/dist/components/Button/index.d.cts +2 -1
- package/dist/components/Button/index.d.ts +2 -1
- package/dist/components/Button/index.js +2 -1
- package/dist/components/CalendarView/index.cjs +23 -0
- package/dist/components/CalendarView/index.cjs.map +1 -0
- package/dist/components/CalendarView/index.d.cts +39 -0
- package/dist/components/CalendarView/index.d.ts +39 -0
- package/dist/components/CalendarView/index.js +10 -0
- package/dist/components/CalendarView/index.js.map +1 -0
- package/dist/components/Card/index.d.cts +3 -3
- package/dist/components/Card/index.d.ts +3 -3
- package/dist/components/Collapsible/index.cjs +6 -6
- package/dist/components/Collapsible/index.js +3 -3
- package/dist/components/CountryCodeDropdown/index.cjs +5 -5
- package/dist/components/CountryCodeDropdown/index.js +2 -2
- package/dist/components/CustomizableDashboard/index.cjs +10 -9
- package/dist/components/CustomizableDashboard/index.js +3 -2
- package/dist/components/Dropdown/index.cjs +10 -10
- package/dist/components/Dropdown/index.d.cts +2 -1
- package/dist/components/Dropdown/index.d.ts +2 -1
- package/dist/components/Dropdown/index.js +3 -3
- package/dist/components/FloatingWindow/index.cjs +5 -4
- package/dist/components/FloatingWindow/index.js +3 -2
- package/dist/components/GanttView/index.cjs +20 -0
- package/dist/components/GanttView/index.cjs.map +1 -0
- package/dist/components/GanttView/index.d.cts +36 -0
- package/dist/components/GanttView/index.d.ts +36 -0
- package/dist/components/GanttView/index.js +7 -0
- package/dist/components/GanttView/index.js.map +1 -0
- package/dist/components/GlossaryTooltip/index.cjs +3 -3
- package/dist/components/GlossaryTooltip/index.js +2 -2
- package/dist/components/KeyboardShortcutsOverlay/index.cjs +5 -5
- package/dist/components/KeyboardShortcutsOverlay/index.js +3 -3
- package/dist/components/ListView/index.cjs +23 -0
- package/dist/components/ListView/index.cjs.map +1 -0
- package/dist/components/ListView/index.d.cts +124 -0
- package/dist/components/ListView/index.d.ts +124 -0
- package/dist/components/ListView/index.js +10 -0
- package/dist/components/ListView/index.js.map +1 -0
- package/dist/components/Markdown/index.cjs +20 -19
- package/dist/components/Markdown/index.js +8 -7
- package/dist/components/MediaEditor/index.cjs +15 -14
- package/dist/components/MediaEditor/index.d.cts +91 -2
- package/dist/components/MediaEditor/index.d.ts +91 -2
- package/dist/components/MediaEditor/index.js +10 -9
- package/dist/components/MediaFeed/index.cjs +26 -0
- package/dist/components/MediaFeed/index.cjs.map +1 -0
- package/dist/components/MediaFeed/index.d.cts +104 -0
- package/dist/components/MediaFeed/index.d.ts +104 -0
- package/dist/components/MediaFeed/index.js +17 -0
- package/dist/components/MediaFeed/index.js.map +1 -0
- package/dist/components/MediaPlayer/index.cjs +7 -6
- package/dist/components/MediaPlayer/index.d.cts +19 -1
- package/dist/components/MediaPlayer/index.d.ts +19 -1
- package/dist/components/MediaPlayer/index.js +4 -3
- package/dist/components/MegaMenu/index.cjs +6 -5
- package/dist/components/MegaMenu/index.js +3 -2
- package/dist/components/Modal/index.cjs +10 -10
- package/dist/components/Modal/index.js +2 -2
- package/dist/components/Pagination/index.d.cts +1 -1
- package/dist/components/Pagination/index.d.ts +1 -1
- package/dist/components/PhoneInput/index.d.cts +36 -3
- package/dist/components/PhoneInput/index.d.ts +36 -3
- package/dist/components/Progress/index.d.cts +1 -1
- package/dist/components/Progress/index.d.ts +1 -1
- package/dist/components/Q/index.d.cts +2 -2
- package/dist/components/Q/index.d.ts +2 -2
- package/dist/components/QuickAction/index.d.cts +1 -1
- package/dist/components/QuickAction/index.d.ts +1 -1
- package/dist/components/RadialExplorer/index.cjs +5 -4
- package/dist/components/RadialExplorer/index.js +4 -3
- package/dist/components/RecordButton/index.d.cts +1 -1
- package/dist/components/RecordButton/index.d.ts +1 -1
- package/dist/components/RichTextEditor/index.cjs +9 -8
- package/dist/components/RichTextEditor/index.d.cts +7 -2
- package/dist/components/RichTextEditor/index.d.ts +7 -2
- package/dist/components/RichTextEditor/index.js +6 -5
- package/dist/components/ScrollArea/index.d.cts +1 -1
- package/dist/components/ScrollArea/index.d.ts +1 -1
- package/dist/components/SectionSpyNav/index.cjs +4 -3
- package/dist/components/SectionSpyNav/index.js +3 -2
- package/dist/components/Select/index.cjs +4 -4
- package/dist/components/Select/index.d.cts +1 -2
- package/dist/components/Select/index.d.ts +1 -2
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Skeleton/index.d.cts +1 -1
- package/dist/components/Skeleton/index.d.ts +1 -1
- package/dist/components/Slider/index.d.cts +2 -2
- package/dist/components/Slider/index.d.ts +2 -2
- package/dist/components/SliderCalculator/index.cjs +4 -4
- package/dist/components/SliderCalculator/index.js +2 -2
- package/dist/components/SourceTip/index.cjs +3 -3
- package/dist/components/SourceTip/index.js +2 -2
- package/dist/components/Spinner/index.d.cts +2 -2
- package/dist/components/Spinner/index.d.ts +2 -2
- package/dist/components/SuperChat/index.cjs +1406 -823
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.d.cts +126 -8
- package/dist/components/SuperChat/index.d.ts +126 -8
- package/dist/components/SuperChat/index.js +1398 -815
- package/dist/components/SuperChat/index.js.map +1 -1
- package/dist/components/SuperChat/plugins/index.cjs +6 -6
- package/dist/components/SuperChat/plugins/index.d.cts +2 -3
- package/dist/components/SuperChat/plugins/index.d.ts +2 -3
- package/dist/components/SuperChat/plugins/index.js +5 -5
- package/dist/components/Text/index.d.cts +3 -3
- package/dist/components/Text/index.d.ts +3 -3
- package/dist/components/Textarea/index.d.cts +1 -2
- package/dist/components/Textarea/index.d.ts +1 -2
- package/dist/components/ThemeProvider/index.cjs +9 -9
- package/dist/components/ThemeProvider/index.d.cts +3 -1
- package/dist/components/ThemeProvider/index.d.ts +3 -1
- package/dist/components/ThemeProvider/index.js +3 -3
- package/dist/components/Tooltip/index.cjs +3 -3
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/TranscriptView/index.d.cts +85 -4
- package/dist/components/TranscriptView/index.d.ts +85 -4
- package/dist/components/ViewSet/index.cjs +24 -0
- package/dist/components/ViewSet/index.cjs.map +1 -0
- package/dist/components/ViewSet/index.d.cts +200 -0
- package/dist/components/ViewSet/index.d.ts +200 -0
- package/dist/components/ViewSet/index.js +15 -0
- package/dist/components/ViewSet/index.js.map +1 -0
- package/dist/components/ViewSwitcher/index.cjs +20 -0
- package/dist/components/ViewSwitcher/index.cjs.map +1 -0
- package/dist/components/ViewSwitcher/index.d.cts +4 -0
- package/dist/components/ViewSwitcher/index.d.ts +4 -0
- package/dist/components/ViewSwitcher/index.js +7 -0
- package/dist/components/ViewSwitcher/index.js.map +1 -0
- package/dist/datavis.cjs +3 -2
- package/dist/datavis.cjs.map +1 -1
- package/dist/datavis.d.cts +167 -13
- package/dist/datavis.d.ts +167 -13
- package/dist/datavis.js +2 -1
- package/dist/datavis.js.map +1 -1
- package/dist/deck.cjs +3360 -0
- package/dist/deck.cjs.map +1 -0
- package/dist/deck.d.cts +712 -0
- package/dist/deck.d.ts +712 -0
- package/dist/deck.js +3316 -0
- package/dist/deck.js.map +1 -0
- package/dist/esheet.cjs +14 -13
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.d.cts +183 -1
- package/dist/esheet.d.ts +183 -1
- package/dist/esheet.js +11 -10
- package/dist/esheet.js.map +1 -1
- package/dist/globe.cjs +2 -2
- package/dist/globe.js +1 -1
- package/dist/hooks/index.cjs +60 -27
- package/dist/hooks/index.d.cts +590 -31
- package/dist/hooks/index.d.ts +590 -31
- package/dist/hooks/index.js +6 -5
- package/dist/icons-wBacj6BW.d.cts +142 -0
- package/dist/icons-wBacj6BW.d.ts +142 -0
- package/dist/index-DoYYWsNc.d.cts +127 -0
- package/dist/index-DoYYWsNc.d.ts +127 -0
- package/dist/index.cjs +1420 -1048
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8796 -482
- package/dist/index.d.ts +8796 -482
- package/dist/index.js +368 -232
- package/dist/index.js.map +1 -1
- package/dist/kerebron.cjs +58 -19
- package/dist/kerebron.cjs.map +1 -1
- package/dist/kerebron.css +115 -0
- package/dist/kerebron.d.cts +37 -0
- package/dist/kerebron.d.ts +37 -0
- package/dist/kerebron.js +58 -19
- package/dist/kerebron.js.map +1 -1
- package/dist/maps.cjs +160 -0
- package/dist/maps.cjs.map +1 -0
- package/dist/maps.d.cts +42 -0
- package/dist/maps.d.ts +42 -0
- package/dist/maps.js +138 -0
- package/dist/maps.js.map +1 -0
- package/dist/motion.cjs +7 -7
- package/dist/motion.d.cts +186 -2
- package/dist/motion.d.ts +186 -2
- package/dist/motion.js +2 -2
- package/dist/q.d.cts +25 -3
- package/dist/q.d.ts +25 -3
- package/dist/styles/effects.css +133 -0
- package/dist/styles/init.css +3 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/templates.cjs +156 -0
- package/dist/templates.cjs.map +1 -0
- package/dist/templates.d.cts +734 -0
- package/dist/templates.d.ts +734 -0
- package/dist/templates.js +11 -0
- package/dist/templates.js.map +1 -0
- package/dist/types-Cx1FHLq2.d.cts +548 -0
- package/dist/types-Cx1FHLq2.d.ts +548 -0
- package/dist/types-DsdZvEI1.d.cts +92 -0
- package/dist/types-DsdZvEI1.d.ts +92 -0
- package/dist/utils/index.d.cts +13 -2
- package/dist/utils/index.d.ts +13 -2
- package/package.json +62 -13
- package/dist/Animated-XmH6k8pZ.d.cts +0 -188
- package/dist/Animated-XmH6k8pZ.d.ts +0 -188
- package/dist/CsvBlock-ROJCKJDP.cjs +0 -16
- package/dist/CsvBlock-UWPMTLE2.js +0 -7
- package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +0 -16
- package/dist/HtmlPreviewBlock-ME5U3XNS.js +0 -7
- package/dist/MedicationEditor-Bp4NLy7y.d.cts +0 -352
- package/dist/MedicationEditor-Bp4NLy7y.d.ts +0 -352
- package/dist/MermaidBlock-2B6CPD6Y.js +0 -7
- package/dist/MermaidBlock-D2UC5M55.cjs +0 -16
- package/dist/SurveyBlock-4CD4AYMJ.cjs +0 -16
- package/dist/SurveyBlock-4DO62RBT.js +0 -7
- package/dist/chunk-22CYDCXA.js.map +0 -1
- package/dist/chunk-3T7QGLNB.js.map +0 -1
- package/dist/chunk-6HFFWEM3.cjs +0 -22
- package/dist/chunk-6HFFWEM3.cjs.map +0 -1
- package/dist/chunk-ACCAXVOG.js.map +0 -1
- package/dist/chunk-GOALNQZ2.js.map +0 -1
- package/dist/chunk-HB7C7NB5.js +0 -20
- package/dist/chunk-HB7C7NB5.js.map +0 -1
- package/dist/chunk-JHULS3EC.js.map +0 -1
- package/dist/chunk-JI244Y7C.js.map +0 -1
- package/dist/chunk-JYZW2PZS.cjs.map +0 -1
- package/dist/chunk-NV2CWBI2.cjs.map +0 -1
- package/dist/chunk-SQHMGT4W.js.map +0 -1
- package/dist/chunk-U42F3HLE.cjs.map +0 -1
- package/dist/chunk-VKELAMAZ.js.map +0 -1
- package/dist/chunk-VNYW4C4J.cjs.map +0 -1
- package/dist/chunk-WIAQQNFU.cjs.map +0 -1
- package/dist/chunk-WNAA6CLE.cjs.map +0 -1
- package/dist/chunk-WNJRS7Y7.cjs.map +0 -1
- package/dist/chunk-X4XPNTCZ.cjs.map +0 -1
- package/dist/chunk-XCP454Q6.js.map +0 -1
- package/dist/chunk-XEAT7XJG.cjs.map +0 -1
- package/dist/html-MdxqSzjD.d.cts +0 -13
- package/dist/html-MdxqSzjD.d.ts +0 -13
- package/dist/orderRows-BUJYgSc7.d.cts +0 -221
- package/dist/orderRows-BUJYgSc7.d.ts +0 -221
- package/dist/transcript-Cg7uSW-C.d.cts +0 -84
- package/dist/transcript-Cg7uSW-C.d.ts +0 -84
- package/dist/types-B97JNRNQ.d.cts +0 -251
- package/dist/types-CnPEwzlp.d.cts +0 -254
- package/dist/types-CnPEwzlp.d.ts +0 -254
- package/dist/types-gZXrfLj6.d.ts +0 -251
- package/dist/useAnchoredPosition-CKwLSQW8.d.cts +0 -76
- package/dist/useAnchoredPosition-CKwLSQW8.d.ts +0 -76
- package/dist/useTheme-B9SWu6ui.d.cts +0 -24
- package/dist/useTheme-B9SWu6ui.d.ts +0 -24
- package/dist/useTranscriptEdits-CGzlemHT.d.cts +0 -182
- package/dist/useTranscriptEdits-D32bLs0l.d.ts +0 -182
package/dist/esheet.cjs
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZTMYKAVU_cjs = require('./chunk-ZTMYKAVU.cjs');
|
|
4
4
|
require('./chunk-BSDBI6H7.cjs');
|
|
5
|
-
require('./chunk-
|
|
5
|
+
require('./chunk-JSXIB6EJ.cjs');
|
|
6
6
|
require('./chunk-G7EQ3JPX.cjs');
|
|
7
7
|
require('./chunk-AIJAFPGJ.cjs');
|
|
8
|
-
require('./chunk-
|
|
8
|
+
require('./chunk-UPWIJC6I.cjs');
|
|
9
9
|
require('./chunk-ZSGEGISB.cjs');
|
|
10
|
-
require('./chunk-I44YNYI6.cjs');
|
|
11
10
|
require('./chunk-MJWFNV3L.cjs');
|
|
11
|
+
require('./chunk-T4L7Q5FA.cjs');
|
|
12
|
+
require('./chunk-I44YNYI6.cjs');
|
|
12
13
|
require('./chunk-Z5S5JEJD.cjs');
|
|
13
14
|
require('./chunk-YVPC65ZJ.cjs');
|
|
15
|
+
require('./chunk-NNEFAUHV.cjs');
|
|
16
|
+
require('./chunk-FHY3K6PL.cjs');
|
|
14
17
|
require('./chunk-FSGEDDF2.cjs');
|
|
15
18
|
require('./chunk-AOHJILLU.cjs');
|
|
16
19
|
require('./chunk-CW75IKA6.cjs');
|
|
17
|
-
require('./chunk-7ZDPD5ZX.cjs');
|
|
18
|
-
require('./chunk-NNEFAUHV.cjs');
|
|
19
|
-
require('./chunk-FHY3K6PL.cjs');
|
|
20
20
|
require('./chunk-SCV7C55E.cjs');
|
|
21
21
|
require('./chunk-L7L5S2HO.cjs');
|
|
22
|
-
require('./chunk-
|
|
22
|
+
require('./chunk-YW2AKBLS.cjs');
|
|
23
|
+
require('./chunk-X6A27RGO.cjs');
|
|
23
24
|
require('./chunk-YVL3XATO.cjs');
|
|
24
|
-
require('./chunk-
|
|
25
|
-
require('./chunk-
|
|
25
|
+
require('./chunk-DXEPYK3I.cjs');
|
|
26
|
+
require('./chunk-IEY3ZJIT.cjs');
|
|
26
27
|
require('./chunk-S5RVSXDV.cjs');
|
|
27
28
|
require('./chunk-EUAMEVVI.cjs');
|
|
28
29
|
var builder = require('@esheet/builder');
|
|
@@ -80,7 +81,7 @@ function MedicationListField({
|
|
|
80
81
|
return definition.medications ?? [];
|
|
81
82
|
}, [response?.answer, definition.medications]);
|
|
82
83
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
83
|
-
|
|
84
|
+
chunkZTMYKAVU_cjs.MedicationReconciliation,
|
|
84
85
|
{
|
|
85
86
|
medications,
|
|
86
87
|
onChange: (next) => onResponse({ answer: JSON.stringify({ medications: next }) }),
|
|
@@ -137,7 +138,7 @@ function AllergyListField({
|
|
|
137
138
|
codeLookup
|
|
138
139
|
}) {
|
|
139
140
|
const definition = field.definition;
|
|
140
|
-
const ambientCodeLookup =
|
|
141
|
+
const ambientCodeLookup = chunkZTMYKAVU_cjs.useCodeLookupConfig();
|
|
141
142
|
const effectiveCodeLookup = codeLookup === false ? void 0 : codeLookup ?? ambientCodeLookup ?? void 0;
|
|
142
143
|
const value = React__namespace.useMemo(() => {
|
|
143
144
|
if (response?.answer) return parseValue2(response.answer);
|
|
@@ -147,7 +148,7 @@ function AllergyListField({
|
|
|
147
148
|
onResponse({ answer: JSON.stringify(next) });
|
|
148
149
|
};
|
|
149
150
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
150
|
-
|
|
151
|
+
chunkZTMYKAVU_cjs.AllergyManager,
|
|
151
152
|
{
|
|
152
153
|
allergies: value.allergies,
|
|
153
154
|
onChange: (allergies) => commit({
|
package/dist/esheet.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["React","jsx","MedicationReconciliation","registerCustomFieldTypes","parseValue","useCodeLookupConfig","React2","AllergyManager"],"mappings":"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","file":"esheet.cjs","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["React","jsx","MedicationReconciliation","registerCustomFieldTypes","parseValue","useCodeLookupConfig","React2","AllergyManager"],"mappings":"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","file":"esheet.cjs","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}
|
package/dist/esheet.d.cts
CHANGED
|
@@ -3,7 +3,143 @@ export { FormDefinition } from '@esheet/core';
|
|
|
3
3
|
export { EsheetBuilder, EsheetBuilderProps } from '@esheet/builder';
|
|
4
4
|
export { EsheetRenderer, EsheetRendererHandle, EsheetRendererProps } from '@esheet/renderer';
|
|
5
5
|
import * as React from 'react';
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
/** Reconciliation status of a medication. */
|
|
8
|
+
type MedicationStatus = 'unreconciled' | 'taking' | 'taking-noncompliant' | 'not-taking' | 'unknown';
|
|
9
|
+
/** Coding-system reference for a medication (RxNorm / FDB / NDC …). */
|
|
10
|
+
interface MedicationCode {
|
|
11
|
+
/** Coding system, e.g. 'RxNORM', 'FDB', 'NDC' */
|
|
12
|
+
system: string;
|
|
13
|
+
/** Code within the system */
|
|
14
|
+
code: string;
|
|
15
|
+
/** Human-readable label the code was selected under */
|
|
16
|
+
display?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A single medication in the presenting-medications list.
|
|
20
|
+
*
|
|
21
|
+
* Prescription-detail fields follow the NCPDP SCRIPT NewRx
|
|
22
|
+
* `MedicationPrescribed` composite — see the README for the field mapping.
|
|
23
|
+
* All are optional: a bare `{ id, name, status }` renders fine.
|
|
24
|
+
*/
|
|
25
|
+
interface Medication {
|
|
26
|
+
/** Stable unique id */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Display name, e.g. "lisinopril 10 mg tablet" (NCPDP DrugDescription) */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Patient-friendly instructions (NCPDP Sig / Directions) */
|
|
31
|
+
sig?: string;
|
|
32
|
+
/** Current reconciliation status */
|
|
33
|
+
status: MedicationStatus;
|
|
34
|
+
/** Whether the medication's end date has passed */
|
|
35
|
+
expired?: boolean;
|
|
36
|
+
/** Discontinued date (display string) — shown as "Discontinued on: date" */
|
|
37
|
+
discontinuedDate?: string;
|
|
38
|
+
/** Free-text note attached to the medication */
|
|
39
|
+
note?: string;
|
|
40
|
+
/** Follow-up task attached to the medication */
|
|
41
|
+
task?: string;
|
|
42
|
+
/** Code reference (RxNorm / FDB / NDC) */
|
|
43
|
+
code?: MedicationCode;
|
|
44
|
+
/** Strength, e.g. "10 mg" (Strength + StrengthUnitOfMeasure) */
|
|
45
|
+
strength?: string;
|
|
46
|
+
/** Dose form, e.g. "tablet" (DrugCoded/FormCode) */
|
|
47
|
+
doseForm?: string;
|
|
48
|
+
/** Quantity dispensed (Quantity/Value) */
|
|
49
|
+
quantity?: string;
|
|
50
|
+
/** Quantity unit of measure (Quantity/QuantityUnitOfMeasure) */
|
|
51
|
+
quantityUnit?: string;
|
|
52
|
+
/** Days supply (DaysSupply) */
|
|
53
|
+
daysSupply?: string;
|
|
54
|
+
/** Route of administration, e.g. "oral" */
|
|
55
|
+
route?: string;
|
|
56
|
+
/** Administration frequency, e.g. "Twice daily" */
|
|
57
|
+
frequency?: string;
|
|
58
|
+
/** As-needed flag (PRN) */
|
|
59
|
+
prn?: boolean;
|
|
60
|
+
/** Number of refills (NumberOfRefills) */
|
|
61
|
+
refills?: string;
|
|
62
|
+
/** Substitution / DAW: '0' permitted, '1' dispense as written */
|
|
63
|
+
substitution?: '0' | '1';
|
|
64
|
+
/** Start / written date (ISO yyyy-mm-dd) */
|
|
65
|
+
startDate?: string;
|
|
66
|
+
/** End date (ISO yyyy-mm-dd) */
|
|
67
|
+
endDate?: string;
|
|
68
|
+
/** Indication / diagnosis the medication treats */
|
|
69
|
+
indication?: string;
|
|
70
|
+
/** Note to pharmacy (Note) */
|
|
71
|
+
pharmacyNotes?: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* MedicationEditor — prescription editor modal for a `Medication`.
|
|
76
|
+
*
|
|
77
|
+
* Captures the NCPDP SCRIPT NewRx `MedicationPrescribed` field set and codes
|
|
78
|
+
* the drug via `CodeLookup` (RxNorm / FDB, offline). Used by
|
|
79
|
+
* `MedicationReconciliation` for both **Correct** (edit) and **Add
|
|
80
|
+
* Medication**, and usable directly:
|
|
81
|
+
*
|
|
82
|
+
* ```tsx
|
|
83
|
+
* <MedicationEditor
|
|
84
|
+
* open={editing !== null}
|
|
85
|
+
* medication={editing ?? undefined}
|
|
86
|
+
* codeLookup={{ indexUrl: '/codify' }}
|
|
87
|
+
* onClose={() => setEditing(null)}
|
|
88
|
+
* onSave={(med) => upsert(med)}
|
|
89
|
+
* />
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* NCPDP mapping (NewRx / MedicationPrescribed):
|
|
93
|
+
*
|
|
94
|
+
* | Editor field | NCPDP element |
|
|
95
|
+
* |----------------|----------------------------------------|
|
|
96
|
+
* | Medication | DrugDescription |
|
|
97
|
+
* | Code | DrugCoded (ProductCode / DrugDBCode) |
|
|
98
|
+
* | Strength | Strength + StrengthUnitOfMeasure |
|
|
99
|
+
* | Dose form | DrugCoded/FormCode |
|
|
100
|
+
* | Quantity | Quantity/Value |
|
|
101
|
+
* | Quantity unit | Quantity/QuantityUnitOfMeasure |
|
|
102
|
+
* | Days supply | DaysSupply |
|
|
103
|
+
* | Directions | Sig/SigText |
|
|
104
|
+
* | Refills | NumberOfRefills |
|
|
105
|
+
* | Substitution | Substitutions (0 permitted / 1 DAW) |
|
|
106
|
+
* | Start date | WrittenDate / EffectiveDate |
|
|
107
|
+
* | Indication | Diagnosis/Primary |
|
|
108
|
+
* | Pharmacy notes | Note |
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
/** Minimal shape of a CodeLookup selection the editor consumes. */
|
|
112
|
+
interface MedicationLookupResult {
|
|
113
|
+
label: string;
|
|
114
|
+
codetype: string;
|
|
115
|
+
fullcode: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Structural subset of `CodeLookupProps` the editor uses. `CodeLookup`
|
|
119
|
+
* satisfies this — it is injected (not imported) because its Web Worker
|
|
120
|
+
* keeps it out of the library build (see CodeLookup/index.ts).
|
|
121
|
+
*/
|
|
122
|
+
interface MedicationLookupProps {
|
|
123
|
+
indexUrl: string;
|
|
124
|
+
locale?: string;
|
|
125
|
+
domains?: 'med'[];
|
|
126
|
+
bare?: boolean;
|
|
127
|
+
clearOnSelect?: boolean;
|
|
128
|
+
placeholder?: string;
|
|
129
|
+
initialQuery?: string;
|
|
130
|
+
initialSearch?: boolean;
|
|
131
|
+
onSelect?: (result: MedicationLookupResult) => void;
|
|
132
|
+
onFreeText?: (text: string) => void;
|
|
133
|
+
}
|
|
134
|
+
/** CodeLookup wiring for the editor (component injected by the consumer). */
|
|
135
|
+
interface CodeLookupConfig {
|
|
136
|
+
/** The CodeLookup component: `import { CodeLookup } from '…/CodeLookup'` */
|
|
137
|
+
component: React.ComponentType<MedicationLookupProps>;
|
|
138
|
+
/** Base URL of the codify index, e.g. '/codify' */
|
|
139
|
+
indexUrl: string;
|
|
140
|
+
/** Shard locale (default 'en') */
|
|
141
|
+
locale?: string;
|
|
142
|
+
}
|
|
7
143
|
|
|
8
144
|
/**
|
|
9
145
|
* MedicationListField — eSheet custom field wrapper around
|
|
@@ -51,6 +187,52 @@ declare function registerMedicationListFieldType(options?: {
|
|
|
51
187
|
codeLookup?: CodeLookupConfig | false;
|
|
52
188
|
}): void;
|
|
53
189
|
|
|
190
|
+
/** Allergy category (FHIR AllergyIntolerance.category). */
|
|
191
|
+
type AllergyType = 'drug' | 'food' | 'environmental' | 'other';
|
|
192
|
+
/**
|
|
193
|
+
* Mechanism distinction (FHIR AllergyIntolerance.type): a true
|
|
194
|
+
* immune-mediated allergy vs a non-immune intolerance (e.g. GI upset).
|
|
195
|
+
* The distinction matters clinically — an intolerance mislabeled as an
|
|
196
|
+
* allergy causes unnecessary avoidance of first-line drugs.
|
|
197
|
+
*/
|
|
198
|
+
type AllergyKind = 'allergy' | 'intolerance';
|
|
199
|
+
/** Reaction severity (FHIR reaction.severity). */
|
|
200
|
+
type AllergySeverity = 'mild' | 'moderate' | 'severe';
|
|
201
|
+
/** Coding-system reference for an allergen (RxNorm / FDB / SNOMED …). */
|
|
202
|
+
interface AllergyCode {
|
|
203
|
+
system: string;
|
|
204
|
+
code: string;
|
|
205
|
+
display?: string;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* A single allergy / intolerance.
|
|
209
|
+
*
|
|
210
|
+
* Loosely follows FHIR AllergyIntolerance: allergen (+ optional code),
|
|
211
|
+
* category, reaction, severity, onset, and clinical status.
|
|
212
|
+
*/
|
|
213
|
+
interface Allergy {
|
|
214
|
+
/** Stable unique id */
|
|
215
|
+
id: string;
|
|
216
|
+
/** Allergen display name, e.g. "penicillin" */
|
|
217
|
+
allergen: string;
|
|
218
|
+
/** Category — groups the list */
|
|
219
|
+
type?: AllergyType;
|
|
220
|
+
/** Allergy vs intolerance (FHIR AllergyIntolerance.type; default 'allergy') */
|
|
221
|
+
kind?: AllergyKind;
|
|
222
|
+
/** Reaction description, e.g. "hives" */
|
|
223
|
+
reaction?: string;
|
|
224
|
+
/** Reaction severity — drives the badge color */
|
|
225
|
+
severity?: AllergySeverity;
|
|
226
|
+
/** Onset date (display string) */
|
|
227
|
+
onsetDate?: string;
|
|
228
|
+
/** Free-text note */
|
|
229
|
+
note?: string;
|
|
230
|
+
/** Inactive/resolved entries render struck through */
|
|
231
|
+
inactive?: boolean;
|
|
232
|
+
/** Code reference (RxNorm/FDB for drugs, SNOMED otherwise) */
|
|
233
|
+
code?: AllergyCode;
|
|
234
|
+
}
|
|
235
|
+
|
|
54
236
|
/**
|
|
55
237
|
* AllergyListField — eSheet custom field wrapper around AllergyManager.
|
|
56
238
|
*
|
package/dist/esheet.d.ts
CHANGED
|
@@ -3,7 +3,143 @@ export { FormDefinition } from '@esheet/core';
|
|
|
3
3
|
export { EsheetBuilder, EsheetBuilderProps } from '@esheet/builder';
|
|
4
4
|
export { EsheetRenderer, EsheetRendererHandle, EsheetRendererProps } from '@esheet/renderer';
|
|
5
5
|
import * as React from 'react';
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
/** Reconciliation status of a medication. */
|
|
8
|
+
type MedicationStatus = 'unreconciled' | 'taking' | 'taking-noncompliant' | 'not-taking' | 'unknown';
|
|
9
|
+
/** Coding-system reference for a medication (RxNorm / FDB / NDC …). */
|
|
10
|
+
interface MedicationCode {
|
|
11
|
+
/** Coding system, e.g. 'RxNORM', 'FDB', 'NDC' */
|
|
12
|
+
system: string;
|
|
13
|
+
/** Code within the system */
|
|
14
|
+
code: string;
|
|
15
|
+
/** Human-readable label the code was selected under */
|
|
16
|
+
display?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A single medication in the presenting-medications list.
|
|
20
|
+
*
|
|
21
|
+
* Prescription-detail fields follow the NCPDP SCRIPT NewRx
|
|
22
|
+
* `MedicationPrescribed` composite — see the README for the field mapping.
|
|
23
|
+
* All are optional: a bare `{ id, name, status }` renders fine.
|
|
24
|
+
*/
|
|
25
|
+
interface Medication {
|
|
26
|
+
/** Stable unique id */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Display name, e.g. "lisinopril 10 mg tablet" (NCPDP DrugDescription) */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Patient-friendly instructions (NCPDP Sig / Directions) */
|
|
31
|
+
sig?: string;
|
|
32
|
+
/** Current reconciliation status */
|
|
33
|
+
status: MedicationStatus;
|
|
34
|
+
/** Whether the medication's end date has passed */
|
|
35
|
+
expired?: boolean;
|
|
36
|
+
/** Discontinued date (display string) — shown as "Discontinued on: date" */
|
|
37
|
+
discontinuedDate?: string;
|
|
38
|
+
/** Free-text note attached to the medication */
|
|
39
|
+
note?: string;
|
|
40
|
+
/** Follow-up task attached to the medication */
|
|
41
|
+
task?: string;
|
|
42
|
+
/** Code reference (RxNorm / FDB / NDC) */
|
|
43
|
+
code?: MedicationCode;
|
|
44
|
+
/** Strength, e.g. "10 mg" (Strength + StrengthUnitOfMeasure) */
|
|
45
|
+
strength?: string;
|
|
46
|
+
/** Dose form, e.g. "tablet" (DrugCoded/FormCode) */
|
|
47
|
+
doseForm?: string;
|
|
48
|
+
/** Quantity dispensed (Quantity/Value) */
|
|
49
|
+
quantity?: string;
|
|
50
|
+
/** Quantity unit of measure (Quantity/QuantityUnitOfMeasure) */
|
|
51
|
+
quantityUnit?: string;
|
|
52
|
+
/** Days supply (DaysSupply) */
|
|
53
|
+
daysSupply?: string;
|
|
54
|
+
/** Route of administration, e.g. "oral" */
|
|
55
|
+
route?: string;
|
|
56
|
+
/** Administration frequency, e.g. "Twice daily" */
|
|
57
|
+
frequency?: string;
|
|
58
|
+
/** As-needed flag (PRN) */
|
|
59
|
+
prn?: boolean;
|
|
60
|
+
/** Number of refills (NumberOfRefills) */
|
|
61
|
+
refills?: string;
|
|
62
|
+
/** Substitution / DAW: '0' permitted, '1' dispense as written */
|
|
63
|
+
substitution?: '0' | '1';
|
|
64
|
+
/** Start / written date (ISO yyyy-mm-dd) */
|
|
65
|
+
startDate?: string;
|
|
66
|
+
/** End date (ISO yyyy-mm-dd) */
|
|
67
|
+
endDate?: string;
|
|
68
|
+
/** Indication / diagnosis the medication treats */
|
|
69
|
+
indication?: string;
|
|
70
|
+
/** Note to pharmacy (Note) */
|
|
71
|
+
pharmacyNotes?: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* MedicationEditor — prescription editor modal for a `Medication`.
|
|
76
|
+
*
|
|
77
|
+
* Captures the NCPDP SCRIPT NewRx `MedicationPrescribed` field set and codes
|
|
78
|
+
* the drug via `CodeLookup` (RxNorm / FDB, offline). Used by
|
|
79
|
+
* `MedicationReconciliation` for both **Correct** (edit) and **Add
|
|
80
|
+
* Medication**, and usable directly:
|
|
81
|
+
*
|
|
82
|
+
* ```tsx
|
|
83
|
+
* <MedicationEditor
|
|
84
|
+
* open={editing !== null}
|
|
85
|
+
* medication={editing ?? undefined}
|
|
86
|
+
* codeLookup={{ indexUrl: '/codify' }}
|
|
87
|
+
* onClose={() => setEditing(null)}
|
|
88
|
+
* onSave={(med) => upsert(med)}
|
|
89
|
+
* />
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* NCPDP mapping (NewRx / MedicationPrescribed):
|
|
93
|
+
*
|
|
94
|
+
* | Editor field | NCPDP element |
|
|
95
|
+
* |----------------|----------------------------------------|
|
|
96
|
+
* | Medication | DrugDescription |
|
|
97
|
+
* | Code | DrugCoded (ProductCode / DrugDBCode) |
|
|
98
|
+
* | Strength | Strength + StrengthUnitOfMeasure |
|
|
99
|
+
* | Dose form | DrugCoded/FormCode |
|
|
100
|
+
* | Quantity | Quantity/Value |
|
|
101
|
+
* | Quantity unit | Quantity/QuantityUnitOfMeasure |
|
|
102
|
+
* | Days supply | DaysSupply |
|
|
103
|
+
* | Directions | Sig/SigText |
|
|
104
|
+
* | Refills | NumberOfRefills |
|
|
105
|
+
* | Substitution | Substitutions (0 permitted / 1 DAW) |
|
|
106
|
+
* | Start date | WrittenDate / EffectiveDate |
|
|
107
|
+
* | Indication | Diagnosis/Primary |
|
|
108
|
+
* | Pharmacy notes | Note |
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
/** Minimal shape of a CodeLookup selection the editor consumes. */
|
|
112
|
+
interface MedicationLookupResult {
|
|
113
|
+
label: string;
|
|
114
|
+
codetype: string;
|
|
115
|
+
fullcode: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Structural subset of `CodeLookupProps` the editor uses. `CodeLookup`
|
|
119
|
+
* satisfies this — it is injected (not imported) because its Web Worker
|
|
120
|
+
* keeps it out of the library build (see CodeLookup/index.ts).
|
|
121
|
+
*/
|
|
122
|
+
interface MedicationLookupProps {
|
|
123
|
+
indexUrl: string;
|
|
124
|
+
locale?: string;
|
|
125
|
+
domains?: 'med'[];
|
|
126
|
+
bare?: boolean;
|
|
127
|
+
clearOnSelect?: boolean;
|
|
128
|
+
placeholder?: string;
|
|
129
|
+
initialQuery?: string;
|
|
130
|
+
initialSearch?: boolean;
|
|
131
|
+
onSelect?: (result: MedicationLookupResult) => void;
|
|
132
|
+
onFreeText?: (text: string) => void;
|
|
133
|
+
}
|
|
134
|
+
/** CodeLookup wiring for the editor (component injected by the consumer). */
|
|
135
|
+
interface CodeLookupConfig {
|
|
136
|
+
/** The CodeLookup component: `import { CodeLookup } from '…/CodeLookup'` */
|
|
137
|
+
component: React.ComponentType<MedicationLookupProps>;
|
|
138
|
+
/** Base URL of the codify index, e.g. '/codify' */
|
|
139
|
+
indexUrl: string;
|
|
140
|
+
/** Shard locale (default 'en') */
|
|
141
|
+
locale?: string;
|
|
142
|
+
}
|
|
7
143
|
|
|
8
144
|
/**
|
|
9
145
|
* MedicationListField — eSheet custom field wrapper around
|
|
@@ -51,6 +187,52 @@ declare function registerMedicationListFieldType(options?: {
|
|
|
51
187
|
codeLookup?: CodeLookupConfig | false;
|
|
52
188
|
}): void;
|
|
53
189
|
|
|
190
|
+
/** Allergy category (FHIR AllergyIntolerance.category). */
|
|
191
|
+
type AllergyType = 'drug' | 'food' | 'environmental' | 'other';
|
|
192
|
+
/**
|
|
193
|
+
* Mechanism distinction (FHIR AllergyIntolerance.type): a true
|
|
194
|
+
* immune-mediated allergy vs a non-immune intolerance (e.g. GI upset).
|
|
195
|
+
* The distinction matters clinically — an intolerance mislabeled as an
|
|
196
|
+
* allergy causes unnecessary avoidance of first-line drugs.
|
|
197
|
+
*/
|
|
198
|
+
type AllergyKind = 'allergy' | 'intolerance';
|
|
199
|
+
/** Reaction severity (FHIR reaction.severity). */
|
|
200
|
+
type AllergySeverity = 'mild' | 'moderate' | 'severe';
|
|
201
|
+
/** Coding-system reference for an allergen (RxNorm / FDB / SNOMED …). */
|
|
202
|
+
interface AllergyCode {
|
|
203
|
+
system: string;
|
|
204
|
+
code: string;
|
|
205
|
+
display?: string;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* A single allergy / intolerance.
|
|
209
|
+
*
|
|
210
|
+
* Loosely follows FHIR AllergyIntolerance: allergen (+ optional code),
|
|
211
|
+
* category, reaction, severity, onset, and clinical status.
|
|
212
|
+
*/
|
|
213
|
+
interface Allergy {
|
|
214
|
+
/** Stable unique id */
|
|
215
|
+
id: string;
|
|
216
|
+
/** Allergen display name, e.g. "penicillin" */
|
|
217
|
+
allergen: string;
|
|
218
|
+
/** Category — groups the list */
|
|
219
|
+
type?: AllergyType;
|
|
220
|
+
/** Allergy vs intolerance (FHIR AllergyIntolerance.type; default 'allergy') */
|
|
221
|
+
kind?: AllergyKind;
|
|
222
|
+
/** Reaction description, e.g. "hives" */
|
|
223
|
+
reaction?: string;
|
|
224
|
+
/** Reaction severity — drives the badge color */
|
|
225
|
+
severity?: AllergySeverity;
|
|
226
|
+
/** Onset date (display string) */
|
|
227
|
+
onsetDate?: string;
|
|
228
|
+
/** Free-text note */
|
|
229
|
+
note?: string;
|
|
230
|
+
/** Inactive/resolved entries render struck through */
|
|
231
|
+
inactive?: boolean;
|
|
232
|
+
/** Code reference (RxNorm/FDB for drugs, SNOMED otherwise) */
|
|
233
|
+
code?: AllergyCode;
|
|
234
|
+
}
|
|
235
|
+
|
|
54
236
|
/**
|
|
55
237
|
* AllergyListField — eSheet custom field wrapper around AllergyManager.
|
|
56
238
|
*
|
package/dist/esheet.js
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-
|
|
1
|
+
import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-JBIGSP2T.js';
|
|
2
2
|
import './chunk-H3YO5GBM.js';
|
|
3
|
-
import './chunk-
|
|
3
|
+
import './chunk-7X6R3JIA.js';
|
|
4
4
|
import './chunk-EPSB4WTL.js';
|
|
5
5
|
import './chunk-I3WGZPI6.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-VCI2Y7ST.js';
|
|
7
7
|
import './chunk-7IBZA7G6.js';
|
|
8
|
-
import './chunk-6NZXWKUE.js';
|
|
9
8
|
import './chunk-QYSUYB3S.js';
|
|
9
|
+
import './chunk-ENMXHZNE.js';
|
|
10
|
+
import './chunk-6NZXWKUE.js';
|
|
10
11
|
import './chunk-3IMM2PM4.js';
|
|
11
12
|
import './chunk-7ZVTLTJF.js';
|
|
13
|
+
import './chunk-4SMSH4OY.js';
|
|
14
|
+
import './chunk-T4ME7QCT.js';
|
|
12
15
|
import './chunk-62ZOA6PX.js';
|
|
13
16
|
import './chunk-WSNMQQ4P.js';
|
|
14
17
|
import './chunk-RC2YMOMS.js';
|
|
15
|
-
import './chunk-5JJ2DAE4.js';
|
|
16
|
-
import './chunk-4SMSH4OY.js';
|
|
17
|
-
import './chunk-T4ME7QCT.js';
|
|
18
18
|
import './chunk-VSQF22GL.js';
|
|
19
19
|
import './chunk-BKSPDTX4.js';
|
|
20
|
-
import './chunk-
|
|
20
|
+
import './chunk-XDU65GLW.js';
|
|
21
|
+
import './chunk-7YO7DNUV.js';
|
|
21
22
|
import './chunk-BMSG4NBH.js';
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
23
|
+
import './chunk-GVM6DTR5.js';
|
|
24
|
+
import './chunk-F4N67NAF.js';
|
|
24
25
|
import './chunk-TQONQSJO.js';
|
|
25
26
|
import './chunk-PX6F3LHL.js';
|
|
26
27
|
export { EsheetBuilder } from '@esheet/builder';
|
package/dist/esheet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["parseValue","React2","jsx","registerCustomFieldTypes"],"mappings":"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","file":"esheet.js","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["parseValue","React2","jsx","registerCustomFieldTypes"],"mappings":"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","file":"esheet.js","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}
|