formanitor 0.2.0 → 0.2.1
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/{AddInvestigationWidget-TQUKTGAW.mjs → AddInvestigationWidget-7UGZQYI5.mjs} +3 -3
- package/dist/{AddInvestigationWidget-TQUKTGAW.mjs.map → AddInvestigationWidget-7UGZQYI5.mjs.map} +1 -1
- package/dist/{AddInvestigationWidget-G7NPTSFY.cjs → AddInvestigationWidget-RY62UCPM.cjs} +7 -7
- package/dist/{AddInvestigationWidget-G7NPTSFY.cjs.map → AddInvestigationWidget-RY62UCPM.cjs.map} +1 -1
- package/dist/{AddMedicationWidget-I5UIT3WG.mjs → AddMedicationWidget-UG26VMUX.mjs} +3 -3
- package/dist/{AddMedicationWidget-I5UIT3WG.mjs.map → AddMedicationWidget-UG26VMUX.mjs.map} +1 -1
- package/dist/{AddMedicationWidget-26RHKIA6.cjs → AddMedicationWidget-WPI32WAP.cjs} +6 -6
- package/dist/{AddMedicationWidget-26RHKIA6.cjs.map → AddMedicationWidget-WPI32WAP.cjs.map} +1 -1
- package/dist/{AddProcedureWidget-B6OUF3BM.cjs → AddProcedureWidget-SF6MTRBV.cjs} +6 -6
- package/dist/{AddProcedureWidget-B6OUF3BM.cjs.map → AddProcedureWidget-SF6MTRBV.cjs.map} +1 -1
- package/dist/{AddProcedureWidget-NB46COB6.mjs → AddProcedureWidget-SQJUKKMK.mjs} +3 -3
- package/dist/{AddProcedureWidget-NB46COB6.mjs.map → AddProcedureWidget-SQJUKKMK.mjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-TCU4MMVI.cjs → BiometryIolWorkupWidget-I5AJOYB2.cjs} +6 -6
- package/dist/{BiometryIolWorkupWidget-TCU4MMVI.cjs.map → BiometryIolWorkupWidget-I5AJOYB2.cjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-F7HRYMOJ.mjs → BiometryIolWorkupWidget-NL2M7ZAA.mjs} +4 -4
- package/dist/{BiometryIolWorkupWidget-F7HRYMOJ.mjs.map → BiometryIolWorkupWidget-NL2M7ZAA.mjs.map} +1 -1
- package/dist/{DateTimeWidget-72YUK7PX.cjs → DateTimeWidget-DIDVF2EB.cjs} +6 -6
- package/dist/{DateTimeWidget-72YUK7PX.cjs.map → DateTimeWidget-DIDVF2EB.cjs.map} +1 -1
- package/dist/{DateTimeWidget-WKQIEQSA.mjs → DateTimeWidget-LFBB6HOP.mjs} +4 -4
- package/dist/{DateTimeWidget-WKQIEQSA.mjs.map → DateTimeWidget-LFBB6HOP.mjs.map} +1 -1
- package/dist/{DateWidget-K2TVTZ7Z.mjs → DateWidget-4ND5TKP2.mjs} +4 -4
- package/dist/{DateWidget-K2TVTZ7Z.mjs.map → DateWidget-4ND5TKP2.mjs.map} +1 -1
- package/dist/{DateWidget-SYDMSGWO.cjs → DateWidget-BCVR5GDK.cjs} +6 -6
- package/dist/{DateWidget-SYDMSGWO.cjs.map → DateWidget-BCVR5GDK.cjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-UKWLE2SQ.cjs → DiagnosisTextareaWidget-E7OQRUMX.cjs} +7 -7
- package/dist/{DiagnosisTextareaWidget-UKWLE2SQ.cjs.map → DiagnosisTextareaWidget-E7OQRUMX.cjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-RD65PGDY.mjs → DiagnosisTextareaWidget-MAOXCXEZ.mjs} +4 -4
- package/dist/{DiagnosisTextareaWidget-RD65PGDY.mjs.map → DiagnosisTextareaWidget-MAOXCXEZ.mjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-ZGFXP2BH.cjs → DifferentialDiagnosisWidget-ANALLNKL.cjs} +4 -4
- package/dist/{DifferentialDiagnosisWidget-ZGFXP2BH.cjs.map → DifferentialDiagnosisWidget-ANALLNKL.cjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-FENJP245.mjs → DifferentialDiagnosisWidget-LCY2SA2I.mjs} +3 -3
- package/dist/{DifferentialDiagnosisWidget-FENJP245.mjs.map → DifferentialDiagnosisWidget-LCY2SA2I.mjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-26ALTGJM.mjs → DischargeMedicationOrdersWidget-GYT35W7J.mjs} +4 -4
- package/dist/{DischargeMedicationOrdersWidget-26ALTGJM.mjs.map → DischargeMedicationOrdersWidget-GYT35W7J.mjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-B4CJQ3QS.cjs → DischargeMedicationOrdersWidget-ILWNZ7VM.cjs} +7 -7
- package/dist/{DischargeMedicationOrdersWidget-B4CJQ3QS.cjs.map → DischargeMedicationOrdersWidget-ILWNZ7VM.cjs.map} +1 -1
- package/dist/{EditableTable-LPAYCK36.mjs → EditableTable-TGCVUBLO.mjs} +3 -3
- package/dist/{EditableTable-LPAYCK36.mjs.map → EditableTable-TGCVUBLO.mjs.map} +1 -1
- package/dist/{EditableTable-YB4IC3ZK.cjs → EditableTable-VCUNJZEX.cjs} +4 -4
- package/dist/{EditableTable-YB4IC3ZK.cjs.map → EditableTable-VCUNJZEX.cjs.map} +1 -1
- package/dist/{FollowupWidget-NJ4QDBOG.mjs → FollowupWidget-F6FRZO4T.mjs} +3 -3
- package/dist/{FollowupWidget-NJ4QDBOG.mjs.map → FollowupWidget-F6FRZO4T.mjs.map} +1 -1
- package/dist/{FollowupWidget-EEKOI2TW.cjs → FollowupWidget-NBTOV2ML.cjs} +4 -4
- package/dist/{FollowupWidget-EEKOI2TW.cjs.map → FollowupWidget-NBTOV2ML.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-HAAPCMIS.cjs → FunctionalImpairmentScoreWidget-5V5SNLTF.cjs} +6 -6
- package/dist/{FunctionalImpairmentScoreWidget-HAAPCMIS.cjs.map → FunctionalImpairmentScoreWidget-5V5SNLTF.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs → FunctionalImpairmentScoreWidget-QKIZE7KT.mjs} +4 -4
- package/dist/{FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs.map → FunctionalImpairmentScoreWidget-QKIZE7KT.mjs.map} +1 -1
- package/dist/{GsExaminationWidget-EX6C3EF5.cjs → GsExaminationWidget-57SL4BCI.cjs} +10 -10
- package/dist/{GsExaminationWidget-EX6C3EF5.cjs.map → GsExaminationWidget-57SL4BCI.cjs.map} +1 -1
- package/dist/{GsExaminationWidget-MEIUHRQQ.mjs → GsExaminationWidget-J4VABGY6.mjs} +4 -4
- package/dist/{GsExaminationWidget-MEIUHRQQ.mjs.map → GsExaminationWidget-J4VABGY6.mjs.map} +1 -1
- package/dist/{GsGradingWidget-4UPOEYNL.mjs → GsGradingWidget-3WTLIP33.mjs} +4 -4
- package/dist/{GsGradingWidget-4UPOEYNL.mjs.map → GsGradingWidget-3WTLIP33.mjs.map} +1 -1
- package/dist/{GsGradingWidget-IV3UF63W.cjs → GsGradingWidget-CIXE36HF.cjs} +12 -12
- package/dist/{GsGradingWidget-IV3UF63W.cjs.map → GsGradingWidget-CIXE36HF.cjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-7QNJZEI4.cjs → GsSmartHistoryWidget-6Q2IIGDG.cjs} +12 -12
- package/dist/{GsSmartHistoryWidget-7QNJZEI4.cjs.map → GsSmartHistoryWidget-6Q2IIGDG.cjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-LGN7W2AV.mjs → GsSmartHistoryWidget-IOGZ6GNS.mjs} +4 -4
- package/dist/{GsSmartHistoryWidget-LGN7W2AV.mjs.map → GsSmartHistoryWidget-IOGZ6GNS.mjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-AMH32HT2.cjs → HiddenVitalsWidget-HBK7PBPR.cjs} +6 -6
- package/dist/{HiddenVitalsWidget-AMH32HT2.cjs.map → HiddenVitalsWidget-HBK7PBPR.cjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-W23IFSEF.mjs → HiddenVitalsWidget-JH3NRZLM.mjs} +4 -4
- package/dist/{HiddenVitalsWidget-W23IFSEF.mjs.map → HiddenVitalsWidget-JH3NRZLM.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-SJ6YUTSN.mjs → LensAssessmentWidget-7WMULFS2.mjs} +4 -4
- package/dist/{LensAssessmentWidget-SJ6YUTSN.mjs.map → LensAssessmentWidget-7WMULFS2.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-LSHBUTT5.cjs → LensAssessmentWidget-GSOOD7BX.cjs} +6 -6
- package/dist/{LensAssessmentWidget-LSHBUTT5.cjs.map → LensAssessmentWidget-GSOOD7BX.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-ZKZLSZRN.cjs → MarMedicationOrdersWidget-3E6GFOR6.cjs} +7 -7
- package/dist/{MarMedicationOrdersWidget-ZKZLSZRN.cjs.map → MarMedicationOrdersWidget-3E6GFOR6.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-IKMAFPRG.mjs → MarMedicationOrdersWidget-QZUVSEB5.mjs} +4 -4
- package/dist/{MarMedicationOrdersWidget-IKMAFPRG.mjs.map → MarMedicationOrdersWidget-QZUVSEB5.mjs.map} +1 -1
- package/dist/{OBGExaminationWidget-SMFZ2WCL.cjs → OBGExaminationWidget-F2ZNSP2M.cjs} +11 -11
- package/dist/{OBGExaminationWidget-SMFZ2WCL.cjs.map → OBGExaminationWidget-F2ZNSP2M.cjs.map} +1 -1
- package/dist/{OBGExaminationWidget-BK4ERETW.mjs → OBGExaminationWidget-POVLALMA.mjs} +4 -4
- package/dist/{OBGExaminationWidget-BK4ERETW.mjs.map → OBGExaminationWidget-POVLALMA.mjs.map} +1 -1
- package/dist/{OBGPathwayWidget-U5BCAESB.mjs → OBGPathwayWidget-CGT7Q4T2.mjs} +5 -5
- package/dist/{OBGPathwayWidget-U5BCAESB.mjs.map → OBGPathwayWidget-CGT7Q4T2.mjs.map} +1 -1
- package/dist/{OBGPathwayWidget-5YTUDBEH.cjs → OBGPathwayWidget-WCIQENMO.cjs} +17 -17
- package/dist/{OBGPathwayWidget-5YTUDBEH.cjs.map → OBGPathwayWidget-WCIQENMO.cjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-WD572Q7H.mjs → ObstetricHistoryWidget-EGVLL4X2.mjs} +4 -4
- package/dist/{ObstetricHistoryWidget-WD572Q7H.mjs.map → ObstetricHistoryWidget-EGVLL4X2.mjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-GC63CB3U.cjs → ObstetricHistoryWidget-XU6R7IPP.cjs} +12 -12
- package/dist/{ObstetricHistoryWidget-GC63CB3U.cjs.map → ObstetricHistoryWidget-XU6R7IPP.cjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-Y3AHD6AG.mjs → OphthalDiagnosisWidget-G5RCC2QZ.mjs} +3 -3
- package/dist/{OphthalDiagnosisWidget-Y3AHD6AG.mjs.map → OphthalDiagnosisWidget-G5RCC2QZ.mjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-QXFK446I.cjs → OphthalDiagnosisWidget-OQPTHJ7E.cjs} +4 -4
- package/dist/{OphthalDiagnosisWidget-QXFK446I.cjs.map → OphthalDiagnosisWidget-OQPTHJ7E.cjs.map} +1 -1
- package/dist/{OphthalmologyWidget-U2HQMZ4J.cjs → OphthalmologyWidget-I3BKWOI2.cjs} +4 -4
- package/dist/{OphthalmologyWidget-U2HQMZ4J.cjs.map → OphthalmologyWidget-I3BKWOI2.cjs.map} +1 -1
- package/dist/{OphthalmologyWidget-CRQMN5QU.mjs → OphthalmologyWidget-RG2AI6WA.mjs} +3 -3
- package/dist/{OphthalmologyWidget-CRQMN5QU.mjs.map → OphthalmologyWidget-RG2AI6WA.mjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-PAOIVU6Z.mjs → OrthopedicExamWidget-BBZP6NVT.mjs} +4 -4
- package/dist/{OrthopedicExamWidget-PAOIVU6Z.mjs.map → OrthopedicExamWidget-BBZP6NVT.mjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-LP7VN3W5.cjs → OrthopedicExamWidget-M4KKU5RC.cjs} +6 -6
- package/dist/{OrthopedicExamWidget-LP7VN3W5.cjs.map → OrthopedicExamWidget-M4KKU5RC.cjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-MRMQ7HPJ.mjs → PainScaleFlagsWidget-E576R6QB.mjs} +4 -4
- package/dist/{PainScaleFlagsWidget-MRMQ7HPJ.mjs.map → PainScaleFlagsWidget-E576R6QB.mjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-IBNGVVHD.cjs → PainScaleFlagsWidget-QHGESXNE.cjs} +8 -8
- package/dist/{PainScaleFlagsWidget-IBNGVVHD.cjs.map → PainScaleFlagsWidget-QHGESXNE.cjs.map} +1 -1
- package/dist/{ReferralWidget-PDNEKHFO.cjs → ReferralWidget-J2PWYFDT.cjs} +7 -7
- package/dist/{ReferralWidget-PDNEKHFO.cjs.map → ReferralWidget-J2PWYFDT.cjs.map} +1 -1
- package/dist/{ReferralWidget-IYTS32TS.mjs → ReferralWidget-UPYWEO5R.mjs} +4 -4
- package/dist/{ReferralWidget-IYTS32TS.mjs.map → ReferralWidget-UPYWEO5R.mjs.map} +1 -1
- package/dist/RichTextWidget-BBCNJPMH.mjs +11 -0
- package/dist/{RichTextWidget-5OOJ2LJN.mjs.map → RichTextWidget-BBCNJPMH.mjs.map} +1 -1
- package/dist/{RichTextWidget-XWLOHKLE.cjs → RichTextWidget-CRQHNVJR.cjs} +7 -7
- package/dist/{RichTextWidget-XWLOHKLE.cjs.map → RichTextWidget-CRQHNVJR.cjs.map} +1 -1
- package/dist/SmartTextarea-DKWV4R6H.cjs +19 -0
- package/dist/{SmartTextarea-L7Q4CORK.cjs.map → SmartTextarea-DKWV4R6H.cjs.map} +1 -1
- package/dist/SmartTextarea-ZTQIW6O2.mjs +10 -0
- package/dist/{SmartTextarea-ZCXGMZLG.mjs.map → SmartTextarea-ZTQIW6O2.mjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-RN5LZYFC.mjs → SuggestionTextareaWidget-22NR3JWM.mjs} +7 -7
- package/dist/{SuggestionTextareaWidget-RN5LZYFC.mjs.map → SuggestionTextareaWidget-22NR3JWM.mjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-2TEITBPF.cjs → SuggestionTextareaWidget-WCTPWW2E.cjs} +18 -18
- package/dist/{SuggestionTextareaWidget-2TEITBPF.cjs.map → SuggestionTextareaWidget-WCTPWW2E.cjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-JCSL3GWS.cjs → SurgicalRiskFlagsWidget-Q5FTWB3M.cjs} +6 -6
- package/dist/{SurgicalRiskFlagsWidget-JCSL3GWS.cjs.map → SurgicalRiskFlagsWidget-Q5FTWB3M.cjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-DBICX4MB.mjs → SurgicalRiskFlagsWidget-WCAHZKKG.mjs} +4 -4
- package/dist/{SurgicalRiskFlagsWidget-DBICX4MB.mjs.map → SurgicalRiskFlagsWidget-WCAHZKKG.mjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-74L3IN2X.cjs → UrologyExaminationWidget-JYUGZ5CG.cjs} +12 -12
- package/dist/{UrologyExaminationWidget-74L3IN2X.cjs.map → UrologyExaminationWidget-JYUGZ5CG.cjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-IQEBP6CI.mjs → UrologyExaminationWidget-QDTD3FJX.mjs} +4 -4
- package/dist/{UrologyExaminationWidget-IQEBP6CI.mjs.map → UrologyExaminationWidget-QDTD3FJX.mjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-S4QY6RD6.mjs → UrologyPathwayWidget-QTFKUIM7.mjs} +4 -4
- package/dist/{UrologyPathwayWidget-S4QY6RD6.mjs.map → UrologyPathwayWidget-QTFKUIM7.mjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-UJY5EW2G.cjs → UrologyPathwayWidget-TXZQNGP4.cjs} +7 -7
- package/dist/{UrologyPathwayWidget-UJY5EW2G.cjs.map → UrologyPathwayWidget-TXZQNGP4.cjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-XKZF63BV.cjs → UrologySmartHistoryWidget-53NATEO3.cjs} +15 -15
- package/dist/{UrologySmartHistoryWidget-XKZF63BV.cjs.map → UrologySmartHistoryWidget-53NATEO3.cjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-NFTHHK6A.mjs → UrologySmartHistoryWidget-PBU4QXQJ.mjs} +4 -4
- package/dist/{UrologySmartHistoryWidget-NFTHHK6A.mjs.map → UrologySmartHistoryWidget-PBU4QXQJ.mjs.map} +1 -1
- package/dist/{VitalsWidget-MBYDGC7U.mjs → VitalsWidget-BRFUKGNO.mjs} +3 -3
- package/dist/{VitalsWidget-MBYDGC7U.mjs.map → VitalsWidget-BRFUKGNO.mjs.map} +1 -1
- package/dist/{VitalsWidget-44UWQGIF.cjs → VitalsWidget-PDCYXNBM.cjs} +5 -5
- package/dist/{VitalsWidget-44UWQGIF.cjs.map → VitalsWidget-PDCYXNBM.cjs.map} +1 -1
- package/dist/{chunk-AZVJU7NZ.mjs → chunk-3KRDT7TX.mjs} +5 -5
- package/dist/{chunk-AZVJU7NZ.mjs.map → chunk-3KRDT7TX.mjs.map} +1 -1
- package/dist/{chunk-ZSOIQVB3.mjs → chunk-5I2RC47Y.mjs} +3 -3
- package/dist/{chunk-ZSOIQVB3.mjs.map → chunk-5I2RC47Y.mjs.map} +1 -1
- package/dist/{chunk-KPGTPJDH.cjs → chunk-6YX37XBM.cjs} +4 -4
- package/dist/{chunk-KPGTPJDH.cjs.map → chunk-6YX37XBM.cjs.map} +1 -1
- package/dist/{chunk-XR2ZM654.mjs → chunk-7L2JOWGA.mjs} +3 -3
- package/dist/{chunk-XR2ZM654.mjs.map → chunk-7L2JOWGA.mjs.map} +1 -1
- package/dist/{chunk-FZEEWRW3.cjs → chunk-BOBX45NY.cjs} +5 -5
- package/dist/{chunk-FZEEWRW3.cjs.map → chunk-BOBX45NY.cjs.map} +1 -1
- package/dist/{chunk-JNVSA77L.cjs → chunk-GPU5P3FB.cjs} +7 -7
- package/dist/{chunk-JNVSA77L.cjs.map → chunk-GPU5P3FB.cjs.map} +1 -1
- package/dist/{chunk-NJJTIL3U.cjs → chunk-I7TJVWYV.cjs} +6 -6
- package/dist/{chunk-NJJTIL3U.cjs.map → chunk-I7TJVWYV.cjs.map} +1 -1
- package/dist/{chunk-CTW65YW2.cjs → chunk-L4CIIT4U.cjs} +9 -9
- package/dist/{chunk-CTW65YW2.cjs.map → chunk-L4CIIT4U.cjs.map} +1 -1
- package/dist/{chunk-DE7VZVKR.cjs → chunk-MQ2JV7HL.cjs} +11 -11
- package/dist/{chunk-DE7VZVKR.cjs.map → chunk-MQ2JV7HL.cjs.map} +1 -1
- package/dist/{chunk-IDSBJOFY.cjs → chunk-SHQHDSA4.cjs} +76 -2
- package/dist/chunk-SHQHDSA4.cjs.map +1 -0
- package/dist/{chunk-YYPMIUDW.mjs → chunk-ULMK3TUI.mjs} +3 -3
- package/dist/{chunk-YYPMIUDW.mjs.map → chunk-ULMK3TUI.mjs.map} +1 -1
- package/dist/{chunk-GFDE2KZC.mjs → chunk-VZT5YNCD.mjs} +4 -4
- package/dist/{chunk-GFDE2KZC.mjs.map → chunk-VZT5YNCD.mjs.map} +1 -1
- package/dist/{chunk-MIUUO4CI.mjs → chunk-YHNI5NIX.mjs} +5 -5
- package/dist/{chunk-MIUUO4CI.mjs.map → chunk-YHNI5NIX.mjs.map} +1 -1
- package/dist/{chunk-ZGPHTPAN.mjs → chunk-ZTT5XJR7.mjs} +73 -3
- package/dist/chunk-ZTT5XJR7.mjs.map +1 -0
- package/dist/index.cjs +596 -125
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +64 -6
- package/dist/index.d.ts +64 -6
- package/dist/index.mjs +544 -74
- package/dist/index.mjs.map +1 -1
- package/dist/read-only-table.d.cts +1 -1
- package/dist/read-only-table.d.ts +1 -1
- package/dist/rich-text.cjs +5 -5
- package/dist/rich-text.mjs +4 -4
- package/dist/smart.cjs +5 -5
- package/dist/smart.d.cts +1 -1
- package/dist/smart.d.ts +1 -1
- package/dist/smart.mjs +3 -3
- package/dist/{types-D0iYXUOo.d.cts → types-CYtJk8H9.d.cts} +49 -3
- package/dist/{types-D0iYXUOo.d.ts → types-CYtJk8H9.d.ts} +49 -3
- package/package.json +1 -1
- package/dist/RichTextWidget-5OOJ2LJN.mjs +0 -11
- package/dist/SmartTextarea-L7Q4CORK.cjs +0 -19
- package/dist/SmartTextarea-ZCXGMZLG.mjs +0 -10
- package/dist/chunk-IDSBJOFY.cjs.map +0 -1
- package/dist/chunk-ZGPHTPAN.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AddInvestigationField } from './chunk-B3GBIAHZ.mjs';
|
|
2
2
|
import './chunk-GZPCYSJK.mjs';
|
|
3
3
|
import './chunk-VNFBUAZD.mjs';
|
|
4
|
-
import { useField, useFieldHandlers, useFrequentItems, usePackages } from './chunk-
|
|
4
|
+
import { useField, useFieldHandlers, useFrequentItems, usePackages } from './chunk-ZTT5XJR7.mjs';
|
|
5
5
|
import './chunk-VPU66PI6.mjs';
|
|
6
6
|
import 'react';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -26,5 +26,5 @@ var AddInvestigationWidget = ({ fieldId }) => {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
export { AddInvestigationWidget };
|
|
29
|
-
//# sourceMappingURL=AddInvestigationWidget-
|
|
30
|
-
//# sourceMappingURL=AddInvestigationWidget-
|
|
29
|
+
//# sourceMappingURL=AddInvestigationWidget-7UGZQYI5.mjs.map
|
|
30
|
+
//# sourceMappingURL=AddInvestigationWidget-7UGZQYI5.mjs.map
|
package/dist/{AddInvestigationWidget-TQUKTGAW.mjs.map → AddInvestigationWidget-7UGZQYI5.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/AddInvestigationWidget.tsx"],"names":[],"mappings":";;;;;;;;AAMO,IAAM,sBAAA,GAAwD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACpF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,SAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,iBAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,cAAA,EAAgB,sBAAA,EAAuB,GAAI,gBAAA,EAAiB;AACpE,EAAA,MAAM,WAAW,WAAA,EAAY;AAE7B,EAAA,MAAM,YAA6B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAA4B,EAAC;AAExF,EAAA,uBACE,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,sBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddInvestigationWidget-
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/AddInvestigationWidget.tsx"],"names":[],"mappings":";;;;;;;;AAMO,IAAM,sBAAA,GAAwD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACpF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,SAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,iBAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,cAAA,EAAgB,sBAAA,EAAuB,GAAI,gBAAA,EAAiB;AACpE,EAAA,MAAM,WAAW,WAAA,EAAY;AAE7B,EAAA,MAAM,YAA6B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAA4B,EAAC;AAExF,EAAA,uBACE,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,sBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddInvestigationWidget-7UGZQYI5.mjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems, usePackages } from '../../react/FormProvider';\nimport { AddInvestigationField } from './AddInvestigationField';\nimport type { Investigation, InvestigationSearchResult } from './AddInvestigationField';\n\nexport const AddInvestigationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { investigations: frequentInvestigations } = useFrequentItems();\n const packages = usePackages();\n\n const safeValue: Investigation[] = Array.isArray(value) ? (value as Investigation[]) : [];\n\n return (\n <AddInvestigationField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<InvestigationSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as InvestigationSearchResult[] | undefined}\n frequentItems={frequentInvestigations}\n packages={packages}\n />\n );\n};\n"]}
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
var chunkLBWB7MYU_cjs = require('./chunk-LBWB7MYU.cjs');
|
|
4
4
|
require('./chunk-E7WUDHSA.cjs');
|
|
5
5
|
require('./chunk-TJHG5WHX.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkSHQHDSA4_cjs = require('./chunk-SHQHDSA4.cjs');
|
|
7
7
|
require('./chunk-FHHISVCH.cjs');
|
|
8
8
|
require('react');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
10
|
|
|
11
11
|
var AddInvestigationWidget = ({ fieldId }) => {
|
|
12
|
-
const { value, setValue } =
|
|
13
|
-
const handlers =
|
|
14
|
-
const { investigations: frequentInvestigations } =
|
|
15
|
-
const packages =
|
|
12
|
+
const { value, setValue } = chunkSHQHDSA4_cjs.useField(fieldId);
|
|
13
|
+
const handlers = chunkSHQHDSA4_cjs.useFieldHandlers(fieldId);
|
|
14
|
+
const { investigations: frequentInvestigations } = chunkSHQHDSA4_cjs.useFrequentItems();
|
|
15
|
+
const packages = chunkSHQHDSA4_cjs.usePackages();
|
|
16
16
|
const safeValue = Array.isArray(value) ? value : [];
|
|
17
17
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
18
|
chunkLBWB7MYU_cjs.AddInvestigationField,
|
|
@@ -28,5 +28,5 @@ var AddInvestigationWidget = ({ fieldId }) => {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
exports.AddInvestigationWidget = AddInvestigationWidget;
|
|
31
|
-
//# sourceMappingURL=AddInvestigationWidget-
|
|
32
|
-
//# sourceMappingURL=AddInvestigationWidget-
|
|
31
|
+
//# sourceMappingURL=AddInvestigationWidget-RY62UCPM.cjs.map
|
|
32
|
+
//# sourceMappingURL=AddInvestigationWidget-RY62UCPM.cjs.map
|
package/dist/{AddInvestigationWidget-G7NPTSFY.cjs.map → AddInvestigationWidget-RY62UCPM.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/AddInvestigationWidget.tsx"],"names":["useField","useFieldHandlers","useFrequentItems","usePackages","jsx","AddInvestigationField"],"mappings":";;;;;;;;;;AAMO,IAAM,sBAAA,GAAwD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACpF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAIA,2BAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWC,mCAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,cAAA,EAAgB,sBAAA,EAAuB,GAAIC,kCAAA,EAAiB;AACpE,EAAA,MAAM,WAAWC,6BAAA,EAAY;AAE7B,EAAA,MAAM,YAA6B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAA4B,EAAC;AAExF,EAAA,uBACEC,cAAA;AAAA,IAACC,uCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,sBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddInvestigationWidget-
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/AddInvestigationWidget.tsx"],"names":["useField","useFieldHandlers","useFrequentItems","usePackages","jsx","AddInvestigationField"],"mappings":";;;;;;;;;;AAMO,IAAM,sBAAA,GAAwD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACpF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAIA,2BAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWC,mCAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,cAAA,EAAgB,sBAAA,EAAuB,GAAIC,kCAAA,EAAiB;AACpE,EAAA,MAAM,WAAWC,6BAAA,EAAY;AAE7B,EAAA,MAAM,YAA6B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAA4B,EAAC;AAExF,EAAA,uBACEC,cAAA;AAAA,IAACC,uCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,sBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddInvestigationWidget-RY62UCPM.cjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems, usePackages } from '../../react/FormProvider';\nimport { AddInvestigationField } from './AddInvestigationField';\nimport type { Investigation, InvestigationSearchResult } from './AddInvestigationField';\n\nexport const AddInvestigationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { investigations: frequentInvestigations } = useFrequentItems();\n const packages = usePackages();\n\n const safeValue: Investigation[] = Array.isArray(value) ? (value as Investigation[]) : [];\n\n return (\n <AddInvestigationField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<InvestigationSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as InvestigationSearchResult[] | undefined}\n frequentItems={frequentInvestigations}\n packages={packages}\n />\n );\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useAISuggestions, AddMedicationField } from './chunk-XDUVO3IZ.mjs';
|
|
2
2
|
import './chunk-GZPCYSJK.mjs';
|
|
3
3
|
import './chunk-VNFBUAZD.mjs';
|
|
4
|
-
import { useField, useFieldHandlers, useFrequentItems } from './chunk-
|
|
4
|
+
import { useField, useFieldHandlers, useFrequentItems } from './chunk-ZTT5XJR7.mjs';
|
|
5
5
|
import './chunk-VPU66PI6.mjs';
|
|
6
6
|
import 'react';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -26,5 +26,5 @@ var AddMedicationWidget = ({ fieldId }) => {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
export { AddMedicationWidget };
|
|
29
|
-
//# sourceMappingURL=AddMedicationWidget-
|
|
30
|
-
//# sourceMappingURL=AddMedicationWidget-
|
|
29
|
+
//# sourceMappingURL=AddMedicationWidget-UG26VMUX.mjs.map
|
|
30
|
+
//# sourceMappingURL=AddMedicationWidget-UG26VMUX.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/AddMedicationWidget.tsx"],"names":[],"mappings":";;;;;;;;AAOO,IAAM,mBAAA,GAAqD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACjF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,SAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,iBAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,WAAA,EAAa,oBAAA,EAAqB,GAAI,gBAAA,EAAiB;AAC/D,EAAA,MAAM,EAAE,WAAA,EAAa,mBAAA,EAAoB,GAAI,gBAAA,EAAiB;AAE9D,EAAA,MAAM,YAA0B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAAyB,EAAC;AAElF,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,mBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddMedicationWidget-
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/AddMedicationWidget.tsx"],"names":[],"mappings":";;;;;;;;AAOO,IAAM,mBAAA,GAAqD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACjF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,SAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,iBAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,WAAA,EAAa,oBAAA,EAAqB,GAAI,gBAAA,EAAiB;AAC/D,EAAA,MAAM,EAAE,WAAA,EAAa,mBAAA,EAAoB,GAAI,gBAAA,EAAiB;AAE9D,EAAA,MAAM,YAA0B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAAyB,EAAC;AAElF,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,mBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddMedicationWidget-UG26VMUX.mjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems } from '../../react/FormProvider';\nimport { useAISuggestions } from '../../react/AISuggestionsContext';\nimport { AddMedicationField } from './AddMedicationField';\nimport type { Medication, MedicationSearchResult } from './AddMedicationField';\n\nexport const AddMedicationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { medications: suggestedMedications } = useAISuggestions();\n const { medications: frequentMedications } = useFrequentItems();\n\n const safeValue: Medication[] = Array.isArray(value) ? (value as Medication[]) : [];\n\n return (\n <AddMedicationField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<MedicationSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as MedicationSearchResult[] | undefined}\n frequentItems={frequentMedications}\n suggestedMedications={suggestedMedications}\n />\n );\n};\n"]}
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
var chunkAIZ3XYEZ_cjs = require('./chunk-AIZ3XYEZ.cjs');
|
|
4
4
|
require('./chunk-E7WUDHSA.cjs');
|
|
5
5
|
require('./chunk-TJHG5WHX.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkSHQHDSA4_cjs = require('./chunk-SHQHDSA4.cjs');
|
|
7
7
|
require('./chunk-FHHISVCH.cjs');
|
|
8
8
|
require('react');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
10
|
|
|
11
11
|
var AddMedicationWidget = ({ fieldId }) => {
|
|
12
|
-
const { value, setValue } =
|
|
13
|
-
const handlers =
|
|
12
|
+
const { value, setValue } = chunkSHQHDSA4_cjs.useField(fieldId);
|
|
13
|
+
const handlers = chunkSHQHDSA4_cjs.useFieldHandlers(fieldId);
|
|
14
14
|
const { medications: suggestedMedications } = chunkAIZ3XYEZ_cjs.useAISuggestions();
|
|
15
|
-
const { medications: frequentMedications } =
|
|
15
|
+
const { medications: frequentMedications } = chunkSHQHDSA4_cjs.useFrequentItems();
|
|
16
16
|
const safeValue = Array.isArray(value) ? value : [];
|
|
17
17
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
18
|
chunkAIZ3XYEZ_cjs.AddMedicationField,
|
|
@@ -28,5 +28,5 @@ var AddMedicationWidget = ({ fieldId }) => {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
exports.AddMedicationWidget = AddMedicationWidget;
|
|
31
|
-
//# sourceMappingURL=AddMedicationWidget-
|
|
32
|
-
//# sourceMappingURL=AddMedicationWidget-
|
|
31
|
+
//# sourceMappingURL=AddMedicationWidget-WPI32WAP.cjs.map
|
|
32
|
+
//# sourceMappingURL=AddMedicationWidget-WPI32WAP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/AddMedicationWidget.tsx"],"names":["useField","useFieldHandlers","useAISuggestions","useFrequentItems","jsx","AddMedicationField"],"mappings":";;;;;;;;;;AAOO,IAAM,mBAAA,GAAqD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACjF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAIA,2BAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWC,mCAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,WAAA,EAAa,oBAAA,EAAqB,GAAIC,kCAAA,EAAiB;AAC/D,EAAA,MAAM,EAAE,WAAA,EAAa,mBAAA,EAAoB,GAAIC,kCAAA,EAAiB;AAE9D,EAAA,MAAM,YAA0B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAAyB,EAAC;AAElF,EAAA,uBACEC,cAAA;AAAA,IAACC,oCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,mBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddMedicationWidget-
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/AddMedicationWidget.tsx"],"names":["useField","useFieldHandlers","useAISuggestions","useFrequentItems","jsx","AddMedicationField"],"mappings":";;;;;;;;;;AAOO,IAAM,mBAAA,GAAqD,CAAC,EAAE,OAAA,EAAQ,KAAM;AACjF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAIA,2BAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWC,mCAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,WAAA,EAAa,oBAAA,EAAqB,GAAIC,kCAAA,EAAiB;AAC/D,EAAA,MAAM,EAAE,WAAA,EAAa,mBAAA,EAAoB,GAAIC,kCAAA,EAAiB;AAE9D,EAAA,MAAM,YAA0B,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAAyB,EAAC;AAElF,EAAA,uBACEC,cAAA;AAAA,IAACC,oCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe,mBAAA;AAAA,MACf;AAAA;AAAA,GACF;AAEJ","file":"AddMedicationWidget-WPI32WAP.cjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems } from '../../react/FormProvider';\nimport { useAISuggestions } from '../../react/AISuggestionsContext';\nimport { AddMedicationField } from './AddMedicationField';\nimport type { Medication, MedicationSearchResult } from './AddMedicationField';\n\nexport const AddMedicationWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { medications: suggestedMedications } = useAISuggestions();\n const { medications: frequentMedications } = useFrequentItems();\n\n const safeValue: Medication[] = Array.isArray(value) ? (value as Medication[]) : [];\n\n return (\n <AddMedicationField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<MedicationSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as MedicationSearchResult[] | undefined}\n frequentItems={frequentMedications}\n suggestedMedications={suggestedMedications}\n />\n );\n};\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkE7WUDHSA_cjs = require('./chunk-E7WUDHSA.cjs');
|
|
4
4
|
var chunkTJHG5WHX_cjs = require('./chunk-TJHG5WHX.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkSHQHDSA4_cjs = require('./chunk-SHQHDSA4.cjs');
|
|
6
6
|
var chunkFHHISVCH_cjs = require('./chunk-FHHISVCH.cjs');
|
|
7
7
|
var react = require('react');
|
|
8
8
|
var lucideReact = require('lucide-react');
|
|
@@ -257,9 +257,9 @@ var AddProcedureField = ({
|
|
|
257
257
|
] });
|
|
258
258
|
};
|
|
259
259
|
var AddProcedureWidget = ({ fieldId }) => {
|
|
260
|
-
const { value, setValue } =
|
|
261
|
-
const handlers =
|
|
262
|
-
const { procedures: frequentProcedures } =
|
|
260
|
+
const { value, setValue } = chunkSHQHDSA4_cjs.useField(fieldId);
|
|
261
|
+
const handlers = chunkSHQHDSA4_cjs.useFieldHandlers(fieldId);
|
|
262
|
+
const { procedures: frequentProcedures } = chunkSHQHDSA4_cjs.useFrequentItems();
|
|
263
263
|
const safeValue = Array.isArray(value) ? value : [];
|
|
264
264
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
265
265
|
AddProcedureField,
|
|
@@ -274,5 +274,5 @@ var AddProcedureWidget = ({ fieldId }) => {
|
|
|
274
274
|
};
|
|
275
275
|
|
|
276
276
|
exports.AddProcedureWidget = AddProcedureWidget;
|
|
277
|
-
//# sourceMappingURL=AddProcedureWidget-
|
|
278
|
-
//# sourceMappingURL=AddProcedureWidget-
|
|
277
|
+
//# sourceMappingURL=AddProcedureWidget-SF6MTRBV.cjs.map
|
|
278
|
+
//# sourceMappingURL=AddProcedureWidget-SF6MTRBV.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/AddProcedureField.tsx","../src/ui/widgets/AddProcedureWidget.tsx"],"names":["useState","useRef","useEffect","jsxs","cn","jsx","X","AddEntityDialog","Input","Check","useField","useFieldHandlers","useFrequentItems"],"mappings":"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","file":"AddProcedureWidget-B6OUF3BM.cjs","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { X, Check } from 'lucide-react';\nimport { cn } from '../../core/utils';\nimport { Input } from '../shadcn/input';\nimport { AddEntityDialog } from './AddEntityDialog';\nimport type { ProcedureFrequentItem } from '../../core/types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n// Matches search API response.results[] shape\n\nexport type ProcedureSearchResult = {\n id: string;\n name: string;\n code?: string;\n description?: string;\n specialization?: string;\n score?: number;\n};\n\n/** Master row from search / frequent resolution — full metadata. */\nexport type MasterProcedure = ProcedureSearchResult & {\n label: string;\n is_custom: false;\n fromAI: boolean;\n};\n\n/** Custom free-text row — only `name` and `is_custom` (no extra keys). */\nexport type CustomProcedure = {\n name: string;\n is_custom: true;\n};\n\nexport type Procedure = MasterProcedure | CustomProcedure;\n\nexport type AddProcedureFieldProps = {\n label?: string;\n value: Procedure[];\n onChange: (items: Procedure[]) => void;\n onSearch: (query: string) => Promise<ProcedureSearchResult[]>;\n recentlyUsed?: ProcedureSearchResult[];\n /** Doctor-scoped frequently used procedures (from FormProvider frequentItems) */\n frequentItems?: ProcedureFrequentItem[];\n};\n\nconst ADD_FEEDBACK_MS = 320;\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\nfunction mapToProcedure(result: ProcedureSearchResult): MasterProcedure {\n return {\n ...result,\n label: result.name,\n is_custom: false,\n fromAI: false,\n };\n}\n\nfunction createCustomProcedure(trimmedName: string): CustomProcedure {\n return { name: trimmedName.trim(), is_custom: true };\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const AddProcedureField: React.FC<AddProcedureFieldProps> = ({\n label = 'Procedures',\n value,\n onChange,\n onSearch,\n recentlyUsed = [],\n frequentItems = [],\n}) => {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [results, setResults] = useState<ProcedureSearchResult[]>([]);\n const [loading, setLoading] = useState(false);\n const [addingId, setAddingId] = useState<string | null>(null);\n const [addingFrequentId, setAddingFrequentId] = useState<string | null>(null);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const valueRef = useRef<Procedure[]>([]);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const safeValue: Procedure[] = Array.isArray(value) ? value : [];\n\n valueRef.current = safeValue;\n const addedIds = new Set(\n safeValue.filter((proc): proc is MasterProcedure => !proc.is_custom).map((proc) => proc.id),\n );\n\n useEffect(() => {\n if (!open) {\n setQuery('');\n setResults([]);\n setAddingId(null);\n setAddingFrequentId(null);\n }\n }, [open]);\n\n function handleQueryChange(q: string) {\n setQuery(q);\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (!q.trim()) {\n setResults([]);\n return;\n }\n debounceRef.current = setTimeout(async () => {\n setLoading(true);\n try {\n const res = await onSearch(q);\n setResults(res);\n } finally {\n setLoading(false);\n }\n }, 500);\n }\n\n function addProcedure(result: ProcedureSearchResult) {\n if (!addedIds.has(result.id)) {\n onChange([...valueRef.current, mapToProcedure(result)]);\n }\n setQuery('');\n setResults([]);\n }\n\n function handleResultClick(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) return;\n setAddingId(result.id);\n setTimeout(() => {\n addProcedure(result);\n setAddingId(null);\n setTimeout(() => searchInputRef.current?.focus(), 0);\n }, ADD_FEEDBACK_MS);\n }\n\n function removeAt(index: number) {\n onChange(safeValue.filter((_, i) => i !== index));\n }\n\n function removeBySearchId(id: string) {\n onChange(safeValue.filter((proc) => proc.is_custom || proc.id !== id));\n }\n\n function handleAddCustom() {\n const trimmed = query.trim();\n if (!trimmed) return;\n if (valueRef.current.some((p) => p.is_custom && p.name === trimmed)) return;\n onChange([...valueRef.current, createCustomProcedure(trimmed)]);\n setQuery('');\n setResults([]);\n }\n\n function handleRecentlyUsedToggle(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) {\n removeBySearchId(result.id);\n } else {\n addProcedure(result);\n }\n }\n\n async function handleFrequentItemToggle(item: ProcedureFrequentItem) {\n const id = String(item.id);\n const addedById = addedIds.has(id);\n const addedByName = safeValue.some((proc) => proc.name === item.name);\n if (addedById || addedByName) {\n if (addedById) removeBySearchId(id);\n else onChange(safeValue.filter((proc) => proc.name !== item.name));\n return;\n }\n setAddingFrequentId(id);\n try {\n const searchResults = await onSearch(item.name);\n const first = searchResults?.[0];\n if (first && !valueRef.current.some((proc) => !proc.is_custom && proc.id === first.id)) {\n onChange([...valueRef.current, mapToProcedure(first)]);\n }\n } finally {\n setAddingFrequentId(null);\n }\n }\n\n const recentlyUsedChips = recentlyUsed.map((r) => {\n const isAdded = addedIds.has(r.id);\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleRecentlyUsedToggle(r)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {r.name}\n </button>\n );\n });\n\n const limitedFrequentItems = frequentItems.slice(0, 25);\n\n const frequentItemChips =\n limitedFrequentItems.length > 0\n ? limitedFrequentItems.map((item) => {\n const id = String(item.id);\n const isAdded =\n safeValue.some((proc) => !proc.is_custom && proc.id === id) ||\n safeValue.some((proc) => proc.name === item.name);\n const isAdding = addingFrequentId === id;\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={isAdding}\n onClick={() => handleFrequentItemToggle(item)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50',\n isAdding && 'opacity-70 pointer-events-none'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {isAdding ? '…' : item.name}\n </button>\n );\n })\n : [];\n\n return (\n <div className=\"rounded-md overflow-hidden flex flex-col bg-white border border-[#D0D0D0] space-y-3 p-3 h-fit\">\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-sm font-semibold\">{label}</span>\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className=\"text-sm font-semibold text-purple-600 hover:text-purple-800 cursor-pointer\"\n >\n ADD\n </button>\n </div>\n\n {/* Added procedures — one row each */}\n {safeValue.length > 0 && (\n <div className=\"divide-y divide-border rounded-lg border border-border overflow-hidden\">\n {safeValue.map((proc, index) => (\n <div\n key={proc.is_custom ? `custom-${index}` : proc.id}\n className=\"flex items-center justify-between px-3 py-2 bg-white hover:bg-gray-50\"\n >\n <span className=\"text-sm\">{proc.name}</span>\n <button\n type=\"button\"\n onClick={() => removeAt(index)}\n className=\"text-muted-foreground hover:text-red-500 transition-colors cursor-pointer\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {/* Dialog */}\n <AddEntityDialog\n open={open}\n onClose={() => setOpen(false)}\n title=\"Add Procedure\"\n recentlyUsedSlot={\n frequentItemChips.length > 0\n ? frequentItemChips\n : recentlyUsedChips.length > 0\n ? recentlyUsedChips\n : undefined\n }\n chipSectionLabel={frequentItemChips.length > 0 ? 'Frequently used' : undefined}\n actionSlot={\n <button\n type=\"button\"\n disabled={\n !query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())\n }\n onClick={handleAddCustom}\n className={cn(\n 'rounded-md px-5 py-2 text-sm font-semibold bg-primary text-primary-foreground hover:bg-primary/90 transition-opacity cursor-pointer',\n (!query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())) &&\n 'opacity-40 cursor-not-allowed'\n )}\n >\n Save Procedure\n </button>\n }\n >\n <div className=\"space-y-2\">\n <Input\n ref={searchInputRef}\n value={query}\n onChange={(e) => handleQueryChange(e.target.value)}\n placeholder=\"Search for a procedure...\"\n className=\"border border-border rounded-md focus-visible:ring-0\"\n />\n\n {/* Inline results — no absolute positioning to avoid overflow-clip */}\n {loading && (\n <p className=\"text-xs text-muted-foreground py-1\">Searching…</p>\n )}\n {!loading && results.length > 0 && (\n <div className=\"border border-border rounded-md overflow-hidden\">\n {results.map((r) => {\n const isAdding = addingId === r.id;\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleResultClick(r)}\n className={cn(\n 'w-full text-left px-3 py-2 text-sm transition-all duration-300 ease-out border-b border-border last:border-b-0 cursor-pointer flex items-center justify-between gap-2',\n isAdding\n ? 'bg-green-50 border-green-200'\n : 'hover:bg-gray-50'\n )}\n >\n <span className=\"truncate\">{r.name}</span>\n {isAdding && <Check className=\"h-4 w-4 shrink-0 text-green-600\" />}\n </button>\n );\n })}\n </div>\n )}\n </div>\n </AddEntityDialog>\n </div>\n );\n};\n","import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems } from '../../react/FormProvider';\nimport { AddProcedureField } from './AddProcedureField';\nimport type { Procedure, ProcedureSearchResult } from './AddProcedureField';\n\nexport const AddProcedureWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { procedures: frequentProcedures } = useFrequentItems();\n\n const safeValue: Procedure[] = Array.isArray(value) ? (value as Procedure[]) : [];\n\n return (\n <AddProcedureField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<ProcedureSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as ProcedureSearchResult[] | undefined}\n frequentItems={frequentProcedures}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/AddProcedureField.tsx","../src/ui/widgets/AddProcedureWidget.tsx"],"names":["useState","useRef","useEffect","jsxs","cn","jsx","X","AddEntityDialog","Input","Check","useField","useFieldHandlers","useFrequentItems"],"mappings":";;;;;;;;;;AA4CA,IAAM,eAAA,GAAkB,GAAA;AAIxB,SAAS,eAAe,MAAA,EAAgD;AACtE,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,OAAO,MAAA,CAAO,IAAA;AAAA,IACd,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AACF;AAEA,SAAS,sBAAsB,WAAA,EAAsC;AACnE,EAAA,OAAO,EAAE,IAAA,EAAM,WAAA,CAAY,IAAA,EAAK,EAAG,WAAW,IAAA,EAAK;AACrD;AAIO,IAAM,oBAAsD,CAAC;AAAA,EAClE,KAAA,GAAQ,YAAA;AAAA,EACR,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAe,EAAC;AAAA,EAChB,gBAAgB;AAClB,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,cAAA,CAAkC,EAAE,CAAA;AAClE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAC5D,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAC5E,EAAA,MAAM,WAAA,GAAcC,aAA6C,IAAI,CAAA;AACrE,EAAA,MAAM,QAAA,GAAWA,YAAA,CAAoB,EAAE,CAAA;AACvC,EAAA,MAAM,cAAA,GAAiBA,aAAyB,IAAI,CAAA;AAEpD,EAAA,MAAM,YAAyB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAC;AAE/D,EAAA,QAAA,CAAS,OAAA,GAAU,SAAA;AACnB,EAAA,MAAM,WAAW,IAAI,GAAA;AAAA,IACnB,SAAA,CAAU,MAAA,CAAO,CAAC,IAAA,KAAkC,CAAC,IAAA,CAAK,SAAS,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,EAAE;AAAA,GAC5F;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,UAAA,CAAW,EAAE,CAAA;AACb,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,SAAS,kBAAkB,CAAA,EAAW;AACpC,IAAA,QAAA,CAAS,CAAC,CAAA;AACV,IAAA,IAAI,WAAA,CAAY,OAAA,EAAS,YAAA,CAAa,WAAA,CAAY,OAAO,CAAA;AACzD,IAAA,IAAI,CAAC,CAAA,CAAE,IAAA,EAAK,EAAG;AACb,MAAA,UAAA,CAAW,EAAE,CAAA;AACb,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,OAAA,GAAU,WAAW,YAAY;AAC3C,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,CAAC,CAAA;AAC5B,QAAA,UAAA,CAAW,GAAG,CAAA;AAAA,MAChB,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,GAAG,GAAG,CAAA;AAAA,EACR;AAEA,EAAA,SAAS,aAAa,MAAA,EAA+B;AACnD,IAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAG;AAC5B,MAAA,QAAA,CAAS,CAAC,GAAG,QAAA,CAAS,SAAS,cAAA,CAAe,MAAM,CAAC,CAAC,CAAA;AAAA,IACxD;AACA,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,UAAA,CAAW,EAAE,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,kBAAkB,MAAA,EAA+B;AACxD,IAAA,IAAI,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAG;AAC7B,IAAA,WAAA,CAAY,OAAO,EAAE,CAAA;AACrB,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,YAAA,CAAa,MAAM,CAAA;AACnB,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,UAAA,CAAW,MAAM,cAAA,CAAe,OAAA,EAAS,KAAA,IAAS,CAAC,CAAA;AAAA,IACrD,GAAG,eAAe,CAAA;AAAA,EACpB;AAEA,EAAA,SAAS,SAAS,KAAA,EAAe;AAC/B,IAAA,QAAA,CAAS,UAAU,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAC,CAAA;AAAA,EAClD;AAEA,EAAA,SAAS,iBAAiB,EAAA,EAAY;AACpC,IAAA,QAAA,CAAS,SAAA,CAAU,OAAO,CAAC,IAAA,KAAS,KAAK,SAAA,IAAa,IAAA,CAAK,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,EACvE;AAEA,EAAA,SAAS,eAAA,GAAkB;AACzB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,IAAI,QAAA,CAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,SAAA,IAAa,CAAA,CAAE,IAAA,KAAS,OAAO,CAAA,EAAG;AACrE,IAAA,QAAA,CAAS,CAAC,GAAG,QAAA,CAAS,SAAS,qBAAA,CAAsB,OAAO,CAAC,CAAC,CAAA;AAC9D,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,UAAA,CAAW,EAAE,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,yBAAyB,MAAA,EAA+B;AAC/D,IAAA,IAAI,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAG;AAC3B,MAAA,gBAAA,CAAiB,OAAO,EAAE,CAAA;AAAA,IAC5B,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,MAAM,CAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,eAAe,yBAAyB,IAAA,EAA6B;AACnE,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACzB,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AACjC,IAAA,MAAM,WAAA,GAAc,UAAU,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,KAAK,IAAI,CAAA;AACpE,IAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,MAAA,IAAI,SAAA,mBAA4B,EAAE,CAAA;AAAA,WAC7B,QAAA,CAAS,UAAU,MAAA,CAAO,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,MAAA;AAAA,IACF;AACA,IAAA,mBAAA,CAAoB,EAAE,CAAA;AACtB,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,MAAM,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAC9C,MAAA,MAAM,KAAA,GAAQ,gBAAgB,CAAC,CAAA;AAC/B,MAAA,IAAI,KAAA,IAAS,CAAC,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,SAAA,IAAa,IAAA,CAAK,EAAA,KAAO,KAAA,CAAM,EAAE,CAAA,EAAG;AACtF,QAAA,QAAA,CAAS,CAAC,GAAG,QAAA,CAAS,SAAS,cAAA,CAAe,KAAK,CAAC,CAAC,CAAA;AAAA,MACvD;AAAA,IACF,CAAA,SAAE;AACA,MAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,KAAM;AAChD,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA;AACjC,IAAA,uBACEC,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,wBAAA,CAAyB,CAAC,CAAA;AAAA,QACzC,SAAA,EAAWC,oBAAA;AAAA,UACT,yDAAA;AAAA,UACA,UACI,6CAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAWC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAA,EAAO,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,UACnC,CAAA,CAAE;AAAA;AAAA,OAAA;AAAA,MAXE,CAAA,CAAE;AAAA,KAYT;AAAA,EAEJ,CAAC,CAAA;AAED,EAAA,MAAM,oBAAA,GAAuB,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAEtD,EAAA,MAAM,oBACJ,oBAAA,CAAqB,MAAA,GAAS,IAC1B,oBAAA,CAAqB,GAAA,CAAI,CAAC,IAAA,KAAS;AACjC,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACzB,IAAA,MAAM,UACJ,SAAA,CAAU,IAAA,CAAK,CAAC,IAAA,KAAS,CAAC,KAAK,SAAA,IAAa,IAAA,CAAK,OAAO,EAAE,CAAA,IAC1D,UAAU,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,KAAK,IAAI,CAAA;AAClD,IAAA,MAAM,WAAW,gBAAA,KAAqB,EAAA;AACtC,IAAA,uBACEF,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,QAAA;AAAA,QACV,OAAA,EAAS,MAAM,wBAAA,CAAyB,IAAI,CAAA;AAAA,QAC5C,SAAA,EAAWC,oBAAA;AAAA,UACT,yDAAA;AAAA,UACA,UACI,6CAAA,GACA,yCAAA;AAAA,UACJ,QAAA,IAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAWC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAA,EAAO,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,UACnC,QAAA,GAAW,WAAM,IAAA,CAAK;AAAA;AAAA,OAAA;AAAA,MAblB,IAAA,CAAK;AAAA,KAcZ;AAAA,EAEJ,CAAC,IACD,EAAC;AAEP,EAAA,uBACEF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+FAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACb,QAAA,EAAA;AAAA,sBAAAE,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC/CA,cAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,UAC3B,SAAA,EAAU,4EAAA;AAAA,UACX,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EACF,CAAA;AAAA,IAGC,SAAA,CAAU,MAAA,GAAS,CAAA,oBAClBA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wEAAA,EACZ,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACpBF,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,uEAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAE,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;AAAA,0BACrCA,cAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,QAAA,CAAS,KAAK,CAAA;AAAA,cAC7B,SAAA,EAAU,2EAAA;AAAA,cAEV,QAAA,kBAAAA,cAAA,CAACC,aAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACzB;AAAA,OAAA;AAAA,MAVK,IAAA,CAAK,SAAA,GAAY,CAAA,OAAA,EAAU,KAAK,KAAK,IAAA,CAAK;AAAA,KAYlD,CAAA,EACH,CAAA;AAAA,oBAIFD,cAAA;AAAA,MAACE,iCAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAC5B,KAAA,EAAM,eAAA;AAAA,QACN,gBAAA,EACE,kBAAkB,MAAA,GAAS,CAAA,GACvB,oBACA,iBAAA,CAAkB,MAAA,GAAS,IACzB,iBAAA,GACA,MAAA;AAAA,QAER,gBAAA,EAAkB,iBAAA,CAAkB,MAAA,GAAS,CAAA,GAAI,iBAAA,GAAoB,MAAA;AAAA,QACrE,UAAA,kBACEF,cAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,UACE,CAAC,KAAA,CAAM,IAAA,EAAK,IACZ,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,SAAA,IAAa,CAAA,CAAE,IAAA,KAAS,KAAA,CAAM,MAAM,CAAA;AAAA,YAErE,OAAA,EAAS,eAAA;AAAA,YACT,SAAA,EAAWD,oBAAA;AAAA,cACT,qIAAA;AAAA,cAAA,CACC,CAAC,KAAA,CAAM,IAAA,EAAK,IACX,QAAA,CAAS,QAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA,CAAE,IAAA,KAAS,KAAA,CAAM,IAAA,EAAM,CAAA,KACnE;AAAA,aACJ;AAAA,YACD,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,QAGF,QAAA,kBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,0BAAAE,cAAA;AAAA,YAACG,uBAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,cAAA;AAAA,cACL,KAAA,EAAO,KAAA;AAAA,cACP,UAAU,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACjD,WAAA,EAAY,2BAAA;AAAA,cACZ,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAGC,OAAA,oBACCH,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sCAAqC,QAAA,EAAA,iBAAA,EAAU,CAAA;AAAA,UAE7D,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,oBAC5BA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM;AAClB,YAAA,MAAM,QAAA,GAAW,aAAa,CAAA,CAAE,EAAA;AAChC,YAAA,uBACEF,eAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,MAAM,iBAAA,CAAkB,CAAC,CAAA;AAAA,gBAClC,SAAA,EAAWC,oBAAA;AAAA,kBACT,uKAAA;AAAA,kBACA,WACI,8BAAA,GACA;AAAA,iBACN;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,CAAA,CAAE,IAAA,EAAK,CAAA;AAAA,kBAClC,QAAA,oBAAYA,cAAA,CAACI,iBAAA,EAAA,EAAM,SAAA,EAAU,iCAAA,EAAkC;AAAA;AAAA,eAAA;AAAA,cAX3D,CAAA,CAAE;AAAA,aAYT;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA,SAAA,EAEJ;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ,CAAA;AC1UO,IAAM,kBAAA,GAAoD,CAAC,EAAE,OAAA,EAAQ,KAAM;AAChF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAIC,2BAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAWC,mCAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,UAAA,EAAY,kBAAA,EAAmB,GAAIC,kCAAA,EAAiB;AAE5D,EAAA,MAAM,YAAyB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAAwB,EAAC;AAEhF,EAAA,uBACEP,cAAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe;AAAA;AAAA,GACjB;AAEJ","file":"AddProcedureWidget-SF6MTRBV.cjs","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { X, Check } from 'lucide-react';\nimport { cn } from '../../core/utils';\nimport { Input } from '../shadcn/input';\nimport { AddEntityDialog } from './AddEntityDialog';\nimport type { ProcedureFrequentItem } from '../../core/types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n// Matches search API response.results[] shape\n\nexport type ProcedureSearchResult = {\n id: string;\n name: string;\n code?: string;\n description?: string;\n specialization?: string;\n score?: number;\n};\n\n/** Master row from search / frequent resolution — full metadata. */\nexport type MasterProcedure = ProcedureSearchResult & {\n label: string;\n is_custom: false;\n fromAI: boolean;\n};\n\n/** Custom free-text row — only `name` and `is_custom` (no extra keys). */\nexport type CustomProcedure = {\n name: string;\n is_custom: true;\n};\n\nexport type Procedure = MasterProcedure | CustomProcedure;\n\nexport type AddProcedureFieldProps = {\n label?: string;\n value: Procedure[];\n onChange: (items: Procedure[]) => void;\n onSearch: (query: string) => Promise<ProcedureSearchResult[]>;\n recentlyUsed?: ProcedureSearchResult[];\n /** Doctor-scoped frequently used procedures (from FormProvider frequentItems) */\n frequentItems?: ProcedureFrequentItem[];\n};\n\nconst ADD_FEEDBACK_MS = 320;\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\nfunction mapToProcedure(result: ProcedureSearchResult): MasterProcedure {\n return {\n ...result,\n label: result.name,\n is_custom: false,\n fromAI: false,\n };\n}\n\nfunction createCustomProcedure(trimmedName: string): CustomProcedure {\n return { name: trimmedName.trim(), is_custom: true };\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const AddProcedureField: React.FC<AddProcedureFieldProps> = ({\n label = 'Procedures',\n value,\n onChange,\n onSearch,\n recentlyUsed = [],\n frequentItems = [],\n}) => {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [results, setResults] = useState<ProcedureSearchResult[]>([]);\n const [loading, setLoading] = useState(false);\n const [addingId, setAddingId] = useState<string | null>(null);\n const [addingFrequentId, setAddingFrequentId] = useState<string | null>(null);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const valueRef = useRef<Procedure[]>([]);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const safeValue: Procedure[] = Array.isArray(value) ? value : [];\n\n valueRef.current = safeValue;\n const addedIds = new Set(\n safeValue.filter((proc): proc is MasterProcedure => !proc.is_custom).map((proc) => proc.id),\n );\n\n useEffect(() => {\n if (!open) {\n setQuery('');\n setResults([]);\n setAddingId(null);\n setAddingFrequentId(null);\n }\n }, [open]);\n\n function handleQueryChange(q: string) {\n setQuery(q);\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (!q.trim()) {\n setResults([]);\n return;\n }\n debounceRef.current = setTimeout(async () => {\n setLoading(true);\n try {\n const res = await onSearch(q);\n setResults(res);\n } finally {\n setLoading(false);\n }\n }, 500);\n }\n\n function addProcedure(result: ProcedureSearchResult) {\n if (!addedIds.has(result.id)) {\n onChange([...valueRef.current, mapToProcedure(result)]);\n }\n setQuery('');\n setResults([]);\n }\n\n function handleResultClick(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) return;\n setAddingId(result.id);\n setTimeout(() => {\n addProcedure(result);\n setAddingId(null);\n setTimeout(() => searchInputRef.current?.focus(), 0);\n }, ADD_FEEDBACK_MS);\n }\n\n function removeAt(index: number) {\n onChange(safeValue.filter((_, i) => i !== index));\n }\n\n function removeBySearchId(id: string) {\n onChange(safeValue.filter((proc) => proc.is_custom || proc.id !== id));\n }\n\n function handleAddCustom() {\n const trimmed = query.trim();\n if (!trimmed) return;\n if (valueRef.current.some((p) => p.is_custom && p.name === trimmed)) return;\n onChange([...valueRef.current, createCustomProcedure(trimmed)]);\n setQuery('');\n setResults([]);\n }\n\n function handleRecentlyUsedToggle(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) {\n removeBySearchId(result.id);\n } else {\n addProcedure(result);\n }\n }\n\n async function handleFrequentItemToggle(item: ProcedureFrequentItem) {\n const id = String(item.id);\n const addedById = addedIds.has(id);\n const addedByName = safeValue.some((proc) => proc.name === item.name);\n if (addedById || addedByName) {\n if (addedById) removeBySearchId(id);\n else onChange(safeValue.filter((proc) => proc.name !== item.name));\n return;\n }\n setAddingFrequentId(id);\n try {\n const searchResults = await onSearch(item.name);\n const first = searchResults?.[0];\n if (first && !valueRef.current.some((proc) => !proc.is_custom && proc.id === first.id)) {\n onChange([...valueRef.current, mapToProcedure(first)]);\n }\n } finally {\n setAddingFrequentId(null);\n }\n }\n\n const recentlyUsedChips = recentlyUsed.map((r) => {\n const isAdded = addedIds.has(r.id);\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleRecentlyUsedToggle(r)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {r.name}\n </button>\n );\n });\n\n const limitedFrequentItems = frequentItems.slice(0, 25);\n\n const frequentItemChips =\n limitedFrequentItems.length > 0\n ? limitedFrequentItems.map((item) => {\n const id = String(item.id);\n const isAdded =\n safeValue.some((proc) => !proc.is_custom && proc.id === id) ||\n safeValue.some((proc) => proc.name === item.name);\n const isAdding = addingFrequentId === id;\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={isAdding}\n onClick={() => handleFrequentItemToggle(item)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50',\n isAdding && 'opacity-70 pointer-events-none'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {isAdding ? '…' : item.name}\n </button>\n );\n })\n : [];\n\n return (\n <div className=\"rounded-md overflow-hidden flex flex-col bg-white border border-[#D0D0D0] space-y-3 p-3 h-fit\">\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-sm font-semibold\">{label}</span>\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className=\"text-sm font-semibold text-purple-600 hover:text-purple-800 cursor-pointer\"\n >\n ADD\n </button>\n </div>\n\n {/* Added procedures — one row each */}\n {safeValue.length > 0 && (\n <div className=\"divide-y divide-border rounded-lg border border-border overflow-hidden\">\n {safeValue.map((proc, index) => (\n <div\n key={proc.is_custom ? `custom-${index}` : proc.id}\n className=\"flex items-center justify-between px-3 py-2 bg-white hover:bg-gray-50\"\n >\n <span className=\"text-sm\">{proc.name}</span>\n <button\n type=\"button\"\n onClick={() => removeAt(index)}\n className=\"text-muted-foreground hover:text-red-500 transition-colors cursor-pointer\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {/* Dialog */}\n <AddEntityDialog\n open={open}\n onClose={() => setOpen(false)}\n title=\"Add Procedure\"\n recentlyUsedSlot={\n frequentItemChips.length > 0\n ? frequentItemChips\n : recentlyUsedChips.length > 0\n ? recentlyUsedChips\n : undefined\n }\n chipSectionLabel={frequentItemChips.length > 0 ? 'Frequently used' : undefined}\n actionSlot={\n <button\n type=\"button\"\n disabled={\n !query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())\n }\n onClick={handleAddCustom}\n className={cn(\n 'rounded-md px-5 py-2 text-sm font-semibold bg-primary text-primary-foreground hover:bg-primary/90 transition-opacity cursor-pointer',\n (!query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())) &&\n 'opacity-40 cursor-not-allowed'\n )}\n >\n Save Procedure\n </button>\n }\n >\n <div className=\"space-y-2\">\n <Input\n ref={searchInputRef}\n value={query}\n onChange={(e) => handleQueryChange(e.target.value)}\n placeholder=\"Search for a procedure...\"\n className=\"border border-border rounded-md focus-visible:ring-0\"\n />\n\n {/* Inline results — no absolute positioning to avoid overflow-clip */}\n {loading && (\n <p className=\"text-xs text-muted-foreground py-1\">Searching…</p>\n )}\n {!loading && results.length > 0 && (\n <div className=\"border border-border rounded-md overflow-hidden\">\n {results.map((r) => {\n const isAdding = addingId === r.id;\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleResultClick(r)}\n className={cn(\n 'w-full text-left px-3 py-2 text-sm transition-all duration-300 ease-out border-b border-border last:border-b-0 cursor-pointer flex items-center justify-between gap-2',\n isAdding\n ? 'bg-green-50 border-green-200'\n : 'hover:bg-gray-50'\n )}\n >\n <span className=\"truncate\">{r.name}</span>\n {isAdding && <Check className=\"h-4 w-4 shrink-0 text-green-600\" />}\n </button>\n );\n })}\n </div>\n )}\n </div>\n </AddEntityDialog>\n </div>\n );\n};\n","import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems } from '../../react/FormProvider';\nimport { AddProcedureField } from './AddProcedureField';\nimport type { Procedure, ProcedureSearchResult } from './AddProcedureField';\n\nexport const AddProcedureWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { procedures: frequentProcedures } = useFrequentItems();\n\n const safeValue: Procedure[] = Array.isArray(value) ? (value as Procedure[]) : [];\n\n return (\n <AddProcedureField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<ProcedureSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as ProcedureSearchResult[] | undefined}\n frequentItems={frequentProcedures}\n />\n );\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AddEntityDialog } from './chunk-GZPCYSJK.mjs';
|
|
2
2
|
import { Input } from './chunk-VNFBUAZD.mjs';
|
|
3
|
-
import { useField, useFieldHandlers, useFrequentItems } from './chunk-
|
|
3
|
+
import { useField, useFieldHandlers, useFrequentItems } from './chunk-ZTT5XJR7.mjs';
|
|
4
4
|
import { cn } from './chunk-VPU66PI6.mjs';
|
|
5
5
|
import { useState, useRef, useEffect } from 'react';
|
|
6
6
|
import { X, Check } from 'lucide-react';
|
|
@@ -272,5 +272,5 @@ var AddProcedureWidget = ({ fieldId }) => {
|
|
|
272
272
|
};
|
|
273
273
|
|
|
274
274
|
export { AddProcedureWidget };
|
|
275
|
-
//# sourceMappingURL=AddProcedureWidget-
|
|
276
|
-
//# sourceMappingURL=AddProcedureWidget-
|
|
275
|
+
//# sourceMappingURL=AddProcedureWidget-SQJUKKMK.mjs.map
|
|
276
|
+
//# sourceMappingURL=AddProcedureWidget-SQJUKKMK.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/AddProcedureField.tsx","../src/ui/widgets/AddProcedureWidget.tsx"],"names":["jsx"],"mappings":"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","file":"AddProcedureWidget-NB46COB6.mjs","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { X, Check } from 'lucide-react';\nimport { cn } from '../../core/utils';\nimport { Input } from '../shadcn/input';\nimport { AddEntityDialog } from './AddEntityDialog';\nimport type { ProcedureFrequentItem } from '../../core/types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n// Matches search API response.results[] shape\n\nexport type ProcedureSearchResult = {\n id: string;\n name: string;\n code?: string;\n description?: string;\n specialization?: string;\n score?: number;\n};\n\n/** Master row from search / frequent resolution — full metadata. */\nexport type MasterProcedure = ProcedureSearchResult & {\n label: string;\n is_custom: false;\n fromAI: boolean;\n};\n\n/** Custom free-text row — only `name` and `is_custom` (no extra keys). */\nexport type CustomProcedure = {\n name: string;\n is_custom: true;\n};\n\nexport type Procedure = MasterProcedure | CustomProcedure;\n\nexport type AddProcedureFieldProps = {\n label?: string;\n value: Procedure[];\n onChange: (items: Procedure[]) => void;\n onSearch: (query: string) => Promise<ProcedureSearchResult[]>;\n recentlyUsed?: ProcedureSearchResult[];\n /** Doctor-scoped frequently used procedures (from FormProvider frequentItems) */\n frequentItems?: ProcedureFrequentItem[];\n};\n\nconst ADD_FEEDBACK_MS = 320;\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\nfunction mapToProcedure(result: ProcedureSearchResult): MasterProcedure {\n return {\n ...result,\n label: result.name,\n is_custom: false,\n fromAI: false,\n };\n}\n\nfunction createCustomProcedure(trimmedName: string): CustomProcedure {\n return { name: trimmedName.trim(), is_custom: true };\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const AddProcedureField: React.FC<AddProcedureFieldProps> = ({\n label = 'Procedures',\n value,\n onChange,\n onSearch,\n recentlyUsed = [],\n frequentItems = [],\n}) => {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [results, setResults] = useState<ProcedureSearchResult[]>([]);\n const [loading, setLoading] = useState(false);\n const [addingId, setAddingId] = useState<string | null>(null);\n const [addingFrequentId, setAddingFrequentId] = useState<string | null>(null);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const valueRef = useRef<Procedure[]>([]);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const safeValue: Procedure[] = Array.isArray(value) ? value : [];\n\n valueRef.current = safeValue;\n const addedIds = new Set(\n safeValue.filter((proc): proc is MasterProcedure => !proc.is_custom).map((proc) => proc.id),\n );\n\n useEffect(() => {\n if (!open) {\n setQuery('');\n setResults([]);\n setAddingId(null);\n setAddingFrequentId(null);\n }\n }, [open]);\n\n function handleQueryChange(q: string) {\n setQuery(q);\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (!q.trim()) {\n setResults([]);\n return;\n }\n debounceRef.current = setTimeout(async () => {\n setLoading(true);\n try {\n const res = await onSearch(q);\n setResults(res);\n } finally {\n setLoading(false);\n }\n }, 500);\n }\n\n function addProcedure(result: ProcedureSearchResult) {\n if (!addedIds.has(result.id)) {\n onChange([...valueRef.current, mapToProcedure(result)]);\n }\n setQuery('');\n setResults([]);\n }\n\n function handleResultClick(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) return;\n setAddingId(result.id);\n setTimeout(() => {\n addProcedure(result);\n setAddingId(null);\n setTimeout(() => searchInputRef.current?.focus(), 0);\n }, ADD_FEEDBACK_MS);\n }\n\n function removeAt(index: number) {\n onChange(safeValue.filter((_, i) => i !== index));\n }\n\n function removeBySearchId(id: string) {\n onChange(safeValue.filter((proc) => proc.is_custom || proc.id !== id));\n }\n\n function handleAddCustom() {\n const trimmed = query.trim();\n if (!trimmed) return;\n if (valueRef.current.some((p) => p.is_custom && p.name === trimmed)) return;\n onChange([...valueRef.current, createCustomProcedure(trimmed)]);\n setQuery('');\n setResults([]);\n }\n\n function handleRecentlyUsedToggle(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) {\n removeBySearchId(result.id);\n } else {\n addProcedure(result);\n }\n }\n\n async function handleFrequentItemToggle(item: ProcedureFrequentItem) {\n const id = String(item.id);\n const addedById = addedIds.has(id);\n const addedByName = safeValue.some((proc) => proc.name === item.name);\n if (addedById || addedByName) {\n if (addedById) removeBySearchId(id);\n else onChange(safeValue.filter((proc) => proc.name !== item.name));\n return;\n }\n setAddingFrequentId(id);\n try {\n const searchResults = await onSearch(item.name);\n const first = searchResults?.[0];\n if (first && !valueRef.current.some((proc) => !proc.is_custom && proc.id === first.id)) {\n onChange([...valueRef.current, mapToProcedure(first)]);\n }\n } finally {\n setAddingFrequentId(null);\n }\n }\n\n const recentlyUsedChips = recentlyUsed.map((r) => {\n const isAdded = addedIds.has(r.id);\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleRecentlyUsedToggle(r)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {r.name}\n </button>\n );\n });\n\n const limitedFrequentItems = frequentItems.slice(0, 25);\n\n const frequentItemChips =\n limitedFrequentItems.length > 0\n ? limitedFrequentItems.map((item) => {\n const id = String(item.id);\n const isAdded =\n safeValue.some((proc) => !proc.is_custom && proc.id === id) ||\n safeValue.some((proc) => proc.name === item.name);\n const isAdding = addingFrequentId === id;\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={isAdding}\n onClick={() => handleFrequentItemToggle(item)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50',\n isAdding && 'opacity-70 pointer-events-none'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {isAdding ? '…' : item.name}\n </button>\n );\n })\n : [];\n\n return (\n <div className=\"rounded-md overflow-hidden flex flex-col bg-white border border-[#D0D0D0] space-y-3 p-3 h-fit\">\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-sm font-semibold\">{label}</span>\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className=\"text-sm font-semibold text-purple-600 hover:text-purple-800 cursor-pointer\"\n >\n ADD\n </button>\n </div>\n\n {/* Added procedures — one row each */}\n {safeValue.length > 0 && (\n <div className=\"divide-y divide-border rounded-lg border border-border overflow-hidden\">\n {safeValue.map((proc, index) => (\n <div\n key={proc.is_custom ? `custom-${index}` : proc.id}\n className=\"flex items-center justify-between px-3 py-2 bg-white hover:bg-gray-50\"\n >\n <span className=\"text-sm\">{proc.name}</span>\n <button\n type=\"button\"\n onClick={() => removeAt(index)}\n className=\"text-muted-foreground hover:text-red-500 transition-colors cursor-pointer\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {/* Dialog */}\n <AddEntityDialog\n open={open}\n onClose={() => setOpen(false)}\n title=\"Add Procedure\"\n recentlyUsedSlot={\n frequentItemChips.length > 0\n ? frequentItemChips\n : recentlyUsedChips.length > 0\n ? recentlyUsedChips\n : undefined\n }\n chipSectionLabel={frequentItemChips.length > 0 ? 'Frequently used' : undefined}\n actionSlot={\n <button\n type=\"button\"\n disabled={\n !query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())\n }\n onClick={handleAddCustom}\n className={cn(\n 'rounded-md px-5 py-2 text-sm font-semibold bg-primary text-primary-foreground hover:bg-primary/90 transition-opacity cursor-pointer',\n (!query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())) &&\n 'opacity-40 cursor-not-allowed'\n )}\n >\n Save Procedure\n </button>\n }\n >\n <div className=\"space-y-2\">\n <Input\n ref={searchInputRef}\n value={query}\n onChange={(e) => handleQueryChange(e.target.value)}\n placeholder=\"Search for a procedure...\"\n className=\"border border-border rounded-md focus-visible:ring-0\"\n />\n\n {/* Inline results — no absolute positioning to avoid overflow-clip */}\n {loading && (\n <p className=\"text-xs text-muted-foreground py-1\">Searching…</p>\n )}\n {!loading && results.length > 0 && (\n <div className=\"border border-border rounded-md overflow-hidden\">\n {results.map((r) => {\n const isAdding = addingId === r.id;\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleResultClick(r)}\n className={cn(\n 'w-full text-left px-3 py-2 text-sm transition-all duration-300 ease-out border-b border-border last:border-b-0 cursor-pointer flex items-center justify-between gap-2',\n isAdding\n ? 'bg-green-50 border-green-200'\n : 'hover:bg-gray-50'\n )}\n >\n <span className=\"truncate\">{r.name}</span>\n {isAdding && <Check className=\"h-4 w-4 shrink-0 text-green-600\" />}\n </button>\n );\n })}\n </div>\n )}\n </div>\n </AddEntityDialog>\n </div>\n );\n};\n","import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems } from '../../react/FormProvider';\nimport { AddProcedureField } from './AddProcedureField';\nimport type { Procedure, ProcedureSearchResult } from './AddProcedureField';\n\nexport const AddProcedureWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { procedures: frequentProcedures } = useFrequentItems();\n\n const safeValue: Procedure[] = Array.isArray(value) ? (value as Procedure[]) : [];\n\n return (\n <AddProcedureField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<ProcedureSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as ProcedureSearchResult[] | undefined}\n frequentItems={frequentProcedures}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/AddProcedureField.tsx","../src/ui/widgets/AddProcedureWidget.tsx"],"names":["jsx"],"mappings":";;;;;;;;AA4CA,IAAM,eAAA,GAAkB,GAAA;AAIxB,SAAS,eAAe,MAAA,EAAgD;AACtE,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,OAAO,MAAA,CAAO,IAAA;AAAA,IACd,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AACF;AAEA,SAAS,sBAAsB,WAAA,EAAsC;AACnE,EAAA,OAAO,EAAE,IAAA,EAAM,WAAA,CAAY,IAAA,EAAK,EAAG,WAAW,IAAA,EAAK;AACrD;AAIO,IAAM,oBAAsD,CAAC;AAAA,EAClE,KAAA,GAAQ,YAAA;AAAA,EACR,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAe,EAAC;AAAA,EAChB,gBAAgB;AAClB,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,QAAA,CAAkC,EAAE,CAAA;AAClE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAwB,IAAI,CAAA;AAC5D,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAwB,IAAI,CAAA;AAC5E,EAAA,MAAM,WAAA,GAAc,OAA6C,IAAI,CAAA;AACrE,EAAA,MAAM,QAAA,GAAW,MAAA,CAAoB,EAAE,CAAA;AACvC,EAAA,MAAM,cAAA,GAAiB,OAAyB,IAAI,CAAA;AAEpD,EAAA,MAAM,YAAyB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAC;AAE/D,EAAA,QAAA,CAAS,OAAA,GAAU,SAAA;AACnB,EAAA,MAAM,WAAW,IAAI,GAAA;AAAA,IACnB,SAAA,CAAU,MAAA,CAAO,CAAC,IAAA,KAAkC,CAAC,IAAA,CAAK,SAAS,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,EAAE;AAAA,GAC5F;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,UAAA,CAAW,EAAE,CAAA;AACb,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,SAAS,kBAAkB,CAAA,EAAW;AACpC,IAAA,QAAA,CAAS,CAAC,CAAA;AACV,IAAA,IAAI,WAAA,CAAY,OAAA,EAAS,YAAA,CAAa,WAAA,CAAY,OAAO,CAAA;AACzD,IAAA,IAAI,CAAC,CAAA,CAAE,IAAA,EAAK,EAAG;AACb,MAAA,UAAA,CAAW,EAAE,CAAA;AACb,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,OAAA,GAAU,WAAW,YAAY;AAC3C,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,CAAC,CAAA;AAC5B,QAAA,UAAA,CAAW,GAAG,CAAA;AAAA,MAChB,CAAA,SAAE;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,GAAG,GAAG,CAAA;AAAA,EACR;AAEA,EAAA,SAAS,aAAa,MAAA,EAA+B;AACnD,IAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAG;AAC5B,MAAA,QAAA,CAAS,CAAC,GAAG,QAAA,CAAS,SAAS,cAAA,CAAe,MAAM,CAAC,CAAC,CAAA;AAAA,IACxD;AACA,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,UAAA,CAAW,EAAE,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,kBAAkB,MAAA,EAA+B;AACxD,IAAA,IAAI,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAG;AAC7B,IAAA,WAAA,CAAY,OAAO,EAAE,CAAA;AACrB,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,YAAA,CAAa,MAAM,CAAA;AACnB,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,UAAA,CAAW,MAAM,cAAA,CAAe,OAAA,EAAS,KAAA,IAAS,CAAC,CAAA;AAAA,IACrD,GAAG,eAAe,CAAA;AAAA,EACpB;AAEA,EAAA,SAAS,SAAS,KAAA,EAAe;AAC/B,IAAA,QAAA,CAAS,UAAU,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAC,CAAA;AAAA,EAClD;AAEA,EAAA,SAAS,iBAAiB,EAAA,EAAY;AACpC,IAAA,QAAA,CAAS,SAAA,CAAU,OAAO,CAAC,IAAA,KAAS,KAAK,SAAA,IAAa,IAAA,CAAK,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,EACvE;AAEA,EAAA,SAAS,eAAA,GAAkB;AACzB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,IAAI,QAAA,CAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,SAAA,IAAa,CAAA,CAAE,IAAA,KAAS,OAAO,CAAA,EAAG;AACrE,IAAA,QAAA,CAAS,CAAC,GAAG,QAAA,CAAS,SAAS,qBAAA,CAAsB,OAAO,CAAC,CAAC,CAAA;AAC9D,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,UAAA,CAAW,EAAE,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,yBAAyB,MAAA,EAA+B;AAC/D,IAAA,IAAI,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAG;AAC3B,MAAA,gBAAA,CAAiB,OAAO,EAAE,CAAA;AAAA,IAC5B,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,MAAM,CAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,eAAe,yBAAyB,IAAA,EAA6B;AACnE,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACzB,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AACjC,IAAA,MAAM,WAAA,GAAc,UAAU,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,KAAK,IAAI,CAAA;AACpE,IAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,MAAA,IAAI,SAAA,mBAA4B,EAAE,CAAA;AAAA,WAC7B,QAAA,CAAS,UAAU,MAAA,CAAO,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,MAAA;AAAA,IACF;AACA,IAAA,mBAAA,CAAoB,EAAE,CAAA;AACtB,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,MAAM,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAC9C,MAAA,MAAM,KAAA,GAAQ,gBAAgB,CAAC,CAAA;AAC/B,MAAA,IAAI,KAAA,IAAS,CAAC,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,SAAA,IAAa,IAAA,CAAK,EAAA,KAAO,KAAA,CAAM,EAAE,CAAA,EAAG;AACtF,QAAA,QAAA,CAAS,CAAC,GAAG,QAAA,CAAS,SAAS,cAAA,CAAe,KAAK,CAAC,CAAC,CAAA;AAAA,MACvD;AAAA,IACF,CAAA,SAAE;AACA,MAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,KAAM;AAChD,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA;AACjC,IAAA,uBACE,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,wBAAA,CAAyB,CAAC,CAAA;AAAA,QACzC,SAAA,EAAW,EAAA;AAAA,UACT,yDAAA;AAAA,UACA,UACI,6CAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAW,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAA,EAAO,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,UACnC,CAAA,CAAE;AAAA;AAAA,OAAA;AAAA,MAXE,CAAA,CAAE;AAAA,KAYT;AAAA,EAEJ,CAAC,CAAA;AAED,EAAA,MAAM,oBAAA,GAAuB,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAEtD,EAAA,MAAM,oBACJ,oBAAA,CAAqB,MAAA,GAAS,IAC1B,oBAAA,CAAqB,GAAA,CAAI,CAAC,IAAA,KAAS;AACjC,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACzB,IAAA,MAAM,UACJ,SAAA,CAAU,IAAA,CAAK,CAAC,IAAA,KAAS,CAAC,KAAK,SAAA,IAAa,IAAA,CAAK,OAAO,EAAE,CAAA,IAC1D,UAAU,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,KAAK,IAAI,CAAA;AAClD,IAAA,MAAM,WAAW,gBAAA,KAAqB,EAAA;AACtC,IAAA,uBACE,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,QAAA;AAAA,QACV,OAAA,EAAS,MAAM,wBAAA,CAAyB,IAAI,CAAA;AAAA,QAC5C,SAAA,EAAW,EAAA;AAAA,UACT,yDAAA;AAAA,UACA,UACI,6CAAA,GACA,yCAAA;AAAA,UACJ,QAAA,IAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAW,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,MAAA,EAAO,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,UACnC,QAAA,GAAW,WAAM,IAAA,CAAK;AAAA;AAAA,OAAA;AAAA,MAblB,IAAA,CAAK;AAAA,KAcZ;AAAA,EAEJ,CAAC,IACD,EAAC;AAEP,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+FAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC/C,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,UAC3B,SAAA,EAAU,4EAAA;AAAA,UACX,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EACF,CAAA;AAAA,IAGC,SAAA,CAAU,MAAA,GAAS,CAAA,oBAClB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wEAAA,EACZ,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACpB,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,uEAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;AAAA,0BACrC,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,QAAA,CAAS,KAAK,CAAA;AAAA,cAC7B,SAAA,EAAU,2EAAA;AAAA,cAEV,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACzB;AAAA,OAAA;AAAA,MAVK,IAAA,CAAK,SAAA,GAAY,CAAA,OAAA,EAAU,KAAK,KAAK,IAAA,CAAK;AAAA,KAYlD,CAAA,EACH,CAAA;AAAA,oBAIF,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAC5B,KAAA,EAAM,eAAA;AAAA,QACN,gBAAA,EACE,kBAAkB,MAAA,GAAS,CAAA,GACvB,oBACA,iBAAA,CAAkB,MAAA,GAAS,IACzB,iBAAA,GACA,MAAA;AAAA,QAER,gBAAA,EAAkB,iBAAA,CAAkB,MAAA,GAAS,CAAA,GAAI,iBAAA,GAAoB,MAAA;AAAA,QACrE,UAAA,kBACE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,UACE,CAAC,KAAA,CAAM,IAAA,EAAK,IACZ,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,SAAA,IAAa,CAAA,CAAE,IAAA,KAAS,KAAA,CAAM,MAAM,CAAA;AAAA,YAErE,OAAA,EAAS,eAAA;AAAA,YACT,SAAA,EAAW,EAAA;AAAA,cACT,qIAAA;AAAA,cAAA,CACC,CAAC,KAAA,CAAM,IAAA,EAAK,IACX,QAAA,CAAS,QAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA,CAAE,IAAA,KAAS,KAAA,CAAM,IAAA,EAAM,CAAA,KACnE;AAAA,aACJ;AAAA,YACD,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,QAGF,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,cAAA;AAAA,cACL,KAAA,EAAO,KAAA;AAAA,cACP,UAAU,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACjD,WAAA,EAAY,2BAAA;AAAA,cACZ,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAGC,OAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sCAAqC,QAAA,EAAA,iBAAA,EAAU,CAAA;AAAA,UAE7D,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,oBAC5B,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM;AAClB,YAAA,MAAM,QAAA,GAAW,aAAa,CAAA,CAAE,EAAA;AAChC,YAAA,uBACE,IAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,MAAM,iBAAA,CAAkB,CAAC,CAAA;AAAA,gBAClC,SAAA,EAAW,EAAA;AAAA,kBACT,uKAAA;AAAA,kBACA,WACI,8BAAA,GACA;AAAA,iBACN;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,CAAA,CAAE,IAAA,EAAK,CAAA;AAAA,kBAClC,QAAA,oBAAY,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,iCAAA,EAAkC;AAAA;AAAA,eAAA;AAAA,cAX3D,CAAA,CAAE;AAAA,aAYT;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA,SAAA,EAEJ;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ,CAAA;AC1UO,IAAM,kBAAA,GAAoD,CAAC,EAAE,OAAA,EAAQ,KAAM;AAChF,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,SAAS,OAAO,CAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,iBAAiB,OAAO,CAAA;AACzC,EAAA,MAAM,EAAE,UAAA,EAAY,kBAAA,EAAmB,GAAI,gBAAA,EAAiB;AAE5D,EAAA,MAAM,YAAyB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,QAAwB,EAAC;AAEhF,EAAA,uBACEA,GAAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,cAAc,QAAA,CAAS,YAAA;AAAA,MACvB,aAAA,EAAe;AAAA;AAAA,GACjB;AAEJ","file":"AddProcedureWidget-SQJUKKMK.mjs","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { X, Check } from 'lucide-react';\nimport { cn } from '../../core/utils';\nimport { Input } from '../shadcn/input';\nimport { AddEntityDialog } from './AddEntityDialog';\nimport type { ProcedureFrequentItem } from '../../core/types';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n// Matches search API response.results[] shape\n\nexport type ProcedureSearchResult = {\n id: string;\n name: string;\n code?: string;\n description?: string;\n specialization?: string;\n score?: number;\n};\n\n/** Master row from search / frequent resolution — full metadata. */\nexport type MasterProcedure = ProcedureSearchResult & {\n label: string;\n is_custom: false;\n fromAI: boolean;\n};\n\n/** Custom free-text row — only `name` and `is_custom` (no extra keys). */\nexport type CustomProcedure = {\n name: string;\n is_custom: true;\n};\n\nexport type Procedure = MasterProcedure | CustomProcedure;\n\nexport type AddProcedureFieldProps = {\n label?: string;\n value: Procedure[];\n onChange: (items: Procedure[]) => void;\n onSearch: (query: string) => Promise<ProcedureSearchResult[]>;\n recentlyUsed?: ProcedureSearchResult[];\n /** Doctor-scoped frequently used procedures (from FormProvider frequentItems) */\n frequentItems?: ProcedureFrequentItem[];\n};\n\nconst ADD_FEEDBACK_MS = 320;\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\nfunction mapToProcedure(result: ProcedureSearchResult): MasterProcedure {\n return {\n ...result,\n label: result.name,\n is_custom: false,\n fromAI: false,\n };\n}\n\nfunction createCustomProcedure(trimmedName: string): CustomProcedure {\n return { name: trimmedName.trim(), is_custom: true };\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const AddProcedureField: React.FC<AddProcedureFieldProps> = ({\n label = 'Procedures',\n value,\n onChange,\n onSearch,\n recentlyUsed = [],\n frequentItems = [],\n}) => {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [results, setResults] = useState<ProcedureSearchResult[]>([]);\n const [loading, setLoading] = useState(false);\n const [addingId, setAddingId] = useState<string | null>(null);\n const [addingFrequentId, setAddingFrequentId] = useState<string | null>(null);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const valueRef = useRef<Procedure[]>([]);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const safeValue: Procedure[] = Array.isArray(value) ? value : [];\n\n valueRef.current = safeValue;\n const addedIds = new Set(\n safeValue.filter((proc): proc is MasterProcedure => !proc.is_custom).map((proc) => proc.id),\n );\n\n useEffect(() => {\n if (!open) {\n setQuery('');\n setResults([]);\n setAddingId(null);\n setAddingFrequentId(null);\n }\n }, [open]);\n\n function handleQueryChange(q: string) {\n setQuery(q);\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (!q.trim()) {\n setResults([]);\n return;\n }\n debounceRef.current = setTimeout(async () => {\n setLoading(true);\n try {\n const res = await onSearch(q);\n setResults(res);\n } finally {\n setLoading(false);\n }\n }, 500);\n }\n\n function addProcedure(result: ProcedureSearchResult) {\n if (!addedIds.has(result.id)) {\n onChange([...valueRef.current, mapToProcedure(result)]);\n }\n setQuery('');\n setResults([]);\n }\n\n function handleResultClick(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) return;\n setAddingId(result.id);\n setTimeout(() => {\n addProcedure(result);\n setAddingId(null);\n setTimeout(() => searchInputRef.current?.focus(), 0);\n }, ADD_FEEDBACK_MS);\n }\n\n function removeAt(index: number) {\n onChange(safeValue.filter((_, i) => i !== index));\n }\n\n function removeBySearchId(id: string) {\n onChange(safeValue.filter((proc) => proc.is_custom || proc.id !== id));\n }\n\n function handleAddCustom() {\n const trimmed = query.trim();\n if (!trimmed) return;\n if (valueRef.current.some((p) => p.is_custom && p.name === trimmed)) return;\n onChange([...valueRef.current, createCustomProcedure(trimmed)]);\n setQuery('');\n setResults([]);\n }\n\n function handleRecentlyUsedToggle(result: ProcedureSearchResult) {\n if (addedIds.has(result.id)) {\n removeBySearchId(result.id);\n } else {\n addProcedure(result);\n }\n }\n\n async function handleFrequentItemToggle(item: ProcedureFrequentItem) {\n const id = String(item.id);\n const addedById = addedIds.has(id);\n const addedByName = safeValue.some((proc) => proc.name === item.name);\n if (addedById || addedByName) {\n if (addedById) removeBySearchId(id);\n else onChange(safeValue.filter((proc) => proc.name !== item.name));\n return;\n }\n setAddingFrequentId(id);\n try {\n const searchResults = await onSearch(item.name);\n const first = searchResults?.[0];\n if (first && !valueRef.current.some((proc) => !proc.is_custom && proc.id === first.id)) {\n onChange([...valueRef.current, mapToProcedure(first)]);\n }\n } finally {\n setAddingFrequentId(null);\n }\n }\n\n const recentlyUsedChips = recentlyUsed.map((r) => {\n const isAdded = addedIds.has(r.id);\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleRecentlyUsedToggle(r)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {r.name}\n </button>\n );\n });\n\n const limitedFrequentItems = frequentItems.slice(0, 25);\n\n const frequentItemChips =\n limitedFrequentItems.length > 0\n ? limitedFrequentItems.map((item) => {\n const id = String(item.id);\n const isAdded =\n safeValue.some((proc) => !proc.is_custom && proc.id === id) ||\n safeValue.some((proc) => proc.name === item.name);\n const isAdding = addingFrequentId === id;\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={isAdding}\n onClick={() => handleFrequentItemToggle(item)}\n className={cn(\n 'rounded-full border text-xs px-3 py-1 transition-colors',\n isAdded\n ? 'border-green-300 bg-green-50 text-green-700'\n : 'border-border bg-white hover:bg-gray-50',\n isAdding && 'opacity-70 pointer-events-none'\n )}\n >\n {isAdded && <span className=\"mr-1\">✓</span>}\n {isAdding ? '…' : item.name}\n </button>\n );\n })\n : [];\n\n return (\n <div className=\"rounded-md overflow-hidden flex flex-col bg-white border border-[#D0D0D0] space-y-3 p-3 h-fit\">\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-sm font-semibold\">{label}</span>\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className=\"text-sm font-semibold text-purple-600 hover:text-purple-800 cursor-pointer\"\n >\n ADD\n </button>\n </div>\n\n {/* Added procedures — one row each */}\n {safeValue.length > 0 && (\n <div className=\"divide-y divide-border rounded-lg border border-border overflow-hidden\">\n {safeValue.map((proc, index) => (\n <div\n key={proc.is_custom ? `custom-${index}` : proc.id}\n className=\"flex items-center justify-between px-3 py-2 bg-white hover:bg-gray-50\"\n >\n <span className=\"text-sm\">{proc.name}</span>\n <button\n type=\"button\"\n onClick={() => removeAt(index)}\n className=\"text-muted-foreground hover:text-red-500 transition-colors cursor-pointer\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {/* Dialog */}\n <AddEntityDialog\n open={open}\n onClose={() => setOpen(false)}\n title=\"Add Procedure\"\n recentlyUsedSlot={\n frequentItemChips.length > 0\n ? frequentItemChips\n : recentlyUsedChips.length > 0\n ? recentlyUsedChips\n : undefined\n }\n chipSectionLabel={frequentItemChips.length > 0 ? 'Frequently used' : undefined}\n actionSlot={\n <button\n type=\"button\"\n disabled={\n !query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())\n }\n onClick={handleAddCustom}\n className={cn(\n 'rounded-md px-5 py-2 text-sm font-semibold bg-primary text-primary-foreground hover:bg-primary/90 transition-opacity cursor-pointer',\n (!query.trim() ||\n valueRef.current.some((p) => p.is_custom && p.name === query.trim())) &&\n 'opacity-40 cursor-not-allowed'\n )}\n >\n Save Procedure\n </button>\n }\n >\n <div className=\"space-y-2\">\n <Input\n ref={searchInputRef}\n value={query}\n onChange={(e) => handleQueryChange(e.target.value)}\n placeholder=\"Search for a procedure...\"\n className=\"border border-border rounded-md focus-visible:ring-0\"\n />\n\n {/* Inline results — no absolute positioning to avoid overflow-clip */}\n {loading && (\n <p className=\"text-xs text-muted-foreground py-1\">Searching…</p>\n )}\n {!loading && results.length > 0 && (\n <div className=\"border border-border rounded-md overflow-hidden\">\n {results.map((r) => {\n const isAdding = addingId === r.id;\n return (\n <button\n key={r.id}\n type=\"button\"\n onClick={() => handleResultClick(r)}\n className={cn(\n 'w-full text-left px-3 py-2 text-sm transition-all duration-300 ease-out border-b border-border last:border-b-0 cursor-pointer flex items-center justify-between gap-2',\n isAdding\n ? 'bg-green-50 border-green-200'\n : 'hover:bg-gray-50'\n )}\n >\n <span className=\"truncate\">{r.name}</span>\n {isAdding && <Check className=\"h-4 w-4 shrink-0 text-green-600\" />}\n </button>\n );\n })}\n </div>\n )}\n </div>\n </AddEntityDialog>\n </div>\n );\n};\n","import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useFieldHandlers, useFrequentItems } from '../../react/FormProvider';\nimport { AddProcedureField } from './AddProcedureField';\nimport type { Procedure, ProcedureSearchResult } from './AddProcedureField';\n\nexport const AddProcedureWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { value, setValue } = useField(fieldId);\n const handlers = useFieldHandlers(fieldId);\n const { procedures: frequentProcedures } = useFrequentItems();\n\n const safeValue: Procedure[] = Array.isArray(value) ? (value as Procedure[]) : [];\n\n return (\n <AddProcedureField\n value={safeValue}\n onChange={setValue}\n onSearch={handlers.onSearch as (query: string) => Promise<ProcedureSearchResult[]>}\n recentlyUsed={handlers.recentlyUsed as ProcedureSearchResult[] | undefined}\n frequentItems={frequentProcedures}\n />\n );\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk6YX37XBM_cjs = require('./chunk-6YX37XBM.cjs');
|
|
4
|
+
var chunkSHQHDSA4_cjs = require('./chunk-SHQHDSA4.cjs');
|
|
5
5
|
require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
@@ -85,8 +85,8 @@ function Inp({
|
|
|
85
85
|
}
|
|
86
86
|
var DEFAULT_TITLE = "Biometry & IOL Workup (Stage 7)";
|
|
87
87
|
var BiometryIolWorkupWidget = ({ fieldId }) => {
|
|
88
|
-
const { fieldDef, value, setValue, error, disabled, touched } =
|
|
89
|
-
const { state } =
|
|
88
|
+
const { fieldDef, value, setValue, error, disabled, touched } = chunkSHQHDSA4_cjs.useField(fieldId);
|
|
89
|
+
const { state } = chunk6YX37XBM_cjs.useForm();
|
|
90
90
|
const showError = !!error && (touched || state.submitAttempted);
|
|
91
91
|
if (!fieldDef || fieldDef.type !== "biometry_iol_workup") {
|
|
92
92
|
return null;
|
|
@@ -296,5 +296,5 @@ var BiometryIolWorkupWidget = ({ fieldId }) => {
|
|
|
296
296
|
};
|
|
297
297
|
|
|
298
298
|
exports.BiometryIolWorkupWidget = BiometryIolWorkupWidget;
|
|
299
|
-
//# sourceMappingURL=BiometryIolWorkupWidget-
|
|
300
|
-
//# sourceMappingURL=BiometryIolWorkupWidget-
|
|
299
|
+
//# sourceMappingURL=BiometryIolWorkupWidget-I5AJOYB2.cjs.map
|
|
300
|
+
//# sourceMappingURL=BiometryIolWorkupWidget-I5AJOYB2.cjs.map
|
package/dist/{BiometryIolWorkupWidget-TCU4MMVI.cjs.map → BiometryIolWorkupWidget-I5AJOYB2.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/BiometryIolWorkupWidget.tsx"],"names":["jsx","useField","useForm","jsxs"],"mappings":"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","file":"BiometryIolWorkupWidget-TCU4MMVI.cjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport type { BiometryIolWorkupFieldDef, BiometryIolWorkupValue, BiometryMethod } from '../../core/types';\n\nconst FORMULA_OPTIONS = [\n 'SRK/T',\n 'Barrett Universal II',\n 'Hoffer Q',\n 'Haigis',\n 'Holladay 1',\n 'Holladay 2',\n 'Kane',\n] as const;\n\nconst METHODS: { value: BiometryMethod; label: string }[] = [\n { value: 'optical_biometry', label: 'Optical biometry (IOL Master)' },\n { value: 'ascan_immersion', label: 'A-scan (immersion)' },\n { value: 'ascan_contact', label: 'A-scan (contact)' },\n];\n\nconst EMPTY: BiometryIolWorkupValue = {\n axialLengthOD: '',\n axialLengthOS: '',\n k1k2AxisOD: '',\n k1k2AxisOS: '',\n anteriorChamberDepthOD: '',\n anteriorChamberDepthOS: '',\n iolPowerOD: '',\n iolPowerOS: '',\n targetRefractionOD: '',\n targetRefractionOS: '',\n formula: 'SRK/T',\n method: 'optical_biometry',\n cornealTopoUploaded: false,\n specularMicroscopyDone: false,\n endothelialCount: '',\n};\n\nfunction str(x: unknown): string {\n return typeof x === 'string' ? x : '';\n}\n\nfunction parseValue(raw: unknown): BiometryIolWorkupValue {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return { ...EMPTY };\n const o = raw as Record<string, unknown>;\n const m = o.method;\n const method: BiometryMethod =\n m === 'ascan_immersion' || m === 'ascan_contact' || m === 'optical_biometry' ? m : 'optical_biometry';\n const formula = str(o.formula);\n return {\n ...EMPTY,\n axialLengthOD: str(o.axialLengthOD),\n axialLengthOS: str(o.axialLengthOS),\n k1k2AxisOD: str(o.k1k2AxisOD),\n k1k2AxisOS: str(o.k1k2AxisOS),\n anteriorChamberDepthOD: str(o.anteriorChamberDepthOD),\n anteriorChamberDepthOS: str(o.anteriorChamberDepthOS),\n iolPowerOD: str(o.iolPowerOD),\n iolPowerOS: str(o.iolPowerOS),\n targetRefractionOD: str(o.targetRefractionOD),\n targetRefractionOS: str(o.targetRefractionOS),\n formula: formula || 'SRK/T',\n method,\n cornealTopoUploaded: o.cornealTopoUploaded === true,\n specularMicroscopyDone: o.specularMicroscopyDone === true,\n endothelialCount: str(o.endothelialCount),\n };\n}\n\n/** Row padding — use the same `py-*` on paramCell, eyeTh, eye `td`s, and colspan `td`s (Tailwind must see literals; not from index.css). */\nconst paramCell =\n 'emr-biometry-param text-[11px] font-semibold leading-snug text-foreground sm:text-xs py-2';\nconst eyeTh =\n 'emr-biometry-eye text-center text-[11px] font-semibold sm:text-xs py-2';\n\nfunction Inp({\n value,\n onChange,\n disabled,\n placeholder,\n}: {\n value: string;\n onChange: (s: string) => void;\n disabled?: boolean;\n placeholder?: string;\n}) {\n return (\n <input\n value={value}\n disabled={disabled}\n placeholder={placeholder}\n onChange={(e) => onChange(e.target.value)}\n className=\"box-border w-full min-w-0 rounded border border-input bg-background px-2 py-1 text-[11px] sm:text-xs\"\n />\n );\n}\n\nconst DEFAULT_TITLE = 'Biometry & IOL Workup (Stage 7)';\n\nexport const BiometryIolWorkupWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, error, disabled, touched } = useField(fieldId);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n if (!fieldDef || fieldDef.type !== 'biometry_iol_workup') {\n return null;\n }\n\n const def = fieldDef as BiometryIolWorkupFieldDef;\n const v = parseValue(value);\n const title =\n (def.meta?.cardTitle as string | undefined)?.trim() ||\n (def.label?.trim() ? def.label : DEFAULT_TITLE);\n\n const patch = (p: Partial<BiometryIolWorkupValue>) => setValue({ ...v, ...p });\n\n return (\n <div\n id={`biometry-iol-${fieldId}`}\n className=\"w-full min-w-0 max-w-full self-stretch rounded-lg border border-border bg-card p-3 text-card-foreground shadow-sm\"\n >\n <h3 className=\"mb-2.5 text-sm font-semibold leading-tight text-foreground\">{title}</h3>\n\n <div className=\"w-full min-w-0 overflow-x-auto\">\n <table className=\"emr-table emr-table--biometry min-w-full\">\n <colgroup>\n <col style={{ width: '32%' }} />\n <col style={{ width: '34%' }} />\n <col style={{ width: '34%' }} />\n </colgroup>\n <thead>\n <tr>\n <th scope=\"col\" className={paramCell}>\n Parameter\n </th>\n <th scope=\"col\" className={eyeTh}>\n Right Eye\n </th>\n <th scope=\"col\" className={eyeTh}>\n Left Eye\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className={paramCell}>Axial Length (mm)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.axialLengthOD}\n disabled={disabled}\n placeholder=\"e.g. 23.45\"\n onChange={(s) => patch({ axialLengthOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.axialLengthOS}\n disabled={disabled}\n placeholder=\"e.g. 23.45\"\n onChange={(s) => patch({ axialLengthOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>K1 / K2 / Axis</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.k1k2AxisOD}\n disabled={disabled}\n placeholder=\"44.0 / 44.5 / 90\"\n onChange={(s) => patch({ k1k2AxisOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.k1k2AxisOS}\n disabled={disabled}\n placeholder=\"44.0 / 44.5 / 90\"\n onChange={(s) => patch({ k1k2AxisOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={`${paramCell} whitespace-nowrap`}>Anterior Chamber Depth (mm)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.anteriorChamberDepthOD}\n disabled={disabled}\n onChange={(s) => patch({ anteriorChamberDepthOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.anteriorChamberDepthOS}\n disabled={disabled}\n onChange={(s) => patch({ anteriorChamberDepthOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>IOL Power (D)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp value={v.iolPowerOD} disabled={disabled} onChange={(s) => patch({ iolPowerOD: s })} />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp value={v.iolPowerOS} disabled={disabled} onChange={(s) => patch({ iolPowerOS: s })} />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>Target Refraction (D)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.targetRefractionOD}\n disabled={disabled}\n placeholder=\"e.g. -0.25\"\n onChange={(s) => patch({ targetRefractionOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.targetRefractionOS}\n disabled={disabled}\n placeholder=\"e.g. -0.25\"\n onChange={(s) => patch({ targetRefractionOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>Formula</td>\n <td className=\"min-w-0 px-2 py-2 align-middle\" colSpan={2}>\n <select\n value={v.formula}\n disabled={disabled}\n onChange={(e) => patch({ formula: e.target.value })}\n className=\"box-border w-full min-w-0 rounded border border-input bg-background px-2 py-1 text-[11px] sm:text-xs\"\n >\n {FORMULA_OPTIONS.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n </td>\n </tr>\n <tr>\n <td className={`${paramCell} align-top`}>Method</td>\n <td className=\"min-w-0 px-2 py-2 align-middle\" colSpan={2}>\n <div\n role=\"radiogroup\"\n aria-label=\"Biometry method\"\n className=\"flex w-full flex-wrap items-center justify-center gap-x-3 gap-y-2 text-[11px] sm:gap-x-4 sm:text-xs\"\n >\n {METHODS.map(({ value: mv, label }) => (\n <label key={mv} className=\"flex min-w-0 shrink-0 cursor-pointer items-center gap-1.5\">\n <input\n type=\"radio\"\n name={`${fieldId}-biom-method`}\n value={mv}\n checked={v.method === mv}\n disabled={disabled}\n onChange={() => patch({ method: mv })}\n className=\"shrink-0\"\n />\n <span className=\"min-w-0 whitespace-nowrap leading-tight\">{label}</span>\n </label>\n ))}\n </div>\n </td>\n </tr>\n <tr>\n <td className={`${paramCell} align-top text-muted-foreground`}>Optional workup</td>\n <td className=\"min-w-0 px-2 py-2 align-middle\" colSpan={2}>\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap items-center justify-center gap-x-4 gap-y-2 sm:justify-between\">\n <label className=\"inline-flex min-w-0 cursor-pointer items-center gap-1.5 text-[11px] leading-snug sm:text-xs\">\n <input\n type=\"checkbox\"\n className=\"shrink-0\"\n checked={v.cornealTopoUploaded}\n disabled={disabled}\n onChange={(e) => patch({ cornealTopoUploaded: e.target.checked })}\n />\n <span>Corneal topography uploaded</span>\n </label>\n <label className=\"inline-flex min-w-0 cursor-pointer items-center gap-1.5 text-[11px] leading-snug sm:text-xs\">\n <input\n type=\"checkbox\"\n className=\"shrink-0\"\n checked={v.specularMicroscopyDone}\n disabled={disabled}\n onChange={(e) => patch({ specularMicroscopyDone: e.target.checked })}\n />\n <span>Specular microscopy done</span>\n </label>\n </div>\n <div className=\"flex flex-wrap items-center justify-end gap-2 text-[11px] sm:text-xs\">\n <span className=\"shrink-0 text-muted-foreground\">Endothelial count:</span>\n <input\n value={v.endothelialCount}\n disabled={disabled}\n placeholder=\"cells/mm²\"\n onChange={(e) => patch({ endothelialCount: e.target.value })}\n className=\"box-border w-[5.5rem] min-w-0 shrink-0 rounded border border-input bg-background px-2 py-1 text-[11px] sm:text-xs\"\n />\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n {def.description && <p className=\"mt-2 text-xs text-muted-foreground\">{def.description}</p>}\n\n {showError && <p className=\"mt-2 text-xs text-red-500\">{error}</p>}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/BiometryIolWorkupWidget.tsx"],"names":["jsx","useField","useForm","jsxs"],"mappings":"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","file":"BiometryIolWorkupWidget-I5AJOYB2.cjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport type { BiometryIolWorkupFieldDef, BiometryIolWorkupValue, BiometryMethod } from '../../core/types';\n\nconst FORMULA_OPTIONS = [\n 'SRK/T',\n 'Barrett Universal II',\n 'Hoffer Q',\n 'Haigis',\n 'Holladay 1',\n 'Holladay 2',\n 'Kane',\n] as const;\n\nconst METHODS: { value: BiometryMethod; label: string }[] = [\n { value: 'optical_biometry', label: 'Optical biometry (IOL Master)' },\n { value: 'ascan_immersion', label: 'A-scan (immersion)' },\n { value: 'ascan_contact', label: 'A-scan (contact)' },\n];\n\nconst EMPTY: BiometryIolWorkupValue = {\n axialLengthOD: '',\n axialLengthOS: '',\n k1k2AxisOD: '',\n k1k2AxisOS: '',\n anteriorChamberDepthOD: '',\n anteriorChamberDepthOS: '',\n iolPowerOD: '',\n iolPowerOS: '',\n targetRefractionOD: '',\n targetRefractionOS: '',\n formula: 'SRK/T',\n method: 'optical_biometry',\n cornealTopoUploaded: false,\n specularMicroscopyDone: false,\n endothelialCount: '',\n};\n\nfunction str(x: unknown): string {\n return typeof x === 'string' ? x : '';\n}\n\nfunction parseValue(raw: unknown): BiometryIolWorkupValue {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return { ...EMPTY };\n const o = raw as Record<string, unknown>;\n const m = o.method;\n const method: BiometryMethod =\n m === 'ascan_immersion' || m === 'ascan_contact' || m === 'optical_biometry' ? m : 'optical_biometry';\n const formula = str(o.formula);\n return {\n ...EMPTY,\n axialLengthOD: str(o.axialLengthOD),\n axialLengthOS: str(o.axialLengthOS),\n k1k2AxisOD: str(o.k1k2AxisOD),\n k1k2AxisOS: str(o.k1k2AxisOS),\n anteriorChamberDepthOD: str(o.anteriorChamberDepthOD),\n anteriorChamberDepthOS: str(o.anteriorChamberDepthOS),\n iolPowerOD: str(o.iolPowerOD),\n iolPowerOS: str(o.iolPowerOS),\n targetRefractionOD: str(o.targetRefractionOD),\n targetRefractionOS: str(o.targetRefractionOS),\n formula: formula || 'SRK/T',\n method,\n cornealTopoUploaded: o.cornealTopoUploaded === true,\n specularMicroscopyDone: o.specularMicroscopyDone === true,\n endothelialCount: str(o.endothelialCount),\n };\n}\n\n/** Row padding — use the same `py-*` on paramCell, eyeTh, eye `td`s, and colspan `td`s (Tailwind must see literals; not from index.css). */\nconst paramCell =\n 'emr-biometry-param text-[11px] font-semibold leading-snug text-foreground sm:text-xs py-2';\nconst eyeTh =\n 'emr-biometry-eye text-center text-[11px] font-semibold sm:text-xs py-2';\n\nfunction Inp({\n value,\n onChange,\n disabled,\n placeholder,\n}: {\n value: string;\n onChange: (s: string) => void;\n disabled?: boolean;\n placeholder?: string;\n}) {\n return (\n <input\n value={value}\n disabled={disabled}\n placeholder={placeholder}\n onChange={(e) => onChange(e.target.value)}\n className=\"box-border w-full min-w-0 rounded border border-input bg-background px-2 py-1 text-[11px] sm:text-xs\"\n />\n );\n}\n\nconst DEFAULT_TITLE = 'Biometry & IOL Workup (Stage 7)';\n\nexport const BiometryIolWorkupWidget: React.FC<{ fieldId: string }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, error, disabled, touched } = useField(fieldId);\n const { state } = useForm();\n const showError = !!error && (touched || state.submitAttempted);\n\n if (!fieldDef || fieldDef.type !== 'biometry_iol_workup') {\n return null;\n }\n\n const def = fieldDef as BiometryIolWorkupFieldDef;\n const v = parseValue(value);\n const title =\n (def.meta?.cardTitle as string | undefined)?.trim() ||\n (def.label?.trim() ? def.label : DEFAULT_TITLE);\n\n const patch = (p: Partial<BiometryIolWorkupValue>) => setValue({ ...v, ...p });\n\n return (\n <div\n id={`biometry-iol-${fieldId}`}\n className=\"w-full min-w-0 max-w-full self-stretch rounded-lg border border-border bg-card p-3 text-card-foreground shadow-sm\"\n >\n <h3 className=\"mb-2.5 text-sm font-semibold leading-tight text-foreground\">{title}</h3>\n\n <div className=\"w-full min-w-0 overflow-x-auto\">\n <table className=\"emr-table emr-table--biometry min-w-full\">\n <colgroup>\n <col style={{ width: '32%' }} />\n <col style={{ width: '34%' }} />\n <col style={{ width: '34%' }} />\n </colgroup>\n <thead>\n <tr>\n <th scope=\"col\" className={paramCell}>\n Parameter\n </th>\n <th scope=\"col\" className={eyeTh}>\n Right Eye\n </th>\n <th scope=\"col\" className={eyeTh}>\n Left Eye\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className={paramCell}>Axial Length (mm)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.axialLengthOD}\n disabled={disabled}\n placeholder=\"e.g. 23.45\"\n onChange={(s) => patch({ axialLengthOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.axialLengthOS}\n disabled={disabled}\n placeholder=\"e.g. 23.45\"\n onChange={(s) => patch({ axialLengthOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>K1 / K2 / Axis</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.k1k2AxisOD}\n disabled={disabled}\n placeholder=\"44.0 / 44.5 / 90\"\n onChange={(s) => patch({ k1k2AxisOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.k1k2AxisOS}\n disabled={disabled}\n placeholder=\"44.0 / 44.5 / 90\"\n onChange={(s) => patch({ k1k2AxisOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={`${paramCell} whitespace-nowrap`}>Anterior Chamber Depth (mm)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.anteriorChamberDepthOD}\n disabled={disabled}\n onChange={(s) => patch({ anteriorChamberDepthOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.anteriorChamberDepthOS}\n disabled={disabled}\n onChange={(s) => patch({ anteriorChamberDepthOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>IOL Power (D)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp value={v.iolPowerOD} disabled={disabled} onChange={(s) => patch({ iolPowerOD: s })} />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp value={v.iolPowerOS} disabled={disabled} onChange={(s) => patch({ iolPowerOS: s })} />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>Target Refraction (D)</td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.targetRefractionOD}\n disabled={disabled}\n placeholder=\"e.g. -0.25\"\n onChange={(s) => patch({ targetRefractionOD: s })}\n />\n </td>\n <td className=\"emr-biometry-eye min-w-0 px-2 py-2\">\n <Inp\n value={v.targetRefractionOS}\n disabled={disabled}\n placeholder=\"e.g. -0.25\"\n onChange={(s) => patch({ targetRefractionOS: s })}\n />\n </td>\n </tr>\n <tr>\n <td className={paramCell}>Formula</td>\n <td className=\"min-w-0 px-2 py-2 align-middle\" colSpan={2}>\n <select\n value={v.formula}\n disabled={disabled}\n onChange={(e) => patch({ formula: e.target.value })}\n className=\"box-border w-full min-w-0 rounded border border-input bg-background px-2 py-1 text-[11px] sm:text-xs\"\n >\n {FORMULA_OPTIONS.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n </td>\n </tr>\n <tr>\n <td className={`${paramCell} align-top`}>Method</td>\n <td className=\"min-w-0 px-2 py-2 align-middle\" colSpan={2}>\n <div\n role=\"radiogroup\"\n aria-label=\"Biometry method\"\n className=\"flex w-full flex-wrap items-center justify-center gap-x-3 gap-y-2 text-[11px] sm:gap-x-4 sm:text-xs\"\n >\n {METHODS.map(({ value: mv, label }) => (\n <label key={mv} className=\"flex min-w-0 shrink-0 cursor-pointer items-center gap-1.5\">\n <input\n type=\"radio\"\n name={`${fieldId}-biom-method`}\n value={mv}\n checked={v.method === mv}\n disabled={disabled}\n onChange={() => patch({ method: mv })}\n className=\"shrink-0\"\n />\n <span className=\"min-w-0 whitespace-nowrap leading-tight\">{label}</span>\n </label>\n ))}\n </div>\n </td>\n </tr>\n <tr>\n <td className={`${paramCell} align-top text-muted-foreground`}>Optional workup</td>\n <td className=\"min-w-0 px-2 py-2 align-middle\" colSpan={2}>\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap items-center justify-center gap-x-4 gap-y-2 sm:justify-between\">\n <label className=\"inline-flex min-w-0 cursor-pointer items-center gap-1.5 text-[11px] leading-snug sm:text-xs\">\n <input\n type=\"checkbox\"\n className=\"shrink-0\"\n checked={v.cornealTopoUploaded}\n disabled={disabled}\n onChange={(e) => patch({ cornealTopoUploaded: e.target.checked })}\n />\n <span>Corneal topography uploaded</span>\n </label>\n <label className=\"inline-flex min-w-0 cursor-pointer items-center gap-1.5 text-[11px] leading-snug sm:text-xs\">\n <input\n type=\"checkbox\"\n className=\"shrink-0\"\n checked={v.specularMicroscopyDone}\n disabled={disabled}\n onChange={(e) => patch({ specularMicroscopyDone: e.target.checked })}\n />\n <span>Specular microscopy done</span>\n </label>\n </div>\n <div className=\"flex flex-wrap items-center justify-end gap-2 text-[11px] sm:text-xs\">\n <span className=\"shrink-0 text-muted-foreground\">Endothelial count:</span>\n <input\n value={v.endothelialCount}\n disabled={disabled}\n placeholder=\"cells/mm²\"\n onChange={(e) => patch({ endothelialCount: e.target.value })}\n className=\"box-border w-[5.5rem] min-w-0 shrink-0 rounded border border-input bg-background px-2 py-1 text-[11px] sm:text-xs\"\n />\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n {def.description && <p className=\"mt-2 text-xs text-muted-foreground\">{def.description}</p>}\n\n {showError && <p className=\"mt-2 text-xs text-red-500\">{error}</p>}\n </div>\n );\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useForm } from './chunk-
|
|
2
|
-
import { useField } from './chunk-
|
|
1
|
+
import { useForm } from './chunk-7L2JOWGA.mjs';
|
|
2
|
+
import { useField } from './chunk-ZTT5XJR7.mjs';
|
|
3
3
|
import 'react';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -294,5 +294,5 @@ var BiometryIolWorkupWidget = ({ fieldId }) => {
|
|
|
294
294
|
};
|
|
295
295
|
|
|
296
296
|
export { BiometryIolWorkupWidget };
|
|
297
|
-
//# sourceMappingURL=BiometryIolWorkupWidget-
|
|
298
|
-
//# sourceMappingURL=BiometryIolWorkupWidget-
|
|
297
|
+
//# sourceMappingURL=BiometryIolWorkupWidget-NL2M7ZAA.mjs.map
|
|
298
|
+
//# sourceMappingURL=BiometryIolWorkupWidget-NL2M7ZAA.mjs.map
|