@mieweb/ui 0.10.0-dev.31 → 0.10.0-dev.32
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/CsvBlock-CFXSDPBI.js +9 -0
- package/dist/{CsvBlock-VLMG7GUO.js.map → CsvBlock-CFXSDPBI.js.map} +1 -1
- package/dist/CsvBlock-RGO7JXHJ.cjs +18 -0
- package/dist/{CsvBlock-FX5YNGNE.cjs.map → CsvBlock-RGO7JXHJ.cjs.map} +1 -1
- package/dist/HtmlPreviewBlock-VBYXCXVT.cjs +18 -0
- package/dist/{HtmlPreviewBlock-UO37JQ3K.cjs.map → HtmlPreviewBlock-VBYXCXVT.cjs.map} +1 -1
- package/dist/HtmlPreviewBlock-Z2GCK325.js +9 -0
- package/dist/{HtmlPreviewBlock-5JE7L3GR.js.map → HtmlPreviewBlock-Z2GCK325.js.map} +1 -1
- package/dist/MermaidBlock-I2R2BQOX.cjs +18 -0
- package/dist/{MermaidBlock-RZ75RPZA.cjs.map → MermaidBlock-I2R2BQOX.cjs.map} +1 -1
- package/dist/MermaidBlock-XCAK7IA5.js +9 -0
- package/dist/{MermaidBlock-3XHFBAMV.js.map → MermaidBlock-XCAK7IA5.js.map} +1 -1
- package/dist/SurveyBlock-KI5JOWCL.js +9 -0
- package/dist/{SurveyBlock-MUVJ3JUI.js.map → SurveyBlock-KI5JOWCL.js.map} +1 -1
- package/dist/SurveyBlock-UKSGISRT.cjs +18 -0
- package/dist/{SurveyBlock-VH47YXZC.cjs.map → SurveyBlock-UKSGISRT.cjs.map} +1 -1
- package/dist/brands/index.cjs +7 -7
- package/dist/brands/index.js +2 -2
- package/dist/{chunk-6ZPTZTKN.js → chunk-24AFHH4J.js} +3 -3
- package/dist/{chunk-6ZPTZTKN.js.map → chunk-24AFHH4J.js.map} +1 -1
- package/dist/{chunk-TYE5K5WV.cjs → chunk-32ZCJOSR.cjs} +4 -4
- package/dist/{chunk-TYE5K5WV.cjs.map → chunk-32ZCJOSR.cjs.map} +1 -1
- package/dist/{chunk-SD7ONW6S.js → chunk-3DLLTITK.js} +4 -4
- package/dist/{chunk-SD7ONW6S.js.map → chunk-3DLLTITK.js.map} +1 -1
- package/dist/chunk-47P5QLX4.cjs +42 -0
- package/dist/chunk-47P5QLX4.cjs.map +1 -0
- package/dist/chunk-4ZB7RSMY.cjs +306 -0
- package/dist/chunk-4ZB7RSMY.cjs.map +1 -0
- package/dist/{chunk-WXFGHDTV.cjs → chunk-57G3O552.cjs} +13 -13
- package/dist/{chunk-WXFGHDTV.cjs.map → chunk-57G3O552.cjs.map} +1 -1
- package/dist/{chunk-D22GE27K.js → chunk-5A4SL436.js} +4 -4
- package/dist/{chunk-D22GE27K.js.map → chunk-5A4SL436.js.map} +1 -1
- package/dist/chunk-6BNZLN4B.cjs +548 -0
- package/dist/chunk-6BNZLN4B.cjs.map +1 -0
- package/dist/chunk-6JSFT2J5.js +130 -0
- package/dist/chunk-6JSFT2J5.js.map +1 -0
- package/dist/{chunk-NKV76R65.cjs → chunk-6M63CM7X.cjs} +26 -26
- package/dist/{chunk-NKV76R65.cjs.map → chunk-6M63CM7X.cjs.map} +1 -1
- package/dist/chunk-6N7NMOSV.js +233 -0
- package/dist/chunk-6N7NMOSV.js.map +1 -0
- package/dist/chunk-6TTCZY3P.cjs +4 -0
- package/dist/chunk-6TTCZY3P.cjs.map +1 -0
- package/dist/{chunk-TTSSUOEV.cjs → chunk-7C5W744U.cjs} +8 -8
- package/dist/{chunk-TTSSUOEV.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
- package/dist/chunk-7HUTR6RX.js +178 -0
- package/dist/chunk-7HUTR6RX.js.map +1 -0
- package/dist/chunk-7IRTD4JT.cjs +61 -0
- package/dist/chunk-7IRTD4JT.cjs.map +1 -0
- package/dist/{chunk-YU55JD35.js → chunk-7QW6TU4X.js} +3 -3
- package/dist/{chunk-YU55JD35.js.map → chunk-7QW6TU4X.js.map} +1 -1
- package/dist/chunk-7WJ6MBF5.cjs +47 -0
- package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
- package/dist/chunk-A4W5CSK7.cjs +216 -0
- package/dist/chunk-A4W5CSK7.cjs.map +1 -0
- package/dist/chunk-AMYFRY7K.js +3 -0
- package/dist/chunk-AMYFRY7K.js.map +1 -0
- package/dist/{chunk-X6A27RGO.cjs → chunk-ANMX7YDL.cjs} +2 -2
- package/dist/{chunk-X6A27RGO.cjs.map → chunk-ANMX7YDL.cjs.map} +1 -1
- package/dist/{chunk-DVOQ3JNO.js → chunk-B4CKCNWD.js} +16 -8
- package/dist/chunk-B4CKCNWD.js.map +1 -0
- package/dist/chunk-BJ6ABRSQ.cjs +256 -0
- package/dist/chunk-BJ6ABRSQ.cjs.map +1 -0
- package/dist/chunk-BXRQ6HEP.cjs +4 -0
- package/dist/chunk-BXRQ6HEP.cjs.map +1 -0
- package/dist/{chunk-TJCX4OML.cjs → chunk-C77FAR3F.cjs} +2 -2
- package/dist/{chunk-TJCX4OML.cjs.map → chunk-C77FAR3F.cjs.map} +1 -1
- package/dist/chunk-CBBKWRLG.js +213 -0
- package/dist/chunk-CBBKWRLG.js.map +1 -0
- package/dist/{chunk-BNH4SXJB.js → chunk-CMF7VCGP.js} +5 -5
- package/dist/{chunk-BNH4SXJB.js.map → chunk-CMF7VCGP.js.map} +1 -1
- package/dist/chunk-CPDNX3LS.cjs +47 -0
- package/dist/chunk-CPDNX3LS.cjs.map +1 -0
- package/dist/chunk-CVNPNZMX.js +44 -0
- package/dist/chunk-CVNPNZMX.js.map +1 -0
- package/dist/chunk-DHGCLPFZ.js +91 -0
- package/dist/chunk-DHGCLPFZ.js.map +1 -0
- package/dist/chunk-DO2YN46R.cjs +201 -0
- package/dist/chunk-DO2YN46R.cjs.map +1 -0
- package/dist/chunk-DVDT7TX7.js +151 -0
- package/dist/chunk-DVDT7TX7.js.map +1 -0
- package/dist/{chunk-R5Z7AOVU.cjs → chunk-DZ3JTMKM.cjs} +9 -9
- package/dist/{chunk-R5Z7AOVU.cjs.map → chunk-DZ3JTMKM.cjs.map} +1 -1
- package/dist/chunk-EACNRR3C.cjs +4 -0
- package/dist/chunk-EACNRR3C.cjs.map +1 -0
- package/dist/{chunk-E2PBPQGS.js → chunk-EEOGIGIA.js} +2 -2
- package/dist/{chunk-E2PBPQGS.js.map → chunk-EEOGIGIA.js.map} +1 -1
- package/dist/{chunk-QURJVPRH.cjs → chunk-EMRWTCCN.cjs} +41 -2
- package/dist/chunk-EMRWTCCN.cjs.map +1 -0
- package/dist/chunk-EPCUPHEO.js +193 -0
- package/dist/chunk-EPCUPHEO.js.map +1 -0
- package/dist/chunk-EPTP3VKT.js +283 -0
- package/dist/chunk-EPTP3VKT.js.map +1 -0
- package/dist/{chunk-HIZWOAWY.cjs → chunk-ERACGSDY.cjs} +8 -8
- package/dist/{chunk-HIZWOAWY.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
- package/dist/{chunk-VOQJHSXN.cjs → chunk-F2FOG4EG.cjs} +9 -9
- package/dist/{chunk-VOQJHSXN.cjs.map → chunk-F2FOG4EG.cjs.map} +1 -1
- package/dist/{chunk-GBUVIGD5.js → chunk-F3EWRDIT.js} +99 -3
- package/dist/chunk-F3EWRDIT.js.map +1 -0
- package/dist/{chunk-ZTMYKAVU.cjs → chunk-FCV7GBNQ.cjs} +24 -23
- package/dist/chunk-FCV7GBNQ.cjs.map +1 -0
- package/dist/{chunk-GVLNXPJX.js → chunk-FGLIP6YR.js} +4 -4
- package/dist/{chunk-GVLNXPJX.js.map → chunk-FGLIP6YR.js.map} +1 -1
- package/dist/chunk-FKGFOBC2.js +314 -0
- package/dist/chunk-FKGFOBC2.js.map +1 -0
- package/dist/chunk-FSGJXCBG.cjs +318 -0
- package/dist/chunk-FSGJXCBG.cjs.map +1 -0
- package/dist/chunk-FTEZNCRI.js +29 -0
- package/dist/chunk-FTEZNCRI.js.map +1 -0
- package/dist/{chunk-COM7RNZU.cjs → chunk-FYQZWLAM.cjs} +2 -2
- package/dist/{chunk-COM7RNZU.cjs.map → chunk-FYQZWLAM.cjs.map} +1 -1
- package/dist/{chunk-YVPC65ZJ.cjs → chunk-GF2BE4FB.cjs} +91 -32
- package/dist/chunk-GF2BE4FB.cjs.map +1 -0
- package/dist/{chunk-JEIW7BSV.cjs → chunk-GKDHMNUA.cjs} +2 -52
- package/dist/chunk-GKDHMNUA.cjs.map +1 -0
- package/dist/{chunk-N7C4OEP7.cjs → chunk-GM32IDVL.cjs} +6 -6
- package/dist/{chunk-N7C4OEP7.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
- package/dist/chunk-GNOQFTLL.cjs +286 -0
- package/dist/chunk-GNOQFTLL.cjs.map +1 -0
- package/dist/chunk-GY5SP4ST.js +3 -0
- package/dist/chunk-GY5SP4ST.js.map +1 -0
- package/dist/chunk-H2Y7HZV5.js +3 -0
- package/dist/chunk-H2Y7HZV5.js.map +1 -0
- package/dist/chunk-H3QPREIJ.js +195 -0
- package/dist/chunk-H3QPREIJ.js.map +1 -0
- package/dist/{chunk-QOVJ6Z6R.js → chunk-HDY7YQFX.js} +3 -3
- package/dist/{chunk-QOVJ6Z6R.js.map → chunk-HDY7YQFX.js.map} +1 -1
- package/dist/chunk-HNFFFFYH.cjs +114 -0
- package/dist/chunk-HNFFFFYH.cjs.map +1 -0
- package/dist/chunk-HNXLLDPN.js +25 -0
- package/dist/chunk-HNXLLDPN.js.map +1 -0
- package/dist/chunk-I2MMUFCN.cjs +154 -0
- package/dist/chunk-I2MMUFCN.cjs.map +1 -0
- package/dist/{chunk-GYXUS65N.cjs → chunk-IGDO62KR.cjs} +5 -5
- package/dist/{chunk-GYXUS65N.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
- package/dist/{chunk-JBIGSP2T.js → chunk-ILDLYRTP.js} +5 -4
- package/dist/chunk-ILDLYRTP.js.map +1 -0
- package/dist/{chunk-HC3NAN55.cjs → chunk-IPL2O2OL.cjs} +19 -19
- package/dist/{chunk-HC3NAN55.cjs.map → chunk-IPL2O2OL.cjs.map} +1 -1
- package/dist/chunk-ISUIKUX7.cjs +337 -0
- package/dist/chunk-ISUIKUX7.cjs.map +1 -0
- package/dist/{chunk-N5O47VGS.cjs → chunk-IVGI353O.cjs} +2 -2
- package/dist/{chunk-N5O47VGS.cjs.map → chunk-IVGI353O.cjs.map} +1 -1
- package/dist/chunk-IWRBJHO3.cjs +51 -0
- package/dist/chunk-IWRBJHO3.cjs.map +1 -0
- package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
- package/dist/chunk-JUJGWUAN.js.map +1 -0
- package/dist/{chunk-BUT6MF5K.cjs → chunk-KQ6GLYFZ.cjs} +4 -4
- package/dist/{chunk-BUT6MF5K.cjs.map → chunk-KQ6GLYFZ.cjs.map} +1 -1
- package/dist/chunk-L6K4PRZK.cjs +4 -0
- package/dist/chunk-L6K4PRZK.cjs.map +1 -0
- package/dist/{chunk-P7UMS4E6.cjs → chunk-LC7PVBXH.cjs} +16 -8
- package/dist/chunk-LC7PVBXH.cjs.map +1 -0
- package/dist/chunk-LRRSD7LR.js +248 -0
- package/dist/chunk-LRRSD7LR.js.map +1 -0
- package/dist/chunk-LSMS6DY7.cjs +331 -0
- package/dist/chunk-LSMS6DY7.cjs.map +1 -0
- package/dist/chunk-M3VPGJMV.js +283 -0
- package/dist/chunk-M3VPGJMV.js.map +1 -0
- package/dist/{chunk-2JICT4A2.js → chunk-N54FYWG6.js} +3 -3
- package/dist/{chunk-2JICT4A2.js.map → chunk-N54FYWG6.js.map} +1 -1
- package/dist/chunk-N5JDL4VE.js +3 -0
- package/dist/chunk-N5JDL4VE.js.map +1 -0
- package/dist/{chunk-KGKBZN3T.cjs → chunk-NAH65KPK.cjs} +8 -8
- package/dist/{chunk-KGKBZN3T.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
- package/dist/chunk-O4WGSOJI.js +261 -0
- package/dist/chunk-O4WGSOJI.js.map +1 -0
- package/dist/{chunk-SVSHA7XV.js → chunk-O6XDA3SI.js} +31 -33
- package/dist/chunk-O6XDA3SI.js.map +1 -0
- package/dist/chunk-OIF34LEN.cjs +425 -0
- package/dist/chunk-OIF34LEN.cjs.map +1 -0
- package/dist/chunk-ORCCJ5VY.cjs +218 -0
- package/dist/chunk-ORCCJ5VY.cjs.map +1 -0
- package/dist/{chunk-CRS2CQWM.js → chunk-OSTSZDQC.js} +3 -3
- package/dist/{chunk-CRS2CQWM.js.map → chunk-OSTSZDQC.js.map} +1 -1
- package/dist/{chunk-MLAWXPRY.js → chunk-OZ5CKVQN.js} +41 -2
- package/dist/chunk-OZ5CKVQN.js.map +1 -0
- package/dist/chunk-P22YCUVM.cjs +4 -0
- package/dist/chunk-P22YCUVM.cjs.map +1 -0
- package/dist/chunk-P55LNEDH.cjs +306 -0
- package/dist/chunk-P55LNEDH.cjs.map +1 -0
- package/dist/{chunk-R6KPWIGO.js → chunk-P7D7BYFE.js} +4 -4
- package/dist/{chunk-R6KPWIGO.js.map → chunk-P7D7BYFE.js.map} +1 -1
- package/dist/{chunk-GU5OS7JJ.cjs → chunk-PYI2IWNX.cjs} +4 -4
- package/dist/{chunk-GU5OS7JJ.cjs.map → chunk-PYI2IWNX.cjs.map} +1 -1
- package/dist/chunk-Q3YVLO52.cjs +174 -0
- package/dist/chunk-Q3YVLO52.cjs.map +1 -0
- package/dist/{chunk-K34DXMLZ.js → chunk-QJ2L5RU6.js} +7 -7
- package/dist/{chunk-K34DXMLZ.js.map → chunk-QJ2L5RU6.js.map} +1 -1
- package/dist/{chunk-X4LBUPJO.cjs → chunk-QX6AAVDE.cjs} +31 -33
- package/dist/chunk-QX6AAVDE.cjs.map +1 -0
- package/dist/{chunk-LFPJ3OUM.cjs → chunk-RIUQP2QS.cjs} +5 -5
- package/dist/{chunk-LFPJ3OUM.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
- package/dist/{chunk-JHG3ELS2.js → chunk-RPFATYUI.js} +2 -2
- package/dist/{chunk-JHG3ELS2.js.map → chunk-RPFATYUI.js.map} +1 -1
- package/dist/{chunk-FZURBQJ2.js → chunk-RSJGTWLM.js} +3 -3
- package/dist/{chunk-FZURBQJ2.js.map → chunk-RSJGTWLM.js.map} +1 -1
- package/dist/{chunk-XBTKZCZF.js → chunk-RZSSQ7AT.js} +3 -3
- package/dist/{chunk-XBTKZCZF.js.map → chunk-RZSSQ7AT.js.map} +1 -1
- package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
- package/dist/chunk-SHBCUXFS.cjs.map +1 -0
- package/dist/{chunk-JELTRRR5.cjs → chunk-SW2E7XKY.cjs} +9 -9
- package/dist/{chunk-JELTRRR5.cjs.map → chunk-SW2E7XKY.cjs.map} +1 -1
- package/dist/chunk-SZSRGUVO.js +402 -0
- package/dist/chunk-SZSRGUVO.js.map +1 -0
- package/dist/{chunk-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
- package/dist/chunk-TI3TQQ7F.js.map +1 -0
- package/dist/{chunk-H2IAMSHK.js → chunk-TVEJKKIM.js} +3 -3
- package/dist/{chunk-H2IAMSHK.js.map → chunk-TVEJKKIM.js.map} +1 -1
- package/dist/{chunk-LHBWRMNC.cjs → chunk-TVU4KB27.cjs} +130 -12
- package/dist/chunk-TVU4KB27.cjs.map +1 -0
- package/dist/{chunk-ZYL4SNOR.js → chunk-UJDWFDKE.js} +3 -3
- package/dist/{chunk-ZYL4SNOR.js.map → chunk-UJDWFDKE.js.map} +1 -1
- package/dist/{chunk-4HC2IBOX.js → chunk-UNFDIBKJ.js} +3 -3
- package/dist/{chunk-4HC2IBOX.js.map → chunk-UNFDIBKJ.js.map} +1 -1
- package/dist/{chunk-IYWG72DM.js → chunk-VEE46VTX.js} +4 -4
- package/dist/{chunk-IYWG72DM.js.map → chunk-VEE46VTX.js.map} +1 -1
- package/dist/{chunk-Y4E2WRUR.cjs → chunk-VFFV7EMT.cjs} +6 -6
- package/dist/{chunk-Y4E2WRUR.cjs.map → chunk-VFFV7EMT.cjs.map} +1 -1
- package/dist/chunk-VNEAQCY2.js +308 -0
- package/dist/chunk-VNEAQCY2.js.map +1 -0
- package/dist/chunk-VOYLX32A.cjs +271 -0
- package/dist/chunk-VOYLX32A.cjs.map +1 -0
- package/dist/{chunk-7ZV67VZE.js → chunk-VSRO4PAI.js} +21 -3
- package/dist/chunk-VSRO4PAI.js.map +1 -0
- package/dist/{chunk-L6MDULYB.js → chunk-VU3ZMJBN.js} +2 -2
- package/dist/{chunk-L6MDULYB.js.map → chunk-VU3ZMJBN.js.map} +1 -1
- package/dist/{chunk-35Y4ILCU.cjs → chunk-VXW7D5LR.cjs} +21 -3
- package/dist/chunk-VXW7D5LR.cjs.map +1 -0
- package/dist/{chunk-7YO7DNUV.js → chunk-WFBUBT54.js} +2 -2
- package/dist/{chunk-7YO7DNUV.js.map → chunk-WFBUBT54.js.map} +1 -1
- package/dist/chunk-WQHBMZSC.js +295 -0
- package/dist/chunk-WQHBMZSC.js.map +1 -0
- package/dist/chunk-X5JOEZVR.js +525 -0
- package/dist/chunk-X5JOEZVR.js.map +1 -0
- package/dist/chunk-XBAAHOCP.js +3 -0
- package/dist/chunk-XBAAHOCP.js.map +1 -0
- package/dist/chunk-XNPDZANN.cjs +238 -0
- package/dist/chunk-XNPDZANN.cjs.map +1 -0
- package/dist/chunk-XXA4NZUC.js +3 -0
- package/dist/chunk-XXA4NZUC.js.map +1 -0
- package/dist/chunk-Y424YL55.js +59 -0
- package/dist/chunk-Y424YL55.js.map +1 -0
- package/dist/chunk-YGS2TRMP.js +38 -0
- package/dist/chunk-YGS2TRMP.js.map +1 -0
- package/dist/chunk-YUMOM3KE.js +167 -0
- package/dist/chunk-YUMOM3KE.js.map +1 -0
- package/dist/{chunk-3KPDQG5O.cjs → chunk-ZG6FXMDX.cjs} +5 -5
- package/dist/{chunk-3KPDQG5O.cjs.map → chunk-ZG6FXMDX.cjs.map} +1 -1
- package/dist/chunk-ZNUMOJOI.cjs +4 -0
- package/dist/chunk-ZNUMOJOI.cjs.map +1 -0
- package/dist/components/Accordion/index.cjs +2 -2
- package/dist/components/Accordion/index.d.cts +6 -0
- package/dist/components/Accordion/index.d.ts +6 -0
- package/dist/components/Accordion/index.js +1 -1
- package/dist/components/ActionPlan/index.cjs +34 -0
- package/dist/components/ActionPlan/index.cjs.map +1 -0
- package/dist/components/ActionPlan/index.d.cts +65 -0
- package/dist/components/ActionPlan/index.d.ts +65 -0
- package/dist/components/ActionPlan/index.js +21 -0
- package/dist/components/ActionPlan/index.js.map +1 -0
- package/dist/components/ActivityFeed/index.cjs +31 -0
- package/dist/components/ActivityFeed/index.cjs.map +1 -0
- package/dist/components/ActivityFeed/index.d.cts +99 -0
- package/dist/components/ActivityFeed/index.d.ts +99 -0
- package/dist/components/ActivityFeed/index.js +18 -0
- package/dist/components/ActivityFeed/index.js.map +1 -0
- package/dist/components/AlertDialog/index.cjs +16 -3
- package/dist/components/AlertDialog/index.d.cts +66 -13
- package/dist/components/AlertDialog/index.d.ts +66 -13
- package/dist/components/AlertDialog/index.js +3 -2
- package/dist/components/AssociationList/index.cjs +29 -0
- package/dist/components/AssociationList/index.cjs.map +1 -0
- package/dist/components/AssociationList/index.d.cts +50 -0
- package/dist/components/AssociationList/index.d.ts +50 -0
- package/dist/components/AssociationList/index.js +16 -0
- package/dist/components/AssociationList/index.js.map +1 -0
- package/dist/components/Avatar/index.cjs +9 -7
- package/dist/components/Avatar/index.d.cts +45 -14
- package/dist/components/Avatar/index.d.ts +45 -14
- package/dist/components/Avatar/index.js +3 -1
- package/dist/components/AvatarGroup/index.cjs +20 -0
- package/dist/components/AvatarGroup/index.cjs.map +1 -0
- package/dist/components/AvatarGroup/index.d.cts +57 -0
- package/dist/components/AvatarGroup/index.d.ts +57 -0
- package/dist/components/AvatarGroup/index.js +7 -0
- package/dist/components/AvatarGroup/index.js.map +1 -0
- package/dist/components/Button/index.cjs +3 -2
- package/dist/components/Button/index.js +2 -1
- package/dist/components/CalendarHeatmap/index.cjs +18 -0
- package/dist/components/CalendarHeatmap/index.cjs.map +1 -0
- package/dist/components/CalendarHeatmap/index.d.cts +47 -0
- package/dist/components/CalendarHeatmap/index.d.ts +47 -0
- package/dist/components/CalendarHeatmap/index.js +5 -0
- package/dist/components/CalendarHeatmap/index.js.map +1 -0
- package/dist/components/CalendarView/index.cjs +5 -4
- package/dist/components/CalendarView/index.js +3 -2
- package/dist/components/ClampedText/index.cjs +3 -2
- package/dist/components/ClampedText/index.js +2 -1
- package/dist/components/CollabStatus/index.cjs +6 -4
- package/dist/components/CollabStatus/index.d.cts +11 -0
- package/dist/components/CollabStatus/index.d.ts +11 -0
- package/dist/components/CollabStatus/index.js +3 -1
- package/dist/components/Collapsible/index.cjs +4 -4
- package/dist/components/Collapsible/index.d.cts +6 -0
- package/dist/components/Collapsible/index.d.ts +6 -0
- package/dist/components/Collapsible/index.js +1 -1
- package/dist/components/CompletenessMeter/index.cjs +22 -0
- package/dist/components/CompletenessMeter/index.cjs.map +1 -0
- package/dist/components/CompletenessMeter/index.d.cts +52 -0
- package/dist/components/CompletenessMeter/index.d.ts +52 -0
- package/dist/components/CompletenessMeter/index.js +5 -0
- package/dist/components/CompletenessMeter/index.js.map +1 -0
- package/dist/components/CustomizableDashboard/index.cjs +10 -9
- package/dist/components/CustomizableDashboard/index.js +3 -2
- package/dist/components/DateInput/index.d.cts +36 -4
- package/dist/components/DateInput/index.d.ts +36 -4
- package/dist/components/Dropdown/index.cjs +9 -8
- package/dist/components/Dropdown/index.js +2 -1
- package/dist/components/FieldHistory/index.cjs +34 -0
- package/dist/components/FieldHistory/index.cjs.map +1 -0
- package/dist/components/FieldHistory/index.d.cts +66 -0
- package/dist/components/FieldHistory/index.d.ts +66 -0
- package/dist/components/FieldHistory/index.js +21 -0
- package/dist/components/FieldHistory/index.js.map +1 -0
- package/dist/components/FloatingWindow/index.cjs +5 -4
- package/dist/components/FloatingWindow/index.js +3 -2
- package/dist/components/InlineEdit/index.cjs +20 -0
- package/dist/components/InlineEdit/index.cjs.map +1 -0
- package/dist/components/InlineEdit/index.d.cts +56 -0
- package/dist/components/InlineEdit/index.d.ts +56 -0
- package/dist/components/InlineEdit/index.js +7 -0
- package/dist/components/InlineEdit/index.js.map +1 -0
- package/dist/components/ListView/index.cjs +5 -4
- package/dist/components/ListView/index.js +3 -2
- package/dist/components/LogoUploader/index.cjs +18 -0
- package/dist/components/LogoUploader/index.cjs.map +1 -0
- package/dist/components/LogoUploader/index.d.cts +49 -0
- package/dist/components/LogoUploader/index.d.ts +49 -0
- package/dist/components/LogoUploader/index.js +5 -0
- package/dist/components/LogoUploader/index.js.map +1 -0
- package/dist/components/Markdown/index.cjs +17 -16
- package/dist/components/Markdown/index.js +8 -7
- package/dist/components/MediaEditor/index.cjs +9 -8
- package/dist/components/MediaEditor/index.js +4 -3
- package/dist/components/MediaFeed/index.cjs +8 -5
- package/dist/components/MediaFeed/index.js +7 -4
- package/dist/components/MediaPlayer/index.cjs +6 -5
- package/dist/components/MediaPlayer/index.js +3 -2
- package/dist/components/MegaMenu/index.cjs +2 -1
- package/dist/components/MegaMenu/index.js +2 -1
- package/dist/components/PhiMask/index.cjs +18 -0
- package/dist/components/PhiMask/index.cjs.map +1 -0
- package/dist/components/PhiMask/index.d.cts +45 -0
- package/dist/components/PhiMask/index.d.ts +45 -0
- package/dist/components/PhiMask/index.js +5 -0
- package/dist/components/PhiMask/index.js.map +1 -0
- package/dist/components/PhoneInput/index.d.cts +3 -36
- package/dist/components/PhoneInput/index.d.ts +3 -36
- package/dist/components/PropertyList/index.cjs +25 -0
- package/dist/components/PropertyList/index.cjs.map +1 -0
- package/dist/components/PropertyList/index.d.cts +71 -0
- package/dist/components/PropertyList/index.d.ts +71 -0
- package/dist/components/PropertyList/index.js +12 -0
- package/dist/components/PropertyList/index.js.map +1 -0
- package/dist/components/RadialExplorer/index.cjs +2 -1
- package/dist/components/RadialExplorer/index.js +2 -1
- package/dist/components/Rating/index.cjs +28 -0
- package/dist/components/Rating/index.cjs.map +1 -0
- package/dist/components/Rating/index.d.cts +85 -0
- package/dist/components/Rating/index.d.ts +85 -0
- package/dist/components/Rating/index.js +7 -0
- package/dist/components/Rating/index.js.map +1 -0
- package/dist/components/RecordHeader/index.cjs +29 -0
- package/dist/components/RecordHeader/index.cjs.map +1 -0
- package/dist/components/RecordHeader/index.d.cts +86 -0
- package/dist/components/RecordHeader/index.d.ts +86 -0
- package/dist/components/RecordHeader/index.js +16 -0
- package/dist/components/RecordHeader/index.js.map +1 -0
- package/dist/components/RecordLayout/index.cjs +21 -0
- package/dist/components/RecordLayout/index.cjs.map +1 -0
- package/dist/components/RecordLayout/index.d.cts +40 -0
- package/dist/components/RecordLayout/index.d.ts +40 -0
- package/dist/components/RecordLayout/index.js +8 -0
- package/dist/components/RecordLayout/index.js.map +1 -0
- package/dist/components/RichTextEditor/index.cjs +8 -6
- package/dist/components/RichTextEditor/index.js +5 -3
- package/dist/components/SectionSpyNav/index.cjs +2 -1
- package/dist/components/SectionSpyNav/index.js +2 -1
- package/dist/components/SuperChat/index.cjs +22 -18
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.js +10 -6
- package/dist/components/SuperChat/index.js.map +1 -1
- package/dist/components/SuperChat/plugins/index.cjs +5 -4
- package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
- package/dist/components/SuperChat/plugins/index.js +4 -3
- package/dist/components/SuperChat/plugins/index.js.map +1 -1
- package/dist/components/Tabs/index.cjs +9 -7
- package/dist/components/Tabs/index.d.cts +12 -1
- package/dist/components/Tabs/index.d.ts +12 -1
- package/dist/components/Tabs/index.js +3 -1
- package/dist/components/TagEditor/index.cjs +20 -0
- package/dist/components/TagEditor/index.cjs.map +1 -0
- package/dist/components/TagEditor/index.d.cts +46 -0
- package/dist/components/TagEditor/index.d.ts +46 -0
- package/dist/components/TagEditor/index.js +7 -0
- package/dist/components/TagEditor/index.js.map +1 -0
- package/dist/components/UserPicker/index.cjs +24 -0
- package/dist/components/UserPicker/index.cjs.map +1 -0
- package/dist/components/UserPicker/index.d.cts +60 -0
- package/dist/components/UserPicker/index.d.ts +60 -0
- package/dist/components/UserPicker/index.js +11 -0
- package/dist/components/UserPicker/index.js.map +1 -0
- package/dist/components/ViewSet/index.cjs +6 -5
- package/dist/components/ViewSet/index.d.cts +2 -1
- package/dist/components/ViewSet/index.d.ts +2 -1
- package/dist/components/ViewSet/index.js +5 -4
- package/dist/components/ViewSwitcher/index.d.cts +39 -4
- package/dist/components/ViewSwitcher/index.d.ts +39 -4
- package/dist/datavis.cjs +3 -2
- package/dist/datavis.cjs.map +1 -1
- package/dist/datavis.js +2 -1
- package/dist/datavis.js.map +1 -1
- package/dist/esheet.cjs +8 -6
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.js +5 -3
- package/dist/esheet.js.map +1 -1
- package/dist/hooks/index.cjs +53 -27
- package/dist/hooks/index.d.cts +91 -6
- package/dist/hooks/index.d.ts +91 -6
- package/dist/hooks/index.js +5 -3
- package/dist/index.cjs +1258 -714
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1253 -168
- package/dist/index.d.ts +1253 -168
- package/dist/index.js +536 -168
- package/dist/index.js.map +1 -1
- package/dist/org-chart.cjs +1302 -0
- package/dist/org-chart.cjs.map +1 -0
- package/dist/org-chart.d.cts +164 -0
- package/dist/org-chart.d.ts +164 -0
- package/dist/org-chart.js +1277 -0
- package/dist/org-chart.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/{index-DoYYWsNc.d.cts → types-CDeBNZiE.d.cts} +1 -36
- package/dist/{index-DoYYWsNc.d.ts → types-CDeBNZiE.d.ts} +1 -36
- package/package.json +22 -2
- package/dist/CsvBlock-FX5YNGNE.cjs +0 -17
- package/dist/CsvBlock-VLMG7GUO.js +0 -8
- package/dist/HtmlPreviewBlock-5JE7L3GR.js +0 -8
- package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +0 -17
- package/dist/MermaidBlock-3XHFBAMV.js +0 -8
- package/dist/MermaidBlock-RZ75RPZA.cjs +0 -17
- package/dist/SurveyBlock-MUVJ3JUI.js +0 -8
- package/dist/SurveyBlock-VH47YXZC.cjs +0 -17
- package/dist/chunk-35Y4ILCU.cjs.map +0 -1
- package/dist/chunk-6N6LIAUJ.cjs +0 -80
- package/dist/chunk-6N6LIAUJ.cjs.map +0 -1
- package/dist/chunk-7ZV67VZE.js.map +0 -1
- package/dist/chunk-7ZVTLTJF.js +0 -109
- package/dist/chunk-7ZVTLTJF.js.map +0 -1
- package/dist/chunk-DVOQ3JNO.js.map +0 -1
- package/dist/chunk-GBUVIGD5.js.map +0 -1
- package/dist/chunk-HZ4MBUC3.js.map +0 -1
- package/dist/chunk-JBIGSP2T.js.map +0 -1
- package/dist/chunk-JEIW7BSV.cjs.map +0 -1
- package/dist/chunk-KRU6IGV7.js.map +0 -1
- package/dist/chunk-LHBWRMNC.cjs.map +0 -1
- package/dist/chunk-MLAWXPRY.js.map +0 -1
- package/dist/chunk-P7UMS4E6.cjs.map +0 -1
- package/dist/chunk-QURJVPRH.cjs.map +0 -1
- package/dist/chunk-SVSHA7XV.js.map +0 -1
- package/dist/chunk-UBSH27C2.js +0 -78
- package/dist/chunk-UBSH27C2.js.map +0 -1
- package/dist/chunk-VROIMIHB.cjs.map +0 -1
- package/dist/chunk-X4LBUPJO.cjs.map +0 -1
- package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
- package/dist/chunk-ZTMYKAVU.cjs.map +0 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { groupByDay, formatDayLabel, withLocale } from './chunk-YGS2TRMP.js';
|
|
2
|
+
import { RecordState } from './chunk-Y424YL55.js';
|
|
3
|
+
import { Avatar } from './chunk-TI3TQQ7F.js';
|
|
4
|
+
import { toDateTime } from './chunk-3YBS4WUQ.js';
|
|
5
|
+
import { Select } from './chunk-VCI2Y7ST.js';
|
|
6
|
+
import { cn } from './chunk-TQONQSJO.js';
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { DateTime } from 'luxon';
|
|
9
|
+
import { ArrowRight } from 'lucide-react';
|
|
10
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
11
|
+
|
|
12
|
+
var defaultFieldHistoryLabels = {
|
|
13
|
+
loading: "Loading history",
|
|
14
|
+
empty: "No changes recorded",
|
|
15
|
+
error: "Could not load history",
|
|
16
|
+
retry: "Try again",
|
|
17
|
+
emptyValue: "Empty",
|
|
18
|
+
from: "Changed from",
|
|
19
|
+
to: "to",
|
|
20
|
+
fieldFilter: "Field",
|
|
21
|
+
allFields: "All fields",
|
|
22
|
+
today: "Today",
|
|
23
|
+
yesterday: "Yesterday",
|
|
24
|
+
undated: "Undated"
|
|
25
|
+
};
|
|
26
|
+
var ALL = "__all__";
|
|
27
|
+
var isBlank = (value) => value === null || value === void 0 || value === "";
|
|
28
|
+
function FieldHistoryInner({
|
|
29
|
+
items,
|
|
30
|
+
loading = false,
|
|
31
|
+
error = null,
|
|
32
|
+
onRetry,
|
|
33
|
+
locale,
|
|
34
|
+
timeZone = "local",
|
|
35
|
+
now,
|
|
36
|
+
defaultField,
|
|
37
|
+
formatValue,
|
|
38
|
+
emptyState,
|
|
39
|
+
labels,
|
|
40
|
+
classNames,
|
|
41
|
+
headingLevel: Heading = "h3",
|
|
42
|
+
className,
|
|
43
|
+
...rest
|
|
44
|
+
}, ref) {
|
|
45
|
+
const text = { ...defaultFieldHistoryLabels, ...labels };
|
|
46
|
+
const baseId = React.useId();
|
|
47
|
+
const [fieldState, setField] = React.useState(defaultField ?? ALL);
|
|
48
|
+
const reference = now ?? /* @__PURE__ */ new Date();
|
|
49
|
+
const fields = React.useMemo(
|
|
50
|
+
() => [...new Set(items.map((e) => e.field))].sort(),
|
|
51
|
+
[items]
|
|
52
|
+
);
|
|
53
|
+
const field = fields.includes(fieldState) ? fieldState : ALL;
|
|
54
|
+
const visible = field === ALL ? items : items.filter((e) => e.field === field);
|
|
55
|
+
const value = (v, entry) => isBlank(v) ? /* @__PURE__ */ jsx("span", { className: "italic", children: text.emptyValue }) : formatValue?.(v, entry) ?? String(v);
|
|
56
|
+
const renderEntry = (entry) => {
|
|
57
|
+
const dt = toDateTime(entry.changedAt, timeZone);
|
|
58
|
+
const localDt = dt && withLocale(dt, locale);
|
|
59
|
+
return /* @__PURE__ */ jsxs(
|
|
60
|
+
"li",
|
|
61
|
+
{
|
|
62
|
+
"data-slot": "field-history-entry",
|
|
63
|
+
className: cn("flex items-start gap-3 px-3 py-3", classNames?.entry),
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ jsx(
|
|
66
|
+
Avatar,
|
|
67
|
+
{
|
|
68
|
+
size: "sm",
|
|
69
|
+
name: entry.changedBy?.name,
|
|
70
|
+
src: entry.changedBy?.avatarUrl,
|
|
71
|
+
alt: "",
|
|
72
|
+
"aria-hidden": true,
|
|
73
|
+
className: "shrink-0"
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
77
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
|
|
78
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground min-w-0 flex-1 truncate text-sm font-medium", children: entry.field }),
|
|
79
|
+
localDt && /* @__PURE__ */ jsx(
|
|
80
|
+
"time",
|
|
81
|
+
{
|
|
82
|
+
dateTime: localDt.toISO() ?? void 0,
|
|
83
|
+
title: localDt.toLocaleString(DateTime.DATETIME_FULL),
|
|
84
|
+
className: "text-muted-foreground shrink-0 text-xs",
|
|
85
|
+
children: localDt.toRelative({
|
|
86
|
+
base: DateTime.fromJSDate(reference)
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
] }),
|
|
91
|
+
/* @__PURE__ */ jsxs(
|
|
92
|
+
"p",
|
|
93
|
+
{
|
|
94
|
+
"data-slot": "field-history-value",
|
|
95
|
+
className: cn(
|
|
96
|
+
"mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm",
|
|
97
|
+
classNames?.value
|
|
98
|
+
),
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: text.from }),
|
|
101
|
+
/* @__PURE__ */ jsx("del", { className: "text-muted-foreground line-through", children: value(entry.from, entry) }),
|
|
102
|
+
/* @__PURE__ */ jsx(
|
|
103
|
+
ArrowRight,
|
|
104
|
+
{
|
|
105
|
+
className: "text-muted-foreground size-3.5 shrink-0 rtl:rotate-180",
|
|
106
|
+
"aria-hidden": true
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: text.to }),
|
|
110
|
+
/* @__PURE__ */ jsx("ins", { className: "text-foreground no-underline", children: value(entry.to, entry) })
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
(entry.changedBy || entry.source) && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: [entry.changedBy?.name, entry.source].filter(Boolean).join(" \xB7 ") })
|
|
115
|
+
] })
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
entry.id
|
|
119
|
+
);
|
|
120
|
+
};
|
|
121
|
+
let body;
|
|
122
|
+
if (error) {
|
|
123
|
+
body = /* @__PURE__ */ jsx(
|
|
124
|
+
RecordState,
|
|
125
|
+
{
|
|
126
|
+
kind: "error",
|
|
127
|
+
slot: "field-history-state",
|
|
128
|
+
message: text.error,
|
|
129
|
+
retryLabel: text.retry,
|
|
130
|
+
onRetry,
|
|
131
|
+
className: classNames?.state
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
} else if (loading) {
|
|
135
|
+
body = /* @__PURE__ */ jsx(
|
|
136
|
+
RecordState,
|
|
137
|
+
{
|
|
138
|
+
kind: "loading",
|
|
139
|
+
slot: "field-history-state",
|
|
140
|
+
message: text.loading,
|
|
141
|
+
className: classNames?.state
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
} else if (visible.length === 0) {
|
|
145
|
+
body = emptyState ?? /* @__PURE__ */ jsx(
|
|
146
|
+
RecordState,
|
|
147
|
+
{
|
|
148
|
+
kind: "empty",
|
|
149
|
+
slot: "field-history-state",
|
|
150
|
+
message: text.empty,
|
|
151
|
+
className: classNames?.state
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
} else {
|
|
155
|
+
body = groupByDay(visible, (e) => e.changedAt, timeZone).map((day) => {
|
|
156
|
+
const headingId = `${baseId}-${day.key || "none"}`;
|
|
157
|
+
return /* @__PURE__ */ jsxs(
|
|
158
|
+
"section",
|
|
159
|
+
{
|
|
160
|
+
"aria-labelledby": headingId,
|
|
161
|
+
"data-slot": "field-history-section",
|
|
162
|
+
className: classNames?.section,
|
|
163
|
+
children: [
|
|
164
|
+
/* @__PURE__ */ jsx(
|
|
165
|
+
Heading,
|
|
166
|
+
{
|
|
167
|
+
id: headingId,
|
|
168
|
+
"data-slot": "field-history-day-header",
|
|
169
|
+
className: cn(
|
|
170
|
+
"border-border bg-card text-muted-foreground sticky top-0 z-10 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase",
|
|
171
|
+
classNames?.dayHeader
|
|
172
|
+
),
|
|
173
|
+
children: formatDayLabel(day.key, {
|
|
174
|
+
now: reference,
|
|
175
|
+
zone: timeZone,
|
|
176
|
+
locale,
|
|
177
|
+
today: text.today,
|
|
178
|
+
yesterday: text.yesterday,
|
|
179
|
+
undated: text.undated
|
|
180
|
+
})
|
|
181
|
+
}
|
|
182
|
+
),
|
|
183
|
+
/* @__PURE__ */ jsx("ul", { className: "divide-border divide-y", children: day.items.map(renderEntry) })
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
day.key
|
|
187
|
+
);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return /* @__PURE__ */ jsxs(
|
|
191
|
+
"div",
|
|
192
|
+
{
|
|
193
|
+
ref,
|
|
194
|
+
"data-slot": "field-history",
|
|
195
|
+
className: cn(
|
|
196
|
+
"border-border bg-card overflow-hidden rounded-lg border",
|
|
197
|
+
className
|
|
198
|
+
),
|
|
199
|
+
...rest,
|
|
200
|
+
children: [
|
|
201
|
+
fields.length > 1 && !loading && !error && /* @__PURE__ */ jsx(
|
|
202
|
+
"div",
|
|
203
|
+
{
|
|
204
|
+
"data-slot": "field-history-toolbar",
|
|
205
|
+
className: cn("border-border border-b p-3", classNames?.toolbar),
|
|
206
|
+
children: /* @__PURE__ */ jsx(
|
|
207
|
+
Select,
|
|
208
|
+
{
|
|
209
|
+
size: "sm",
|
|
210
|
+
label: text.fieldFilter,
|
|
211
|
+
hideLabel: true,
|
|
212
|
+
value: field,
|
|
213
|
+
onValueChange: setField,
|
|
214
|
+
options: [
|
|
215
|
+
{ value: ALL, label: text.allFields },
|
|
216
|
+
...fields.map((f) => ({ value: f, label: f }))
|
|
217
|
+
],
|
|
218
|
+
className: "sm:max-w-xs"
|
|
219
|
+
}
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
),
|
|
223
|
+
body
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
var FieldHistory = React.forwardRef(FieldHistoryInner);
|
|
229
|
+
FieldHistory.displayName = "FieldHistory";
|
|
230
|
+
|
|
231
|
+
export { FieldHistory, defaultFieldHistoryLabels };
|
|
232
|
+
//# sourceMappingURL=chunk-6N7NMOSV.js.map
|
|
233
|
+
//# sourceMappingURL=chunk-6N7NMOSV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/FieldHistory/FieldHistory.tsx"],"names":[],"mappings":"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","file":"chunk-6N7NMOSV.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { DateTime } from 'luxon';\nimport { ArrowRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Avatar } from '../Avatar';\nimport { Select } from '../Select';\nimport { toDateTime } from '../../views/types';\nimport {\n formatDayLabel,\n groupByDay,\n withLocale,\n} from '../ActivityFeed/dayGroups';\nimport { RecordState } from '../ActivityFeed/RecordState';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type FieldHistoryValue = string | number | boolean | null | undefined;\n\nexport interface FieldHistoryActor {\n name: string;\n avatarUrl?: string;\n}\n\nexport interface FieldHistoryEntry<V = FieldHistoryValue> {\n id: string;\n /** Display label of the changed field. */\n field: string;\n from?: V;\n to?: V;\n /** ISO string or `Date`. */\n changedAt: string | Date;\n changedBy?: FieldHistoryActor;\n /** Where the change came from, e.g. \"Import\" or \"API\". */\n source?: string;\n}\n\nexport interface FieldHistoryLabels {\n loading: string;\n empty: string;\n error: string;\n retry: string;\n /** Shown in place of a blank value. */\n emptyValue: string;\n /** Screen-reader prefix for the old value. */\n from: string;\n /** Screen-reader prefix for the new value. */\n to: string;\n fieldFilter: string;\n allFields: string;\n today: string;\n yesterday: string;\n undated: string;\n}\n\nexport const defaultFieldHistoryLabels: FieldHistoryLabels = {\n loading: 'Loading history',\n empty: 'No changes recorded',\n error: 'Could not load history',\n retry: 'Try again',\n emptyValue: 'Empty',\n from: 'Changed from',\n to: 'to',\n fieldFilter: 'Field',\n allFields: 'All fields',\n today: 'Today',\n yesterday: 'Yesterday',\n undated: 'Undated',\n};\n\nexport type FieldHistorySlot =\n | 'toolbar'\n | 'section'\n | 'dayHeader'\n | 'entry'\n | 'value'\n | 'state';\n\nexport interface FieldHistoryProps<V = FieldHistoryValue> extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n items: FieldHistoryEntry<V>[];\n loading?: boolean;\n error?: Error | null;\n onRetry?: () => void;\n locale?: string;\n /** IANA zone for day boundaries. Defaults to local. */\n timeZone?: string;\n /** Pins \"now\" for relative times in stories and tests. */\n now?: Date;\n /** Field shown first; the user can change it. Omit for all fields. */\n defaultField?: string;\n /** Renders a non-empty value, e.g. a currency or a status badge. */\n formatValue?: (value: V, entry: FieldHistoryEntry<V>) => React.ReactNode;\n emptyState?: React.ReactNode;\n labels?: Partial<FieldHistoryLabels>;\n classNames?: Partial<Record<FieldHistorySlot, string>>;\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\nconst ALL = '__all__';\n\nconst isBlank = (value: unknown) =>\n value === null || value === undefined || value === '';\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction FieldHistoryInner<V = FieldHistoryValue>(\n {\n items,\n loading = false,\n error = null,\n onRetry,\n locale,\n timeZone = 'local',\n now,\n defaultField,\n formatValue,\n emptyState,\n labels,\n classNames,\n headingLevel: Heading = 'h3',\n className,\n ...rest\n }: FieldHistoryProps<V>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const text = { ...defaultFieldHistoryLabels, ...labels };\n const baseId = React.useId();\n const [fieldState, setField] = React.useState(defaultField ?? ALL);\n const reference = now ?? new Date();\n\n const fields = React.useMemo(\n () => [...new Set(items.map((e) => e.field))].sort(),\n [items]\n );\n // A field no longer in `items` falls back to all, so the history can't go blank.\n const field = fields.includes(fieldState) ? fieldState : ALL;\n const visible =\n field === ALL ? items : items.filter((e) => e.field === field);\n\n const value = (v: V | undefined, entry: FieldHistoryEntry<V>) =>\n isBlank(v) ? (\n <span className=\"italic\">{text.emptyValue}</span>\n ) : (\n (formatValue?.(v as V, entry) ?? String(v))\n );\n\n const renderEntry = (entry: FieldHistoryEntry<V>) => {\n const dt = toDateTime(entry.changedAt, timeZone);\n const localDt = dt && withLocale(dt, locale);\n return (\n <li\n key={entry.id}\n data-slot=\"field-history-entry\"\n className={cn('flex items-start gap-3 px-3 py-3', classNames?.entry)}\n >\n <Avatar\n size=\"sm\"\n name={entry.changedBy?.name}\n src={entry.changedBy?.avatarUrl}\n alt=\"\"\n aria-hidden\n className=\"shrink-0\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"text-foreground min-w-0 flex-1 truncate text-sm font-medium\">\n {entry.field}\n </span>\n {localDt && (\n <time\n dateTime={localDt.toISO() ?? undefined}\n title={localDt.toLocaleString(DateTime.DATETIME_FULL)}\n className=\"text-muted-foreground shrink-0 text-xs\"\n >\n {localDt.toRelative({\n base: DateTime.fromJSDate(reference),\n })}\n </time>\n )}\n </div>\n <p\n data-slot=\"field-history-value\"\n className={cn(\n 'mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm',\n classNames?.value\n )}\n >\n <span className=\"sr-only\">{text.from}</span>\n <del className=\"text-muted-foreground line-through\">\n {value(entry.from, entry)}\n </del>\n <ArrowRight\n className=\"text-muted-foreground size-3.5 shrink-0 rtl:rotate-180\"\n aria-hidden\n />\n <span className=\"sr-only\">{text.to}</span>\n <ins className=\"text-foreground no-underline\">\n {value(entry.to, entry)}\n </ins>\n </p>\n {(entry.changedBy || entry.source) && (\n <p className=\"text-muted-foreground mt-1 text-xs\">\n {[entry.changedBy?.name, entry.source]\n .filter(Boolean)\n .join(' · ')}\n </p>\n )}\n </div>\n </li>\n );\n };\n\n let body: React.ReactNode;\n if (error) {\n body = (\n <RecordState\n kind=\"error\"\n slot=\"field-history-state\"\n message={text.error}\n retryLabel={text.retry}\n onRetry={onRetry}\n className={classNames?.state}\n />\n );\n } else if (loading) {\n body = (\n <RecordState\n kind=\"loading\"\n slot=\"field-history-state\"\n message={text.loading}\n className={classNames?.state}\n />\n );\n } else if (visible.length === 0) {\n body = emptyState ?? (\n <RecordState\n kind=\"empty\"\n slot=\"field-history-state\"\n message={text.empty}\n className={classNames?.state}\n />\n );\n } else {\n body = groupByDay(visible, (e) => e.changedAt, timeZone).map((day) => {\n const headingId = `${baseId}-${day.key || 'none'}`;\n return (\n <section\n key={day.key}\n aria-labelledby={headingId}\n data-slot=\"field-history-section\"\n className={classNames?.section}\n >\n <Heading\n id={headingId}\n data-slot=\"field-history-day-header\"\n className={cn(\n 'border-border bg-card text-muted-foreground sticky top-0 z-10 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase',\n classNames?.dayHeader\n )}\n >\n {formatDayLabel(day.key, {\n now: reference,\n zone: timeZone,\n locale,\n today: text.today,\n yesterday: text.yesterday,\n undated: text.undated,\n })}\n </Heading>\n <ul className=\"divide-border divide-y\">\n {day.items.map(renderEntry)}\n </ul>\n </section>\n );\n });\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"field-history\"\n className={cn(\n 'border-border bg-card overflow-hidden rounded-lg border',\n className\n )}\n {...rest}\n >\n {fields.length > 1 && !loading && !error && (\n <div\n data-slot=\"field-history-toolbar\"\n className={cn('border-border border-b p-3', classNames?.toolbar)}\n >\n <Select\n size=\"sm\"\n label={text.fieldFilter}\n hideLabel\n value={field}\n onValueChange={setField}\n options={[\n { value: ALL, label: text.allFields },\n ...fields.map((f) => ({ value: f, label: f })),\n ]}\n className=\"sm:max-w-xs\"\n />\n </div>\n )}\n {body}\n </div>\n );\n}\n\n/**\n * The change log of a record's fields, grouped by day. Declared\n * `parameters.catalog.collection` — its load states are part of the API.\n */\nexport const FieldHistory = React.forwardRef(FieldHistoryInner) as <\n V = FieldHistoryValue,\n>(\n props: FieldHistoryProps<V> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => React.ReactElement;\n\n(FieldHistory as React.FC).displayName = 'FieldHistory';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-6TTCZY3P.cjs"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkANMX7YDL_cjs = require('./chunk-ANMX7YDL.cjs');
|
|
4
4
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var lucideReact = require('lucide-react');
|
|
@@ -218,7 +218,7 @@ var FloatingWindow = React__namespace.forwardRef(
|
|
|
218
218
|
),
|
|
219
219
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-window-controls": true, className: "flex items-center gap-1", children: [
|
|
220
220
|
onMinimize && /* @__PURE__ */ jsxRuntime.jsx(
|
|
221
|
-
|
|
221
|
+
chunkANMX7YDL_cjs.Button,
|
|
222
222
|
{
|
|
223
223
|
type: "button",
|
|
224
224
|
variant: "ghost",
|
|
@@ -231,7 +231,7 @@ var FloatingWindow = React__namespace.forwardRef(
|
|
|
231
231
|
}
|
|
232
232
|
),
|
|
233
233
|
onPopOut && /* @__PURE__ */ jsxRuntime.jsx(
|
|
234
|
-
|
|
234
|
+
chunkANMX7YDL_cjs.Button,
|
|
235
235
|
{
|
|
236
236
|
type: "button",
|
|
237
237
|
variant: "ghost",
|
|
@@ -244,7 +244,7 @@ var FloatingWindow = React__namespace.forwardRef(
|
|
|
244
244
|
}
|
|
245
245
|
),
|
|
246
246
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
247
|
-
|
|
247
|
+
chunkANMX7YDL_cjs.Button,
|
|
248
248
|
{
|
|
249
249
|
type: "button",
|
|
250
250
|
variant: "ghost",
|
|
@@ -305,7 +305,7 @@ var MinimizedWindow = React__namespace.forwardRef(
|
|
|
305
305
|
),
|
|
306
306
|
children: [
|
|
307
307
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
308
|
-
|
|
308
|
+
chunkANMX7YDL_cjs.Button,
|
|
309
309
|
{
|
|
310
310
|
type: "button",
|
|
311
311
|
variant: "ghost",
|
|
@@ -319,7 +319,7 @@ var MinimizedWindow = React__namespace.forwardRef(
|
|
|
319
319
|
}
|
|
320
320
|
),
|
|
321
321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
322
|
-
|
|
322
|
+
chunkANMX7YDL_cjs.Button,
|
|
323
323
|
{
|
|
324
324
|
type: "button",
|
|
325
325
|
variant: "ghost",
|
|
@@ -339,5 +339,5 @@ MinimizedWindow.displayName = "MinimizedWindow";
|
|
|
339
339
|
|
|
340
340
|
exports.FloatingWindow = FloatingWindow;
|
|
341
341
|
exports.MinimizedWindow = MinimizedWindow;
|
|
342
|
-
//# sourceMappingURL=chunk-
|
|
343
|
-
//# sourceMappingURL=chunk-
|
|
342
|
+
//# sourceMappingURL=chunk-7C5W744U.cjs.map
|
|
343
|
+
//# sourceMappingURL=chunk-7C5W744U.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/FloatingWindow/FloatingWindow.tsx"],"names":["React","jsxs","cn","jsx","Button","Minus","ExternalLink","X","Square"],"mappings":"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","file":"chunk-TTSSUOEV.cjs","sourcesContent":["import * as React from 'react';\nimport { Minus, Square, ExternalLink, X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Button } from '../Button';\n\ntype ResizeDirection = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';\n\nexport interface FloatingWindowProps {\n /** Whether the window is rendered. */\n open: boolean;\n /** Whether the window is collapsed to a minimized bar (renders nothing). */\n minimized?: boolean;\n /** Window title shown in the header. */\n title: React.ReactNode;\n /** Window body content. */\n children: React.ReactNode;\n /** Footer content, typically action buttons. */\n footer?: React.ReactNode;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Called when the minimize control is activated. Hidden when omitted. */\n onMinimize?: () => void;\n /** Called when the pop-out control is activated. Hidden when omitted. */\n onPopOut?: () => void;\n /**\n * When `true` the window floats at a draggable position. When `false`\n * (default) it is centered over a dimmed overlay like a modal.\n */\n draggable?: boolean;\n /** Whether the window can be resized from its edges/corners. Default true. */\n resizable?: boolean;\n /** Initial width in pixels. Default 1024. */\n defaultWidth?: number;\n /** Initial height in pixels. Default 600. */\n defaultHeight?: number;\n /** Minimum width in pixels. Default 600. */\n minWidth?: number;\n /** Minimum height in pixels. Default 400. */\n minHeight?: number;\n /** Class applied to the window container. */\n className?: string;\n /** Accessible label for the dialog when the title is not text. */\n 'aria-label'?: string;\n}\n\n// Resize handles are genuinely physical: their geometry is tied to mouse\n// clientX/clientY drag math, and every edge/corner has a handle, so RTL users\n// lose nothing. Exempt from the RTL guard.\nconst RESIZE_HANDLES: { dir: ResizeDirection; className: string }[] = [\n { dir: 'nw', className: 'top-0 left-0 h-2 w-2 cursor-nw-resize' }, // rtl-ignore\n { dir: 'ne', className: 'top-0 right-0 h-2 w-2 cursor-ne-resize' }, // rtl-ignore\n { dir: 'sw', className: 'bottom-0 left-0 h-2 w-2 cursor-sw-resize' }, // rtl-ignore\n { dir: 'n', className: 'top-0 left-2 right-2 h-1 cursor-n-resize' }, // rtl-ignore\n { dir: 's', className: 'bottom-0 left-2 right-2 h-1 cursor-s-resize' }, // rtl-ignore\n { dir: 'w', className: 'left-0 top-2 bottom-2 w-1 cursor-w-resize' }, // rtl-ignore\n { dir: 'e', className: 'right-0 top-2 bottom-2 w-1 cursor-e-resize' }, // rtl-ignore\n];\n\n/**\n * A presentational floating window shell used for pop-out editors (notes,\n * letters, etc.). It can render as a centered modal-style window or as a\n * draggable, freely-positioned window, and supports edge/corner resizing.\n * Open/minimize/close state and footer actions are controlled via props so it\n * can be wired to any store.\n */\nconst FloatingWindow = React.forwardRef<HTMLDivElement, FloatingWindowProps>(\n (\n {\n open,\n minimized = false,\n title,\n children,\n footer,\n onClose,\n onMinimize,\n onPopOut,\n draggable = false,\n resizable = true,\n defaultWidth = 1024,\n defaultHeight = 600,\n minWidth = 600,\n minHeight = 400,\n className,\n 'aria-label': ariaLabel,\n },\n ref\n ) => {\n const [size, setSize] = React.useState({\n width: defaultWidth,\n height: defaultHeight,\n });\n const [position, setPosition] = React.useState({ x: 50, y: 50 });\n\n const dragRef = React.useRef<{ x: number; y: number } | null>(null);\n const resizeRef = React.useRef<{\n dir: ResizeDirection;\n startX: number;\n startY: number;\n startW: number;\n startH: number;\n startPosX: number;\n startPosY: number;\n } | null>(null);\n\n const titleId = React.useId();\n\n const handleResizeStart = (e: React.MouseEvent, dir: ResizeDirection) => {\n e.preventDefault();\n e.stopPropagation();\n resizeRef.current = {\n dir,\n startX: e.clientX,\n startY: e.clientY,\n startW: size.width,\n startH: size.height,\n startPosX: position.x,\n startPosY: position.y,\n };\n };\n\n const handleDragStart = (e: React.MouseEvent) => {\n if (!draggable) return;\n if ((e.target as HTMLElement).closest('[data-window-controls]')) return;\n const rect = (e.currentTarget as HTMLElement)\n .closest('[data-slot=\"floating-window\"]')!\n .getBoundingClientRect();\n dragRef.current = { x: e.clientX - rect.left, y: e.clientY - rect.top };\n };\n\n React.useEffect(() => {\n if (!open || minimized) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (dragRef.current) {\n setPosition({\n x: e.clientX - dragRef.current.x,\n y: e.clientY - dragRef.current.y,\n });\n return;\n }\n const r = resizeRef.current;\n if (!r) return;\n const deltaX = e.clientX - r.startX;\n const deltaY = e.clientY - r.startY;\n let newWidth = r.startW;\n let newHeight = r.startH;\n let newX = r.startPosX;\n let newY = r.startPosY;\n\n if (r.dir.includes('e')) {\n newWidth = Math.max(\n minWidth,\n Math.min(window.innerWidth - 40, r.startW + deltaX)\n );\n }\n if (r.dir.includes('w')) {\n newWidth = Math.max(minWidth, r.startW - deltaX);\n if (draggable) newX = r.startPosX + (r.startW - newWidth);\n }\n if (r.dir.includes('s')) {\n newHeight = Math.max(\n minHeight,\n Math.min(window.innerHeight - 40, r.startH + deltaY)\n );\n }\n if (r.dir.includes('n')) {\n newHeight = Math.max(minHeight, r.startH - deltaY);\n if (draggable) newY = r.startPosY + (r.startH - newHeight);\n }\n\n setSize({ width: newWidth, height: newHeight });\n if (draggable && (r.dir.includes('w') || r.dir.includes('n'))) {\n setPosition({ x: newX, y: newY });\n }\n };\n\n const handleMouseUp = () => {\n dragRef.current = null;\n resizeRef.current = null;\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [open, minimized, draggable, minWidth, minHeight]);\n\n if (!open || minimized) return null;\n\n const windowEl = (\n <div\n ref={ref}\n data-slot=\"floating-window\"\n role=\"dialog\"\n aria-modal={draggable ? undefined : true}\n aria-labelledby={typeof title === 'string' ? titleId : undefined}\n aria-label={typeof title === 'string' ? undefined : ariaLabel}\n className={cn(\n 'bg-card text-card-foreground relative flex flex-col overflow-hidden rounded-lg shadow-2xl',\n draggable && 'border-primary-800 fixed border-2',\n className\n )}\n style={\n draggable\n ? {\n left: position.x,\n top: position.y,\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n zIndex: 50,\n }\n : {\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n }\n }\n >\n {resizable &&\n RESIZE_HANDLES.map((handle) => (\n <div\n key={handle.dir}\n aria-hidden=\"true\"\n className={cn('absolute z-10', handle.className)}\n onMouseDown={(e) => handleResizeStart(e, handle.dir)}\n />\n ))}\n {resizable && (\n <div\n aria-hidden=\"true\"\n // rtl-ignore -- physical se-corner grip, paired with clientX resize math\n className=\"hover:bg-muted/50 absolute right-0 bottom-0 z-10 h-4 w-4 cursor-se-resize rounded-tl\"\n onMouseDown={(e) => handleResizeStart(e, 'se')}\n >\n <svg\n className=\"text-muted-foreground/50 h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M22 22H20V20H22V22ZM22 18H20V16H22V18ZM18 22H16V20H18V22ZM22 14H20V12H22V14ZM18 18H16V16H18V18ZM14 22H12V20H14V22Z\" />\n </svg>\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- header acts as an optional drag handle; the controls inside remain keyboard accessible */}\n <div\n data-slot=\"floating-window-header\"\n className={cn(\n 'bg-primary-800 text-primary-foreground flex items-center justify-between rounded-t-lg px-4 py-3',\n draggable && 'cursor-move'\n )}\n onMouseDown={handleDragStart}\n >\n <h2\n id={typeof title === 'string' ? titleId : undefined}\n className=\"text-lg font-semibold\"\n >\n {title}\n </h2>\n <div data-window-controls className=\"flex items-center gap-1\">\n {onMinimize && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onMinimize}\n aria-label=\"Minimize\"\n title=\"Minimize\"\n >\n <Minus className=\"h-4 w-4\" />\n </Button>\n )}\n {onPopOut && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onPopOut}\n aria-label=\"Open in new window\"\n title=\"Open in new window\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n {/* eslint-disable jsx-a11y/no-noninteractive-tabindex */}\n <div\n data-slot=\"floating-window-content\"\n role=\"region\"\n className=\"flex-1 overflow-y-auto\"\n tabIndex={0}\n >\n {children}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-tabindex */}\n\n {footer && (\n <div\n data-slot=\"floating-window-footer\"\n className=\"border-border bg-card flex items-center justify-end gap-3 rounded-b-lg border-t px-6 py-4\"\n >\n {footer}\n </div>\n )}\n </div>\n );\n\n if (draggable) return windowEl;\n\n return (\n <div\n data-slot=\"floating-window-overlay\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n >\n {windowEl}\n </div>\n );\n }\n);\n\nFloatingWindow.displayName = 'FloatingWindow';\n\nexport interface MinimizedWindowProps {\n /** Title shown on the minimized bar. */\n title: React.ReactNode;\n /** Called when the bar is activated to restore the window. */\n onRestore: () => void;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Additional class for the minimized bar. */\n className?: string;\n}\n\n/**\n * A compact bar representing a minimized {@link FloatingWindow}. Render this\n * (typically in a docked tray) while the corresponding window is minimized.\n */\nconst MinimizedWindow = React.forwardRef<HTMLDivElement, MinimizedWindowProps>(\n ({ title, onRestore, onClose, className }, ref) => (\n <div\n ref={ref}\n data-slot=\"minimized-window\"\n className={cn(\n 'border-border bg-card flex min-w-[200px] items-center gap-2 rounded-lg border px-3 py-2 shadow-md',\n className\n )}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n onClick={onRestore}\n >\n <Square className=\"me-1 h-3 w-3\" />\n <span className=\"truncate text-sm\">{title}</span>\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"ms-auto h-6 w-6 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n )\n);\n\nMinimizedWindow.displayName = 'MinimizedWindow';\n\nexport { FloatingWindow, MinimizedWindow };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/FloatingWindow/FloatingWindow.tsx"],"names":["React","jsxs","cn","jsx","Button","Minus","ExternalLink","X","Square"],"mappings":"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","file":"chunk-7C5W744U.cjs","sourcesContent":["import * as React from 'react';\nimport { Minus, Square, ExternalLink, X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Button } from '../Button';\n\ntype ResizeDirection = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';\n\nexport interface FloatingWindowProps {\n /** Whether the window is rendered. */\n open: boolean;\n /** Whether the window is collapsed to a minimized bar (renders nothing). */\n minimized?: boolean;\n /** Window title shown in the header. */\n title: React.ReactNode;\n /** Window body content. */\n children: React.ReactNode;\n /** Footer content, typically action buttons. */\n footer?: React.ReactNode;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Called when the minimize control is activated. Hidden when omitted. */\n onMinimize?: () => void;\n /** Called when the pop-out control is activated. Hidden when omitted. */\n onPopOut?: () => void;\n /**\n * When `true` the window floats at a draggable position. When `false`\n * (default) it is centered over a dimmed overlay like a modal.\n */\n draggable?: boolean;\n /** Whether the window can be resized from its edges/corners. Default true. */\n resizable?: boolean;\n /** Initial width in pixels. Default 1024. */\n defaultWidth?: number;\n /** Initial height in pixels. Default 600. */\n defaultHeight?: number;\n /** Minimum width in pixels. Default 600. */\n minWidth?: number;\n /** Minimum height in pixels. Default 400. */\n minHeight?: number;\n /** Class applied to the window container. */\n className?: string;\n /** Accessible label for the dialog when the title is not text. */\n 'aria-label'?: string;\n}\n\n// Resize handles are genuinely physical: their geometry is tied to mouse\n// clientX/clientY drag math, and every edge/corner has a handle, so RTL users\n// lose nothing. Exempt from the RTL guard.\nconst RESIZE_HANDLES: { dir: ResizeDirection; className: string }[] = [\n { dir: 'nw', className: 'top-0 left-0 h-2 w-2 cursor-nw-resize' }, // rtl-ignore\n { dir: 'ne', className: 'top-0 right-0 h-2 w-2 cursor-ne-resize' }, // rtl-ignore\n { dir: 'sw', className: 'bottom-0 left-0 h-2 w-2 cursor-sw-resize' }, // rtl-ignore\n { dir: 'n', className: 'top-0 left-2 right-2 h-1 cursor-n-resize' }, // rtl-ignore\n { dir: 's', className: 'bottom-0 left-2 right-2 h-1 cursor-s-resize' }, // rtl-ignore\n { dir: 'w', className: 'left-0 top-2 bottom-2 w-1 cursor-w-resize' }, // rtl-ignore\n { dir: 'e', className: 'right-0 top-2 bottom-2 w-1 cursor-e-resize' }, // rtl-ignore\n];\n\n/**\n * A presentational floating window shell used for pop-out editors (notes,\n * letters, etc.). It can render as a centered modal-style window or as a\n * draggable, freely-positioned window, and supports edge/corner resizing.\n * Open/minimize/close state and footer actions are controlled via props so it\n * can be wired to any store.\n */\nconst FloatingWindow = React.forwardRef<HTMLDivElement, FloatingWindowProps>(\n (\n {\n open,\n minimized = false,\n title,\n children,\n footer,\n onClose,\n onMinimize,\n onPopOut,\n draggable = false,\n resizable = true,\n defaultWidth = 1024,\n defaultHeight = 600,\n minWidth = 600,\n minHeight = 400,\n className,\n 'aria-label': ariaLabel,\n },\n ref\n ) => {\n const [size, setSize] = React.useState({\n width: defaultWidth,\n height: defaultHeight,\n });\n const [position, setPosition] = React.useState({ x: 50, y: 50 });\n\n const dragRef = React.useRef<{ x: number; y: number } | null>(null);\n const resizeRef = React.useRef<{\n dir: ResizeDirection;\n startX: number;\n startY: number;\n startW: number;\n startH: number;\n startPosX: number;\n startPosY: number;\n } | null>(null);\n\n const titleId = React.useId();\n\n const handleResizeStart = (e: React.MouseEvent, dir: ResizeDirection) => {\n e.preventDefault();\n e.stopPropagation();\n resizeRef.current = {\n dir,\n startX: e.clientX,\n startY: e.clientY,\n startW: size.width,\n startH: size.height,\n startPosX: position.x,\n startPosY: position.y,\n };\n };\n\n const handleDragStart = (e: React.MouseEvent) => {\n if (!draggable) return;\n if ((e.target as HTMLElement).closest('[data-window-controls]')) return;\n const rect = (e.currentTarget as HTMLElement)\n .closest('[data-slot=\"floating-window\"]')!\n .getBoundingClientRect();\n dragRef.current = { x: e.clientX - rect.left, y: e.clientY - rect.top };\n };\n\n React.useEffect(() => {\n if (!open || minimized) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (dragRef.current) {\n setPosition({\n x: e.clientX - dragRef.current.x,\n y: e.clientY - dragRef.current.y,\n });\n return;\n }\n const r = resizeRef.current;\n if (!r) return;\n const deltaX = e.clientX - r.startX;\n const deltaY = e.clientY - r.startY;\n let newWidth = r.startW;\n let newHeight = r.startH;\n let newX = r.startPosX;\n let newY = r.startPosY;\n\n if (r.dir.includes('e')) {\n newWidth = Math.max(\n minWidth,\n Math.min(window.innerWidth - 40, r.startW + deltaX)\n );\n }\n if (r.dir.includes('w')) {\n newWidth = Math.max(minWidth, r.startW - deltaX);\n if (draggable) newX = r.startPosX + (r.startW - newWidth);\n }\n if (r.dir.includes('s')) {\n newHeight = Math.max(\n minHeight,\n Math.min(window.innerHeight - 40, r.startH + deltaY)\n );\n }\n if (r.dir.includes('n')) {\n newHeight = Math.max(minHeight, r.startH - deltaY);\n if (draggable) newY = r.startPosY + (r.startH - newHeight);\n }\n\n setSize({ width: newWidth, height: newHeight });\n if (draggable && (r.dir.includes('w') || r.dir.includes('n'))) {\n setPosition({ x: newX, y: newY });\n }\n };\n\n const handleMouseUp = () => {\n dragRef.current = null;\n resizeRef.current = null;\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [open, minimized, draggable, minWidth, minHeight]);\n\n if (!open || minimized) return null;\n\n const windowEl = (\n <div\n ref={ref}\n data-slot=\"floating-window\"\n role=\"dialog\"\n aria-modal={draggable ? undefined : true}\n aria-labelledby={typeof title === 'string' ? titleId : undefined}\n aria-label={typeof title === 'string' ? undefined : ariaLabel}\n className={cn(\n 'bg-card text-card-foreground relative flex flex-col overflow-hidden rounded-lg shadow-2xl',\n draggable && 'border-primary-800 fixed border-2',\n className\n )}\n style={\n draggable\n ? {\n left: position.x,\n top: position.y,\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n zIndex: 50,\n }\n : {\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n }\n }\n >\n {resizable &&\n RESIZE_HANDLES.map((handle) => (\n <div\n key={handle.dir}\n aria-hidden=\"true\"\n className={cn('absolute z-10', handle.className)}\n onMouseDown={(e) => handleResizeStart(e, handle.dir)}\n />\n ))}\n {resizable && (\n <div\n aria-hidden=\"true\"\n // rtl-ignore -- physical se-corner grip, paired with clientX resize math\n className=\"hover:bg-muted/50 absolute right-0 bottom-0 z-10 h-4 w-4 cursor-se-resize rounded-tl\"\n onMouseDown={(e) => handleResizeStart(e, 'se')}\n >\n <svg\n className=\"text-muted-foreground/50 h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M22 22H20V20H22V22ZM22 18H20V16H22V18ZM18 22H16V20H18V22ZM22 14H20V12H22V14ZM18 18H16V16H18V18ZM14 22H12V20H14V22Z\" />\n </svg>\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- header acts as an optional drag handle; the controls inside remain keyboard accessible */}\n <div\n data-slot=\"floating-window-header\"\n className={cn(\n 'bg-primary-800 text-primary-foreground flex items-center justify-between rounded-t-lg px-4 py-3',\n draggable && 'cursor-move'\n )}\n onMouseDown={handleDragStart}\n >\n <h2\n id={typeof title === 'string' ? titleId : undefined}\n className=\"text-lg font-semibold\"\n >\n {title}\n </h2>\n <div data-window-controls className=\"flex items-center gap-1\">\n {onMinimize && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onMinimize}\n aria-label=\"Minimize\"\n title=\"Minimize\"\n >\n <Minus className=\"h-4 w-4\" />\n </Button>\n )}\n {onPopOut && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onPopOut}\n aria-label=\"Open in new window\"\n title=\"Open in new window\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n {/* eslint-disable jsx-a11y/no-noninteractive-tabindex */}\n <div\n data-slot=\"floating-window-content\"\n role=\"region\"\n className=\"flex-1 overflow-y-auto\"\n tabIndex={0}\n >\n {children}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-tabindex */}\n\n {footer && (\n <div\n data-slot=\"floating-window-footer\"\n className=\"border-border bg-card flex items-center justify-end gap-3 rounded-b-lg border-t px-6 py-4\"\n >\n {footer}\n </div>\n )}\n </div>\n );\n\n if (draggable) return windowEl;\n\n return (\n <div\n data-slot=\"floating-window-overlay\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n >\n {windowEl}\n </div>\n );\n }\n);\n\nFloatingWindow.displayName = 'FloatingWindow';\n\nexport interface MinimizedWindowProps {\n /** Title shown on the minimized bar. */\n title: React.ReactNode;\n /** Called when the bar is activated to restore the window. */\n onRestore: () => void;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Additional class for the minimized bar. */\n className?: string;\n}\n\n/**\n * A compact bar representing a minimized {@link FloatingWindow}. Render this\n * (typically in a docked tray) while the corresponding window is minimized.\n */\nconst MinimizedWindow = React.forwardRef<HTMLDivElement, MinimizedWindowProps>(\n ({ title, onRestore, onClose, className }, ref) => (\n <div\n ref={ref}\n data-slot=\"minimized-window\"\n className={cn(\n 'border-border bg-card flex min-w-[200px] items-center gap-2 rounded-lg border px-3 py-2 shadow-md',\n className\n )}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n onClick={onRestore}\n >\n <Square className=\"me-1 h-3 w-3\" />\n <span className=\"truncate text-sm\">{title}</span>\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"ms-auto h-6 w-6 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n )\n);\n\nMinimizedWindow.displayName = 'MinimizedWindow';\n\nexport { FloatingWindow, MinimizedWindow };\n"]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { InlineEdit } from './chunk-M3VPGJMV.js';
|
|
2
|
+
import { CopyButton } from './chunk-5QZ73PZC.js';
|
|
3
|
+
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from './chunk-VSRO4PAI.js';
|
|
4
|
+
import { cn } from './chunk-TQONQSJO.js';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
|
+
import { ChevronDown } from 'lucide-react';
|
|
8
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
|
+
|
|
10
|
+
var defaultPropertyListLabels = {
|
|
11
|
+
empty: "\u2014",
|
|
12
|
+
copy: (label) => `Copy ${label}`,
|
|
13
|
+
copied: "Copied",
|
|
14
|
+
showEmpty: (count) => `Show ${count} empty field${count === 1 ? "" : "s"}`,
|
|
15
|
+
hideEmpty: (count) => `Hide ${count} empty field${count === 1 ? "" : "s"}`
|
|
16
|
+
};
|
|
17
|
+
var listVariants = cva("m-0", {
|
|
18
|
+
variants: {
|
|
19
|
+
density: { comfortable: "space-y-3", compact: "space-y-1" }
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: { density: "comfortable" }
|
|
22
|
+
});
|
|
23
|
+
var rowVariants = cva("min-w-0", {
|
|
24
|
+
variants: {
|
|
25
|
+
layout: {
|
|
26
|
+
stacked: "flex flex-col gap-0.5",
|
|
27
|
+
inline: "grid gap-0.5 sm:grid-cols-[minmax(7rem,40%)_minmax(0,1fr)] sm:items-baseline sm:gap-3"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
defaultVariants: { layout: "stacked" }
|
|
31
|
+
});
|
|
32
|
+
var toText = (value) => value == null ? "" : String(value);
|
|
33
|
+
function PropertyRows({
|
|
34
|
+
items,
|
|
35
|
+
layout,
|
|
36
|
+
density,
|
|
37
|
+
hideEmpty,
|
|
38
|
+
onSave,
|
|
39
|
+
labels,
|
|
40
|
+
inlineEditLabels
|
|
41
|
+
}) {
|
|
42
|
+
const [showEmpty, setShowEmpty] = React.useState(false);
|
|
43
|
+
const id = React.useId();
|
|
44
|
+
const isEmpty = (item) => toText(item.value).trim() === "";
|
|
45
|
+
const emptyCount = hideEmpty ? items.filter(isEmpty).length : 0;
|
|
46
|
+
const visible = hideEmpty && !showEmpty ? items.filter((i) => !isEmpty(i)) : items;
|
|
47
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
48
|
+
/* @__PURE__ */ jsx("dl", { "data-slot": "property-list-items", className: listVariants({ density }), children: visible.map((item, index) => {
|
|
49
|
+
const text = toText(item.value);
|
|
50
|
+
const editable = item.editable && !!onSave;
|
|
51
|
+
const hintId = `${id}-hint-${index}`;
|
|
52
|
+
return /* @__PURE__ */ jsxs(
|
|
53
|
+
"div",
|
|
54
|
+
{
|
|
55
|
+
"data-slot": "property-list-row",
|
|
56
|
+
className: rowVariants({ layout }),
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ jsx("dt", { className: "text-muted-foreground px-2 text-xs font-medium sm:text-sm", children: item.label }),
|
|
59
|
+
/* @__PURE__ */ jsxs("dd", { className: "m-0 min-w-0", children: [
|
|
60
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-1", children: [
|
|
61
|
+
/* @__PURE__ */ jsx(
|
|
62
|
+
InlineEdit,
|
|
63
|
+
{
|
|
64
|
+
className: "min-w-0 flex-1",
|
|
65
|
+
size: "sm",
|
|
66
|
+
label: item.label,
|
|
67
|
+
value: text,
|
|
68
|
+
type: item.type,
|
|
69
|
+
options: item.options,
|
|
70
|
+
validate: item.validate,
|
|
71
|
+
formatDisplay: item.render,
|
|
72
|
+
placeholder: editable ? item.placeholder ?? labels.empty : labels.empty,
|
|
73
|
+
readOnly: !editable,
|
|
74
|
+
labels: inlineEditLabels,
|
|
75
|
+
"aria-describedby": item.hint ? hintId : void 0,
|
|
76
|
+
onSave: (next) => onSave?.(item.key, next)
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
item.copyable && text && /* @__PURE__ */ jsx(
|
|
80
|
+
CopyButton,
|
|
81
|
+
{
|
|
82
|
+
value: text,
|
|
83
|
+
label: labels.copy(item.label),
|
|
84
|
+
copiedLabel: labels.copied
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
] }),
|
|
88
|
+
item.hint && /* @__PURE__ */ jsx(
|
|
89
|
+
"p",
|
|
90
|
+
{
|
|
91
|
+
id: hintId,
|
|
92
|
+
className: "text-muted-foreground mt-0.5 px-2 text-xs",
|
|
93
|
+
children: item.hint
|
|
94
|
+
}
|
|
95
|
+
)
|
|
96
|
+
] })
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
item.key
|
|
100
|
+
);
|
|
101
|
+
}) }),
|
|
102
|
+
emptyCount > 0 && /* @__PURE__ */ jsx(
|
|
103
|
+
"button",
|
|
104
|
+
{
|
|
105
|
+
type: "button",
|
|
106
|
+
"data-slot": "property-list-empty-toggle",
|
|
107
|
+
"aria-expanded": showEmpty,
|
|
108
|
+
onClick: () => setShowEmpty((v) => !v),
|
|
109
|
+
className: "text-muted-foreground hover:text-foreground focus-visible:ring-ring mt-1 rounded px-2 py-1 text-xs focus-visible:ring-2 focus-visible:outline-none",
|
|
110
|
+
children: showEmpty ? labels.hideEmpty(emptyCount) : labels.showEmpty(emptyCount)
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
] });
|
|
114
|
+
}
|
|
115
|
+
var PropertyList = React.forwardRef(
|
|
116
|
+
function PropertyList2({
|
|
117
|
+
items,
|
|
118
|
+
groups,
|
|
119
|
+
onSave,
|
|
120
|
+
hideEmpty,
|
|
121
|
+
layout,
|
|
122
|
+
density,
|
|
123
|
+
headingLevel = 3,
|
|
124
|
+
storageKey,
|
|
125
|
+
labels: labelOverrides,
|
|
126
|
+
inlineEditLabels,
|
|
127
|
+
className,
|
|
128
|
+
...props
|
|
129
|
+
}, ref) {
|
|
130
|
+
const labels = { ...defaultPropertyListLabels, ...labelOverrides };
|
|
131
|
+
const rowProps = {
|
|
132
|
+
layout: layout ?? "stacked",
|
|
133
|
+
density: density ?? "comfortable",
|
|
134
|
+
hideEmpty,
|
|
135
|
+
onSave,
|
|
136
|
+
labels,
|
|
137
|
+
inlineEditLabels
|
|
138
|
+
};
|
|
139
|
+
const Heading = `h${headingLevel}`;
|
|
140
|
+
return /* @__PURE__ */ jsx(
|
|
141
|
+
"div",
|
|
142
|
+
{
|
|
143
|
+
ref,
|
|
144
|
+
"data-slot": "property-list",
|
|
145
|
+
className: cn("min-w-0", className),
|
|
146
|
+
...props,
|
|
147
|
+
children: groups ? groups.map((group) => /* @__PURE__ */ jsxs(
|
|
148
|
+
Collapsible,
|
|
149
|
+
{
|
|
150
|
+
defaultOpen: group.defaultOpen ?? true,
|
|
151
|
+
storageKey: storageKey && `${storageKey}:${group.id}`,
|
|
152
|
+
"data-slot": "property-list-group",
|
|
153
|
+
className: "border-border border-b py-1 last:border-b-0",
|
|
154
|
+
children: [
|
|
155
|
+
/* @__PURE__ */ jsx(Heading, { className: "m-0", children: /* @__PURE__ */ jsxs(CollapsibleTrigger, { className: "group text-foreground hover:bg-muted focus-visible:ring-ring flex w-full items-center gap-2 rounded-md px-2 py-2 text-start text-sm font-semibold focus-visible:ring-2 focus-visible:outline-none", children: [
|
|
156
|
+
/* @__PURE__ */ jsx(
|
|
157
|
+
ChevronDown,
|
|
158
|
+
{
|
|
159
|
+
"aria-hidden": "true",
|
|
160
|
+
className: "text-muted-foreground h-4 w-4 shrink-0 transition-transform group-data-[state=closed]:-rotate-90 motion-reduce:transition-none rtl:group-data-[state=closed]:rotate-90"
|
|
161
|
+
}
|
|
162
|
+
),
|
|
163
|
+
group.title
|
|
164
|
+
] }) }),
|
|
165
|
+
/* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx("div", { className: "pb-2", children: /* @__PURE__ */ jsx(PropertyRows, { items: group.items, ...rowProps }) }) })
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
group.id
|
|
169
|
+
)) : /* @__PURE__ */ jsx(PropertyRows, { items: items ?? [], ...rowProps })
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
PropertyList.displayName = "PropertyList";
|
|
175
|
+
|
|
176
|
+
export { PropertyList, defaultPropertyListLabels };
|
|
177
|
+
//# sourceMappingURL=chunk-7HUTR6RX.js.map
|
|
178
|
+
//# sourceMappingURL=chunk-7HUTR6RX.js.map
|