@mieweb/ui 0.10.0-dev.31 → 0.10.0-dev.33
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-BNH4SXJB.js → chunk-2X54ZLT6.js} +6 -6
- package/dist/{chunk-BNH4SXJB.js.map → chunk-2X54ZLT6.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-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-56VTM4OX.js +261 -0
- package/dist/chunk-56VTM4OX.js.map +1 -0
- 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-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-WXFGHDTV.cjs → chunk-AJPFQF3H.cjs} +18 -18
- package/dist/{chunk-WXFGHDTV.cjs.map → chunk-AJPFQF3H.cjs.map} +1 -1
- 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-ZTMYKAVU.cjs → chunk-CCAVJSWL.cjs} +49 -48
- package/dist/chunk-CCAVJSWL.cjs.map +1 -0
- 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-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-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-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-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-BIQ7GSO2.js → chunk-JMAZ2GKT.js} +3 -3
- package/dist/{chunk-BIQ7GSO2.js.map → chunk-JMAZ2GKT.js.map} +1 -1
- 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-T4L7Q5FA.cjs → chunk-LC3JL2HB.cjs} +6 -2
- package/dist/chunk-LC3JL2HB.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-QURJVPRH.cjs → chunk-MJJJDQ5P.cjs} +46 -2
- package/dist/chunk-MJJJDQ5P.cjs.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-NKV76R65.cjs → chunk-O6BJMVGT.cjs} +45 -45
- package/dist/{chunk-NKV76R65.cjs.map → chunk-O6BJMVGT.cjs.map} +1 -1
- 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-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-SD7ONW6S.js → chunk-S2JZL4JC.js} +5 -5
- package/dist/{chunk-SD7ONW6S.js.map → chunk-S2JZL4JC.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-MLAWXPRY.js → chunk-TKWNXAFI.js} +46 -2
- package/dist/chunk-TKWNXAFI.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-ENMXHZNE.js → chunk-TWQSMUE6.js} +6 -2
- package/dist/chunk-TWQSMUE6.js.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-UTIPENPW.cjs +286 -0
- package/dist/chunk-UTIPENPW.cjs.map +1 -0
- 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-CPPUT74P.cjs → chunk-VV2U36T6.cjs} +9 -9
- package/dist/{chunk-CPPUT74P.cjs.map → chunk-VV2U36T6.cjs.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-JBIGSP2T.js → chunk-YMILRSRO.js} +6 -5
- package/dist/chunk-YMILRSRO.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 +17 -4
- package/dist/components/AlertDialog/index.d.cts +66 -13
- package/dist/components/AlertDialog/index.d.ts +66 -13
- package/dist/components/AlertDialog/index.js +4 -3
- 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/KeyboardShortcutsOverlay/index.cjs +4 -4
- package/dist/components/KeyboardShortcutsOverlay/index.js +2 -2
- 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 +10 -9
- package/dist/components/MediaEditor/index.js +5 -4
- package/dist/components/MediaFeed/index.cjs +9 -6
- package/dist/components/MediaFeed/index.js +8 -5
- 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/Modal/index.cjs +9 -9
- package/dist/components/Modal/index.js +1 -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 +23 -19
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.js +11 -7
- 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 +9 -7
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.js +6 -4
- 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 +1391 -847
- 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 +539 -171
- 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-ENMXHZNE.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-T4L7Q5FA.cjs.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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/CalendarHeatmap/CalendarHeatmap.tsx"],"names":["React","CalendarHeatmap","DateTime","_","inRange","jsxs","cn","jsx"],"mappings":"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","file":"chunk-A4W5CSK7.cjs","sourcesContent":["import * as React from 'react';\nimport { DateTime } from 'luxon';\nimport { cn } from '../../utils/cn';\n\nexport interface CalendarHeatmapDatum {\n /** ISO date (or date-time) the value belongs to; same-day values are summed. */\n date: string;\n value: number;\n}\n\nexport interface CalendarHeatmapLabels {\n /** Accessible name of the table. */\n title: string;\n /** Accessible name and tooltip of a day cell. */\n cellLabel: (formattedDate: string, value: number, isoDate: string) => string;\n /** Visually hidden summary of the whole range. */\n summary: (total: number, activeDays: number) => string;\n /** Legend ends. */\n less: string;\n more: string;\n}\n\nexport const defaultCalendarHeatmapLabels: CalendarHeatmapLabels = {\n title: 'Activity calendar',\n cellLabel: (date, value) => `${date}: ${value}`,\n summary: (total, activeDays) =>\n `${total} total across ${activeDays} active ${activeDays === 1 ? 'day' : 'days'}`,\n less: 'Less',\n more: 'More',\n};\n\nexport interface CalendarHeatmapProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Values per day. */\n data: CalendarHeatmapDatum[];\n /** First day shown (ISO date). Defaults to 12 weeks before `end`. */\n start?: string;\n /** Last day shown (ISO date). Defaults to today. */\n end?: string;\n /** First day of each column: 0 = Sunday … 6 = Saturday. */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /** BCP 47 locale for month, weekday and date names. */\n locale?: string;\n /** Makes days focusable buttons (arrow-key navigable) reporting their ISO date. */\n onDayClick?: (date: string) => void;\n /** Overrides for any user-facing string. */\n labels?: Partial<CalendarHeatmapLabels>;\n}\n\nconst LEVELS = [\n 'bg-muted ring-1 ring-inset ring-border',\n 'bg-primary-500/25',\n 'bg-primary-500/50',\n 'bg-primary-500/75',\n 'bg-primary-500',\n];\n\nfunction level(value: number, max: number) {\n if (value <= 0 || max <= 0) return 0;\n return Math.min(4, Math.max(1, Math.ceil((value / max) * 4)));\n}\n\nconst CELL = 'block h-3 w-3 rounded-sm';\n\n/**\n * Contribution-style calendar: one column per week, one row per weekday, each\n * day tinted on a five-step primary scale.\n *\n * @example\n * ```tsx\n * <CalendarHeatmap data={activity} onDayClick={(date) => openDay(date)} />\n * ```\n */\nexport const CalendarHeatmap = React.forwardRef<\n HTMLDivElement,\n CalendarHeatmapProps\n>(function CalendarHeatmap(\n {\n data,\n start,\n end,\n weekStartsOn = 0,\n locale,\n onDayClick,\n labels: labelOverrides,\n className,\n ...props\n },\n ref\n) {\n const labels = { ...defaultCalendarHeatmapLabels, ...labelOverrides };\n const loc = (d: DateTime) => (locale ? d.setLocale(locale) : d);\n const cells = React.useRef(new Map<string, HTMLButtonElement>());\n const [active, setActive] = React.useState<string | null>(null);\n\n const grid = React.useMemo(() => {\n const parse = (iso?: string) => {\n const d = iso ? DateTime.fromISO(iso) : null;\n return d?.isValid ? d.startOf('day') : null;\n };\n const end_ = parse(end) ?? DateTime.now().startOf('day');\n const start_ = parse(start) ?? end_.minus({ weeks: 12 }).plus({ days: 1 });\n // A reversed range is swapped so there is always at least one day.\n const [first, last] = start_ <= end_ ? [start_, end_] : [end_, start_];\n const origin = first.minus({\n days: ((first.weekday % 7) - weekStartsOn + 7) % 7,\n });\n const weeks = Math.ceil(\n (Math.round(last.diff(origin, 'days').days) + 1) / 7\n );\n\n const values = new Map<string, number>();\n for (const d of data) {\n const key = DateTime.fromISO(d.date).toISODate();\n if (key) values.set(key, (values.get(key) ?? 0) + d.value);\n }\n\n const days = Array.from({ length: weeks }, (_, w) =>\n Array.from({ length: 7 }, (_, r) => {\n const date = origin.plus({ days: w * 7 + r });\n const iso = date.toISODate()!;\n const inRange = date >= first && date <= last;\n return {\n date,\n iso,\n inRange,\n value: inRange ? (values.get(iso) ?? 0) : 0,\n };\n })\n );\n const inRange = days.flat().filter((d) => d.inRange);\n const max = Math.max(0, ...inRange.map((d) => d.value));\n const total = inRange.reduce((sum, d) => sum + d.value, 0);\n const activeDays = inRange.filter((d) => d.value > 0).length;\n\n // Consecutive weeks grouped by the month of their first in-range day.\n const months: { key: string; date: DateTime; span: number }[] = [];\n for (const week of days) {\n const date = (week.find((d) => d.inRange) ?? week[0]).date;\n const key = date.toFormat('yyyy-MM');\n const prev = months[months.length - 1];\n if (prev?.key === key) prev.span += 1;\n else months.push({ key, date, span: 1 });\n }\n\n return { days, first, last, max, total, activeDays, months };\n }, [data, start, end, weekStartsOn]);\n\n const activeDate = active ? DateTime.fromISO(active) : null;\n // Keep one tab stop even when the range changes and drops the active day.\n const focusable =\n activeDate && activeDate >= grid.first && activeDate <= grid.last\n ? active\n : grid.last.toISODate();\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (!focusable) return;\n const rtl = getComputedStyle(e.currentTarget).direction === 'rtl';\n const delta: Record<string, number> = {\n ArrowUp: -1,\n ArrowDown: 1,\n ArrowLeft: rtl ? 7 : -7,\n ArrowRight: rtl ? -7 : 7,\n };\n if (!delta[e.key]) return;\n e.preventDefault();\n const next = DateTime.fromISO(focusable).plus({ days: delta[e.key] });\n if (next < grid.first || next > grid.last) return;\n const iso = next.toISODate()!;\n setActive(iso);\n cells.current.get(iso)?.focus();\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"calendar-heatmap\"\n className={cn('inline-flex max-w-full flex-col gap-2', className)}\n {...props}\n >\n <div className=\"overflow-x-auto\">\n <table\n role={onDayClick ? 'grid' : undefined}\n aria-label={labels.title}\n className=\"text-muted-foreground border-separate border-spacing-[3px] text-[10px] leading-none\"\n >\n <caption className=\"sr-only\">\n {labels.summary(grid.total, grid.activeDays)}\n </caption>\n <thead>\n <tr>\n <td />\n {grid.months.map((m) => (\n <th\n key={m.key}\n scope=\"colgroup\"\n colSpan={m.span}\n className=\"pb-1 text-start font-normal whitespace-nowrap\"\n >\n <span className={m.span < 2 ? 'sr-only' : undefined}>\n {loc(m.date).toFormat('LLL')}\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: 7 }, (_, r) => (\n <tr key={r}>\n <th scope=\"row\" className=\"pe-1 text-start font-normal\">\n <span className={r % 2 === 1 ? undefined : 'sr-only'}>\n {loc(grid.days[0][r].date).toFormat('ccc')}\n </span>\n </th>\n {grid.days.map((week) => {\n const day = week[r];\n if (!day.inRange) return <td key={day.iso} />;\n const label = labels.cellLabel(\n loc(day.date).toLocaleString(\n DateTime.DATE_MED_WITH_WEEKDAY\n ),\n day.value,\n day.iso\n );\n const swatch = cn(CELL, LEVELS[level(day.value, grid.max)]);\n return (\n <td key={day.iso} className=\"p-0\">\n {onDayClick ? (\n <button\n type=\"button\"\n ref={(el) => {\n if (el) cells.current.set(day.iso, el);\n else cells.current.delete(day.iso);\n }}\n title={label}\n tabIndex={day.iso === focusable ? 0 : -1}\n onFocus={() => setActive(day.iso)}\n onClick={() => onDayClick(day.iso)}\n onKeyDown={onKeyDown}\n className={cn(\n swatch,\n 'focus-visible:outline-ring focus-visible:outline-2 focus-visible:outline-offset-1'\n )}\n >\n <span className=\"sr-only\">{label}</span>\n </button>\n ) : (\n <span className={swatch} title={label}>\n <span className=\"sr-only\">{label}</span>\n </span>\n )}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div\n aria-hidden=\"true\"\n data-slot=\"calendar-heatmap-legend\"\n className=\"text-muted-foreground flex items-center gap-1 self-end text-[10px]\"\n >\n <span className=\"me-1\">{labels.less}</span>\n {LEVELS.map((cls) => (\n <span key={cls} className={cn(CELL, cls)} />\n ))}\n <span className=\"ms-1\">{labels.more}</span>\n </div>\n </div>\n );\n});\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkKQ6GLYFZ_cjs = require('./chunk-KQ6GLYFZ.cjs');
|
|
4
|
+
var chunkGKDHMNUA_cjs = require('./chunk-GKDHMNUA.cjs');
|
|
5
|
+
var chunkLC3JL2HB_cjs = require('./chunk-LC3JL2HB.cjs');
|
|
6
6
|
var chunkYW2AKBLS_cjs = require('./chunk-YW2AKBLS.cjs');
|
|
7
|
-
var
|
|
7
|
+
var chunkANMX7YDL_cjs = require('./chunk-ANMX7YDL.cjs');
|
|
8
8
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
9
9
|
var React2 = require('react');
|
|
10
10
|
var lucideReact = require('lucide-react');
|
|
@@ -160,7 +160,7 @@ function NativeFeedMedia({
|
|
|
160
160
|
};
|
|
161
161
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 w-full flex-col items-center justify-center gap-3", children: [
|
|
162
162
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
163
|
-
|
|
163
|
+
chunkKQ6GLYFZ_cjs.MediaPlayer,
|
|
164
164
|
{
|
|
165
165
|
src: media.src,
|
|
166
166
|
kind: media.kind === "audio" ? "audio" : "video",
|
|
@@ -197,7 +197,7 @@ function NativeFeedMedia({
|
|
|
197
197
|
}
|
|
198
198
|
),
|
|
199
199
|
state !== "error" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
200
|
-
|
|
200
|
+
chunkANMX7YDL_cjs.Button,
|
|
201
201
|
{
|
|
202
202
|
variant: "secondary",
|
|
203
203
|
size: "sm",
|
|
@@ -318,7 +318,7 @@ function YouTubeFeedMedia({
|
|
|
318
318
|
}
|
|
319
319
|
),
|
|
320
320
|
id && !failed ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
321
|
-
|
|
321
|
+
chunkANMX7YDL_cjs.Button,
|
|
322
322
|
{
|
|
323
323
|
variant: "secondary",
|
|
324
324
|
leftIcon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Play, { className: "h-4 w-4", "aria-hidden": "true" }),
|
|
@@ -678,7 +678,7 @@ function MediaFeedInner({
|
|
|
678
678
|
),
|
|
679
679
|
children: [
|
|
680
680
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
681
|
-
|
|
681
|
+
chunkGKDHMNUA_cjs.Avatar,
|
|
682
682
|
{
|
|
683
683
|
name: author.name,
|
|
684
684
|
src: author.avatar,
|
|
@@ -700,7 +700,7 @@ function MediaFeedInner({
|
|
|
700
700
|
)
|
|
701
701
|
] }),
|
|
702
702
|
!immersive && /* @__PURE__ */ jsxRuntime.jsx(
|
|
703
|
-
|
|
703
|
+
chunkANMX7YDL_cjs.Button,
|
|
704
704
|
{
|
|
705
705
|
variant: "ghost",
|
|
706
706
|
size: "sm",
|
|
@@ -755,7 +755,7 @@ function MediaFeedInner({
|
|
|
755
755
|
),
|
|
756
756
|
children: [
|
|
757
757
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
758
|
-
|
|
758
|
+
chunkANMX7YDL_cjs.Button,
|
|
759
759
|
{
|
|
760
760
|
variant: "ghost",
|
|
761
761
|
size: "sm",
|
|
@@ -776,7 +776,7 @@ function MediaFeedInner({
|
|
|
776
776
|
}
|
|
777
777
|
),
|
|
778
778
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
779
|
-
|
|
779
|
+
chunkANMX7YDL_cjs.Button,
|
|
780
780
|
{
|
|
781
781
|
variant: "ghost",
|
|
782
782
|
size: "sm",
|
|
@@ -816,7 +816,7 @@ function MediaFeedInner({
|
|
|
816
816
|
children: [
|
|
817
817
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0", children: loading ? labels.loading : error || labels.empty }),
|
|
818
818
|
error && onRetry && /* @__PURE__ */ jsxRuntime.jsx(
|
|
819
|
-
|
|
819
|
+
chunkANMX7YDL_cjs.Button,
|
|
820
820
|
{
|
|
821
821
|
variant: "outline",
|
|
822
822
|
isLoading: retrying,
|
|
@@ -851,16 +851,16 @@ function MediaFeedInner({
|
|
|
851
851
|
controls
|
|
852
852
|
] }),
|
|
853
853
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
854
|
-
|
|
854
|
+
chunkLC3JL2HB_cjs.Modal,
|
|
855
855
|
{
|
|
856
856
|
open: fullscreen && !loading && !error && !!items.length,
|
|
857
857
|
onOpenChange: setFullscreen,
|
|
858
858
|
size: "full",
|
|
859
859
|
className: "h-dvh min-h-0 sm:h-[calc(100dvh-2rem)]",
|
|
860
860
|
children: [
|
|
861
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
862
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
863
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
861
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkLC3JL2HB_cjs.ModalHeader, { children: [
|
|
862
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLC3JL2HB_cjs.ModalTitle, { children: labels.feed }),
|
|
863
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkLC3JL2HB_cjs.ModalClose, { "aria-label": labels.close })
|
|
864
864
|
] }),
|
|
865
865
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
866
866
|
"div",
|
|
@@ -892,5 +892,5 @@ var MediaFeed = React2__namespace.forwardRef(MediaFeedInner);
|
|
|
892
892
|
MediaFeed.displayName = "MediaFeed";
|
|
893
893
|
|
|
894
894
|
exports.MediaFeed = MediaFeed;
|
|
895
|
-
//# sourceMappingURL=chunk-
|
|
896
|
-
//# sourceMappingURL=chunk-
|
|
895
|
+
//# sourceMappingURL=chunk-AJPFQF3H.cjs.map
|
|
896
|
+
//# sourceMappingURL=chunk-AJPFQF3H.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MediaFeed/FeedMedia.tsx","../src/components/MediaFeed/MediaFeed.tsx"],"names":["jsx","React","jsxs","MediaPlayer","Button","Pause","Play","usePrefersReducedMotion","React2","cn","Avatar","Maximize2","ChevronUp","ChevronDown","Fragment","Modal","ModalHeader","ModalTitle","ModalClose"],"mappings":"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","file":"chunk-WXFGHDTV.cjs","sourcesContent":["import * as React from 'react';\nimport { Pause, Play } from 'lucide-react';\nimport { Button } from '../Button';\nimport { MediaPlayer, type MediaPlayerState } from '../MediaPlayer';\nimport type { MediaFeedLabels, MediaFeedMedia } from './types';\n\ninterface FeedMediaProps {\n media: MediaFeedMedia;\n title: string;\n active: boolean;\n autoPlay: boolean;\n muted: boolean;\n loop: boolean;\n labels: MediaFeedLabels;\n onActivate: () => void;\n playbackPosition: { timeMs: number; playRequested?: boolean };\n playbackRequestId?: string | number;\n}\n\n/** Only ordinary web URLs become links; media resources may use other schemes. */\nfunction sourceHref(src: string): string | undefined {\n try {\n const url = new URL(src, 'https://localhost/');\n return ['http:', 'https:'].includes(url.protocol) ? src : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction SourceLink({ src, labels }: { src: string; labels: MediaFeedLabels }) {\n const href = sourceHref(src);\n return href ? (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary-700 dark:text-primary-300 focus-visible:ring-ring rounded underline underline-offset-4 focus-visible:ring-2 focus-visible:outline-none\"\n >\n {labels.openSource}\n </a>\n ) : null;\n}\n\nfunction NativeFeedMedia({\n media,\n title,\n active,\n autoPlay,\n muted,\n loop,\n labels,\n onActivate,\n playbackPosition,\n playbackRequestId,\n}: FeedMediaProps) {\n const mediaElementRef = React.useRef<\n HTMLVideoElement | HTMLAudioElement | null\n >(null);\n const [state, setState] = React.useState<MediaPlayerState>('idle');\n const [blocked, setBlocked] = React.useState(false);\n const [retryVersion, setRetryVersion] = React.useState(0);\n const wantsPlayback = React.useRef(playbackPosition.playRequested ?? false);\n const latestPlaybackRequest = React.useRef(playbackRequestId);\n latestPlaybackRequest.current = playbackRequestId;\n const handledPlaybackRequest = React.useRef<string | number | undefined>(\n undefined\n );\n const ownershipPause = React.useRef(false);\n const attemptId = React.useRef(0);\n const activeRef = React.useRef(active);\n const canSavePosition = React.useRef(false);\n activeRef.current = active;\n\n const tryPlay = React.useCallback(async () => {\n const element = mediaElementRef.current;\n if (!element || !activeRef.current) return;\n const attempt = ++attemptId.current;\n setBlocked(false);\n try {\n // The native promise can reject when browser autoplay policy requires a\n // gesture. Playback state still comes from native events, never intent.\n await element.play();\n // A delayed request must not start a card that has since left the active\n // surface. A newer request for the same active element can finish normally.\n if (!activeRef.current || element !== mediaElementRef.current)\n element.pause();\n } catch (error) {\n if (!activeRef.current || attempt !== attemptId.current) return;\n if (error instanceof Error && error.name === 'AbortError') return;\n setBlocked(true);\n }\n }, []);\n\n const pauseForOwnership = React.useCallback(\n (element: HTMLMediaElement | null) => {\n if (element && element === mediaElementRef.current && !element.paused)\n ownershipPause.current = true;\n element?.pause();\n },\n []\n );\n\n React.useEffect(() => {\n const element = mediaElementRef.current;\n const attempts = attemptId;\n const restorePosition = () => {\n if (!element || !activeRef.current) return;\n if (playbackPosition.timeMs > 0) {\n element.currentTime = playbackPosition.timeMs / 1000;\n }\n canSavePosition.current = true;\n };\n if (active && element) {\n // Another surface can clear shared manual intent while this inline copy\n // is paused (for example, the user pauses inside fullscreen).\n wantsPlayback.current = playbackPosition.playRequested ?? false;\n if (element.readyState >= 1) restorePosition();\n else element.addEventListener('loadedmetadata', restorePosition);\n }\n if (\n active &&\n (latestPlaybackRequest.current === undefined ||\n latestPlaybackRequest.current === handledPlaybackRequest.current) &&\n (autoPlay || wantsPlayback.current)\n ) {\n void tryPlay();\n } else if (!active) {\n attemptId.current++;\n pauseForOwnership(element);\n setBlocked(false);\n }\n return () => {\n attempts.current++;\n element?.removeEventListener('loadedmetadata', restorePosition);\n if (element && canSavePosition.current)\n playbackPosition.timeMs = element.currentTime * 1000;\n pauseForOwnership(element);\n };\n }, [\n active,\n autoPlay,\n pauseForOwnership,\n playbackPosition,\n retryVersion,\n tryPlay,\n ]);\n\n React.useEffect(() => {\n if (\n !active ||\n playbackRequestId === undefined ||\n playbackRequestId === handledPlaybackRequest.current\n )\n return;\n handledPlaybackRequest.current = playbackRequestId;\n wantsPlayback.current = true;\n playbackPosition.playRequested = true;\n void tryPlay();\n }, [active, playbackRequestId, playbackPosition, tryPlay]);\n\n const togglePlayback = () => {\n if (state === 'playing') {\n wantsPlayback.current = false;\n playbackPosition.playRequested = false;\n mediaElementRef.current?.pause();\n } else {\n wantsPlayback.current = true;\n playbackPosition.playRequested = true;\n onActivate();\n if (active) void tryPlay();\n }\n };\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col items-center justify-center gap-3\">\n <MediaPlayer\n src={media.src}\n kind={media.kind === 'audio' ? 'audio' : 'video'}\n mediaElementRef={mediaElementRef}\n muted={muted}\n loop={loop}\n poster={media.poster}\n preload={active ? 'metadata' : 'none'}\n controls={active}\n aria-label={title}\n onStateChange={(next) => {\n setState(next);\n if (next === 'playing') ownershipPause.current = false;\n if (next === 'paused') {\n if (activeRef.current && !ownershipPause.current) {\n wantsPlayback.current = false;\n playbackPosition.playRequested = false;\n }\n ownershipPause.current = false;\n }\n }}\n onTimeUpdate={(timeMs) => {\n if (canSavePosition.current) playbackPosition.timeMs = timeMs;\n }}\n onRetry={() => {\n ownershipPause.current = false;\n canSavePosition.current = false;\n setState('idle');\n setBlocked(false);\n setRetryVersion((version) => version + 1);\n }}\n labels={{ error: labels.mediaError, retry: labels.retry }}\n className=\"min-h-0 flex-1 [&_video]:h-full [&_video]:w-full\"\n />\n {state !== 'error' && (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n leftIcon={\n state === 'playing' ? (\n <Pause className=\"h-4 w-4\" aria-hidden=\"true\" />\n ) : (\n <Play className=\"h-4 w-4\" aria-hidden=\"true\" />\n )\n }\n onClick={togglePlayback}\n >\n {state === 'playing' ? labels.pause : labels.play}\n </Button>\n )}\n {blocked && (\n <p\n role=\"status\"\n className=\"text-muted-foreground m-0 text-center text-sm\"\n >\n {labels.blockedAutoplay}\n </p>\n )}\n {state === 'error' && <SourceLink src={media.src} labels={labels} />}\n </div>\n );\n}\n\nfunction ImageFeedMedia({ media, title, labels }: FeedMediaProps) {\n const [failed, setFailed] = React.useState(false);\n return failed ? (\n <div role=\"alert\" className=\"flex flex-col gap-3 p-6 text-center\">\n <p className=\"text-muted-foreground m-0\">{labels.mediaError}</p>\n <SourceLink src={media.src} labels={labels} />\n </div>\n ) : (\n <img\n src={media.src}\n alt={media.alt ?? title}\n loading=\"lazy\"\n className=\"h-full max-h-full w-full object-contain\"\n onError={() => setFailed(true)}\n />\n );\n}\n\nfunction youtubeId(src: string): string | null {\n const validId = /^[A-Za-z0-9_-]{11}$/;\n if (validId.test(src)) return src;\n try {\n const url = new URL(src);\n const host = url.hostname.toLowerCase();\n const parts = url.pathname.split('/').filter(Boolean);\n let id: string | null = null;\n if (host === 'youtu.be' || host === 'www.youtu.be') {\n id = parts[0] ?? null;\n } else if (\n [\n 'youtube.com',\n 'www.youtube.com',\n 'm.youtube.com',\n 'youtube-nocookie.com',\n 'www.youtube-nocookie.com',\n ].includes(host)\n ) {\n id =\n url.searchParams.get('v') ??\n (['embed', 'shorts', 'live'].includes(parts[0]) ? parts[1] : null);\n }\n return id && validId.test(id) ? id : null;\n } catch {\n return null;\n }\n}\n\nfunction YouTubeFeedMedia({\n media,\n title,\n active,\n autoPlay,\n muted,\n loop,\n labels,\n onActivate,\n playbackRequestId,\n}: FeedMediaProps) {\n const id = youtubeId(media.src);\n const [requestedPlayback, setRequestedPlayback] = React.useState(false);\n const handledPlaybackRequest = React.useRef<string | number | undefined>(\n undefined\n );\n const pendingPlayback =\n active &&\n playbackRequestId !== undefined &&\n playbackRequestId !== handledPlaybackRequest.current;\n React.useEffect(() => {\n if (!active) setRequestedPlayback(false);\n else if (\n playbackRequestId !== undefined &&\n playbackRequestId !== handledPlaybackRequest.current\n ) {\n handledPlaybackRequest.current = playbackRequestId;\n setRequestedPlayback(true);\n }\n }, [active, playbackRequestId]);\n const embedUrl = new URL(\n `https://www.youtube-nocookie.com/embed/${id ?? ''}`\n );\n for (const [key, value] of Object.entries({\n autoplay: autoPlay || requestedPlayback || pendingPlayback ? '1' : '0',\n mute: muted ? '1' : '0',\n controls: '1',\n playsinline: '1',\n rel: '0',\n loop: loop ? '1' : '0',\n ...(loop && id ? { playlist: id } : {}),\n }))\n embedUrl.searchParams.set(key, value);\n const [failed, setFailed] = React.useState(false);\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col items-center gap-3\">\n {active && id && !failed ? (\n <iframe\n src={embedUrl.href}\n title={title}\n className=\"min-h-0 w-full flex-1 border-0\"\n allow=\"autoplay; encrypted-media; picture-in-picture; fullscreen\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n onError={() => setFailed(true)}\n />\n ) : (\n <div className=\"flex min-h-0 w-full flex-1 flex-col items-center justify-center gap-4\">\n {media.poster && (\n <img\n src={media.poster}\n alt=\"\"\n loading=\"lazy\"\n className=\"min-h-0 max-w-full flex-1 object-contain\"\n />\n )}\n {id && !failed ? (\n <Button\n variant=\"secondary\"\n leftIcon={<Play className=\"h-4 w-4\" aria-hidden=\"true\" />}\n onClick={() => {\n setRequestedPlayback(true);\n onActivate();\n }}\n >\n {labels.play}\n </Button>\n ) : (\n <p role=\"alert\" className=\"text-muted-foreground m-0\">\n {labels.mediaError}\n </p>\n )}\n </div>\n )}\n <p className=\"text-muted-foreground m-0 text-center text-sm\">\n {labels.youtubeNotice}\n </p>\n <SourceLink\n src={id ? `https://www.youtube.com/watch?v=${id}` : media.src}\n labels={labels}\n />\n </div>\n );\n}\n\n/** Native resources share UI transport; external embeds retain their controls. */\nexport function FeedMedia(props: FeedMediaProps) {\n if (props.media.kind === 'image') return <ImageFeedMedia {...props} />;\n if (props.media.kind === 'youtube') return <YouTubeFeedMedia {...props} />;\n return <NativeFeedMedia {...props} />;\n}\n","import * as React from 'react';\nimport { ChevronDown, ChevronUp, Maximize2 } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { usePrefersReducedMotion } from '../../hooks/usePrefersReducedMotion';\nimport { Avatar } from '../Avatar';\nimport { Button } from '../Button';\nimport { Modal, ModalClose, ModalHeader, ModalTitle } from '../Modal';\nimport { FeedMedia } from './FeedMedia';\nimport type { MediaFeedLabels, MediaFeedProps } from './types';\n\nconst defaultLabels: MediaFeedLabels = {\n feed: 'Media feed',\n loading: 'Loading media…',\n empty: 'No media to display.',\n error: 'Unable to load the media feed.',\n retry: 'Retry',\n fullscreen: 'Open fullscreen',\n close: 'Close fullscreen',\n previous: 'Previous item',\n next: 'Next item',\n play: 'Play',\n pause: 'Pause',\n blockedAutoplay: 'Playback did not start. Press Play to try again.',\n mediaError: 'This media is unavailable.',\n openSource: 'Open source',\n youtubeNotice: 'If embedded playback is unavailable, open the source.',\n item: (position, total) => `Media item ${position} of ${total}`,\n position: (position, total) => `${position} / ${total}`,\n};\n\n/**\n * A vertical, caller-owned media collection with one active playback surface.\n * Native players share MediaPlayer; provider-specific players can use the\n * renderMedia slot. Records, engagement actions and navigation belong to the host.\n */\nfunction MediaFeedInner<T>(\n {\n items,\n getId,\n getMedia,\n getTitle,\n getCaption,\n getAuthor,\n renderActions,\n renderMedia,\n activeItemId,\n defaultActiveItemId,\n onActiveItemChange,\n playbackRequest,\n loading = false,\n error,\n onRetry,\n autoPlay = true,\n muted = true,\n loop = true,\n labels: labelOverrides,\n classNames = {},\n className,\n ...rest\n }: MediaFeedProps<T>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n) {\n const labels = { ...defaultLabels, ...labelOverrides };\n const prefersReducedMotion = usePrefersReducedMotion();\n const allowAutoPlay = autoPlay && !prefersReducedMotion;\n const ids = items.map(getId);\n const idsKey = JSON.stringify(ids);\n const [internalActiveId, setInternalActiveId] = React.useState(\n () => defaultActiveItemId ?? ids[0]\n );\n const requestedId = activeItemId ?? internalActiveId;\n const activeId =\n requestedId !== undefined && ids.includes(requestedId)\n ? requestedId\n : ids[0];\n const activeIndex = activeId === undefined ? -1 : ids.indexOf(activeId);\n const [fullscreen, setFullscreen] = React.useState(false);\n const [retrying, setRetrying] = React.useState(false);\n const [retryFailed, setRetryFailed] = React.useState(false);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const cardRefs = React.useRef(new Map<string, HTMLElement>());\n const playbackPositions = React.useRef(\n new Map<string, { src: string; timeMs: number; playRequested?: boolean }>()\n );\n const consumedPlaybackRequests = React.useRef(\n new Map<string, string | number>()\n );\n const fullscreenTriggerRef = React.useRef<HTMLButtonElement | null>(null);\n const hasObserver = typeof IntersectionObserver !== 'undefined';\n // Hydration safety: the server cannot know whether the client supports\n // IntersectionObserver, so both environments start \"not visible\" and the\n // mount effects below establish real visibility (observer callbacks, or the\n // no-observer fallback). Offscreen autoplay therefore never starts early.\n const [visibleId, setVisibleId] = React.useState<string | null>(null);\n const visibleIdRef = React.useRef(visibleId);\n const [viewportVisible, setViewportVisible] = React.useState(false);\n const [pageVisible, setPageVisible] = React.useState(\n () =>\n typeof document === 'undefined' || document.visibilityState !== 'hidden'\n );\n const latest = React.useRef({\n items,\n ids,\n activeId,\n activeItemId,\n onActiveItemChange,\n fullscreen,\n });\n latest.current = {\n items,\n ids,\n activeId,\n activeItemId,\n onActiveItemChange,\n fullscreen,\n };\n\n const setRoot = React.useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef]\n );\n\n const select = React.useCallback((id: string) => {\n const current = latest.current;\n const index = current.ids.indexOf(id);\n if (index < 0 || id === current.activeId) return;\n if (current.activeItemId === undefined) setInternalActiveId(id);\n current.onActiveItemChange?.(current.items[index]);\n }, []);\n\n // Visibility belongs to this feed, never a global keyboard/player singleton.\n // A separate viewport observer also pauses a feed scrolled off the host page.\n React.useEffect(() => {\n const root = rootRef.current;\n if (!root || typeof IntersectionObserver === 'undefined') {\n // No-observer fallback: assume the feed is on screen.\n setViewportVisible(true);\n return;\n }\n const observer = new IntersectionObserver(([entry]) => {\n setViewportVisible(entry.isIntersecting);\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, []);\n\n React.useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport || typeof IntersectionObserver === 'undefined') return;\n const ratios = new Map<string, number>();\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n const id = (entry.target as HTMLElement).dataset.mediaId;\n if (id !== undefined)\n ratios.set(id, entry.isIntersecting ? entry.intersectionRatio : 0);\n }\n let bestId: string | null = null;\n let bestRatio = 0;\n for (const [id, ratio] of ratios) {\n if (ratio > bestRatio) {\n bestId = id;\n bestRatio = ratio;\n }\n }\n visibleIdRef.current = bestId;\n setVisibleId(bestId);\n if (bestId !== null && !latest.current.fullscreen) select(bestId);\n },\n { root: viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n cardRefs.current.forEach((card) => observer.observe(card));\n return () => observer.disconnect();\n }, [idsKey, loading, error, select]);\n\n React.useEffect(() => {\n const update = () => setPageVisible(document.visibilityState !== 'hidden');\n document.addEventListener('visibilitychange', update);\n return () => document.removeEventListener('visibilitychange', update);\n }, []);\n\n // Controlled selection and initial deep links scroll within the feed, without\n // moving the surrounding inbox/page. Observer selections are already visible.\n React.useEffect(() => {\n if (activeId === undefined) return;\n if (!hasObserver) {\n visibleIdRef.current = activeId;\n setVisibleId(activeId);\n }\n if (visibleIdRef.current === activeId && hasObserver) return;\n const card = cardRefs.current.get(activeId);\n if (card && viewportRef.current) {\n viewportRef.current.scrollTo?.({ top: card.offsetTop, behavior: 'auto' });\n }\n }, [activeId, idsKey, hasObserver, loading, error]);\n\n React.useEffect(() => {\n if (!items.length) setFullscreen(false);\n }, [items.length]);\n\n // The gesture targets an already selected, visible surface. Consume it once\n // per feed so a later source/fullscreen remount cannot resurrect a paused clip.\n React.useEffect(() => {\n if (\n loading ||\n error ||\n activeIndex < 0 ||\n !playbackRequest ||\n playbackRequest.itemId !== activeId\n )\n return;\n if (\n !pageVisible ||\n (!fullscreen && (!viewportVisible || visibleId !== activeId))\n )\n return;\n consumedPlaybackRequests.current.set(\n playbackRequest.itemId,\n playbackRequest.requestId\n );\n }, [\n activeId,\n activeIndex,\n fullscreen,\n pageVisible,\n viewportVisible,\n visibleId,\n playbackRequest,\n loading,\n error,\n ]);\n\n React.useEffect(() => {\n const positions = playbackPositions.current;\n for (const id of positions.keys()) {\n if (!latest.current.ids.includes(id)) positions.delete(id);\n }\n }, [idsKey]);\n\n React.useEffect(() => {\n if (fullscreen || !fullscreenTriggerRef.current) return;\n if (fullscreenTriggerRef.current.isConnected)\n fullscreenTriggerRef.current.focus();\n else viewportRef.current?.focus();\n fullscreenTriggerRef.current = null;\n }, [fullscreen]);\n\n const navigate = (index: number, focus = false) => {\n const id = ids[Math.max(0, Math.min(index, ids.length - 1))];\n if (id === undefined) return;\n select(id);\n const card = cardRefs.current.get(id);\n if (card && viewportRef.current) {\n viewportRef.current.scrollTo?.({ top: card.offsetTop, behavior: 'auto' });\n if (focus) card.focus({ preventScroll: true });\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n // Never steal arrows/Space from a player, reaction button or chat composer.\n const target = event.target as HTMLElement;\n if (event.target !== event.currentTarget && target.dataset?.slot !== 'item')\n return;\n let next: number;\n switch (event.key) {\n case 'ArrowDown':\n case 'PageDown':\n next = activeIndex + 1;\n break;\n case 'ArrowUp':\n case 'PageUp':\n next = activeIndex - 1;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = items.length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n navigate(next, event.target !== event.currentTarget);\n };\n\n const retry = async () => {\n if (!onRetry || retrying) return;\n setRetrying(true);\n setRetryFailed(false);\n try {\n await onRetry();\n } catch {\n setRetryFailed(true);\n } finally {\n setRetrying(false);\n }\n };\n\n const renderCard = (item: T, index: number, immersive: boolean) => {\n const id = getId(item);\n const media = getMedia(item);\n let playbackPosition = playbackPositions.current.get(id);\n if (!playbackPosition || playbackPosition.src !== media.src) {\n playbackPosition = { src: media.src, timeMs: 0 };\n playbackPositions.current.set(id, playbackPosition);\n }\n const title = getTitle?.(item) || labels.item(index + 1, items.length);\n const author = getAuthor?.(item);\n const caption = getCaption?.(item);\n const active =\n !loading &&\n !error &&\n pageVisible &&\n (immersive\n ? fullscreen && id === activeId\n : !fullscreen &&\n viewportVisible &&\n id === activeId &&\n id === visibleId);\n const playbackRequestId =\n active &&\n playbackRequest?.itemId === id &&\n consumedPlaybackRequests.current.get(id) !== playbackRequest.requestId\n ? playbackRequest.requestId\n : undefined;\n return (\n <article\n key={id}\n ref={\n immersive\n ? undefined\n : (node) => {\n if (node) cardRefs.current.set(id, node);\n else cardRefs.current.delete(id);\n }\n }\n data-slot=\"item\"\n data-media-id={id}\n data-active={active}\n aria-label={title}\n aria-posinset={index + 1}\n aria-setsize={items.length}\n tabIndex={id === activeId ? 0 : -1}\n className={cn(\n 'border-border bg-card text-card-foreground focus-visible:ring-ring flex min-h-0 w-full snap-start flex-col overflow-hidden border focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset',\n immersive ? 'h-full flex-1 border-0' : 'h-full shrink-0 rounded-xl',\n classNames.item\n )}\n >\n <div\n data-slot=\"media\"\n className={cn(\n 'bg-muted flex min-h-0 flex-1 items-center justify-center p-3',\n classNames.media\n )}\n >\n {renderMedia ? (\n renderMedia(media, {\n item,\n active,\n autoPlay: allowAutoPlay,\n muted,\n loop,\n playbackRequestId,\n })\n ) : (\n <FeedMedia\n key={`${id}:${media.kind}:${media.src}:${immersive}`}\n media={media}\n title={title}\n active={active}\n autoPlay={allowAutoPlay}\n muted={muted}\n loop={loop}\n labels={labels}\n onActivate={() => select(id)}\n playbackPosition={playbackPosition}\n playbackRequestId={playbackRequestId}\n />\n )}\n </div>\n <div\n data-slot=\"details\"\n className={cn(\n 'flex max-h-[40%] shrink-0 flex-col gap-2 overflow-y-auto p-4',\n classNames.details\n )}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0 flex-1\">\n {author && (\n <div\n data-slot=\"author\"\n className={cn(\n 'mb-2 flex items-center gap-2',\n classNames.author\n )}\n >\n <Avatar\n name={author.name}\n src={author.avatar}\n alt=\"\"\n size=\"sm\"\n />\n <span className=\"truncate text-sm font-medium\">\n {author.name}\n </span>\n </div>\n )}\n <h3\n data-slot=\"title\"\n className={cn('m-0 text-base font-semibold', classNames.title)}\n >\n {title}\n </h3>\n </div>\n {!immersive && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={labels.fullscreen}\n title={labels.fullscreen}\n onClick={(event) => {\n fullscreenTriggerRef.current = event.currentTarget;\n select(id);\n setFullscreen(true);\n }}\n >\n <Maximize2 className=\"h-4 w-4\" aria-hidden=\"true\" />\n </Button>\n )}\n </div>\n {caption != null && (\n <div\n data-slot=\"caption\"\n className={cn(\n 'text-muted-foreground text-sm',\n classNames.caption\n )}\n >\n {caption}\n </div>\n )}\n {renderActions && (\n <div\n data-slot=\"actions\"\n className={cn(\n 'flex flex-wrap items-center gap-2',\n classNames.actions\n )}\n >\n {renderActions(item)}\n </div>\n )}\n </div>\n </article>\n );\n };\n\n const controls = (\n <div\n data-slot=\"controls\"\n className={cn(\n 'flex shrink-0 items-center justify-between gap-3 py-2',\n classNames.controls\n )}\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-auto min-h-8 flex-1 py-2 [&_[data-slot=button-label]]:whitespace-normal\"\n disabled={activeIndex <= 0}\n onClick={() => navigate(activeIndex - 1)}\n leftIcon={<ChevronUp className=\"h-4 w-4\" aria-hidden=\"true\" />}\n >\n {labels.previous}\n </Button>\n <span\n role=\"status\"\n aria-live=\"polite\"\n className=\"text-muted-foreground shrink-0 text-sm whitespace-nowrap\"\n >\n {labels.position(activeIndex + 1, items.length)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-auto min-h-8 flex-1 py-2 [&_[data-slot=button-label]]:whitespace-normal\"\n disabled={activeIndex >= items.length - 1}\n onClick={() => navigate(activeIndex + 1)}\n rightIcon={<ChevronDown className=\"h-4 w-4\" aria-hidden=\"true\" />}\n >\n {labels.next}\n </Button>\n </div>\n );\n\n return (\n <div\n ref={setRoot}\n data-slot=\"root\"\n data-component=\"media-feed\"\n className={cn(\n 'bg-background text-foreground flex h-[min(48rem,80dvh)] min-h-0 w-full flex-col',\n classNames.root,\n className\n )}\n {...rest}\n >\n {loading || error || !items.length ? (\n <div\n data-slot=\"status\"\n role={error ? 'alert' : 'status'}\n aria-busy={loading || retrying}\n className={cn(\n 'flex min-h-0 flex-1 flex-col items-center justify-center gap-4 p-6 text-center',\n classNames.status\n )}\n >\n <p className=\"m-0\">\n {loading ? labels.loading : error || labels.empty}\n </p>\n {error && onRetry && (\n <Button\n variant=\"outline\"\n isLoading={retrying}\n loadingText={labels.loading}\n onClick={() => {\n void retry();\n }}\n >\n {labels.retry}\n </Button>\n )}\n {retryFailed && (\n <p role=\"alert\" className=\"m-0\">\n {labels.error}\n </p>\n )}\n </div>\n ) : (\n <>\n {/* ARIA feeds are focusable composites with scoped item navigation. */}\n {/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n <div\n ref={viewportRef}\n data-slot=\"viewport\"\n role=\"feed\"\n aria-label={labels.feed}\n aria-busy={false}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n className={cn(\n 'focus-visible:ring-ring relative flex min-h-0 flex-1 snap-y snap-mandatory flex-col gap-4 overflow-y-auto overscroll-contain focus-visible:ring-2 focus-visible:outline-none',\n classNames.viewport\n )}\n >\n {items.map((item, index) => renderCard(item, index, false))}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n {controls}\n </>\n )}\n <Modal\n open={fullscreen && !loading && !error && !!items.length}\n onOpenChange={setFullscreen}\n size=\"full\"\n className=\"h-dvh min-h-0 sm:h-[calc(100dvh-2rem)]\"\n >\n <ModalHeader>\n <ModalTitle>{labels.feed}</ModalTitle>\n <ModalClose aria-label={labels.close} />\n </ModalHeader>\n {/* Fullscreen keeps the same feed navigation; controls retain their keys. */}\n {/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n <div\n data-slot=\"fullscreen\"\n data-component=\"media-feed\"\n role=\"feed\"\n aria-label={labels.feed}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex min-h-0 flex-1 flex-col px-2 pb-2 sm:px-4',\n classNames.fullscreen\n )}\n >\n {activeIndex >= 0 &&\n renderCard(items[activeIndex], activeIndex, true)}\n {controls}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n </Modal>\n </div>\n );\n}\n\nexport const MediaFeed = React.forwardRef(MediaFeedInner) as <T>(\n props: MediaFeedProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement;\n\n(MediaFeed as React.NamedExoticComponent).displayName = 'MediaFeed';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/MediaFeed/FeedMedia.tsx","../src/components/MediaFeed/MediaFeed.tsx"],"names":["jsx","React","jsxs","MediaPlayer","Button","Pause","Play","usePrefersReducedMotion","React2","cn","Avatar","Maximize2","ChevronUp","ChevronDown","Fragment","Modal","ModalHeader","ModalTitle","ModalClose"],"mappings":"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","file":"chunk-AJPFQF3H.cjs","sourcesContent":["import * as React from 'react';\nimport { Pause, Play } from 'lucide-react';\nimport { Button } from '../Button';\nimport { MediaPlayer, type MediaPlayerState } from '../MediaPlayer';\nimport type { MediaFeedLabels, MediaFeedMedia } from './types';\n\ninterface FeedMediaProps {\n media: MediaFeedMedia;\n title: string;\n active: boolean;\n autoPlay: boolean;\n muted: boolean;\n loop: boolean;\n labels: MediaFeedLabels;\n onActivate: () => void;\n playbackPosition: { timeMs: number; playRequested?: boolean };\n playbackRequestId?: string | number;\n}\n\n/** Only ordinary web URLs become links; media resources may use other schemes. */\nfunction sourceHref(src: string): string | undefined {\n try {\n const url = new URL(src, 'https://localhost/');\n return ['http:', 'https:'].includes(url.protocol) ? src : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction SourceLink({ src, labels }: { src: string; labels: MediaFeedLabels }) {\n const href = sourceHref(src);\n return href ? (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary-700 dark:text-primary-300 focus-visible:ring-ring rounded underline underline-offset-4 focus-visible:ring-2 focus-visible:outline-none\"\n >\n {labels.openSource}\n </a>\n ) : null;\n}\n\nfunction NativeFeedMedia({\n media,\n title,\n active,\n autoPlay,\n muted,\n loop,\n labels,\n onActivate,\n playbackPosition,\n playbackRequestId,\n}: FeedMediaProps) {\n const mediaElementRef = React.useRef<\n HTMLVideoElement | HTMLAudioElement | null\n >(null);\n const [state, setState] = React.useState<MediaPlayerState>('idle');\n const [blocked, setBlocked] = React.useState(false);\n const [retryVersion, setRetryVersion] = React.useState(0);\n const wantsPlayback = React.useRef(playbackPosition.playRequested ?? false);\n const latestPlaybackRequest = React.useRef(playbackRequestId);\n latestPlaybackRequest.current = playbackRequestId;\n const handledPlaybackRequest = React.useRef<string | number | undefined>(\n undefined\n );\n const ownershipPause = React.useRef(false);\n const attemptId = React.useRef(0);\n const activeRef = React.useRef(active);\n const canSavePosition = React.useRef(false);\n activeRef.current = active;\n\n const tryPlay = React.useCallback(async () => {\n const element = mediaElementRef.current;\n if (!element || !activeRef.current) return;\n const attempt = ++attemptId.current;\n setBlocked(false);\n try {\n // The native promise can reject when browser autoplay policy requires a\n // gesture. Playback state still comes from native events, never intent.\n await element.play();\n // A delayed request must not start a card that has since left the active\n // surface. A newer request for the same active element can finish normally.\n if (!activeRef.current || element !== mediaElementRef.current)\n element.pause();\n } catch (error) {\n if (!activeRef.current || attempt !== attemptId.current) return;\n if (error instanceof Error && error.name === 'AbortError') return;\n setBlocked(true);\n }\n }, []);\n\n const pauseForOwnership = React.useCallback(\n (element: HTMLMediaElement | null) => {\n if (element && element === mediaElementRef.current && !element.paused)\n ownershipPause.current = true;\n element?.pause();\n },\n []\n );\n\n React.useEffect(() => {\n const element = mediaElementRef.current;\n const attempts = attemptId;\n const restorePosition = () => {\n if (!element || !activeRef.current) return;\n if (playbackPosition.timeMs > 0) {\n element.currentTime = playbackPosition.timeMs / 1000;\n }\n canSavePosition.current = true;\n };\n if (active && element) {\n // Another surface can clear shared manual intent while this inline copy\n // is paused (for example, the user pauses inside fullscreen).\n wantsPlayback.current = playbackPosition.playRequested ?? false;\n if (element.readyState >= 1) restorePosition();\n else element.addEventListener('loadedmetadata', restorePosition);\n }\n if (\n active &&\n (latestPlaybackRequest.current === undefined ||\n latestPlaybackRequest.current === handledPlaybackRequest.current) &&\n (autoPlay || wantsPlayback.current)\n ) {\n void tryPlay();\n } else if (!active) {\n attemptId.current++;\n pauseForOwnership(element);\n setBlocked(false);\n }\n return () => {\n attempts.current++;\n element?.removeEventListener('loadedmetadata', restorePosition);\n if (element && canSavePosition.current)\n playbackPosition.timeMs = element.currentTime * 1000;\n pauseForOwnership(element);\n };\n }, [\n active,\n autoPlay,\n pauseForOwnership,\n playbackPosition,\n retryVersion,\n tryPlay,\n ]);\n\n React.useEffect(() => {\n if (\n !active ||\n playbackRequestId === undefined ||\n playbackRequestId === handledPlaybackRequest.current\n )\n return;\n handledPlaybackRequest.current = playbackRequestId;\n wantsPlayback.current = true;\n playbackPosition.playRequested = true;\n void tryPlay();\n }, [active, playbackRequestId, playbackPosition, tryPlay]);\n\n const togglePlayback = () => {\n if (state === 'playing') {\n wantsPlayback.current = false;\n playbackPosition.playRequested = false;\n mediaElementRef.current?.pause();\n } else {\n wantsPlayback.current = true;\n playbackPosition.playRequested = true;\n onActivate();\n if (active) void tryPlay();\n }\n };\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col items-center justify-center gap-3\">\n <MediaPlayer\n src={media.src}\n kind={media.kind === 'audio' ? 'audio' : 'video'}\n mediaElementRef={mediaElementRef}\n muted={muted}\n loop={loop}\n poster={media.poster}\n preload={active ? 'metadata' : 'none'}\n controls={active}\n aria-label={title}\n onStateChange={(next) => {\n setState(next);\n if (next === 'playing') ownershipPause.current = false;\n if (next === 'paused') {\n if (activeRef.current && !ownershipPause.current) {\n wantsPlayback.current = false;\n playbackPosition.playRequested = false;\n }\n ownershipPause.current = false;\n }\n }}\n onTimeUpdate={(timeMs) => {\n if (canSavePosition.current) playbackPosition.timeMs = timeMs;\n }}\n onRetry={() => {\n ownershipPause.current = false;\n canSavePosition.current = false;\n setState('idle');\n setBlocked(false);\n setRetryVersion((version) => version + 1);\n }}\n labels={{ error: labels.mediaError, retry: labels.retry }}\n className=\"min-h-0 flex-1 [&_video]:h-full [&_video]:w-full\"\n />\n {state !== 'error' && (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n leftIcon={\n state === 'playing' ? (\n <Pause className=\"h-4 w-4\" aria-hidden=\"true\" />\n ) : (\n <Play className=\"h-4 w-4\" aria-hidden=\"true\" />\n )\n }\n onClick={togglePlayback}\n >\n {state === 'playing' ? labels.pause : labels.play}\n </Button>\n )}\n {blocked && (\n <p\n role=\"status\"\n className=\"text-muted-foreground m-0 text-center text-sm\"\n >\n {labels.blockedAutoplay}\n </p>\n )}\n {state === 'error' && <SourceLink src={media.src} labels={labels} />}\n </div>\n );\n}\n\nfunction ImageFeedMedia({ media, title, labels }: FeedMediaProps) {\n const [failed, setFailed] = React.useState(false);\n return failed ? (\n <div role=\"alert\" className=\"flex flex-col gap-3 p-6 text-center\">\n <p className=\"text-muted-foreground m-0\">{labels.mediaError}</p>\n <SourceLink src={media.src} labels={labels} />\n </div>\n ) : (\n <img\n src={media.src}\n alt={media.alt ?? title}\n loading=\"lazy\"\n className=\"h-full max-h-full w-full object-contain\"\n onError={() => setFailed(true)}\n />\n );\n}\n\nfunction youtubeId(src: string): string | null {\n const validId = /^[A-Za-z0-9_-]{11}$/;\n if (validId.test(src)) return src;\n try {\n const url = new URL(src);\n const host = url.hostname.toLowerCase();\n const parts = url.pathname.split('/').filter(Boolean);\n let id: string | null = null;\n if (host === 'youtu.be' || host === 'www.youtu.be') {\n id = parts[0] ?? null;\n } else if (\n [\n 'youtube.com',\n 'www.youtube.com',\n 'm.youtube.com',\n 'youtube-nocookie.com',\n 'www.youtube-nocookie.com',\n ].includes(host)\n ) {\n id =\n url.searchParams.get('v') ??\n (['embed', 'shorts', 'live'].includes(parts[0]) ? parts[1] : null);\n }\n return id && validId.test(id) ? id : null;\n } catch {\n return null;\n }\n}\n\nfunction YouTubeFeedMedia({\n media,\n title,\n active,\n autoPlay,\n muted,\n loop,\n labels,\n onActivate,\n playbackRequestId,\n}: FeedMediaProps) {\n const id = youtubeId(media.src);\n const [requestedPlayback, setRequestedPlayback] = React.useState(false);\n const handledPlaybackRequest = React.useRef<string | number | undefined>(\n undefined\n );\n const pendingPlayback =\n active &&\n playbackRequestId !== undefined &&\n playbackRequestId !== handledPlaybackRequest.current;\n React.useEffect(() => {\n if (!active) setRequestedPlayback(false);\n else if (\n playbackRequestId !== undefined &&\n playbackRequestId !== handledPlaybackRequest.current\n ) {\n handledPlaybackRequest.current = playbackRequestId;\n setRequestedPlayback(true);\n }\n }, [active, playbackRequestId]);\n const embedUrl = new URL(\n `https://www.youtube-nocookie.com/embed/${id ?? ''}`\n );\n for (const [key, value] of Object.entries({\n autoplay: autoPlay || requestedPlayback || pendingPlayback ? '1' : '0',\n mute: muted ? '1' : '0',\n controls: '1',\n playsinline: '1',\n rel: '0',\n loop: loop ? '1' : '0',\n ...(loop && id ? { playlist: id } : {}),\n }))\n embedUrl.searchParams.set(key, value);\n const [failed, setFailed] = React.useState(false);\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col items-center gap-3\">\n {active && id && !failed ? (\n <iframe\n src={embedUrl.href}\n title={title}\n className=\"min-h-0 w-full flex-1 border-0\"\n allow=\"autoplay; encrypted-media; picture-in-picture; fullscreen\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n onError={() => setFailed(true)}\n />\n ) : (\n <div className=\"flex min-h-0 w-full flex-1 flex-col items-center justify-center gap-4\">\n {media.poster && (\n <img\n src={media.poster}\n alt=\"\"\n loading=\"lazy\"\n className=\"min-h-0 max-w-full flex-1 object-contain\"\n />\n )}\n {id && !failed ? (\n <Button\n variant=\"secondary\"\n leftIcon={<Play className=\"h-4 w-4\" aria-hidden=\"true\" />}\n onClick={() => {\n setRequestedPlayback(true);\n onActivate();\n }}\n >\n {labels.play}\n </Button>\n ) : (\n <p role=\"alert\" className=\"text-muted-foreground m-0\">\n {labels.mediaError}\n </p>\n )}\n </div>\n )}\n <p className=\"text-muted-foreground m-0 text-center text-sm\">\n {labels.youtubeNotice}\n </p>\n <SourceLink\n src={id ? `https://www.youtube.com/watch?v=${id}` : media.src}\n labels={labels}\n />\n </div>\n );\n}\n\n/** Native resources share UI transport; external embeds retain their controls. */\nexport function FeedMedia(props: FeedMediaProps) {\n if (props.media.kind === 'image') return <ImageFeedMedia {...props} />;\n if (props.media.kind === 'youtube') return <YouTubeFeedMedia {...props} />;\n return <NativeFeedMedia {...props} />;\n}\n","import * as React from 'react';\nimport { ChevronDown, ChevronUp, Maximize2 } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { usePrefersReducedMotion } from '../../hooks/usePrefersReducedMotion';\nimport { Avatar } from '../Avatar';\nimport { Button } from '../Button';\nimport { Modal, ModalClose, ModalHeader, ModalTitle } from '../Modal';\nimport { FeedMedia } from './FeedMedia';\nimport type { MediaFeedLabels, MediaFeedProps } from './types';\n\nconst defaultLabels: MediaFeedLabels = {\n feed: 'Media feed',\n loading: 'Loading media…',\n empty: 'No media to display.',\n error: 'Unable to load the media feed.',\n retry: 'Retry',\n fullscreen: 'Open fullscreen',\n close: 'Close fullscreen',\n previous: 'Previous item',\n next: 'Next item',\n play: 'Play',\n pause: 'Pause',\n blockedAutoplay: 'Playback did not start. Press Play to try again.',\n mediaError: 'This media is unavailable.',\n openSource: 'Open source',\n youtubeNotice: 'If embedded playback is unavailable, open the source.',\n item: (position, total) => `Media item ${position} of ${total}`,\n position: (position, total) => `${position} / ${total}`,\n};\n\n/**\n * A vertical, caller-owned media collection with one active playback surface.\n * Native players share MediaPlayer; provider-specific players can use the\n * renderMedia slot. Records, engagement actions and navigation belong to the host.\n */\nfunction MediaFeedInner<T>(\n {\n items,\n getId,\n getMedia,\n getTitle,\n getCaption,\n getAuthor,\n renderActions,\n renderMedia,\n activeItemId,\n defaultActiveItemId,\n onActiveItemChange,\n playbackRequest,\n loading = false,\n error,\n onRetry,\n autoPlay = true,\n muted = true,\n loop = true,\n labels: labelOverrides,\n classNames = {},\n className,\n ...rest\n }: MediaFeedProps<T>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n) {\n const labels = { ...defaultLabels, ...labelOverrides };\n const prefersReducedMotion = usePrefersReducedMotion();\n const allowAutoPlay = autoPlay && !prefersReducedMotion;\n const ids = items.map(getId);\n const idsKey = JSON.stringify(ids);\n const [internalActiveId, setInternalActiveId] = React.useState(\n () => defaultActiveItemId ?? ids[0]\n );\n const requestedId = activeItemId ?? internalActiveId;\n const activeId =\n requestedId !== undefined && ids.includes(requestedId)\n ? requestedId\n : ids[0];\n const activeIndex = activeId === undefined ? -1 : ids.indexOf(activeId);\n const [fullscreen, setFullscreen] = React.useState(false);\n const [retrying, setRetrying] = React.useState(false);\n const [retryFailed, setRetryFailed] = React.useState(false);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const cardRefs = React.useRef(new Map<string, HTMLElement>());\n const playbackPositions = React.useRef(\n new Map<string, { src: string; timeMs: number; playRequested?: boolean }>()\n );\n const consumedPlaybackRequests = React.useRef(\n new Map<string, string | number>()\n );\n const fullscreenTriggerRef = React.useRef<HTMLButtonElement | null>(null);\n const hasObserver = typeof IntersectionObserver !== 'undefined';\n // Hydration safety: the server cannot know whether the client supports\n // IntersectionObserver, so both environments start \"not visible\" and the\n // mount effects below establish real visibility (observer callbacks, or the\n // no-observer fallback). Offscreen autoplay therefore never starts early.\n const [visibleId, setVisibleId] = React.useState<string | null>(null);\n const visibleIdRef = React.useRef(visibleId);\n const [viewportVisible, setViewportVisible] = React.useState(false);\n const [pageVisible, setPageVisible] = React.useState(\n () =>\n typeof document === 'undefined' || document.visibilityState !== 'hidden'\n );\n const latest = React.useRef({\n items,\n ids,\n activeId,\n activeItemId,\n onActiveItemChange,\n fullscreen,\n });\n latest.current = {\n items,\n ids,\n activeId,\n activeItemId,\n onActiveItemChange,\n fullscreen,\n };\n\n const setRoot = React.useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef]\n );\n\n const select = React.useCallback((id: string) => {\n const current = latest.current;\n const index = current.ids.indexOf(id);\n if (index < 0 || id === current.activeId) return;\n if (current.activeItemId === undefined) setInternalActiveId(id);\n current.onActiveItemChange?.(current.items[index]);\n }, []);\n\n // Visibility belongs to this feed, never a global keyboard/player singleton.\n // A separate viewport observer also pauses a feed scrolled off the host page.\n React.useEffect(() => {\n const root = rootRef.current;\n if (!root || typeof IntersectionObserver === 'undefined') {\n // No-observer fallback: assume the feed is on screen.\n setViewportVisible(true);\n return;\n }\n const observer = new IntersectionObserver(([entry]) => {\n setViewportVisible(entry.isIntersecting);\n });\n observer.observe(root);\n return () => observer.disconnect();\n }, []);\n\n React.useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport || typeof IntersectionObserver === 'undefined') return;\n const ratios = new Map<string, number>();\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n const id = (entry.target as HTMLElement).dataset.mediaId;\n if (id !== undefined)\n ratios.set(id, entry.isIntersecting ? entry.intersectionRatio : 0);\n }\n let bestId: string | null = null;\n let bestRatio = 0;\n for (const [id, ratio] of ratios) {\n if (ratio > bestRatio) {\n bestId = id;\n bestRatio = ratio;\n }\n }\n visibleIdRef.current = bestId;\n setVisibleId(bestId);\n if (bestId !== null && !latest.current.fullscreen) select(bestId);\n },\n { root: viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n cardRefs.current.forEach((card) => observer.observe(card));\n return () => observer.disconnect();\n }, [idsKey, loading, error, select]);\n\n React.useEffect(() => {\n const update = () => setPageVisible(document.visibilityState !== 'hidden');\n document.addEventListener('visibilitychange', update);\n return () => document.removeEventListener('visibilitychange', update);\n }, []);\n\n // Controlled selection and initial deep links scroll within the feed, without\n // moving the surrounding inbox/page. Observer selections are already visible.\n React.useEffect(() => {\n if (activeId === undefined) return;\n if (!hasObserver) {\n visibleIdRef.current = activeId;\n setVisibleId(activeId);\n }\n if (visibleIdRef.current === activeId && hasObserver) return;\n const card = cardRefs.current.get(activeId);\n if (card && viewportRef.current) {\n viewportRef.current.scrollTo?.({ top: card.offsetTop, behavior: 'auto' });\n }\n }, [activeId, idsKey, hasObserver, loading, error]);\n\n React.useEffect(() => {\n if (!items.length) setFullscreen(false);\n }, [items.length]);\n\n // The gesture targets an already selected, visible surface. Consume it once\n // per feed so a later source/fullscreen remount cannot resurrect a paused clip.\n React.useEffect(() => {\n if (\n loading ||\n error ||\n activeIndex < 0 ||\n !playbackRequest ||\n playbackRequest.itemId !== activeId\n )\n return;\n if (\n !pageVisible ||\n (!fullscreen && (!viewportVisible || visibleId !== activeId))\n )\n return;\n consumedPlaybackRequests.current.set(\n playbackRequest.itemId,\n playbackRequest.requestId\n );\n }, [\n activeId,\n activeIndex,\n fullscreen,\n pageVisible,\n viewportVisible,\n visibleId,\n playbackRequest,\n loading,\n error,\n ]);\n\n React.useEffect(() => {\n const positions = playbackPositions.current;\n for (const id of positions.keys()) {\n if (!latest.current.ids.includes(id)) positions.delete(id);\n }\n }, [idsKey]);\n\n React.useEffect(() => {\n if (fullscreen || !fullscreenTriggerRef.current) return;\n if (fullscreenTriggerRef.current.isConnected)\n fullscreenTriggerRef.current.focus();\n else viewportRef.current?.focus();\n fullscreenTriggerRef.current = null;\n }, [fullscreen]);\n\n const navigate = (index: number, focus = false) => {\n const id = ids[Math.max(0, Math.min(index, ids.length - 1))];\n if (id === undefined) return;\n select(id);\n const card = cardRefs.current.get(id);\n if (card && viewportRef.current) {\n viewportRef.current.scrollTo?.({ top: card.offsetTop, behavior: 'auto' });\n if (focus) card.focus({ preventScroll: true });\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n // Never steal arrows/Space from a player, reaction button or chat composer.\n const target = event.target as HTMLElement;\n if (event.target !== event.currentTarget && target.dataset?.slot !== 'item')\n return;\n let next: number;\n switch (event.key) {\n case 'ArrowDown':\n case 'PageDown':\n next = activeIndex + 1;\n break;\n case 'ArrowUp':\n case 'PageUp':\n next = activeIndex - 1;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = items.length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n navigate(next, event.target !== event.currentTarget);\n };\n\n const retry = async () => {\n if (!onRetry || retrying) return;\n setRetrying(true);\n setRetryFailed(false);\n try {\n await onRetry();\n } catch {\n setRetryFailed(true);\n } finally {\n setRetrying(false);\n }\n };\n\n const renderCard = (item: T, index: number, immersive: boolean) => {\n const id = getId(item);\n const media = getMedia(item);\n let playbackPosition = playbackPositions.current.get(id);\n if (!playbackPosition || playbackPosition.src !== media.src) {\n playbackPosition = { src: media.src, timeMs: 0 };\n playbackPositions.current.set(id, playbackPosition);\n }\n const title = getTitle?.(item) || labels.item(index + 1, items.length);\n const author = getAuthor?.(item);\n const caption = getCaption?.(item);\n const active =\n !loading &&\n !error &&\n pageVisible &&\n (immersive\n ? fullscreen && id === activeId\n : !fullscreen &&\n viewportVisible &&\n id === activeId &&\n id === visibleId);\n const playbackRequestId =\n active &&\n playbackRequest?.itemId === id &&\n consumedPlaybackRequests.current.get(id) !== playbackRequest.requestId\n ? playbackRequest.requestId\n : undefined;\n return (\n <article\n key={id}\n ref={\n immersive\n ? undefined\n : (node) => {\n if (node) cardRefs.current.set(id, node);\n else cardRefs.current.delete(id);\n }\n }\n data-slot=\"item\"\n data-media-id={id}\n data-active={active}\n aria-label={title}\n aria-posinset={index + 1}\n aria-setsize={items.length}\n tabIndex={id === activeId ? 0 : -1}\n className={cn(\n 'border-border bg-card text-card-foreground focus-visible:ring-ring flex min-h-0 w-full snap-start flex-col overflow-hidden border focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset',\n immersive ? 'h-full flex-1 border-0' : 'h-full shrink-0 rounded-xl',\n classNames.item\n )}\n >\n <div\n data-slot=\"media\"\n className={cn(\n 'bg-muted flex min-h-0 flex-1 items-center justify-center p-3',\n classNames.media\n )}\n >\n {renderMedia ? (\n renderMedia(media, {\n item,\n active,\n autoPlay: allowAutoPlay,\n muted,\n loop,\n playbackRequestId,\n })\n ) : (\n <FeedMedia\n key={`${id}:${media.kind}:${media.src}:${immersive}`}\n media={media}\n title={title}\n active={active}\n autoPlay={allowAutoPlay}\n muted={muted}\n loop={loop}\n labels={labels}\n onActivate={() => select(id)}\n playbackPosition={playbackPosition}\n playbackRequestId={playbackRequestId}\n />\n )}\n </div>\n <div\n data-slot=\"details\"\n className={cn(\n 'flex max-h-[40%] shrink-0 flex-col gap-2 overflow-y-auto p-4',\n classNames.details\n )}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0 flex-1\">\n {author && (\n <div\n data-slot=\"author\"\n className={cn(\n 'mb-2 flex items-center gap-2',\n classNames.author\n )}\n >\n <Avatar\n name={author.name}\n src={author.avatar}\n alt=\"\"\n size=\"sm\"\n />\n <span className=\"truncate text-sm font-medium\">\n {author.name}\n </span>\n </div>\n )}\n <h3\n data-slot=\"title\"\n className={cn('m-0 text-base font-semibold', classNames.title)}\n >\n {title}\n </h3>\n </div>\n {!immersive && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label={labels.fullscreen}\n title={labels.fullscreen}\n onClick={(event) => {\n fullscreenTriggerRef.current = event.currentTarget;\n select(id);\n setFullscreen(true);\n }}\n >\n <Maximize2 className=\"h-4 w-4\" aria-hidden=\"true\" />\n </Button>\n )}\n </div>\n {caption != null && (\n <div\n data-slot=\"caption\"\n className={cn(\n 'text-muted-foreground text-sm',\n classNames.caption\n )}\n >\n {caption}\n </div>\n )}\n {renderActions && (\n <div\n data-slot=\"actions\"\n className={cn(\n 'flex flex-wrap items-center gap-2',\n classNames.actions\n )}\n >\n {renderActions(item)}\n </div>\n )}\n </div>\n </article>\n );\n };\n\n const controls = (\n <div\n data-slot=\"controls\"\n className={cn(\n 'flex shrink-0 items-center justify-between gap-3 py-2',\n classNames.controls\n )}\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-auto min-h-8 flex-1 py-2 [&_[data-slot=button-label]]:whitespace-normal\"\n disabled={activeIndex <= 0}\n onClick={() => navigate(activeIndex - 1)}\n leftIcon={<ChevronUp className=\"h-4 w-4\" aria-hidden=\"true\" />}\n >\n {labels.previous}\n </Button>\n <span\n role=\"status\"\n aria-live=\"polite\"\n className=\"text-muted-foreground shrink-0 text-sm whitespace-nowrap\"\n >\n {labels.position(activeIndex + 1, items.length)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-auto min-h-8 flex-1 py-2 [&_[data-slot=button-label]]:whitespace-normal\"\n disabled={activeIndex >= items.length - 1}\n onClick={() => navigate(activeIndex + 1)}\n rightIcon={<ChevronDown className=\"h-4 w-4\" aria-hidden=\"true\" />}\n >\n {labels.next}\n </Button>\n </div>\n );\n\n return (\n <div\n ref={setRoot}\n data-slot=\"root\"\n data-component=\"media-feed\"\n className={cn(\n 'bg-background text-foreground flex h-[min(48rem,80dvh)] min-h-0 w-full flex-col',\n classNames.root,\n className\n )}\n {...rest}\n >\n {loading || error || !items.length ? (\n <div\n data-slot=\"status\"\n role={error ? 'alert' : 'status'}\n aria-busy={loading || retrying}\n className={cn(\n 'flex min-h-0 flex-1 flex-col items-center justify-center gap-4 p-6 text-center',\n classNames.status\n )}\n >\n <p className=\"m-0\">\n {loading ? labels.loading : error || labels.empty}\n </p>\n {error && onRetry && (\n <Button\n variant=\"outline\"\n isLoading={retrying}\n loadingText={labels.loading}\n onClick={() => {\n void retry();\n }}\n >\n {labels.retry}\n </Button>\n )}\n {retryFailed && (\n <p role=\"alert\" className=\"m-0\">\n {labels.error}\n </p>\n )}\n </div>\n ) : (\n <>\n {/* ARIA feeds are focusable composites with scoped item navigation. */}\n {/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n <div\n ref={viewportRef}\n data-slot=\"viewport\"\n role=\"feed\"\n aria-label={labels.feed}\n aria-busy={false}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n className={cn(\n 'focus-visible:ring-ring relative flex min-h-0 flex-1 snap-y snap-mandatory flex-col gap-4 overflow-y-auto overscroll-contain focus-visible:ring-2 focus-visible:outline-none',\n classNames.viewport\n )}\n >\n {items.map((item, index) => renderCard(item, index, false))}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n {controls}\n </>\n )}\n <Modal\n open={fullscreen && !loading && !error && !!items.length}\n onOpenChange={setFullscreen}\n size=\"full\"\n className=\"h-dvh min-h-0 sm:h-[calc(100dvh-2rem)]\"\n >\n <ModalHeader>\n <ModalTitle>{labels.feed}</ModalTitle>\n <ModalClose aria-label={labels.close} />\n </ModalHeader>\n {/* Fullscreen keeps the same feed navigation; controls retain their keys. */}\n {/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n <div\n data-slot=\"fullscreen\"\n data-component=\"media-feed\"\n role=\"feed\"\n aria-label={labels.feed}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex min-h-0 flex-1 flex-col px-2 pb-2 sm:px-4',\n classNames.fullscreen\n )}\n >\n {activeIndex >= 0 &&\n renderCard(items[activeIndex], activeIndex, true)}\n {controls}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\n </Modal>\n </div>\n );\n}\n\nexport const MediaFeed = React.forwardRef(MediaFeedInner) as <T>(\n props: MediaFeedProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement;\n\n(MediaFeed as React.NamedExoticComponent).displayName = 'MediaFeed';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-AMYFRY7K.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Button/button-critical.ts","../src/components/Button/Button.tsx"],"names":["React","jsx","cn","buttonVariants","jsxs","Fragment"],"mappings":"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","file":"chunk-X6A27RGO.cjs","sourcesContent":["/**\n * Self-healing structural CSS for Button.\n *\n * Button layout relies on Tailwind utilities (`inline-flex`,\n * `whitespace-nowrap`, ...). Consumer apps with a stale safelist copy or a\n * missing `@source` line never generate those classes, so the button falls\n * back to `inline-block` and the icon stacks above the label.\n *\n * Injecting these rules from the component guarantees every consumer gets\n * correct button structure just by upgrading the library — no app-side\n * changes required.\n *\n * Override safety, by consumer setup:\n * - Tailwind 4: utilities live in `@layer utilities`. The structural rules\n * below join that same layer, so conflicts resolve by specificity — and\n * every selector is wrapped in `:where()` (zero specificity), so real\n * utilities (`hidden`, `gap-0`, ...) always win. (A new layer name can't\n * be used: layers declared later outrank `utilities`.)\n * - Tailwind 3 / no Tailwind: consumer CSS is unlayered, and unlayered\n * always beats layered, so the structural rules stay a pure fallback.\n */\n\nconst STYLE_ID = 'mieweb-ui-button-critical';\n\nconst CRITICAL_CSS = [\n '@layer utilities{',\n // Structure: keep icon + label on one line (matches the base utilities\n // inline-flex items-center justify-center gap-2 min-w-0 whitespace-nowrap).\n `:where(button[data-slot='button']){display:inline-flex;flex-wrap:nowrap;align-items:center;justify-content:center;gap:0.5rem;min-width:0;white-space:nowrap;}`,\n // Icons and the loading spinner never shrink (matches shrink-0).\n `:where(button[data-slot='button']) > :where([data-slot='button-icon'],svg){flex-shrink:0;}`,\n // Label truncates instead of wrapping/overflowing (matches truncate).\n `:where(button[data-slot='button']) > :where([data-slot='button-label']){min-width:0;overflow:hidden;text-overflow:ellipsis;}`,\n '}',\n // Icons passed as children land inside the label span; Tailwind preflight\n // makes SVGs display:block, which forces line breaks inside the inline\n // label. Restore inline flow. This rule is deliberately UNLAYERED at\n // specificity (0,2,2): it must beat Tailwind 3's unlayered preflight\n // `svg{display:block}` (0,0,1) — layering it would neuter the fix for\n // exactly the broken-TW3 apps it exists for. It also outranks the\n // (0,1,1) [&_svg]:inline-block utility on the label, but both declare\n // the same values, so they never conflict. Known tradeoff:\n // display utilities on an SVG inside the label slot won't win; consumers\n // should conditionally render icons instead.\n `button[data-slot='button'] [data-slot='button-label'] svg{display:inline-block;vertical-align:middle;}`,\n].join('');\n\n/** Injects the critical Button styles once per document. SSR-safe. */\nexport function injectButtonCriticalStyles(): void {\n if (typeof document === 'undefined') return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = CRITICAL_CSS;\n document.head.appendChild(style);\n}\n","import * as React from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { injectButtonCriticalStyles } from './button-critical';\nimport { buttonVariants } from './button-variants';\n\n/**\n * Label wrapper classes. Icons passed as `children` (rather than\n * leftIcon/rightIcon) land inside this span; preflight makes SVGs\n * display:block which would force line breaks inside the inline span,\n * so restore inline flow for them.\n */\nconst labelClasses = 'truncate [&_svg]:inline-block [&_svg]:align-middle';\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Optional icon element to render before the button text */\n leftIcon?: React.ReactElement | null;\n /** Optional icon element to render after the button text */\n rightIcon?: React.ReactElement | null;\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /** Accessible label for the loading state */\n loadingText?: string;\n}\n\n/**\n * A versatile button component with multiple variants and sizes.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\">Click me</Button>\n * <Button variant=\"danger\" leftIcon={<TrashIcon />}>Delete</Button>\n * <Button variant=\"ghost\" isLoading loadingText=\"Saving...\">Save</Button>\n * <Button effect=\"sheen\">Request a demo</Button>\n * <Button variant=\"outline\" effect=\"orbit\">Watch the film</Button>\n * ```\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n effect,\n leftIcon,\n rightIcon,\n isLoading,\n loadingText,\n disabled,\n children,\n title,\n ...props\n },\n ref\n ) => {\n const resolvedSize = size ?? 'md';\n const labelRef = React.useRef<HTMLSpanElement>(null);\n const innerRef = React.useRef<HTMLButtonElement>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\n\n // Guarantees correct icon/label layout even when the consumer's Tailwind\n // build is missing our utility classes. See button-critical.ts.\n React.useInsertionEffect(() => {\n injectButtonCriticalStyles();\n }, []);\n\n // When the label truncates, expose the full text as a native tooltip.\n // A consumer-provided `title` always takes precedence.\n React.useLayoutEffect(() => {\n const label = labelRef.current;\n const button = innerRef.current;\n if (!label || !button || title !== undefined) return;\n\n const update = () => {\n if (label.scrollWidth > label.clientWidth) {\n button.title = label.textContent ?? '';\n } else {\n button.removeAttribute('title');\n }\n };\n\n update();\n if (typeof globalThis.ResizeObserver === 'undefined') return;\n const observer = new globalThis.ResizeObserver(update);\n observer.observe(label);\n return () => observer.disconnect();\n }, [title, children, isLoading, loadingText]);\n\n return (\n <button\n data-slot=\"button\"\n data-size={resolvedSize}\n data-variant={variant ?? 'primary'}\n className={cn(\n buttonVariants({ variant, size: resolvedSize, fullWidth, effect }),\n className\n )}\n ref={innerRef}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n title={title}\n {...props}\n >\n {isLoading ? (\n <>\n <LoadingSpinner />\n <span\n ref={labelRef}\n data-slot=\"button-label\"\n className={labelClasses}\n >\n {loadingText || children}\n </span>\n </>\n ) : (\n <>\n {React.isValidElement(leftIcon) && (\n <span data-slot=\"button-icon\" className=\"shrink-0\">\n {leftIcon}\n </span>\n )}\n <span\n ref={labelRef}\n data-slot=\"button-label\"\n className={labelClasses}\n >\n {children}\n </span>\n {React.isValidElement(rightIcon) && (\n <span data-slot=\"button-icon\" className=\"shrink-0\">\n {rightIcon}\n </span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\n/**\n * Simple loading spinner for the button\n */\nfunction LoadingSpinner() {\n return (\n <svg\n className=\"h-4 w-4 shrink-0 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\nexport { Button, buttonVariants };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Button/button-critical.ts","../src/components/Button/Button.tsx"],"names":["React","jsx","cn","buttonVariants","jsxs","Fragment"],"mappings":"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","file":"chunk-ANMX7YDL.cjs","sourcesContent":["/**\n * Self-healing structural CSS for Button.\n *\n * Button layout relies on Tailwind utilities (`inline-flex`,\n * `whitespace-nowrap`, ...). Consumer apps with a stale safelist copy or a\n * missing `@source` line never generate those classes, so the button falls\n * back to `inline-block` and the icon stacks above the label.\n *\n * Injecting these rules from the component guarantees every consumer gets\n * correct button structure just by upgrading the library — no app-side\n * changes required.\n *\n * Override safety, by consumer setup:\n * - Tailwind 4: utilities live in `@layer utilities`. The structural rules\n * below join that same layer, so conflicts resolve by specificity — and\n * every selector is wrapped in `:where()` (zero specificity), so real\n * utilities (`hidden`, `gap-0`, ...) always win. (A new layer name can't\n * be used: layers declared later outrank `utilities`.)\n * - Tailwind 3 / no Tailwind: consumer CSS is unlayered, and unlayered\n * always beats layered, so the structural rules stay a pure fallback.\n */\n\nconst STYLE_ID = 'mieweb-ui-button-critical';\n\nconst CRITICAL_CSS = [\n '@layer utilities{',\n // Structure: keep icon + label on one line (matches the base utilities\n // inline-flex items-center justify-center gap-2 min-w-0 whitespace-nowrap).\n `:where(button[data-slot='button']){display:inline-flex;flex-wrap:nowrap;align-items:center;justify-content:center;gap:0.5rem;min-width:0;white-space:nowrap;}`,\n // Icons and the loading spinner never shrink (matches shrink-0).\n `:where(button[data-slot='button']) > :where([data-slot='button-icon'],svg){flex-shrink:0;}`,\n // Label truncates instead of wrapping/overflowing (matches truncate).\n `:where(button[data-slot='button']) > :where([data-slot='button-label']){min-width:0;overflow:hidden;text-overflow:ellipsis;}`,\n '}',\n // Icons passed as children land inside the label span; Tailwind preflight\n // makes SVGs display:block, which forces line breaks inside the inline\n // label. Restore inline flow. This rule is deliberately UNLAYERED at\n // specificity (0,2,2): it must beat Tailwind 3's unlayered preflight\n // `svg{display:block}` (0,0,1) — layering it would neuter the fix for\n // exactly the broken-TW3 apps it exists for. It also outranks the\n // (0,1,1) [&_svg]:inline-block utility on the label, but both declare\n // the same values, so they never conflict. Known tradeoff:\n // display utilities on an SVG inside the label slot won't win; consumers\n // should conditionally render icons instead.\n `button[data-slot='button'] [data-slot='button-label'] svg{display:inline-block;vertical-align:middle;}`,\n].join('');\n\n/** Injects the critical Button styles once per document. SSR-safe. */\nexport function injectButtonCriticalStyles(): void {\n if (typeof document === 'undefined') return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = CRITICAL_CSS;\n document.head.appendChild(style);\n}\n","import * as React from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { injectButtonCriticalStyles } from './button-critical';\nimport { buttonVariants } from './button-variants';\n\n/**\n * Label wrapper classes. Icons passed as `children` (rather than\n * leftIcon/rightIcon) land inside this span; preflight makes SVGs\n * display:block which would force line breaks inside the inline span,\n * so restore inline flow for them.\n */\nconst labelClasses = 'truncate [&_svg]:inline-block [&_svg]:align-middle';\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Optional icon element to render before the button text */\n leftIcon?: React.ReactElement | null;\n /** Optional icon element to render after the button text */\n rightIcon?: React.ReactElement | null;\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /** Accessible label for the loading state */\n loadingText?: string;\n}\n\n/**\n * A versatile button component with multiple variants and sizes.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\">Click me</Button>\n * <Button variant=\"danger\" leftIcon={<TrashIcon />}>Delete</Button>\n * <Button variant=\"ghost\" isLoading loadingText=\"Saving...\">Save</Button>\n * <Button effect=\"sheen\">Request a demo</Button>\n * <Button variant=\"outline\" effect=\"orbit\">Watch the film</Button>\n * ```\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n effect,\n leftIcon,\n rightIcon,\n isLoading,\n loadingText,\n disabled,\n children,\n title,\n ...props\n },\n ref\n ) => {\n const resolvedSize = size ?? 'md';\n const labelRef = React.useRef<HTMLSpanElement>(null);\n const innerRef = React.useRef<HTMLButtonElement>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\n\n // Guarantees correct icon/label layout even when the consumer's Tailwind\n // build is missing our utility classes. See button-critical.ts.\n React.useInsertionEffect(() => {\n injectButtonCriticalStyles();\n }, []);\n\n // When the label truncates, expose the full text as a native tooltip.\n // A consumer-provided `title` always takes precedence.\n React.useLayoutEffect(() => {\n const label = labelRef.current;\n const button = innerRef.current;\n if (!label || !button || title !== undefined) return;\n\n const update = () => {\n if (label.scrollWidth > label.clientWidth) {\n button.title = label.textContent ?? '';\n } else {\n button.removeAttribute('title');\n }\n };\n\n update();\n if (typeof globalThis.ResizeObserver === 'undefined') return;\n const observer = new globalThis.ResizeObserver(update);\n observer.observe(label);\n return () => observer.disconnect();\n }, [title, children, isLoading, loadingText]);\n\n return (\n <button\n data-slot=\"button\"\n data-size={resolvedSize}\n data-variant={variant ?? 'primary'}\n className={cn(\n buttonVariants({ variant, size: resolvedSize, fullWidth, effect }),\n className\n )}\n ref={innerRef}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n title={title}\n {...props}\n >\n {isLoading ? (\n <>\n <LoadingSpinner />\n <span\n ref={labelRef}\n data-slot=\"button-label\"\n className={labelClasses}\n >\n {loadingText || children}\n </span>\n </>\n ) : (\n <>\n {React.isValidElement(leftIcon) && (\n <span data-slot=\"button-icon\" className=\"shrink-0\">\n {leftIcon}\n </span>\n )}\n <span\n ref={labelRef}\n data-slot=\"button-label\"\n className={labelClasses}\n >\n {children}\n </span>\n {React.isValidElement(rightIcon) && (\n <span data-slot=\"button-icon\" className=\"shrink-0\">\n {rightIcon}\n </span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\n/**\n * Simple loading spinner for the button\n */\nfunction LoadingSpinner() {\n return (\n <svg\n className=\"h-4 w-4 shrink-0 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\nexport { Button, buttonVariants };\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useUrlSearchParam } from './chunk-CVNPNZMX.js';
|
|
1
2
|
import { cn } from './chunk-TQONQSJO.js';
|
|
2
3
|
import * as React from 'react';
|
|
3
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -18,6 +19,8 @@ function Tabs({
|
|
|
18
19
|
defaultValue,
|
|
19
20
|
onValueChange,
|
|
20
21
|
variant = "underline",
|
|
22
|
+
urlParam,
|
|
23
|
+
urlValues,
|
|
21
24
|
children,
|
|
22
25
|
className
|
|
23
26
|
}) {
|
|
@@ -25,15 +28,20 @@ function Tabs({
|
|
|
25
28
|
defaultValue || ""
|
|
26
29
|
);
|
|
27
30
|
const isControlled = controlledValue !== void 0;
|
|
28
|
-
const
|
|
31
|
+
const syncsUrl = !isControlled && Boolean(urlParam);
|
|
32
|
+
const [urlValue, setUrlValue] = useUrlSearchParam(
|
|
33
|
+
syncsUrl ? urlParam : void 0,
|
|
34
|
+
defaultValue || "",
|
|
35
|
+
(v) => urlValues ? urlValues.includes(v) : v !== ""
|
|
36
|
+
);
|
|
37
|
+
const value = isControlled ? controlledValue : syncsUrl ? urlValue : uncontrolledValue;
|
|
29
38
|
const handleValueChange = React.useCallback(
|
|
30
39
|
(newValue) => {
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
}
|
|
40
|
+
if (syncsUrl) setUrlValue(newValue);
|
|
41
|
+
else if (!isControlled) setUncontrolledValue(newValue);
|
|
34
42
|
onValueChange?.(newValue);
|
|
35
43
|
},
|
|
36
|
-
[isControlled, onValueChange]
|
|
44
|
+
[isControlled, syncsUrl, setUrlValue, onValueChange]
|
|
37
45
|
);
|
|
38
46
|
return /* @__PURE__ */ jsx(
|
|
39
47
|
TabsContext.Provider,
|
|
@@ -140,7 +148,7 @@ var tabsTriggerVariants = cva(
|
|
|
140
148
|
],
|
|
141
149
|
pills: [
|
|
142
150
|
"px-3 py-1.5 rounded-md text-sm",
|
|
143
|
-
"text-
|
|
151
|
+
"text-neutral-600 dark:text-neutral-300 hover:text-foreground",
|
|
144
152
|
"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm"
|
|
145
153
|
],
|
|
146
154
|
enclosed: [
|
|
@@ -217,5 +225,5 @@ var TabsContent = React.forwardRef(
|
|
|
217
225
|
TabsContent.displayName = "TabsContent";
|
|
218
226
|
|
|
219
227
|
export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants };
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
221
|
-
//# sourceMappingURL=chunk-
|
|
228
|
+
//# sourceMappingURL=chunk-B4CKCNWD.js.map
|
|
229
|
+
//# sourceMappingURL=chunk-B4CKCNWD.js.map
|