formanitor 0.2.1 → 0.2.2
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-RY62UCPM.cjs → AddInvestigationWidget-7FLINCTT.cjs} +7 -7
- package/dist/{AddInvestigationWidget-RY62UCPM.cjs.map → AddInvestigationWidget-7FLINCTT.cjs.map} +1 -1
- package/dist/{AddInvestigationWidget-7UGZQYI5.mjs → AddInvestigationWidget-FABXZDEZ.mjs} +3 -3
- package/dist/{AddInvestigationWidget-7UGZQYI5.mjs.map → AddInvestigationWidget-FABXZDEZ.mjs.map} +1 -1
- package/dist/{AddMedicationWidget-WPI32WAP.cjs → AddMedicationWidget-45T4XVEL.cjs} +6 -6
- package/dist/{AddMedicationWidget-WPI32WAP.cjs.map → AddMedicationWidget-45T4XVEL.cjs.map} +1 -1
- package/dist/{AddMedicationWidget-UG26VMUX.mjs → AddMedicationWidget-B5RXRYBK.mjs} +3 -3
- package/dist/{AddMedicationWidget-UG26VMUX.mjs.map → AddMedicationWidget-B5RXRYBK.mjs.map} +1 -1
- package/dist/{AddProcedureWidget-SQJUKKMK.mjs → AddProcedureWidget-F74WGSFX.mjs} +3 -3
- package/dist/{AddProcedureWidget-SQJUKKMK.mjs.map → AddProcedureWidget-F74WGSFX.mjs.map} +1 -1
- package/dist/{AddProcedureWidget-SF6MTRBV.cjs → AddProcedureWidget-HK7UNRXH.cjs} +6 -6
- package/dist/{AddProcedureWidget-SF6MTRBV.cjs.map → AddProcedureWidget-HK7UNRXH.cjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-NL2M7ZAA.mjs → BiometryIolWorkupWidget-5RZP34FF.mjs} +4 -4
- package/dist/{BiometryIolWorkupWidget-NL2M7ZAA.mjs.map → BiometryIolWorkupWidget-5RZP34FF.mjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-I5AJOYB2.cjs → BiometryIolWorkupWidget-FWO3IWTF.cjs} +6 -6
- package/dist/{BiometryIolWorkupWidget-I5AJOYB2.cjs.map → BiometryIolWorkupWidget-FWO3IWTF.cjs.map} +1 -1
- package/dist/{DateTimeWidget-LFBB6HOP.mjs → DateTimeWidget-3AUBZYYK.mjs} +4 -4
- package/dist/{DateTimeWidget-LFBB6HOP.mjs.map → DateTimeWidget-3AUBZYYK.mjs.map} +1 -1
- package/dist/{DateTimeWidget-DIDVF2EB.cjs → DateTimeWidget-OS7ER5F6.cjs} +6 -6
- package/dist/{DateTimeWidget-DIDVF2EB.cjs.map → DateTimeWidget-OS7ER5F6.cjs.map} +1 -1
- package/dist/{DateWidget-4ND5TKP2.mjs → DateWidget-KCTE6N5G.mjs} +4 -4
- package/dist/{DateWidget-4ND5TKP2.mjs.map → DateWidget-KCTE6N5G.mjs.map} +1 -1
- package/dist/{DateWidget-BCVR5GDK.cjs → DateWidget-UNLX544Z.cjs} +6 -6
- package/dist/{DateWidget-BCVR5GDK.cjs.map → DateWidget-UNLX544Z.cjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-MAOXCXEZ.mjs → DiagnosisTextareaWidget-6UCYCCSB.mjs} +4 -4
- package/dist/{DiagnosisTextareaWidget-MAOXCXEZ.mjs.map → DiagnosisTextareaWidget-6UCYCCSB.mjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-E7OQRUMX.cjs → DiagnosisTextareaWidget-XJ47OZYH.cjs} +7 -7
- package/dist/{DiagnosisTextareaWidget-E7OQRUMX.cjs.map → DiagnosisTextareaWidget-XJ47OZYH.cjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-LCY2SA2I.mjs → DifferentialDiagnosisWidget-IZEZVW5F.mjs} +3 -3
- package/dist/{DifferentialDiagnosisWidget-LCY2SA2I.mjs.map → DifferentialDiagnosisWidget-IZEZVW5F.mjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-ANALLNKL.cjs → DifferentialDiagnosisWidget-XESNHNQQ.cjs} +4 -4
- package/dist/{DifferentialDiagnosisWidget-ANALLNKL.cjs.map → DifferentialDiagnosisWidget-XESNHNQQ.cjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-GYT35W7J.mjs → DischargeMedicationOrdersWidget-KA3HANHE.mjs} +4 -4
- package/dist/{DischargeMedicationOrdersWidget-GYT35W7J.mjs.map → DischargeMedicationOrdersWidget-KA3HANHE.mjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-ILWNZ7VM.cjs → DischargeMedicationOrdersWidget-WRJRYL6F.cjs} +7 -7
- package/dist/{DischargeMedicationOrdersWidget-ILWNZ7VM.cjs.map → DischargeMedicationOrdersWidget-WRJRYL6F.cjs.map} +1 -1
- package/dist/{EditableTable-VCUNJZEX.cjs → EditableTable-VQ72UEFF.cjs} +4 -4
- package/dist/{EditableTable-VCUNJZEX.cjs.map → EditableTable-VQ72UEFF.cjs.map} +1 -1
- package/dist/{EditableTable-TGCVUBLO.mjs → EditableTable-XFCPKSUY.mjs} +3 -3
- package/dist/{EditableTable-TGCVUBLO.mjs.map → EditableTable-XFCPKSUY.mjs.map} +1 -1
- package/dist/{FollowupWidget-F6FRZO4T.mjs → FollowupWidget-BFZ6P2JE.mjs} +3 -3
- package/dist/{FollowupWidget-F6FRZO4T.mjs.map → FollowupWidget-BFZ6P2JE.mjs.map} +1 -1
- package/dist/{FollowupWidget-NBTOV2ML.cjs → FollowupWidget-MAYTHM2E.cjs} +4 -4
- package/dist/{FollowupWidget-NBTOV2ML.cjs.map → FollowupWidget-MAYTHM2E.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-5V5SNLTF.cjs → FunctionalImpairmentScoreWidget-FCA4UKQA.cjs} +6 -6
- package/dist/{FunctionalImpairmentScoreWidget-5V5SNLTF.cjs.map → FunctionalImpairmentScoreWidget-FCA4UKQA.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-QKIZE7KT.mjs → FunctionalImpairmentScoreWidget-TKS6KE7K.mjs} +4 -4
- package/dist/{FunctionalImpairmentScoreWidget-QKIZE7KT.mjs.map → FunctionalImpairmentScoreWidget-TKS6KE7K.mjs.map} +1 -1
- package/dist/{GsExaminationWidget-J4VABGY6.mjs → GsExaminationWidget-ESIEZCP3.mjs} +4 -4
- package/dist/{GsExaminationWidget-J4VABGY6.mjs.map → GsExaminationWidget-ESIEZCP3.mjs.map} +1 -1
- package/dist/{GsExaminationWidget-57SL4BCI.cjs → GsExaminationWidget-KKE5I5GX.cjs} +10 -10
- package/dist/{GsExaminationWidget-57SL4BCI.cjs.map → GsExaminationWidget-KKE5I5GX.cjs.map} +1 -1
- package/dist/{GsGradingWidget-3WTLIP33.mjs → GsGradingWidget-HC4MJ4KJ.mjs} +4 -4
- package/dist/{GsGradingWidget-3WTLIP33.mjs.map → GsGradingWidget-HC4MJ4KJ.mjs.map} +1 -1
- package/dist/{GsGradingWidget-CIXE36HF.cjs → GsGradingWidget-NGCQQVYA.cjs} +12 -12
- package/dist/{GsGradingWidget-CIXE36HF.cjs.map → GsGradingWidget-NGCQQVYA.cjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-IOGZ6GNS.mjs → GsSmartHistoryWidget-7HYGDU4O.mjs} +4 -4
- package/dist/{GsSmartHistoryWidget-IOGZ6GNS.mjs.map → GsSmartHistoryWidget-7HYGDU4O.mjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-6Q2IIGDG.cjs → GsSmartHistoryWidget-AAB427Q2.cjs} +12 -12
- package/dist/{GsSmartHistoryWidget-6Q2IIGDG.cjs.map → GsSmartHistoryWidget-AAB427Q2.cjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-HBK7PBPR.cjs → HiddenVitalsWidget-5GFBDDPT.cjs} +6 -6
- package/dist/{HiddenVitalsWidget-HBK7PBPR.cjs.map → HiddenVitalsWidget-5GFBDDPT.cjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-JH3NRZLM.mjs → HiddenVitalsWidget-CIE3KERT.mjs} +4 -4
- package/dist/{HiddenVitalsWidget-JH3NRZLM.mjs.map → HiddenVitalsWidget-CIE3KERT.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-7WMULFS2.mjs → LensAssessmentWidget-B4OMHTOE.mjs} +4 -4
- package/dist/{LensAssessmentWidget-7WMULFS2.mjs.map → LensAssessmentWidget-B4OMHTOE.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-GSOOD7BX.cjs → LensAssessmentWidget-SIKJVVAE.cjs} +6 -6
- package/dist/{LensAssessmentWidget-GSOOD7BX.cjs.map → LensAssessmentWidget-SIKJVVAE.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-3E6GFOR6.cjs → MarMedicationOrdersWidget-767F65K6.cjs} +7 -7
- package/dist/{MarMedicationOrdersWidget-3E6GFOR6.cjs.map → MarMedicationOrdersWidget-767F65K6.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-QZUVSEB5.mjs → MarMedicationOrdersWidget-LG3WOXN7.mjs} +4 -4
- package/dist/{MarMedicationOrdersWidget-QZUVSEB5.mjs.map → MarMedicationOrdersWidget-LG3WOXN7.mjs.map} +1 -1
- package/dist/{OBGExaminationWidget-POVLALMA.mjs → OBGExaminationWidget-HQKTHSOZ.mjs} +4 -4
- package/dist/{OBGExaminationWidget-POVLALMA.mjs.map → OBGExaminationWidget-HQKTHSOZ.mjs.map} +1 -1
- package/dist/{OBGExaminationWidget-F2ZNSP2M.cjs → OBGExaminationWidget-MRTGWLXJ.cjs} +11 -11
- package/dist/{OBGExaminationWidget-F2ZNSP2M.cjs.map → OBGExaminationWidget-MRTGWLXJ.cjs.map} +1 -1
- package/dist/{OBGPathwayWidget-CGT7Q4T2.mjs → OBGPathwayWidget-X67XKRIH.mjs} +5 -5
- package/dist/{OBGPathwayWidget-CGT7Q4T2.mjs.map → OBGPathwayWidget-X67XKRIH.mjs.map} +1 -1
- package/dist/{OBGPathwayWidget-WCIQENMO.cjs → OBGPathwayWidget-XGN3HEWS.cjs} +17 -17
- package/dist/{OBGPathwayWidget-WCIQENMO.cjs.map → OBGPathwayWidget-XGN3HEWS.cjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-XU6R7IPP.cjs → ObstetricHistoryWidget-RP7NY4PV.cjs} +12 -12
- package/dist/{ObstetricHistoryWidget-XU6R7IPP.cjs.map → ObstetricHistoryWidget-RP7NY4PV.cjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-EGVLL4X2.mjs → ObstetricHistoryWidget-Z4VAXH3E.mjs} +4 -4
- package/dist/{ObstetricHistoryWidget-EGVLL4X2.mjs.map → ObstetricHistoryWidget-Z4VAXH3E.mjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-G5RCC2QZ.mjs → OphthalDiagnosisWidget-MZYBQTFV.mjs} +3 -3
- package/dist/{OphthalDiagnosisWidget-G5RCC2QZ.mjs.map → OphthalDiagnosisWidget-MZYBQTFV.mjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-OQPTHJ7E.cjs → OphthalDiagnosisWidget-UXXYGKD5.cjs} +4 -4
- package/dist/{OphthalDiagnosisWidget-OQPTHJ7E.cjs.map → OphthalDiagnosisWidget-UXXYGKD5.cjs.map} +1 -1
- package/dist/{OphthalmologyWidget-RG2AI6WA.mjs → OphthalmologyWidget-27ZN2E3F.mjs} +3 -3
- package/dist/{OphthalmologyWidget-RG2AI6WA.mjs.map → OphthalmologyWidget-27ZN2E3F.mjs.map} +1 -1
- package/dist/{OphthalmologyWidget-I3BKWOI2.cjs → OphthalmologyWidget-WFSFIHT4.cjs} +4 -4
- package/dist/{OphthalmologyWidget-I3BKWOI2.cjs.map → OphthalmologyWidget-WFSFIHT4.cjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-M4KKU5RC.cjs → OrthopedicExamWidget-ULZTDFXJ.cjs} +6 -6
- package/dist/{OrthopedicExamWidget-M4KKU5RC.cjs.map → OrthopedicExamWidget-ULZTDFXJ.cjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-BBZP6NVT.mjs → OrthopedicExamWidget-WM55M3Y4.mjs} +4 -4
- package/dist/{OrthopedicExamWidget-BBZP6NVT.mjs.map → OrthopedicExamWidget-WM55M3Y4.mjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-E576R6QB.mjs → PainScaleFlagsWidget-5KN7T4JK.mjs} +4 -4
- package/dist/{PainScaleFlagsWidget-E576R6QB.mjs.map → PainScaleFlagsWidget-5KN7T4JK.mjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-QHGESXNE.cjs → PainScaleFlagsWidget-IFA3RCEL.cjs} +8 -8
- package/dist/{PainScaleFlagsWidget-QHGESXNE.cjs.map → PainScaleFlagsWidget-IFA3RCEL.cjs.map} +1 -1
- package/dist/{ReferralWidget-J2PWYFDT.cjs → ReferralWidget-27VGZCOQ.cjs} +7 -7
- package/dist/{ReferralWidget-J2PWYFDT.cjs.map → ReferralWidget-27VGZCOQ.cjs.map} +1 -1
- package/dist/{ReferralWidget-UPYWEO5R.mjs → ReferralWidget-GU3JYED2.mjs} +4 -4
- package/dist/{ReferralWidget-UPYWEO5R.mjs.map → ReferralWidget-GU3JYED2.mjs.map} +1 -1
- package/dist/{RichTextWidget-CRQHNVJR.cjs → RichTextWidget-2KLV65QP.cjs} +7 -7
- package/dist/{RichTextWidget-BBCNJPMH.mjs.map → RichTextWidget-2KLV65QP.cjs.map} +1 -1
- package/dist/RichTextWidget-ZBX554ZJ.mjs +11 -0
- package/dist/{RichTextWidget-CRQHNVJR.cjs.map → RichTextWidget-ZBX554ZJ.mjs.map} +1 -1
- package/dist/SmartTextarea-LQDXFCYT.mjs +10 -0
- package/dist/{SmartTextarea-DKWV4R6H.cjs.map → SmartTextarea-LQDXFCYT.mjs.map} +1 -1
- package/dist/SmartTextarea-WITNRNDU.cjs +19 -0
- package/dist/{SmartTextarea-ZTQIW6O2.mjs.map → SmartTextarea-WITNRNDU.cjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-WCTPWW2E.cjs → SuggestionTextareaWidget-DY6M5JPO.cjs} +18 -18
- package/dist/{SuggestionTextareaWidget-WCTPWW2E.cjs.map → SuggestionTextareaWidget-DY6M5JPO.cjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-22NR3JWM.mjs → SuggestionTextareaWidget-GQTWCFBG.mjs} +7 -7
- package/dist/{SuggestionTextareaWidget-22NR3JWM.mjs.map → SuggestionTextareaWidget-GQTWCFBG.mjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-Q5FTWB3M.cjs → SurgicalRiskFlagsWidget-OJKCZIWJ.cjs} +6 -6
- package/dist/{SurgicalRiskFlagsWidget-Q5FTWB3M.cjs.map → SurgicalRiskFlagsWidget-OJKCZIWJ.cjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-WCAHZKKG.mjs → SurgicalRiskFlagsWidget-ZTQJ6CDF.mjs} +4 -4
- package/dist/{SurgicalRiskFlagsWidget-WCAHZKKG.mjs.map → SurgicalRiskFlagsWidget-ZTQJ6CDF.mjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-JYUGZ5CG.cjs → UrologyExaminationWidget-GQLMV4FB.cjs} +12 -12
- package/dist/{UrologyExaminationWidget-JYUGZ5CG.cjs.map → UrologyExaminationWidget-GQLMV4FB.cjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-QDTD3FJX.mjs → UrologyExaminationWidget-GRBL2SDG.mjs} +4 -4
- package/dist/{UrologyExaminationWidget-QDTD3FJX.mjs.map → UrologyExaminationWidget-GRBL2SDG.mjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-TXZQNGP4.cjs → UrologyPathwayWidget-D6EWSOGW.cjs} +7 -7
- package/dist/{UrologyPathwayWidget-TXZQNGP4.cjs.map → UrologyPathwayWidget-D6EWSOGW.cjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-QTFKUIM7.mjs → UrologyPathwayWidget-PEO5BVQX.mjs} +4 -4
- package/dist/{UrologyPathwayWidget-QTFKUIM7.mjs.map → UrologyPathwayWidget-PEO5BVQX.mjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-PBU4QXQJ.mjs → UrologySmartHistoryWidget-BDKRFBYN.mjs} +4 -4
- package/dist/{UrologySmartHistoryWidget-PBU4QXQJ.mjs.map → UrologySmartHistoryWidget-BDKRFBYN.mjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-53NATEO3.cjs → UrologySmartHistoryWidget-P3KTQE7L.cjs} +15 -15
- package/dist/{UrologySmartHistoryWidget-53NATEO3.cjs.map → UrologySmartHistoryWidget-P3KTQE7L.cjs.map} +1 -1
- package/dist/{VitalsWidget-BRFUKGNO.mjs → VitalsWidget-63HTXK2M.mjs} +3 -3
- package/dist/{VitalsWidget-BRFUKGNO.mjs.map → VitalsWidget-63HTXK2M.mjs.map} +1 -1
- package/dist/{VitalsWidget-PDCYXNBM.cjs → VitalsWidget-MS3OOZSW.cjs} +5 -5
- package/dist/{VitalsWidget-PDCYXNBM.cjs.map → VitalsWidget-MS3OOZSW.cjs.map} +1 -1
- package/dist/{chunk-ZTT5XJR7.mjs → chunk-2BGJZ44Q.mjs} +3 -2
- package/dist/chunk-2BGJZ44Q.mjs.map +1 -0
- package/dist/{chunk-ULMK3TUI.mjs → chunk-4HDMR2LX.mjs} +3 -3
- package/dist/{chunk-ULMK3TUI.mjs.map → chunk-4HDMR2LX.mjs.map} +1 -1
- package/dist/{chunk-6YX37XBM.cjs → chunk-7DISRJAB.cjs} +4 -4
- package/dist/{chunk-6YX37XBM.cjs.map → chunk-7DISRJAB.cjs.map} +1 -1
- package/dist/{chunk-VZT5YNCD.mjs → chunk-MBZRRYJB.mjs} +4 -4
- package/dist/{chunk-VZT5YNCD.mjs.map → chunk-MBZRRYJB.mjs.map} +1 -1
- package/dist/{chunk-I7TJVWYV.cjs → chunk-ML47UEDU.cjs} +6 -6
- package/dist/{chunk-I7TJVWYV.cjs.map → chunk-ML47UEDU.cjs.map} +1 -1
- package/dist/{chunk-5I2RC47Y.mjs → chunk-Q3K646K4.mjs} +3 -3
- package/dist/{chunk-5I2RC47Y.mjs.map → chunk-Q3K646K4.mjs.map} +1 -1
- package/dist/{chunk-GPU5P3FB.cjs → chunk-RZK44P3C.cjs} +7 -7
- package/dist/{chunk-GPU5P3FB.cjs.map → chunk-RZK44P3C.cjs.map} +1 -1
- package/dist/{chunk-L4CIIT4U.cjs → chunk-T2IKWRV2.cjs} +9 -9
- package/dist/{chunk-L4CIIT4U.cjs.map → chunk-T2IKWRV2.cjs.map} +1 -1
- package/dist/{chunk-7L2JOWGA.mjs → chunk-T3UHPMFX.mjs} +3 -3
- package/dist/{chunk-7L2JOWGA.mjs.map → chunk-T3UHPMFX.mjs.map} +1 -1
- package/dist/{chunk-SHQHDSA4.cjs → chunk-TB33A4PD.cjs} +3 -2
- package/dist/chunk-TB33A4PD.cjs.map +1 -0
- package/dist/{chunk-MQ2JV7HL.cjs → chunk-TVFUWRTE.cjs} +11 -11
- package/dist/{chunk-MQ2JV7HL.cjs.map → chunk-TVFUWRTE.cjs.map} +1 -1
- package/dist/{chunk-BOBX45NY.cjs → chunk-XIUXYHGG.cjs} +5 -5
- package/dist/{chunk-BOBX45NY.cjs.map → chunk-XIUXYHGG.cjs.map} +1 -1
- package/dist/{chunk-YHNI5NIX.mjs → chunk-XLCTFYFD.mjs} +5 -5
- package/dist/{chunk-YHNI5NIX.mjs.map → chunk-XLCTFYFD.mjs.map} +1 -1
- package/dist/{chunk-3KRDT7TX.mjs → chunk-XN2QLBLT.mjs} +5 -5
- package/dist/{chunk-3KRDT7TX.mjs.map → chunk-XN2QLBLT.mjs.map} +1 -1
- package/dist/index.cjs +109 -107
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.mjs +42 -40
- package/dist/index.mjs.map +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.mjs +3 -3
- package/package.json +1 -1
- package/dist/RichTextWidget-BBCNJPMH.mjs +0 -11
- package/dist/SmartTextarea-DKWV4R6H.cjs +0 -19
- package/dist/SmartTextarea-ZTQIW6O2.mjs +0 -10
- package/dist/chunk-SHQHDSA4.cjs.map +0 -1
- package/dist/chunk-ZTT5XJR7.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/FollowupWidget.tsx"],"names":["days","CalendarIcon","Calendar"],"mappings":";;;;;;;;;;;;AAmBA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,cAAA,EAAe;AAAA,EAC9C,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA;AAC9B,CAAA;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,EAC/B,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ;AAAA,EACjC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA;AAC5B,CAAA;AAEA,IAAM,cAAA,GAAiB,EAAA;AAGvB,SAAS,cAAA,CAAe,UAAkB,IAAA,EAA2C;AACnF,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,EAAA,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACzB,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,IAAA,KAAS,MAAA,EAAQ,MAAA,GAAS,OAAA,CAAQ,OAAO,QAAQ,CAAA;AAAA,OAAA,IAC5C,IAAA,KAAS,OAAA,EAAS,MAAA,GAAS,QAAA,CAAS,OAAO,QAAQ,CAAA;AAAA,OACvD,MAAA,GAAS,OAAA,CAAQ,KAAA,EAAO,QAAA,GAAW,cAAc,CAAA;AACtD,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,wBAAA,CAAyB,MAAA,EAAQ,KAAK,CAAC,CAAA;AAC5D;AAEA,SAAS,kBAAA,CAAmB,SAAiB,IAAA,EAA2C;AACtF,EAAA,IAAI,SAAS,MAAA,EAAQ,OAAO,IAAA,CAAK,GAAA,CAAI,GAAG,OAAO,CAAA;AAC/C,EAAA,IAAI,SAAS,OAAA,EAAS,OAAO,KAAK,KAAA,CAAM,OAAA,GAAU,CAAC,CAAA,IAAK,CAAA;AACxD,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,cAAc,CAAA,IAAK,CAAA;AACjD;AAGA,SAAS,WAAW,IAAA,EAAoB;AACtC,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,EAAA,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACzB,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,IAAI,CAAA;AACvB,EAAA,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACrB,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,wBAAA,CAAyB,CAAA,EAAG,KAAK,CAAC,CAAA;AACvD;AAGA,SAAS,WAAW,IAAA,EAAoB;AACtC,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,EAAA,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACzB,EAAA,OAAO,OAAA,CAAQ,OAAO,IAAI,CAAA;AAC5B;AAEA,SAAS,kBAAkB,KAAA,EAAuC;AAChE,EAAA,IAAI,UAAU,KAAA,IAAS,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,QAAW,OAAO,KAAA;AACrE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,MAAM,CAAA,GAAI,KAAA;AACV,EAAA,IAAI,CAAA,CAAE,YAAA,KAAiB,UAAA,EAAY,OAAO,KAAA;AAE1C,EAAA,IAAI,OAAO,CAAA,CAAE,KAAA,KAAU,QAAA,IAAY,CAAA,CAAE,SAAS,MAAA,EAAQ;AACpD,IAAA,OAAO,EAAE,YAAA,EAAc,UAAA,EAAY,OAAO,CAAA,CAAE,KAAA,EAAO,MAAM,MAAA,EAAO;AAAA,EAClE;AAEA,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,EAAA,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACzB,EAAA,IAAI,EAAE,IAAA,KAAS,MAAA,IAAU,OAAO,CAAA,CAAE,SAAS,QAAA,EAAU;AACnD,IAAA,MAAM,CAAA,GAAI,cAAA,CAAe,CAAA,CAAE,IAAI,CAAA;AAC/B,IAAA,IAAI,CAAA,EAAG;AACL,MAAA,MAAMA,KAAAA,GAAO,WAAW,CAAC,CAAA;AACzB,MAAA,OAAO,EAAE,cAAc,UAAA,EAAY,KAAA,EAAO,OAAOA,KAAI,CAAA,EAAG,MAAM,MAAA,EAAO;AAAA,IACvE;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,EAAE,KAAA,IAAS,IAAA,GAAO,OAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAC,CAAA,GAAI,CAAA;AACxD,EAAA,MAAM,CAAA,GAAK,EAAE,IAAA,KAAS,OAAA,IAAW,EAAE,IAAA,KAAS,QAAA,GAAW,EAAE,IAAA,GAAO,MAAA;AAChE,EAAA,MAAM,IAAA,GAAO,eAAe,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,GAAI,CAAA,GAAI,KAAK,CAAC,CAAA;AAC1D,EAAA,OAAO,EAAE,cAAc,UAAA,EAAY,KAAA,EAAO,OAAO,IAAI,CAAA,EAAG,MAAM,MAAA,EAAO;AACvE;AAEA,SAAS,cAAA,GAAuB;AAC9B,EAAA,MAAM,CAAA,uBAAQ,IAAA,EAAK;AACnB,EAAA,CAAA,CAAE,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAQ,GAAI,CAAC,CAAA;AACzB,EAAA,OAAO,CAAA;AACT;AAEA,SAAS,eAAe,UAAA,EAAoD;AAC1E,EAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AACxB,EAAA,IAAI;AACF,IAAA,OAAO,SAAS,UAAU,CAAA;AAAA,EAC5B,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AAClC,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,KAAA,CAAM,CAAC,GAAG,EAAE,CAAA;AAC/B,MAAA,MAAM,IAAI,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,CAAA;AACnC,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,KAAA,CAAM,CAAC,GAAG,EAAE,CAAA;AAC/B,MAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,KAAK,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,IAAK,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAG;AAC5D,QAAA,OAAO,IAAI,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAAA,MACzB;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEO,IAAM,cAAA,GAAoE,CAAC,EAAE,OAAA,EAAQ,KAAM;AAChG,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,OAAO,QAAA,EAAU,OAAA,EAAQ,GAAI,QAAA,CAAS,OAAO,CAAA;AAC5F,EAAA,MAAM,QAAA,GAAW,kBAAkB,KAAK,CAAA;AACxC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AAEtD,EAAA,MAAM,mBAAA,GAAsB,QAAA,GAAW,QAAA,CAAS,YAAA,GAAe,aAAA;AAC/D,EAAA,MAAM,cAAc,QAAA,KAAa,KAAA;AACjC,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAA8B,UAAU,CAAA;AAC9E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAsC,MAAM,CAAA;AAClF,EAAA,MAAM,UAAU,WAAA,GAAc,QAAA,CAAS,SAAS,KAAA,EAAO,EAAE,KAAK,CAAA,GAAI,CAAA;AAClE,EAAA,MAAM,WAAA,GAAc,WAAA,GAAc,UAAA,CAAW,OAAO,CAAA,GAAI,IAAA;AACxD,EAAA,MAAM,YAAA,GAAe,WAAA;AACrB,EAAA,MAAM,eAAe,WAAA,GAAc,MAAA,CAAO,mBAAmB,OAAA,EAAS,WAAW,CAAC,CAAA,GAAI,GAAA;AACtF,EAAA,MAAM,WAAA,GAAc,WAAA;AAEpB,EAAA,MAAM,wBAAA,GAA2B,WAAA;AAAA,IAC/B,CAAC,OAAA,KAAwC;AACvC,MAAA,UAAA,EAAW;AACX,MAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,QAAA,QAAA,CAAS,KAAK,CAAA;AACd,QAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,QAAA;AAAA,MACF;AACA,MAAA,QAAA,CAAS;AAAA,QACP,YAAA,EAAc,UAAA;AAAA,QACd,KAAA,EAAO,WAAA,GAAc,QAAA,CAAS,KAAA,GAAQ,GAAA;AAAA,QACtC,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,UAAU;AAAA,GAC9C;AAEA,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,CAAC,OAAA,KAAiC;AACrE,IAAA,cAAA,CAAe,OAAO,CAAA;AACtB,IAAA,IAAI,OAAA,KAAY,MAAA,EAAQ,eAAA,CAAgB,KAAK,CAAA;AAAA,EAC/C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,QAAA,KAAqB;AACpB,MAAA,UAAA,EAAW;AACX,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACjC,MAAA,MAAM,GAAA,GAAM,WAAA,KAAgB,MAAA,GAAS,CAAA,GAAI,CAAA;AACzC,MAAA,MAAM,KAAA,GAAA,CAAS,OAAO,KAAA,CAAM,GAAG,IAAI,GAAA,GAAM,GAAA,KAAQ,OAAO,QAAA,KAAa,EAAA;AACrE,MAAA,IAAI,CAAC,KAAA,IAAS,QAAA,KAAa,EAAA,EAAI;AAC7B,QAAA,QAAA,CAAS,EAAE,YAAA,EAAc,UAAA,EAAY,KAAA,EAAO,OAAO,WAAA,KAAgB,MAAA,GAAS,CAAA,GAAI,cAAA,CAAe,GAAG,WAAW,CAAC,CAAA,EAAG,IAAA,EAAM,QAAQ,CAAA;AAC/H,QAAA;AAAA,MACF;AACA,MAAA,MAAM,IAAA,GAAO,cAAA,CAAe,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,GAAK,WAAA,KAAgB,MAAA,GAAS,CAAA,GAAI,CAAA,GAAK,GAAA,EAAK,WAAW,CAAA;AACnG,MAAA,QAAA,CAAS,EAAE,cAAc,UAAA,EAAY,KAAA,EAAO,OAAO,IAAI,CAAA,EAAG,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC1E,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,QAAA,EAAU,UAAU;AAAA,GACpC;AAEA,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACvB,CAAC,OAAA,KAAyC;AACxC,MAAA,IAAI,YAAY,WAAA,EAAa;AAC7B,MAAA,MAAM,CAAA,GAAI,kBAAA,CAAmB,OAAA,EAAS,WAAW,CAAA;AACjD,MAAA,cAAA,CAAe,OAAO,CAAA;AACtB,MAAA,IAAI,CAAC,WAAA,EAAa;AAClB,MAAA,UAAA,EAAW;AACX,MAAA,MAAM,OAAA,GAAU,cAAA,CAAe,CAAA,EAAG,OAAO,CAAA;AACzC,MAAA,QAAA,CAAS,EAAE,cAAc,UAAA,EAAY,KAAA,EAAO,OAAO,OAAO,CAAA,EAAG,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC7E,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,WAAA,EAAa,UAAU,UAAU;AAAA,GAC1D;AAEA,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACvB,CAAC,QAAA,KAA+B;AAC9B,MAAA,UAAA,EAAW;AACX,MAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,MAAM,IAAA,GAAO,WAAW,QAAQ,CAAA;AAChC,MAAA,QAAA,CAAS,EAAE,cAAc,UAAA,EAAY,KAAA,EAAO,OAAO,IAAI,CAAA,EAAG,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC1E,CAAA;AAAA,IACA,CAAC,UAAU,UAAU;AAAA,GACvB;AAEA,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,QAAA,EAAU,OAAO,IAAA;AAElC,EAAA,MAAM,OAAA,uBAAc,IAAA,EAAK;AACzB,EAAA,OAAA,CAAQ,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAC3B,EAAA,MAAM,YAAA,GAAe,eAAe,cAAA,EAAe;AAEnD,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,KAAA,IAAS,oBAAoB,CAAA,EAc/C,QAAA,kBAAA,IAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,eAAA,EACrB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,yCAAA,EACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,6CAAA,EAA8C,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBACxE,IAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,mBAAA;AAAA,UACP,aAAA,EAAe,CAAC,CAAA,KAAM,wBAAA,CAAyB,CAA+B,CAAA;AAAA,UAC9E,QAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,oGAAA,EACvB,QAAA,kBAAA,GAAA,CAAC,eAAW,CAAA,EACd,CAAA;AAAA,gCACC,aAAA,EAAA,EACE,QAAA,EAAA,qBAAA,CAAsB,IAAI,CAAC,GAAA,yBACzB,UAAA,EAAA,EAA2B,KAAA,EAAO,GAAA,CAAI,KAAA,EAAO,WAAU,SAAA,EACrD,QAAA,EAAA,GAAA,CAAI,SADU,GAAA,CAAI,KAErB,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AACF,KAAA,EACF,CAAA,EACF,CAAA;AAAA,IAEC,mBAAA,KAAwB,iCACvB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,2CAAA,EAA4C,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,wBACzE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,OAAA,EAAA,EAAM,WAAU,wCAAA,EACf,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,EAAM,iBAAiB,OAAO,CAAA,CAAA;AAAA,gBAC9B,KAAA,EAAM,UAAA;AAAA,gBACN,SAAS,YAAA,KAAiB,UAAA;AAAA,gBAC1B,QAAA,EAAU,MAAM,gBAAA,CAAiB,UAAU,CAAA;AAAA,gBAC3C,SAAA,EAAU,yCAAA;AAAA,gBACV;AAAA;AAAA,aACF;AAAA,4BACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA,UAAA,EAAQ;AAAA,WAAA,EAC1D,CAAA;AAAA,0BACA,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EACf,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,OAAA;AAAA,gBACL,IAAA,EAAM,iBAAiB,OAAO,CAAA,CAAA;AAAA,gBAC9B,KAAA,EAAM,MAAA;AAAA,gBACN,SAAS,YAAA,KAAiB,MAAA;AAAA,gBAC1B,QAAA,EAAU,MAAM,gBAAA,CAAiB,MAAM,CAAA;AAAA,gBACvC,SAAA,EAAU,yCAAA;AAAA,gBACV;AAAA;AAAA,aACF;AAAA,4BACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA,MAAA,EAAI;AAAA,WAAA,EACtD;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,MAEC,YAAA,KAAiB,UAAA,oBAChB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6CAAA,EAA8C,QAAA,EAAA,IAAA,EAAE,CAAA;AAAA,wBAChE,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,WAAA,KAAgB,MAAA,GAAS,CAAA,GAAI,CAAA;AAAA,YAClC,KAAA,EAAO,YAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,iBAAA,CAAkB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACjD,QAAA;AAAA,YACA,SAAA,EAAU,qHAAA;AAAA,YACV,WAAA,EAAY;AAAA;AAAA,SACd;AAAA,wBACA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,WAAA;AAAA,YACP,aAAA,EAAe,CAAC,CAAA,KAAM,gBAAA,CAAiB,CAAgC,CAAA;AAAA,YACvE,QAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,iBAAc,SAAA,EAAU,uBAAA,EACvB,8BAAC,WAAA,EAAA,EAAY,SAAA,EAAU,WAAS,CAAA,EAClC,CAAA;AAAA,kCACC,aAAA,EAAA,EACE,QAAA,EAAA,YAAA,CAAa,IAAI,CAAC,GAAA,yBAChB,UAAA,EAAA,EAA2B,KAAA,EAAO,GAAA,CAAI,KAAA,EAAO,WAAU,SAAA,EACrD,QAAA,EAAA,GAAA,CAAI,SADU,GAAA,CAAI,KAErB,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AACF,OAAA,EACF,CAAA;AAAA,MAGD,iBAAiB,MAAA,oBAChB,IAAA,CAAC,WAAQ,IAAA,EAAM,YAAA,EAAc,cAAc,eAAA,EACzC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,SAAA;AAAA,YACR,SAAA,EAAU,gDAAA;AAAA,YACV,QAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAACC,QAAA,EAAA,EAAa,WAAU,oCAAA,EAAqC,CAAA;AAAA,8BAC7D,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA,WAAA,IAAe,cACZ,MAAA,CAAO,WAAA,EAAa,aAAa,CAAA,GACjC,aAAA,EACN;AAAA;AAAA;AAAA,SACF,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,OAAM,OAAA,EAC3C,QAAA,kBAAA,GAAA;AAAA,UAACC,UAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,QAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,gBAAA;AAAA,YACV,QAAA,EAAU,CAAC,IAAA,KAAS,IAAA,GAAO,OAAA;AAAA,YAC3B,YAAA,EAAY;AAAA;AAAA,SACd,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBAGF,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,QAAA,sBAAA;AAAA,QACtB,GAAA;AAAA,QACpB,YAAA,KAAiB,UAAA,GACd,CAAA,GAAA,EAAM,YAAY,IAAI,WAAW,CAAA,CAAA,GACjC,WAAA,IAAe,WAAA,GACb,CAAA,GAAA,EAAM,MAAA,CAAO,WAAA,EAAa,aAAa,CAAC,CAAA,CAAA,GACxC;AAAA,OAAA,EACR;AAAA,KAAA,EACF,CAAA;AAAA,IAGD,KAAA,oBAAS,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4BAA4B,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAC3D,CAAA,EACF,CAAA;AAEJ","file":"FollowupWidget-F6FRZO4T.mjs","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { format, parseISO, differenceInCalendarDays, addDays, addWeeks } from 'date-fns';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { useField } from '../../react/useField';\nimport { Card, CardContent } from '../shadcn/card';\nimport { Label } from '../shadcn/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport { Calendar } from '../shadcn/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcn/popover';\nimport { Button } from '../shadcn/button';\nimport { cn } from '../../core/utils';\nimport type { FollowupValue } from '../../core/types';\n\nconst FOLLOWUP_TYPE_OPTIONS = [\n { value: 'no followup', label: 'No Follow-up' },\n { value: 'one time', label: 'One Time' },\n] as const;\n\nconst UNIT_OPTIONS = [\n { value: 'days', label: 'Days' },\n { value: 'weeks', label: 'Weeks' },\n { value: 'months', label: 'Months' },\n] as const;\n\nconst DAYS_PER_MONTH = 30;\n\n/** Convert duration (value + unit) to number of days from today. */\nfunction durationToDays(valueNum: number, unit: 'days' | 'weeks' | 'months'): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n let target: Date;\n if (unit === 'days') target = addDays(today, valueNum);\n else if (unit === 'weeks') target = addWeeks(today, valueNum);\n else target = addDays(today, valueNum * DAYS_PER_MONTH);\n return Math.max(0, differenceInCalendarDays(target, today));\n}\n\nfunction daysToDisplayCount(daysNum: number, unit: 'days' | 'weeks' | 'months'): number {\n if (unit === 'days') return Math.max(0, daysNum);\n if (unit === 'weeks') return Math.round(daysNum / 7) || 1;\n return Math.round(daysNum / DAYS_PER_MONTH) || 1;\n}\n\n/** Convert a future date to number of days from today. */\nfunction dateToDays(date: Date): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return Math.max(0, differenceInCalendarDays(d, today));\n}\n\n/** Days → date for display (today + days). */\nfunction daysToDate(days: number): Date {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return addDays(today, days);\n}\n\nfunction normalizeFollowup(value: unknown): false | FollowupValue {\n if (value === false || value === null || value === undefined) return false;\n if (typeof value !== 'object') return false;\n const o = value as Record<string, unknown>;\n if (o.followupType !== 'one time') return false;\n // New shape: { followupType, value, unit: 'days' }\n if (typeof o.value === 'string' && o.unit === 'days') {\n return { followupType: 'one time', value: o.value, unit: 'days' };\n }\n // Legacy: mode + date or mode + value/unit → convert to days\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n if (o.mode === 'date' && typeof o.date === 'string') {\n const d = parseLocalDate(o.date);\n if (d) {\n const days = dateToDays(d);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n }\n }\n const val = o.value != null ? Number(String(o.value)) : 7;\n const u = (o.unit === 'weeks' || o.unit === 'months' ? o.unit : 'days') as 'days' | 'weeks' | 'months';\n const days = durationToDays(Number.isNaN(val) ? 7 : val, u);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n}\n\nfunction getDefaultDate(): Date {\n const d = new Date();\n d.setDate(d.getDate() + 7);\n return d;\n}\n\nfunction parseLocalDate(dateString: string | null | undefined): Date | null {\n if (!dateString) return null;\n try {\n return parseISO(dateString);\n } catch {\n const parts = dateString.split('-');\n if (parts.length === 3) {\n const y = parseInt(parts[0], 10);\n const m = parseInt(parts[1], 10) - 1;\n const d = parseInt(parts[2], 10);\n if (!Number.isNaN(y) && !Number.isNaN(m) && !Number.isNaN(d)) {\n return new Date(y, m, d);\n }\n }\n return null;\n }\n}\n\nexport const FollowupWidget: React.FC<{ fieldId: string; showIcon?: boolean }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, disabled, visible } = useField(fieldId);\n const followup = normalizeFollowup(value);\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const currentFollowupType = followup ? followup.followupType : 'no followup';\n const hasFollowup = followup !== false;\n const [displayMode, setDisplayMode] = useState<'duration' | 'date'>('duration');\n const [displayUnit, setDisplayUnit] = useState<'days' | 'weeks' | 'months'>('days');\n const daysNum = hasFollowup ? parseInt(followup.value, 10) || 7 : 7;\n const currentDate = hasFollowup ? daysToDate(daysNum) : null;\n const followupMode = displayMode;\n const currentValue = hasFollowup ? String(daysToDisplayCount(daysNum, displayUnit)) : '7';\n const currentUnit = displayUnit;\n\n const handleFollowupTypeChange = useCallback(\n (newType: 'no followup' | 'one time') => {\n setTouched();\n if (newType === 'no followup') {\n setValue(false);\n setCalendarOpen(false);\n return;\n }\n setValue({\n followupType: 'one time',\n value: hasFollowup ? followup.value : '7',\n unit: 'days',\n });\n },\n [followup, hasFollowup, setValue, setTouched]\n );\n\n const handleModeChange = useCallback((newMode: 'duration' | 'date') => {\n setDisplayMode(newMode);\n if (newMode === 'date') setCalendarOpen(false);\n }, []);\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n setTouched();\n const num = parseInt(newValue, 10);\n const min = displayUnit === 'days' ? 0 : 1;\n const valid = (Number.isNaN(num) ? min : num) >= min || newValue === '';\n if (!valid && newValue !== '') {\n setValue({ followupType: 'one time', value: String(displayUnit === 'days' ? 0 : durationToDays(1, displayUnit)), unit: 'days' });\n return;\n }\n const days = durationToDays(Number.isNaN(num) ? (displayUnit === 'days' ? 0 : 1) : num, displayUnit);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [displayUnit, setValue, setTouched]\n );\n\n const handleUnitChange = useCallback(\n (newUnit: 'days' | 'weeks' | 'months') => {\n if (newUnit === displayUnit) return;\n const n = daysToDisplayCount(daysNum, displayUnit);\n setDisplayUnit(newUnit);\n if (!hasFollowup) return;\n setTouched();\n const newDays = durationToDays(n, newUnit);\n setValue({ followupType: 'one time', value: String(newDays), unit: 'days' });\n },\n [displayUnit, daysNum, hasFollowup, setValue, setTouched]\n );\n\n const handleDateSelect = useCallback(\n (selected: Date | undefined) => {\n setTouched();\n setCalendarOpen(false);\n if (!selected) return;\n const days = dateToDays(selected);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [setValue, setTouched]\n );\n\n if (!visible || !fieldDef) return null;\n\n const minDate = new Date();\n minDate.setHours(0, 0, 0, 0);\n const selectedDate = currentDate || getDefaultDate();\n\n return (\n <Card className={cn(error && 'border-destructive')}>\n {/* <CardHeader className=\"flex flex-row items-center space-y-0\">\n {showIcon && (\n <img\n alt=\"Follow-up\"\n className=\"h-5 w-5\"\n src=\"/icons/star_png.png\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none';\n }}\n />\n )}\n <Label className=\"text-base font-semibold\">{fieldDef.label}</Label>\n </CardHeader> */}\n <CardContent className=\"space-y-1 p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center flex-shrink-0 gap-2\">\n <Label className=\"text-xs font-semibold text-muted-foreground\">Follow-up</Label>\n <Select\n value={currentFollowupType}\n onValueChange={(v) => handleFollowupTypeChange(v as 'no followup' | 'one time')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[140px] border-none bg-muted/50 text-xs py-1 focus:outline-none focus:ring-0 focus:ring-offset-0\">\n <SelectValue/>\n </SelectTrigger>\n <SelectContent>\n {FOLLOWUP_TYPE_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {currentFollowupType !== 'no followup' && (\n <>\n <div className=\"flex items-center gap-4\">\n <Label className=\"text-xs font-medium text-muted-foreground\">Schedule by:</Label>\n <div className=\"flex items-center gap-3\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"duration\"\n checked={followupMode === 'duration'}\n onChange={() => handleModeChange('duration')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Duration</span>\n </label>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"date\"\n checked={followupMode === 'date'}\n onChange={() => handleModeChange('date')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Date</span>\n </label>\n </div>\n </div>\n\n {followupMode === 'duration' && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-semibold text-muted-foreground\">In</span>\n <input\n type=\"number\"\n min={currentUnit === 'days' ? 0 : 1}\n value={currentValue}\n onChange={(e) => handleValueChange(e.target.value)}\n disabled={disabled}\n className=\"w-16 py-1.5 px-2 border border-input rounded-md text-center text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n placeholder=\"7\"\n />\n <Select\n value={currentUnit}\n onValueChange={(v) => handleUnitChange(v as 'days' | 'weeks' | 'months')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[100px] h-8 text-xs\">\n <SelectValue className='text-xs'/>\n </SelectTrigger>\n <SelectContent>\n {UNIT_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {followupMode === 'date' && (\n <Popover open={calendarOpen} onOpenChange={setCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full justify-start text-left font-normal h-9\"\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4 text-muted-foreground\" />\n <span className=\"text-muted-foreground\">\n {hasFollowup && currentDate\n ? format(currentDate, 'MMM d, yyyy')\n : 'Select date'}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n disabled={(date) => date < minDate}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )}\n\n <p className=\"text-xs text-muted-foreground\">\n One-time appointment{' '}\n {followupMode === 'duration'\n ? `in ${currentValue} ${currentUnit}`\n : hasFollowup && currentDate\n ? `on ${format(currentDate, 'MMM d, yyyy')}`\n : 'date to be selected'}\n </p>\n </>\n )}\n\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </CardContent>\n </Card>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/FollowupWidget.tsx"],"names":["days","CalendarIcon","Calendar"],"mappings":"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","file":"FollowupWidget-BFZ6P2JE.mjs","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { format, parseISO, differenceInCalendarDays, addDays, addWeeks } from 'date-fns';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { useField } from '../../react/useField';\nimport { Card, CardContent } from '../shadcn/card';\nimport { Label } from '../shadcn/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport { Calendar } from '../shadcn/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcn/popover';\nimport { Button } from '../shadcn/button';\nimport { cn } from '../../core/utils';\nimport type { FollowupValue } from '../../core/types';\n\nconst FOLLOWUP_TYPE_OPTIONS = [\n { value: 'no followup', label: 'No Follow-up' },\n { value: 'one time', label: 'One Time' },\n] as const;\n\nconst UNIT_OPTIONS = [\n { value: 'days', label: 'Days' },\n { value: 'weeks', label: 'Weeks' },\n { value: 'months', label: 'Months' },\n] as const;\n\nconst DAYS_PER_MONTH = 30;\n\n/** Convert duration (value + unit) to number of days from today. */\nfunction durationToDays(valueNum: number, unit: 'days' | 'weeks' | 'months'): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n let target: Date;\n if (unit === 'days') target = addDays(today, valueNum);\n else if (unit === 'weeks') target = addWeeks(today, valueNum);\n else target = addDays(today, valueNum * DAYS_PER_MONTH);\n return Math.max(0, differenceInCalendarDays(target, today));\n}\n\nfunction daysToDisplayCount(daysNum: number, unit: 'days' | 'weeks' | 'months'): number {\n if (unit === 'days') return Math.max(0, daysNum);\n if (unit === 'weeks') return Math.round(daysNum / 7) || 1;\n return Math.round(daysNum / DAYS_PER_MONTH) || 1;\n}\n\n/** Convert a future date to number of days from today. */\nfunction dateToDays(date: Date): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return Math.max(0, differenceInCalendarDays(d, today));\n}\n\n/** Days → date for display (today + days). */\nfunction daysToDate(days: number): Date {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return addDays(today, days);\n}\n\nfunction normalizeFollowup(value: unknown): false | FollowupValue {\n if (value === false || value === null || value === undefined) return false;\n if (typeof value !== 'object') return false;\n const o = value as Record<string, unknown>;\n if (o.followupType !== 'one time') return false;\n // New shape: { followupType, value, unit: 'days' }\n if (typeof o.value === 'string' && o.unit === 'days') {\n return { followupType: 'one time', value: o.value, unit: 'days' };\n }\n // Legacy: mode + date or mode + value/unit → convert to days\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n if (o.mode === 'date' && typeof o.date === 'string') {\n const d = parseLocalDate(o.date);\n if (d) {\n const days = dateToDays(d);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n }\n }\n const val = o.value != null ? Number(String(o.value)) : 7;\n const u = (o.unit === 'weeks' || o.unit === 'months' ? o.unit : 'days') as 'days' | 'weeks' | 'months';\n const days = durationToDays(Number.isNaN(val) ? 7 : val, u);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n}\n\nfunction getDefaultDate(): Date {\n const d = new Date();\n d.setDate(d.getDate() + 7);\n return d;\n}\n\nfunction parseLocalDate(dateString: string | null | undefined): Date | null {\n if (!dateString) return null;\n try {\n return parseISO(dateString);\n } catch {\n const parts = dateString.split('-');\n if (parts.length === 3) {\n const y = parseInt(parts[0], 10);\n const m = parseInt(parts[1], 10) - 1;\n const d = parseInt(parts[2], 10);\n if (!Number.isNaN(y) && !Number.isNaN(m) && !Number.isNaN(d)) {\n return new Date(y, m, d);\n }\n }\n return null;\n }\n}\n\nexport const FollowupWidget: React.FC<{ fieldId: string; showIcon?: boolean }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, disabled, visible } = useField(fieldId);\n const followup = normalizeFollowup(value);\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const currentFollowupType = followup ? followup.followupType : 'no followup';\n const hasFollowup = followup !== false;\n const [displayMode, setDisplayMode] = useState<'duration' | 'date'>('duration');\n const [displayUnit, setDisplayUnit] = useState<'days' | 'weeks' | 'months'>('days');\n const daysNum = hasFollowup ? parseInt(followup.value, 10) || 7 : 7;\n const currentDate = hasFollowup ? daysToDate(daysNum) : null;\n const followupMode = displayMode;\n const currentValue = hasFollowup ? String(daysToDisplayCount(daysNum, displayUnit)) : '7';\n const currentUnit = displayUnit;\n\n const handleFollowupTypeChange = useCallback(\n (newType: 'no followup' | 'one time') => {\n setTouched();\n if (newType === 'no followup') {\n setValue(false);\n setCalendarOpen(false);\n return;\n }\n setValue({\n followupType: 'one time',\n value: hasFollowup ? followup.value : '7',\n unit: 'days',\n });\n },\n [followup, hasFollowup, setValue, setTouched]\n );\n\n const handleModeChange = useCallback((newMode: 'duration' | 'date') => {\n setDisplayMode(newMode);\n if (newMode === 'date') setCalendarOpen(false);\n }, []);\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n setTouched();\n const num = parseInt(newValue, 10);\n const min = displayUnit === 'days' ? 0 : 1;\n const valid = (Number.isNaN(num) ? min : num) >= min || newValue === '';\n if (!valid && newValue !== '') {\n setValue({ followupType: 'one time', value: String(displayUnit === 'days' ? 0 : durationToDays(1, displayUnit)), unit: 'days' });\n return;\n }\n const days = durationToDays(Number.isNaN(num) ? (displayUnit === 'days' ? 0 : 1) : num, displayUnit);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [displayUnit, setValue, setTouched]\n );\n\n const handleUnitChange = useCallback(\n (newUnit: 'days' | 'weeks' | 'months') => {\n if (newUnit === displayUnit) return;\n const n = daysToDisplayCount(daysNum, displayUnit);\n setDisplayUnit(newUnit);\n if (!hasFollowup) return;\n setTouched();\n const newDays = durationToDays(n, newUnit);\n setValue({ followupType: 'one time', value: String(newDays), unit: 'days' });\n },\n [displayUnit, daysNum, hasFollowup, setValue, setTouched]\n );\n\n const handleDateSelect = useCallback(\n (selected: Date | undefined) => {\n setTouched();\n setCalendarOpen(false);\n if (!selected) return;\n const days = dateToDays(selected);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [setValue, setTouched]\n );\n\n if (!visible || !fieldDef) return null;\n\n const minDate = new Date();\n minDate.setHours(0, 0, 0, 0);\n const selectedDate = currentDate || getDefaultDate();\n\n return (\n <Card className={cn(error && 'border-destructive')}>\n {/* <CardHeader className=\"flex flex-row items-center space-y-0\">\n {showIcon && (\n <img\n alt=\"Follow-up\"\n className=\"h-5 w-5\"\n src=\"/icons/star_png.png\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none';\n }}\n />\n )}\n <Label className=\"text-base font-semibold\">{fieldDef.label}</Label>\n </CardHeader> */}\n <CardContent className=\"space-y-1 p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center flex-shrink-0 gap-2\">\n <Label className=\"text-xs font-semibold text-muted-foreground\">Follow-up</Label>\n <Select\n value={currentFollowupType}\n onValueChange={(v) => handleFollowupTypeChange(v as 'no followup' | 'one time')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[140px] border-none bg-muted/50 text-xs py-1 focus:outline-none focus:ring-0 focus:ring-offset-0\">\n <SelectValue/>\n </SelectTrigger>\n <SelectContent>\n {FOLLOWUP_TYPE_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {currentFollowupType !== 'no followup' && (\n <>\n <div className=\"flex items-center gap-4\">\n <Label className=\"text-xs font-medium text-muted-foreground\">Schedule by:</Label>\n <div className=\"flex items-center gap-3\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"duration\"\n checked={followupMode === 'duration'}\n onChange={() => handleModeChange('duration')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Duration</span>\n </label>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"date\"\n checked={followupMode === 'date'}\n onChange={() => handleModeChange('date')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Date</span>\n </label>\n </div>\n </div>\n\n {followupMode === 'duration' && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-semibold text-muted-foreground\">In</span>\n <input\n type=\"number\"\n min={currentUnit === 'days' ? 0 : 1}\n value={currentValue}\n onChange={(e) => handleValueChange(e.target.value)}\n disabled={disabled}\n className=\"w-16 py-1.5 px-2 border border-input rounded-md text-center text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n placeholder=\"7\"\n />\n <Select\n value={currentUnit}\n onValueChange={(v) => handleUnitChange(v as 'days' | 'weeks' | 'months')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[100px] h-8 text-xs\">\n <SelectValue className='text-xs'/>\n </SelectTrigger>\n <SelectContent>\n {UNIT_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {followupMode === 'date' && (\n <Popover open={calendarOpen} onOpenChange={setCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full justify-start text-left font-normal h-9\"\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4 text-muted-foreground\" />\n <span className=\"text-muted-foreground\">\n {hasFollowup && currentDate\n ? format(currentDate, 'MMM d, yyyy')\n : 'Select date'}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n disabled={(date) => date < minDate}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )}\n\n <p className=\"text-xs text-muted-foreground\">\n One-time appointment{' '}\n {followupMode === 'duration'\n ? `in ${currentValue} ${currentUnit}`\n : hasFollowup && currentDate\n ? `on ${format(currentDate, 'MMM d, yyyy')}`\n : 'date to be selected'}\n </p>\n </>\n )}\n\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </CardContent>\n </Card>\n );\n};\n"]}
|
|
@@ -4,7 +4,7 @@ var chunkJE6VXRWW_cjs = require('./chunk-JE6VXRWW.cjs');
|
|
|
4
4
|
var chunkAZSAPO2V_cjs = require('./chunk-AZSAPO2V.cjs');
|
|
5
5
|
var chunk4KSZUIJE_cjs = require('./chunk-4KSZUIJE.cjs');
|
|
6
6
|
var chunkO3VQBPEW_cjs = require('./chunk-O3VQBPEW.cjs');
|
|
7
|
-
var
|
|
7
|
+
var chunkTB33A4PD_cjs = require('./chunk-TB33A4PD.cjs');
|
|
8
8
|
var chunkJMGUUFOJ_cjs = require('./chunk-JMGUUFOJ.cjs');
|
|
9
9
|
var chunkFHHISVCH_cjs = require('./chunk-FHHISVCH.cjs');
|
|
10
10
|
var react = require('react');
|
|
@@ -93,7 +93,7 @@ function parseLocalDate(dateString) {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
var FollowupWidget = ({ fieldId }) => {
|
|
96
|
-
const { fieldDef, value, setValue, setTouched, error, disabled, visible } =
|
|
96
|
+
const { fieldDef, value, setValue, setTouched, error, disabled, visible } = chunkTB33A4PD_cjs.useField(fieldId);
|
|
97
97
|
const followup = normalizeFollowup(value);
|
|
98
98
|
const [calendarOpen, setCalendarOpen] = react.useState(false);
|
|
99
99
|
const currentFollowupType = followup ? followup.followupType : "no followup";
|
|
@@ -281,5 +281,5 @@ var FollowupWidget = ({ fieldId }) => {
|
|
|
281
281
|
};
|
|
282
282
|
|
|
283
283
|
exports.FollowupWidget = FollowupWidget;
|
|
284
|
-
//# sourceMappingURL=FollowupWidget-
|
|
285
|
-
//# sourceMappingURL=FollowupWidget-
|
|
284
|
+
//# sourceMappingURL=FollowupWidget-MAYTHM2E.cjs.map
|
|
285
|
+
//# sourceMappingURL=FollowupWidget-MAYTHM2E.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/FollowupWidget.tsx"],"names":["addDays","addWeeks","differenceInCalendarDays","days","parseISO","useField","useState","useCallback","jsx","Card","cn","jsxs","CardContent","Label","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Fragment","Popover","PopoverTrigger","Button","CalendarIcon","format","PopoverContent","Calendar"],"mappings":"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","file":"FollowupWidget-NBTOV2ML.cjs","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { format, parseISO, differenceInCalendarDays, addDays, addWeeks } from 'date-fns';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { useField } from '../../react/useField';\nimport { Card, CardContent } from '../shadcn/card';\nimport { Label } from '../shadcn/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport { Calendar } from '../shadcn/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcn/popover';\nimport { Button } from '../shadcn/button';\nimport { cn } from '../../core/utils';\nimport type { FollowupValue } from '../../core/types';\n\nconst FOLLOWUP_TYPE_OPTIONS = [\n { value: 'no followup', label: 'No Follow-up' },\n { value: 'one time', label: 'One Time' },\n] as const;\n\nconst UNIT_OPTIONS = [\n { value: 'days', label: 'Days' },\n { value: 'weeks', label: 'Weeks' },\n { value: 'months', label: 'Months' },\n] as const;\n\nconst DAYS_PER_MONTH = 30;\n\n/** Convert duration (value + unit) to number of days from today. */\nfunction durationToDays(valueNum: number, unit: 'days' | 'weeks' | 'months'): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n let target: Date;\n if (unit === 'days') target = addDays(today, valueNum);\n else if (unit === 'weeks') target = addWeeks(today, valueNum);\n else target = addDays(today, valueNum * DAYS_PER_MONTH);\n return Math.max(0, differenceInCalendarDays(target, today));\n}\n\nfunction daysToDisplayCount(daysNum: number, unit: 'days' | 'weeks' | 'months'): number {\n if (unit === 'days') return Math.max(0, daysNum);\n if (unit === 'weeks') return Math.round(daysNum / 7) || 1;\n return Math.round(daysNum / DAYS_PER_MONTH) || 1;\n}\n\n/** Convert a future date to number of days from today. */\nfunction dateToDays(date: Date): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return Math.max(0, differenceInCalendarDays(d, today));\n}\n\n/** Days → date for display (today + days). */\nfunction daysToDate(days: number): Date {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return addDays(today, days);\n}\n\nfunction normalizeFollowup(value: unknown): false | FollowupValue {\n if (value === false || value === null || value === undefined) return false;\n if (typeof value !== 'object') return false;\n const o = value as Record<string, unknown>;\n if (o.followupType !== 'one time') return false;\n // New shape: { followupType, value, unit: 'days' }\n if (typeof o.value === 'string' && o.unit === 'days') {\n return { followupType: 'one time', value: o.value, unit: 'days' };\n }\n // Legacy: mode + date or mode + value/unit → convert to days\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n if (o.mode === 'date' && typeof o.date === 'string') {\n const d = parseLocalDate(o.date);\n if (d) {\n const days = dateToDays(d);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n }\n }\n const val = o.value != null ? Number(String(o.value)) : 7;\n const u = (o.unit === 'weeks' || o.unit === 'months' ? o.unit : 'days') as 'days' | 'weeks' | 'months';\n const days = durationToDays(Number.isNaN(val) ? 7 : val, u);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n}\n\nfunction getDefaultDate(): Date {\n const d = new Date();\n d.setDate(d.getDate() + 7);\n return d;\n}\n\nfunction parseLocalDate(dateString: string | null | undefined): Date | null {\n if (!dateString) return null;\n try {\n return parseISO(dateString);\n } catch {\n const parts = dateString.split('-');\n if (parts.length === 3) {\n const y = parseInt(parts[0], 10);\n const m = parseInt(parts[1], 10) - 1;\n const d = parseInt(parts[2], 10);\n if (!Number.isNaN(y) && !Number.isNaN(m) && !Number.isNaN(d)) {\n return new Date(y, m, d);\n }\n }\n return null;\n }\n}\n\nexport const FollowupWidget: React.FC<{ fieldId: string; showIcon?: boolean }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, disabled, visible } = useField(fieldId);\n const followup = normalizeFollowup(value);\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const currentFollowupType = followup ? followup.followupType : 'no followup';\n const hasFollowup = followup !== false;\n const [displayMode, setDisplayMode] = useState<'duration' | 'date'>('duration');\n const [displayUnit, setDisplayUnit] = useState<'days' | 'weeks' | 'months'>('days');\n const daysNum = hasFollowup ? parseInt(followup.value, 10) || 7 : 7;\n const currentDate = hasFollowup ? daysToDate(daysNum) : null;\n const followupMode = displayMode;\n const currentValue = hasFollowup ? String(daysToDisplayCount(daysNum, displayUnit)) : '7';\n const currentUnit = displayUnit;\n\n const handleFollowupTypeChange = useCallback(\n (newType: 'no followup' | 'one time') => {\n setTouched();\n if (newType === 'no followup') {\n setValue(false);\n setCalendarOpen(false);\n return;\n }\n setValue({\n followupType: 'one time',\n value: hasFollowup ? followup.value : '7',\n unit: 'days',\n });\n },\n [followup, hasFollowup, setValue, setTouched]\n );\n\n const handleModeChange = useCallback((newMode: 'duration' | 'date') => {\n setDisplayMode(newMode);\n if (newMode === 'date') setCalendarOpen(false);\n }, []);\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n setTouched();\n const num = parseInt(newValue, 10);\n const min = displayUnit === 'days' ? 0 : 1;\n const valid = (Number.isNaN(num) ? min : num) >= min || newValue === '';\n if (!valid && newValue !== '') {\n setValue({ followupType: 'one time', value: String(displayUnit === 'days' ? 0 : durationToDays(1, displayUnit)), unit: 'days' });\n return;\n }\n const days = durationToDays(Number.isNaN(num) ? (displayUnit === 'days' ? 0 : 1) : num, displayUnit);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [displayUnit, setValue, setTouched]\n );\n\n const handleUnitChange = useCallback(\n (newUnit: 'days' | 'weeks' | 'months') => {\n if (newUnit === displayUnit) return;\n const n = daysToDisplayCount(daysNum, displayUnit);\n setDisplayUnit(newUnit);\n if (!hasFollowup) return;\n setTouched();\n const newDays = durationToDays(n, newUnit);\n setValue({ followupType: 'one time', value: String(newDays), unit: 'days' });\n },\n [displayUnit, daysNum, hasFollowup, setValue, setTouched]\n );\n\n const handleDateSelect = useCallback(\n (selected: Date | undefined) => {\n setTouched();\n setCalendarOpen(false);\n if (!selected) return;\n const days = dateToDays(selected);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [setValue, setTouched]\n );\n\n if (!visible || !fieldDef) return null;\n\n const minDate = new Date();\n minDate.setHours(0, 0, 0, 0);\n const selectedDate = currentDate || getDefaultDate();\n\n return (\n <Card className={cn(error && 'border-destructive')}>\n {/* <CardHeader className=\"flex flex-row items-center space-y-0\">\n {showIcon && (\n <img\n alt=\"Follow-up\"\n className=\"h-5 w-5\"\n src=\"/icons/star_png.png\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none';\n }}\n />\n )}\n <Label className=\"text-base font-semibold\">{fieldDef.label}</Label>\n </CardHeader> */}\n <CardContent className=\"space-y-1 p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center flex-shrink-0 gap-2\">\n <Label className=\"text-xs font-semibold text-muted-foreground\">Follow-up</Label>\n <Select\n value={currentFollowupType}\n onValueChange={(v) => handleFollowupTypeChange(v as 'no followup' | 'one time')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[140px] border-none bg-muted/50 text-xs py-1 focus:outline-none focus:ring-0 focus:ring-offset-0\">\n <SelectValue/>\n </SelectTrigger>\n <SelectContent>\n {FOLLOWUP_TYPE_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {currentFollowupType !== 'no followup' && (\n <>\n <div className=\"flex items-center gap-4\">\n <Label className=\"text-xs font-medium text-muted-foreground\">Schedule by:</Label>\n <div className=\"flex items-center gap-3\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"duration\"\n checked={followupMode === 'duration'}\n onChange={() => handleModeChange('duration')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Duration</span>\n </label>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"date\"\n checked={followupMode === 'date'}\n onChange={() => handleModeChange('date')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Date</span>\n </label>\n </div>\n </div>\n\n {followupMode === 'duration' && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-semibold text-muted-foreground\">In</span>\n <input\n type=\"number\"\n min={currentUnit === 'days' ? 0 : 1}\n value={currentValue}\n onChange={(e) => handleValueChange(e.target.value)}\n disabled={disabled}\n className=\"w-16 py-1.5 px-2 border border-input rounded-md text-center text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n placeholder=\"7\"\n />\n <Select\n value={currentUnit}\n onValueChange={(v) => handleUnitChange(v as 'days' | 'weeks' | 'months')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[100px] h-8 text-xs\">\n <SelectValue className='text-xs'/>\n </SelectTrigger>\n <SelectContent>\n {UNIT_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {followupMode === 'date' && (\n <Popover open={calendarOpen} onOpenChange={setCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full justify-start text-left font-normal h-9\"\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4 text-muted-foreground\" />\n <span className=\"text-muted-foreground\">\n {hasFollowup && currentDate\n ? format(currentDate, 'MMM d, yyyy')\n : 'Select date'}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n disabled={(date) => date < minDate}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )}\n\n <p className=\"text-xs text-muted-foreground\">\n One-time appointment{' '}\n {followupMode === 'duration'\n ? `in ${currentValue} ${currentUnit}`\n : hasFollowup && currentDate\n ? `on ${format(currentDate, 'MMM d, yyyy')}`\n : 'date to be selected'}\n </p>\n </>\n )}\n\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </CardContent>\n </Card>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/FollowupWidget.tsx"],"names":["addDays","addWeeks","differenceInCalendarDays","days","parseISO","useField","useState","useCallback","jsx","Card","cn","jsxs","CardContent","Label","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Fragment","Popover","PopoverTrigger","Button","CalendarIcon","format","PopoverContent","Calendar"],"mappings":"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","file":"FollowupWidget-MAYTHM2E.cjs","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { format, parseISO, differenceInCalendarDays, addDays, addWeeks } from 'date-fns';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { useField } from '../../react/useField';\nimport { Card, CardContent } from '../shadcn/card';\nimport { Label } from '../shadcn/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../shadcn/select';\nimport { Calendar } from '../shadcn/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcn/popover';\nimport { Button } from '../shadcn/button';\nimport { cn } from '../../core/utils';\nimport type { FollowupValue } from '../../core/types';\n\nconst FOLLOWUP_TYPE_OPTIONS = [\n { value: 'no followup', label: 'No Follow-up' },\n { value: 'one time', label: 'One Time' },\n] as const;\n\nconst UNIT_OPTIONS = [\n { value: 'days', label: 'Days' },\n { value: 'weeks', label: 'Weeks' },\n { value: 'months', label: 'Months' },\n] as const;\n\nconst DAYS_PER_MONTH = 30;\n\n/** Convert duration (value + unit) to number of days from today. */\nfunction durationToDays(valueNum: number, unit: 'days' | 'weeks' | 'months'): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n let target: Date;\n if (unit === 'days') target = addDays(today, valueNum);\n else if (unit === 'weeks') target = addWeeks(today, valueNum);\n else target = addDays(today, valueNum * DAYS_PER_MONTH);\n return Math.max(0, differenceInCalendarDays(target, today));\n}\n\nfunction daysToDisplayCount(daysNum: number, unit: 'days' | 'weeks' | 'months'): number {\n if (unit === 'days') return Math.max(0, daysNum);\n if (unit === 'weeks') return Math.round(daysNum / 7) || 1;\n return Math.round(daysNum / DAYS_PER_MONTH) || 1;\n}\n\n/** Convert a future date to number of days from today. */\nfunction dateToDays(date: Date): number {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return Math.max(0, differenceInCalendarDays(d, today));\n}\n\n/** Days → date for display (today + days). */\nfunction daysToDate(days: number): Date {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return addDays(today, days);\n}\n\nfunction normalizeFollowup(value: unknown): false | FollowupValue {\n if (value === false || value === null || value === undefined) return false;\n if (typeof value !== 'object') return false;\n const o = value as Record<string, unknown>;\n if (o.followupType !== 'one time') return false;\n // New shape: { followupType, value, unit: 'days' }\n if (typeof o.value === 'string' && o.unit === 'days') {\n return { followupType: 'one time', value: o.value, unit: 'days' };\n }\n // Legacy: mode + date or mode + value/unit → convert to days\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n if (o.mode === 'date' && typeof o.date === 'string') {\n const d = parseLocalDate(o.date);\n if (d) {\n const days = dateToDays(d);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n }\n }\n const val = o.value != null ? Number(String(o.value)) : 7;\n const u = (o.unit === 'weeks' || o.unit === 'months' ? o.unit : 'days') as 'days' | 'weeks' | 'months';\n const days = durationToDays(Number.isNaN(val) ? 7 : val, u);\n return { followupType: 'one time', value: String(days), unit: 'days' };\n}\n\nfunction getDefaultDate(): Date {\n const d = new Date();\n d.setDate(d.getDate() + 7);\n return d;\n}\n\nfunction parseLocalDate(dateString: string | null | undefined): Date | null {\n if (!dateString) return null;\n try {\n return parseISO(dateString);\n } catch {\n const parts = dateString.split('-');\n if (parts.length === 3) {\n const y = parseInt(parts[0], 10);\n const m = parseInt(parts[1], 10) - 1;\n const d = parseInt(parts[2], 10);\n if (!Number.isNaN(y) && !Number.isNaN(m) && !Number.isNaN(d)) {\n return new Date(y, m, d);\n }\n }\n return null;\n }\n}\n\nexport const FollowupWidget: React.FC<{ fieldId: string; showIcon?: boolean }> = ({ fieldId }) => {\n const { fieldDef, value, setValue, setTouched, error, disabled, visible } = useField(fieldId);\n const followup = normalizeFollowup(value);\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const currentFollowupType = followup ? followup.followupType : 'no followup';\n const hasFollowup = followup !== false;\n const [displayMode, setDisplayMode] = useState<'duration' | 'date'>('duration');\n const [displayUnit, setDisplayUnit] = useState<'days' | 'weeks' | 'months'>('days');\n const daysNum = hasFollowup ? parseInt(followup.value, 10) || 7 : 7;\n const currentDate = hasFollowup ? daysToDate(daysNum) : null;\n const followupMode = displayMode;\n const currentValue = hasFollowup ? String(daysToDisplayCount(daysNum, displayUnit)) : '7';\n const currentUnit = displayUnit;\n\n const handleFollowupTypeChange = useCallback(\n (newType: 'no followup' | 'one time') => {\n setTouched();\n if (newType === 'no followup') {\n setValue(false);\n setCalendarOpen(false);\n return;\n }\n setValue({\n followupType: 'one time',\n value: hasFollowup ? followup.value : '7',\n unit: 'days',\n });\n },\n [followup, hasFollowup, setValue, setTouched]\n );\n\n const handleModeChange = useCallback((newMode: 'duration' | 'date') => {\n setDisplayMode(newMode);\n if (newMode === 'date') setCalendarOpen(false);\n }, []);\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n setTouched();\n const num = parseInt(newValue, 10);\n const min = displayUnit === 'days' ? 0 : 1;\n const valid = (Number.isNaN(num) ? min : num) >= min || newValue === '';\n if (!valid && newValue !== '') {\n setValue({ followupType: 'one time', value: String(displayUnit === 'days' ? 0 : durationToDays(1, displayUnit)), unit: 'days' });\n return;\n }\n const days = durationToDays(Number.isNaN(num) ? (displayUnit === 'days' ? 0 : 1) : num, displayUnit);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [displayUnit, setValue, setTouched]\n );\n\n const handleUnitChange = useCallback(\n (newUnit: 'days' | 'weeks' | 'months') => {\n if (newUnit === displayUnit) return;\n const n = daysToDisplayCount(daysNum, displayUnit);\n setDisplayUnit(newUnit);\n if (!hasFollowup) return;\n setTouched();\n const newDays = durationToDays(n, newUnit);\n setValue({ followupType: 'one time', value: String(newDays), unit: 'days' });\n },\n [displayUnit, daysNum, hasFollowup, setValue, setTouched]\n );\n\n const handleDateSelect = useCallback(\n (selected: Date | undefined) => {\n setTouched();\n setCalendarOpen(false);\n if (!selected) return;\n const days = dateToDays(selected);\n setValue({ followupType: 'one time', value: String(days), unit: 'days' });\n },\n [setValue, setTouched]\n );\n\n if (!visible || !fieldDef) return null;\n\n const minDate = new Date();\n minDate.setHours(0, 0, 0, 0);\n const selectedDate = currentDate || getDefaultDate();\n\n return (\n <Card className={cn(error && 'border-destructive')}>\n {/* <CardHeader className=\"flex flex-row items-center space-y-0\">\n {showIcon && (\n <img\n alt=\"Follow-up\"\n className=\"h-5 w-5\"\n src=\"/icons/star_png.png\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = 'none';\n }}\n />\n )}\n <Label className=\"text-base font-semibold\">{fieldDef.label}</Label>\n </CardHeader> */}\n <CardContent className=\"space-y-1 p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center flex-shrink-0 gap-2\">\n <Label className=\"text-xs font-semibold text-muted-foreground\">Follow-up</Label>\n <Select\n value={currentFollowupType}\n onValueChange={(v) => handleFollowupTypeChange(v as 'no followup' | 'one time')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[140px] border-none bg-muted/50 text-xs py-1 focus:outline-none focus:ring-0 focus:ring-offset-0\">\n <SelectValue/>\n </SelectTrigger>\n <SelectContent>\n {FOLLOWUP_TYPE_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {currentFollowupType !== 'no followup' && (\n <>\n <div className=\"flex items-center gap-4\">\n <Label className=\"text-xs font-medium text-muted-foreground\">Schedule by:</Label>\n <div className=\"flex items-center gap-3\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"duration\"\n checked={followupMode === 'duration'}\n onChange={() => handleModeChange('duration')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Duration</span>\n </label>\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"radio\"\n name={`followup-mode-${fieldId}`}\n value=\"date\"\n checked={followupMode === 'date'}\n onChange={() => handleModeChange('date')}\n className=\"h-4 w-4 text-primary focus:ring-primary\"\n disabled={disabled}\n />\n <span className=\"text-xs text-muted-foreground\">Date</span>\n </label>\n </div>\n </div>\n\n {followupMode === 'duration' && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-semibold text-muted-foreground\">In</span>\n <input\n type=\"number\"\n min={currentUnit === 'days' ? 0 : 1}\n value={currentValue}\n onChange={(e) => handleValueChange(e.target.value)}\n disabled={disabled}\n className=\"w-16 py-1.5 px-2 border border-input rounded-md text-center text-sm focus:outline-none focus:ring-2 focus:ring-ring\"\n placeholder=\"7\"\n />\n <Select\n value={currentUnit}\n onValueChange={(v) => handleUnitChange(v as 'days' | 'weeks' | 'months')}\n disabled={disabled}\n >\n <SelectTrigger className=\"w-[100px] h-8 text-xs\">\n <SelectValue className='text-xs'/>\n </SelectTrigger>\n <SelectContent>\n {UNIT_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} className=\"text-xs\">\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n\n {followupMode === 'date' && (\n <Popover open={calendarOpen} onOpenChange={setCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full justify-start text-left font-normal h-9\"\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4 text-muted-foreground\" />\n <span className=\"text-muted-foreground\">\n {hasFollowup && currentDate\n ? format(currentDate, 'MMM d, yyyy')\n : 'Select date'}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n disabled={(date) => date < minDate}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )}\n\n <p className=\"text-xs text-muted-foreground\">\n One-time appointment{' '}\n {followupMode === 'duration'\n ? `in ${currentValue} ${currentUnit}`\n : hasFollowup && currentDate\n ? `on ${format(currentDate, 'MMM d, yyyy')}`\n : 'date to be selected'}\n </p>\n </>\n )}\n\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n </CardContent>\n </Card>\n );\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkKJA5BLGX_cjs = require('./chunk-KJA5BLGX.cjs');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunk7DISRJAB_cjs = require('./chunk-7DISRJAB.cjs');
|
|
5
|
+
var chunkTB33A4PD_cjs = require('./chunk-TB33A4PD.cjs');
|
|
6
6
|
var chunkFHHISVCH_cjs = require('./chunk-FHHISVCH.cjs');
|
|
7
7
|
require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -32,8 +32,8 @@ function clamp03(n) {
|
|
|
32
32
|
var FunctionalImpairmentScoreWidget = ({
|
|
33
33
|
fieldId
|
|
34
34
|
}) => {
|
|
35
|
-
const { fieldDef, value, setValue, error, disabled, touched } =
|
|
36
|
-
const { state } =
|
|
35
|
+
const { fieldDef, value, setValue, error, disabled, touched } = chunkTB33A4PD_cjs.useField(fieldId);
|
|
36
|
+
const { state } = chunk7DISRJAB_cjs.useForm();
|
|
37
37
|
const showError = !!error && (touched || state.submitAttempted);
|
|
38
38
|
if (!fieldDef || fieldDef.type !== "functional_impairment_score") {
|
|
39
39
|
return null;
|
|
@@ -89,5 +89,5 @@ var FunctionalImpairmentScoreWidget = ({
|
|
|
89
89
|
};
|
|
90
90
|
|
|
91
91
|
exports.FunctionalImpairmentScoreWidget = FunctionalImpairmentScoreWidget;
|
|
92
|
-
//# sourceMappingURL=FunctionalImpairmentScoreWidget-
|
|
93
|
-
//# sourceMappingURL=FunctionalImpairmentScoreWidget-
|
|
92
|
+
//# sourceMappingURL=FunctionalImpairmentScoreWidget-FCA4UKQA.cjs.map
|
|
93
|
+
//# sourceMappingURL=FunctionalImpairmentScoreWidget-FCA4UKQA.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/FunctionalImpairmentScoreWidget.tsx"],"names":["useField","useForm","parseFunctionalImpairmentScore","functionalImpairmentTotal","jsxs","jsx","cn"],"mappings":";;;;;;;;;AAaA,IAAM,KAAA,GAAiE;AAAA,EACrE,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,oBAAA,EAAqB;AAAA,EAC9C,EAAE,GAAA,EAAK,cAAA,EAAgB,KAAA,EAAO,0BAAA,EAA2B;AAAA,EACzD,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,mBAAA,EAAoB;AAAA,EAC3C,EAAE,GAAA,EAAK,YAAA,EAAc,KAAA,EAAO,qBAAA,EAAsB;AAAA,EAClD,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,gBAAA;AACvB,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,MAAA,EAAQ,MAAA,EAAQ,YAAY,QAAQ,CAAA;AAE1D,IAAM,aAAA,GAAgB,uCAAA;AAMtB,IAAM,gBAAA,GAAwC;AAAA,EAC5C,OAAA,EAAS,MAAA;AAAA,EACT,mBAAA,EAAqB,gDAAA;AAAA,EACrB,SAAA,EAAW,QAAA;AAAA,EACX,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,MAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AAEA,SAAS,QAAQ,CAAA,EAAoB;AACnC,EAAA,MAAM,IAAI,OAAO,CAAA,KAAM,QAAA,GAAW,CAAA,GAAI,OAAO,CAAC,CAAA;AAC9C,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,CAAC,GAAG,OAAO,CAAA;AAChC,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAC/C;AAKO,IAAM,kCAAiE,CAAC;AAAA,EAC7E;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,UAAU,KAAA,EAAO,QAAA,EAAU,OAAO,QAAA,EAAU,OAAA,EAAQ,GAAIA,0BAAA,CAAS,OAAO,CAAA;AAChF,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIC,yBAAA,EAAQ;AAC1B,EAAA,MAAM,SAAA,GAAY,CAAC,CAAC,KAAA,KAAU,WAAW,KAAA,CAAM,eAAA,CAAA;AAE/C,EAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,IAAA,KAAS,6BAAA,EAA+B;AAChE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,GAAA,GAAM,QAAA;AACZ,EAAA,MAAM,CAAA,GAAIC,iDAA+B,KAAK,CAAA;AAC9C,EAAA,MAAM,KAAA,GAAQC,4CAA0B,CAAC,CAAA;AACzC,EAAA,MAAM,KAAA,GACH,GAAA,CAAI,IAAA,EAAM,SAAA,EAAkC,IAAA,EAAK,KACjD,GAAA,CAAI,KAAA,EAAO,IAAA,EAAK,GAAI,GAAA,CAAI,KAAA,GAAQ,aAAA,CAAA;AAEnC,EAAA,MAAM,MAAA,GAAS,CAAC,GAAA,EAAoC,CAAA,KAAc;AAChE,IAAA,QAAA,CAAS,EAAE,GAAG,CAAA,EAAG,CAAC,GAAG,GAAG,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA;AAAA,EACtC,CAAA;AAEA,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,yBAAyB,OAAO,CAAA,CAAA;AAAA,MACpC,SAAA,EAAU,sGAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yEAAA,EACX,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,wBAEAA,cAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,gBAAA,EACT,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,qBACVD,eAAA,CAAC,KAAA,EAAA,EAAiB,SAAA,EAAU,6BAAA,EAC1B,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qEAAA,EACZ,QAAA,EAAA,EAAA,CAAG,KAAA,EACN,CAAA;AAAA,0BACAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACZ,QAAA,EAAA,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,qBACjBA,cAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAO,aAAa,KAAK,CAAA;AAAA,cACzB,QAAA;AAAA,cACA,OAAA,EAAS,MAAM,MAAA,CAAO,EAAA,CAAG,KAAK,KAAK,CAAA;AAAA,cACnC,SAAA,EAAWC,oBAAA;AAAA,gBACT,8EAAA;AAAA,gBACA,CAAA,CAAE,EAAA,CAAG,GAAG,CAAA,KAAM,QACV,mDAAA,GACA,6BAAA;AAAA,gBACJ,QAAA,IAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA;AAAA,aAAA;AAAA,YAbI;AAAA,WAeR,CAAA,EACH;AAAA,SAAA,EAAA,EAvBQ,EAAA,CAAG,GAwBb,CACD,CAAA,EACH,CAAA;AAAA,wBAEAF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gHAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DAAA,EAAgE,QAAA,EAAA,+CAAA,EAE/E,CAAA;AAAA,0BACAD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kDAAA,EAAmD,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BACxED,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+CAAA,EACb,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,8BACDC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mCAAA,EAAoC,QAAA,EAAA,KAAA,EAAG;AAAA,aAAA,EACzD;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,QAEC,IAAI,WAAA,oBACHA,cAAA,CAAC,OAAE,SAAA,EAAU,oCAAA,EAAsC,cAAI,WAAA,EAAY,CAAA;AAAA,QAGpE,SAAA,oBAAaA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6BAA6B,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GAChE;AAEJ","file":"FunctionalImpairmentScoreWidget-
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/FunctionalImpairmentScoreWidget.tsx"],"names":["useField","useForm","parseFunctionalImpairmentScore","functionalImpairmentTotal","jsxs","jsx","cn"],"mappings":"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","file":"FunctionalImpairmentScoreWidget-FCA4UKQA.cjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { cn } from '../../core/utils';\nimport type {\n FunctionalImpairmentDimension,\n FunctionalImpairmentScoreFieldDef,\n} from '../../core/types';\nimport {\n functionalImpairmentTotal,\n parseFunctionalImpairmentScore,\n} from '../../core/functionalImpairmentScore';\n\nconst ITEMS: { key: FunctionalImpairmentDimension; label: string }[] = [\n { key: 'reading', label: 'Difficulty reading' },\n { key: 'nightDriving', label: 'Night driving difficulty' },\n { key: 'glare', label: 'Glare sensitivity' },\n { key: 'occupation', label: 'Occupational impact' },\n { key: 'adl', label: 'ADL limitation' },\n];\n\nconst SCALE_LABELS = ['None', 'Mild', 'Moderate', 'Severe'] as const;\n\nconst DEFAULT_TITLE = 'Functional Impairment Score (Stage 5)';\n\n/**\n * Two columns when the card fits two compact cells (~22rem + gap);\n * one column below that. Low min so side columns still get 2-up.\n */\nconst ITEMS_GRID_STYLE: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(100%, 8rem), 1fr))',\n columnGap: '0.5rem',\n rowGap: '0.5rem',\n width: '100%',\n minWidth: 0,\n};\n\nfunction clamp03(n: unknown): number {\n const v = typeof n === 'number' ? n : Number(n);\n if (!Number.isFinite(v)) return 0;\n return Math.max(0, Math.min(3, Math.trunc(v)));\n}\n\n/**\n * Stage-5 functional impairment: five 0–3 items and total /15.\n */\nexport const FunctionalImpairmentScoreWidget: React.FC<{ fieldId: string }> = ({\n fieldId,\n}) => {\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 !== 'functional_impairment_score') {\n return null;\n }\n\n const def = fieldDef as FunctionalImpairmentScoreFieldDef;\n const v = parseFunctionalImpairmentScore(value);\n const total = functionalImpairmentTotal(v);\n const title =\n (def.meta?.cardTitle as string | undefined)?.trim() ||\n (def.label?.trim() ? def.label : DEFAULT_TITLE);\n\n const setDim = (key: FunctionalImpairmentDimension, n: number) => {\n setValue({ ...v, [key]: clamp03(n) });\n };\n\n return (\n <div\n id={`functional-impairment-${fieldId}`}\n className=\"w-full min-w-0 max-w-full rounded-lg border border-border bg-card p-3 text-card-foreground shadow-sm\"\n >\n <h3 className=\"mb-2 text-xs font-semibold leading-tight text-foreground sm:text-[13px]\">\n {title}\n </h3>\n\n <div style={ITEMS_GRID_STYLE}>\n {ITEMS.map((it) => (\n <div key={it.key} className=\"flex min-w-0 flex-col gap-1\">\n <div className=\"text-[10px] font-medium leading-snug text-foreground sm:text-[11px]\">\n {it.label}\n </div>\n <div className=\"flex w-fit max-w-full shrink-0 gap-0.5\">\n {[0, 1, 2, 3].map((score) => (\n <button\n key={score}\n type=\"button\"\n title={SCALE_LABELS[score]}\n disabled={disabled}\n onClick={() => setDim(it.key, score)}\n className={cn(\n 'h-6 w-7 shrink-0 rounded border text-[10px] transition-colors sm:text-[11px]',\n v[it.key] === score\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-input hover:bg-muted',\n disabled && 'pointer-events-none opacity-50',\n )}\n >\n {score}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n\n <div className=\"mt-2 flex flex-col gap-1.5 border-t border-border pt-2 sm:flex-row sm:items-center sm:justify-between sm:gap-2\">\n <div className=\"text-[10px] leading-snug text-muted-foreground sm:text-[11px]\">\n Score scale: 0 = none, 3 = severe (each item)\n </div>\n <div className=\"flex flex-wrap items-center gap-1.5 sm:justify-end\">\n <span className=\"text-[10px] text-muted-foreground sm:text-[11px]\">Total</span>\n <span className=\"text-sm font-bold tabular-nums sm:text-[15px]\">\n {total}\n <span className=\"font-normal text-muted-foreground\">/15</span>\n </span>\n </div>\n </div>\n\n {def.description && (\n <p className=\"mt-2 text-xs text-muted-foreground\">{def.description}</p>\n )}\n\n {showError && <p className=\"mt-2 text-xs text-red-500\">{error}</p>}\n </div>\n );\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parseFunctionalImpairmentScore, functionalImpairmentTotal } from './chunk-LQYWMYEC.mjs';
|
|
2
|
-
import { useForm } from './chunk-
|
|
3
|
-
import { useField } from './chunk-
|
|
2
|
+
import { useForm } from './chunk-T3UHPMFX.mjs';
|
|
3
|
+
import { useField } from './chunk-2BGJZ44Q.mjs';
|
|
4
4
|
import { cn } from './chunk-VPU66PI6.mjs';
|
|
5
5
|
import 'react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -87,5 +87,5 @@ var FunctionalImpairmentScoreWidget = ({
|
|
|
87
87
|
};
|
|
88
88
|
|
|
89
89
|
export { FunctionalImpairmentScoreWidget };
|
|
90
|
-
//# sourceMappingURL=FunctionalImpairmentScoreWidget-
|
|
91
|
-
//# sourceMappingURL=FunctionalImpairmentScoreWidget-
|
|
90
|
+
//# sourceMappingURL=FunctionalImpairmentScoreWidget-TKS6KE7K.mjs.map
|
|
91
|
+
//# sourceMappingURL=FunctionalImpairmentScoreWidget-TKS6KE7K.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/widgets/FunctionalImpairmentScoreWidget.tsx"],"names":[],"mappings":"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","file":"FunctionalImpairmentScoreWidget-
|
|
1
|
+
{"version":3,"sources":["../src/ui/widgets/FunctionalImpairmentScoreWidget.tsx"],"names":[],"mappings":"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","file":"FunctionalImpairmentScoreWidget-TKS6KE7K.mjs","sourcesContent":["import React from 'react';\nimport { useField } from '../../react/useField';\nimport { useForm } from '../../react/useForm';\nimport { cn } from '../../core/utils';\nimport type {\n FunctionalImpairmentDimension,\n FunctionalImpairmentScoreFieldDef,\n} from '../../core/types';\nimport {\n functionalImpairmentTotal,\n parseFunctionalImpairmentScore,\n} from '../../core/functionalImpairmentScore';\n\nconst ITEMS: { key: FunctionalImpairmentDimension; label: string }[] = [\n { key: 'reading', label: 'Difficulty reading' },\n { key: 'nightDriving', label: 'Night driving difficulty' },\n { key: 'glare', label: 'Glare sensitivity' },\n { key: 'occupation', label: 'Occupational impact' },\n { key: 'adl', label: 'ADL limitation' },\n];\n\nconst SCALE_LABELS = ['None', 'Mild', 'Moderate', 'Severe'] as const;\n\nconst DEFAULT_TITLE = 'Functional Impairment Score (Stage 5)';\n\n/**\n * Two columns when the card fits two compact cells (~22rem + gap);\n * one column below that. Low min so side columns still get 2-up.\n */\nconst ITEMS_GRID_STYLE: React.CSSProperties = {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(100%, 8rem), 1fr))',\n columnGap: '0.5rem',\n rowGap: '0.5rem',\n width: '100%',\n minWidth: 0,\n};\n\nfunction clamp03(n: unknown): number {\n const v = typeof n === 'number' ? n : Number(n);\n if (!Number.isFinite(v)) return 0;\n return Math.max(0, Math.min(3, Math.trunc(v)));\n}\n\n/**\n * Stage-5 functional impairment: five 0–3 items and total /15.\n */\nexport const FunctionalImpairmentScoreWidget: React.FC<{ fieldId: string }> = ({\n fieldId,\n}) => {\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 !== 'functional_impairment_score') {\n return null;\n }\n\n const def = fieldDef as FunctionalImpairmentScoreFieldDef;\n const v = parseFunctionalImpairmentScore(value);\n const total = functionalImpairmentTotal(v);\n const title =\n (def.meta?.cardTitle as string | undefined)?.trim() ||\n (def.label?.trim() ? def.label : DEFAULT_TITLE);\n\n const setDim = (key: FunctionalImpairmentDimension, n: number) => {\n setValue({ ...v, [key]: clamp03(n) });\n };\n\n return (\n <div\n id={`functional-impairment-${fieldId}`}\n className=\"w-full min-w-0 max-w-full rounded-lg border border-border bg-card p-3 text-card-foreground shadow-sm\"\n >\n <h3 className=\"mb-2 text-xs font-semibold leading-tight text-foreground sm:text-[13px]\">\n {title}\n </h3>\n\n <div style={ITEMS_GRID_STYLE}>\n {ITEMS.map((it) => (\n <div key={it.key} className=\"flex min-w-0 flex-col gap-1\">\n <div className=\"text-[10px] font-medium leading-snug text-foreground sm:text-[11px]\">\n {it.label}\n </div>\n <div className=\"flex w-fit max-w-full shrink-0 gap-0.5\">\n {[0, 1, 2, 3].map((score) => (\n <button\n key={score}\n type=\"button\"\n title={SCALE_LABELS[score]}\n disabled={disabled}\n onClick={() => setDim(it.key, score)}\n className={cn(\n 'h-6 w-7 shrink-0 rounded border text-[10px] transition-colors sm:text-[11px]',\n v[it.key] === score\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-input hover:bg-muted',\n disabled && 'pointer-events-none opacity-50',\n )}\n >\n {score}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n\n <div className=\"mt-2 flex flex-col gap-1.5 border-t border-border pt-2 sm:flex-row sm:items-center sm:justify-between sm:gap-2\">\n <div className=\"text-[10px] leading-snug text-muted-foreground sm:text-[11px]\">\n Score scale: 0 = none, 3 = severe (each item)\n </div>\n <div className=\"flex flex-wrap items-center gap-1.5 sm:justify-end\">\n <span className=\"text-[10px] text-muted-foreground sm:text-[11px]\">Total</span>\n <span className=\"text-sm font-bold tabular-nums sm:text-[15px]\">\n {total}\n <span className=\"font-normal text-muted-foreground\">/15</span>\n </span>\n </div>\n </div>\n\n {def.description && (\n <p className=\"mt-2 text-xs text-muted-foreground\">{def.description}</p>\n )}\n\n {showError && <p className=\"mt-2 text-xs text-red-500\">{error}</p>}\n </div>\n );\n};\n"]}
|
|
@@ -2,11 +2,11 @@ import { Checkbox } from './chunk-GNZWSVTB.mjs';
|
|
|
2
2
|
import { Textarea } from './chunk-4BAKQIPJ.mjs';
|
|
3
3
|
import { getThemeConfig } from './chunk-Y7TIWH4I.mjs';
|
|
4
4
|
import { FieldRequiredIndicator } from './chunk-WYVXXEZI.mjs';
|
|
5
|
-
import { useForm } from './chunk-
|
|
5
|
+
import { useForm } from './chunk-T3UHPMFX.mjs';
|
|
6
6
|
import { Input } from './chunk-VNFBUAZD.mjs';
|
|
7
7
|
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-AZHTIUOL.mjs';
|
|
8
8
|
import { Button } from './chunk-GXXWMHAA.mjs';
|
|
9
|
-
import { useField, normalizeGeneralSurgeryExamination, formatGeneralSurgeryExaminationToNarrative } from './chunk-
|
|
9
|
+
import { useField, normalizeGeneralSurgeryExamination, formatGeneralSurgeryExaminationToNarrative } from './chunk-2BGJZ44Q.mjs';
|
|
10
10
|
import { Label } from './chunk-HEFZA2AH.mjs';
|
|
11
11
|
import { cn } from './chunk-VPU66PI6.mjs';
|
|
12
12
|
import { useMemo, useState, useEffect } from 'react';
|
|
@@ -522,5 +522,5 @@ var GsExaminationWidget = ({ fieldId }) => {
|
|
|
522
522
|
};
|
|
523
523
|
|
|
524
524
|
export { GsExaminationWidget };
|
|
525
|
-
//# sourceMappingURL=GsExaminationWidget-
|
|
526
|
-
//# sourceMappingURL=GsExaminationWidget-
|
|
525
|
+
//# sourceMappingURL=GsExaminationWidget-ESIEZCP3.mjs.map
|
|
526
|
+
//# sourceMappingURL=GsExaminationWidget-ESIEZCP3.mjs.map
|