@fluid-app/rep-widgets 0.1.16 → 0.1.17
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/AlertWidget-CiMRJYmn.mjs +22 -0
- package/dist/AlertWidget-CiMRJYmn.mjs.map +1 -0
- package/dist/AlertWidget-DU_HP0EW.cjs +39 -0
- package/dist/AlertWidget-DU_HP0EW.cjs.map +1 -0
- package/dist/CalendarWidget-BI8sv5HJ.cjs +441 -0
- package/dist/CalendarWidget-BI8sv5HJ.cjs.map +1 -0
- package/dist/CalendarWidget-Dk8O2NRC.mjs +424 -0
- package/dist/CalendarWidget-Dk8O2NRC.mjs.map +1 -0
- package/dist/CarouselWidget-0RP-Rd1D.mjs +436 -0
- package/dist/CarouselWidget-0RP-Rd1D.mjs.map +1 -0
- package/dist/CarouselWidget-DLADgLPJ.cjs +453 -0
- package/dist/CarouselWidget-DLADgLPJ.cjs.map +1 -0
- package/dist/CatchUpWidget-CUnCumIf.mjs +247 -0
- package/dist/CatchUpWidget-CUnCumIf.mjs.map +1 -0
- package/dist/CatchUpWidget-DiqdwPvE.cjs +264 -0
- package/dist/CatchUpWidget-DiqdwPvE.cjs.map +1 -0
- package/dist/ChartWidget-DhAVW8w4.cjs +432 -0
- package/dist/ChartWidget-DhAVW8w4.cjs.map +1 -0
- package/dist/ChartWidget-DrF1e1sy.mjs +415 -0
- package/dist/ChartWidget-DrF1e1sy.mjs.map +1 -0
- package/dist/ContainerWidget-Cp0_vPZB.cjs +61 -0
- package/dist/ContainerWidget-Cp0_vPZB.cjs.map +1 -0
- package/dist/ContainerWidget-Xd231yys.mjs +44 -0
- package/dist/ContainerWidget-Xd231yys.mjs.map +1 -0
- package/dist/EmbedWidget-BQyYm50g.cjs +173 -0
- package/dist/EmbedWidget-BQyYm50g.cjs.map +1 -0
- package/dist/EmbedWidget-DQ2rCA4j.mjs +156 -0
- package/dist/EmbedWidget-DQ2rCA4j.mjs.map +1 -0
- package/dist/ImageWidget-DBBul7ca.mjs +150 -0
- package/dist/ImageWidget-DBBul7ca.mjs.map +1 -0
- package/dist/ImageWidget-DTwM7xCz.cjs +167 -0
- package/dist/ImageWidget-DTwM7xCz.cjs.map +1 -0
- package/dist/LayoutWidget-B1itwSsn.mjs +107 -0
- package/dist/LayoutWidget-B1itwSsn.mjs.map +1 -0
- package/dist/LayoutWidget-CWE_9JB5.cjs +124 -0
- package/dist/LayoutWidget-CWE_9JB5.cjs.map +1 -0
- package/dist/ListWidget-CxaLm0D5.cjs +919 -0
- package/dist/ListWidget-CxaLm0D5.cjs.map +1 -0
- package/dist/ListWidget-EXPlzfUE.mjs +901 -0
- package/dist/ListWidget-EXPlzfUE.mjs.map +1 -0
- package/dist/MediaRenderer-CcJvyOJ1.cjs +181 -0
- package/dist/MediaRenderer-CcJvyOJ1.cjs.map +1 -0
- package/dist/MediaRenderer-Uq90PZcY.mjs +163 -0
- package/dist/MediaRenderer-Uq90PZcY.mjs.map +1 -0
- package/dist/MySiteWidget-BTyb5AJM.mjs +262 -0
- package/dist/MySiteWidget-BTyb5AJM.mjs.map +1 -0
- package/dist/MySiteWidget-iRPl6b2F.cjs +279 -0
- package/dist/MySiteWidget-iRPl6b2F.cjs.map +1 -0
- package/dist/NestedWidget-CwyVsZ-f.mjs +330 -0
- package/dist/NestedWidget-CwyVsZ-f.mjs.map +1 -0
- package/dist/NestedWidget-DavPMVii.cjs +346 -0
- package/dist/NestedWidget-DavPMVii.cjs.map +1 -0
- package/dist/QuickShareWidget-BIOkquPG.cjs +262 -0
- package/dist/QuickShareWidget-BIOkquPG.cjs.map +1 -0
- package/dist/QuickShareWidget-BUbuTQFQ.mjs +245 -0
- package/dist/QuickShareWidget-BUbuTQFQ.mjs.map +1 -0
- package/dist/RecentActivityWidget-BgsjgQY5.cjs +408 -0
- package/dist/RecentActivityWidget-BgsjgQY5.cjs.map +1 -0
- package/dist/RecentActivityWidget-ComwTgR9.mjs +391 -0
- package/dist/RecentActivityWidget-ComwTgR9.mjs.map +1 -0
- package/dist/RegistryContext-6KXd4t6d.cjs +54 -0
- package/dist/RegistryContext-6KXd4t6d.cjs.map +1 -0
- package/dist/RegistryContext-CscXrsRa.mjs +36 -0
- package/dist/RegistryContext-CscXrsRa.mjs.map +1 -0
- package/dist/ScreenRenderer-BCd4Rsba.cjs +82 -0
- package/dist/ScreenRenderer-BCd4Rsba.cjs.map +1 -0
- package/dist/ScreenRenderer-CVJMpQ9A.mjs +76 -0
- package/dist/ScreenRenderer-CVJMpQ9A.mjs.map +1 -0
- package/dist/ScreenRendererContext-D62_Fazh.cjs +35 -0
- package/dist/ScreenRendererContext-D62_Fazh.cjs.map +1 -0
- package/dist/ScreenRendererContext-DaldtZnX.mjs +23 -0
- package/dist/ScreenRendererContext-DaldtZnX.mjs.map +1 -0
- package/dist/SpacerWidget-Bs18KYH9.mjs +43 -0
- package/dist/SpacerWidget-Bs18KYH9.mjs.map +1 -0
- package/dist/SpacerWidget-D-Foe9wG.cjs +60 -0
- package/dist/SpacerWidget-D-Foe9wG.cjs.map +1 -0
- package/dist/TableWidget-BeG92tkU.cjs +455 -0
- package/dist/TableWidget-BeG92tkU.cjs.map +1 -0
- package/dist/TableWidget-Cc4kQaOE.mjs +438 -0
- package/dist/TableWidget-Cc4kQaOE.mjs.map +1 -0
- package/dist/TextWidget-CQxOWNZK.mjs +129 -0
- package/dist/TextWidget-CQxOWNZK.mjs.map +1 -0
- package/dist/TextWidget-Cn7-yZGk.cjs +146 -0
- package/dist/TextWidget-Cn7-yZGk.cjs.map +1 -0
- package/dist/ToDoWidget--KBpHqbA.mjs +274 -0
- package/dist/ToDoWidget--KBpHqbA.mjs.map +1 -0
- package/dist/ToDoWidget-CK87BavM.cjs +291 -0
- package/dist/ToDoWidget-CK87BavM.cjs.map +1 -0
- package/dist/VideoWidget-DxuqyD5L.cjs +209 -0
- package/dist/VideoWidget-DxuqyD5L.cjs.map +1 -0
- package/dist/VideoWidget-uKkRf5pm.mjs +192 -0
- package/dist/VideoWidget-uKkRf5pm.mjs.map +1 -0
- package/dist/chunk-CZWwpsFl.cjs +43 -0
- package/dist/components/index.cjs +10 -13
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.cts +8 -5
- package/dist/components/index.d.cts.map +1 -0
- package/dist/components/index.d.mts +11 -0
- package/dist/components/index.d.mts.map +1 -0
- package/dist/components/index.mjs +11 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/contexts/index.cjs +8 -29
- package/dist/contexts/index.d.cts +20 -14
- package/dist/contexts/index.d.cts.map +1 -0
- package/dist/contexts/{index.d.ts → index.d.mts} +20 -14
- package/dist/contexts/index.d.mts.map +1 -0
- package/dist/contexts/index.mjs +3 -0
- package/dist/core/index.cjs +37 -41
- package/dist/core/index.d.cts +41 -27
- package/dist/core/index.d.cts.map +1 -0
- package/dist/core/index.d.mts +78 -0
- package/dist/core/index.d.mts.map +1 -0
- package/dist/core/index.mjs +4 -0
- package/dist/error-state-DErSxZwH.mjs +18 -0
- package/dist/error-state-DErSxZwH.mjs.map +1 -0
- package/dist/error-state-DSzVUtEl.cjs +24 -0
- package/dist/error-state-DSzVUtEl.cjs.map +1 -0
- package/dist/fields-C29fgJje.mjs +2 -0
- package/dist/fields-CzY84PV7.d.cts +2 -0
- package/dist/fields-Da4_7j4S.d.mts +2 -0
- package/dist/rolldown-runtime-wcPFST8Q.mjs +13 -0
- package/dist/scroll-arrows-BZIlsE_x.cjs +35 -0
- package/dist/scroll-arrows-BZIlsE_x.cjs.map +1 -0
- package/dist/scroll-arrows-BevCYRNT.mjs +29 -0
- package/dist/scroll-arrows-BevCYRNT.mjs.map +1 -0
- package/dist/ui/index.cjs +69 -45
- package/dist/ui/index.d.cts +12 -7
- package/dist/ui/index.d.cts.map +1 -0
- package/dist/ui/index.d.mts +15 -0
- package/dist/ui/index.d.mts.map +1 -0
- package/dist/ui/index.mjs +3 -0
- package/dist/widgets/index.cjs +88 -209
- package/dist/widgets/index.cjs.map +1 -1
- package/dist/widgets/index.d.cts +814 -526
- package/dist/widgets/index.d.cts.map +1 -0
- package/dist/widgets/index.d.mts +892 -0
- package/dist/widgets/index.d.mts.map +1 -0
- package/dist/widgets/index.mjs +46 -0
- package/dist/widgets/index.mjs.map +1 -0
- package/package.json +6 -6
- package/dist/AlertWidget-3Q4AK7PE.js +0 -5
- package/dist/AlertWidget-3Q4AK7PE.js.map +0 -1
- package/dist/AlertWidget-C3YMPF7Y.cjs +0 -18
- package/dist/AlertWidget-C3YMPF7Y.cjs.map +0 -1
- package/dist/CalendarWidget-RAB5VESS.cjs +0 -18
- package/dist/CalendarWidget-RAB5VESS.cjs.map +0 -1
- package/dist/CalendarWidget-SEYTR3AG.js +0 -5
- package/dist/CalendarWidget-SEYTR3AG.js.map +0 -1
- package/dist/CarouselWidget-5LFXRR7Y.js +0 -6
- package/dist/CarouselWidget-5LFXRR7Y.js.map +0 -1
- package/dist/CarouselWidget-G5UHRD6R.cjs +0 -19
- package/dist/CarouselWidget-G5UHRD6R.cjs.map +0 -1
- package/dist/CatchUpWidget-NEMYZ7L5.js +0 -5
- package/dist/CatchUpWidget-NEMYZ7L5.js.map +0 -1
- package/dist/CatchUpWidget-XBU2GPFS.cjs +0 -18
- package/dist/CatchUpWidget-XBU2GPFS.cjs.map +0 -1
- package/dist/ChartWidget-463QVROY.cjs +0 -17
- package/dist/ChartWidget-463QVROY.cjs.map +0 -1
- package/dist/ChartWidget-554S2GQF.js +0 -4
- package/dist/ChartWidget-554S2GQF.js.map +0 -1
- package/dist/ContainerWidget-IOXW77X7.cjs +0 -21
- package/dist/ContainerWidget-IOXW77X7.cjs.map +0 -1
- package/dist/ContainerWidget-OLQPEXDT.js +0 -8
- package/dist/ContainerWidget-OLQPEXDT.js.map +0 -1
- package/dist/EmbedWidget-B7RFGTJB.js +0 -3
- package/dist/EmbedWidget-B7RFGTJB.js.map +0 -1
- package/dist/EmbedWidget-RETHBVTD.cjs +0 -16
- package/dist/EmbedWidget-RETHBVTD.cjs.map +0 -1
- package/dist/ImageWidget-BA2V3DPL.js +0 -4
- package/dist/ImageWidget-BA2V3DPL.js.map +0 -1
- package/dist/ImageWidget-SBC7LK7A.cjs +0 -17
- package/dist/ImageWidget-SBC7LK7A.cjs.map +0 -1
- package/dist/LayoutWidget-F3BDSGDP.cjs +0 -20
- package/dist/LayoutWidget-F3BDSGDP.cjs.map +0 -1
- package/dist/LayoutWidget-MBUJVGKA.js +0 -7
- package/dist/LayoutWidget-MBUJVGKA.js.map +0 -1
- package/dist/ListWidget-4PKBMBAS.cjs +0 -19
- package/dist/ListWidget-4PKBMBAS.cjs.map +0 -1
- package/dist/ListWidget-6SZK6X3X.js +0 -6
- package/dist/ListWidget-6SZK6X3X.js.map +0 -1
- package/dist/MySiteWidget-D6NFECIP.cjs +0 -18
- package/dist/MySiteWidget-D6NFECIP.cjs.map +0 -1
- package/dist/MySiteWidget-YA4DUIG7.js +0 -5
- package/dist/MySiteWidget-YA4DUIG7.js.map +0 -1
- package/dist/NestedWidget-UDNHYTMZ.cjs +0 -19
- package/dist/NestedWidget-UDNHYTMZ.cjs.map +0 -1
- package/dist/NestedWidget-VCZ3JBQY.js +0 -6
- package/dist/NestedWidget-VCZ3JBQY.js.map +0 -1
- package/dist/QuickShareWidget-LNUEJICJ.cjs +0 -17
- package/dist/QuickShareWidget-LNUEJICJ.cjs.map +0 -1
- package/dist/QuickShareWidget-SOQEHDR7.js +0 -4
- package/dist/QuickShareWidget-SOQEHDR7.js.map +0 -1
- package/dist/RecentActivityWidget-HA5N4HCZ.cjs +0 -18
- package/dist/RecentActivityWidget-HA5N4HCZ.cjs.map +0 -1
- package/dist/RecentActivityWidget-TP32GKHT.js +0 -5
- package/dist/RecentActivityWidget-TP32GKHT.js.map +0 -1
- package/dist/SpacerWidget-DX7QRN54.cjs +0 -16
- package/dist/SpacerWidget-DX7QRN54.cjs.map +0 -1
- package/dist/SpacerWidget-H464T5YD.js +0 -3
- package/dist/SpacerWidget-H464T5YD.js.map +0 -1
- package/dist/TableWidget-D46CWY4M.cjs +0 -18
- package/dist/TableWidget-D46CWY4M.cjs.map +0 -1
- package/dist/TableWidget-P4C4ZI23.js +0 -5
- package/dist/TableWidget-P4C4ZI23.js.map +0 -1
- package/dist/TextWidget-GNUQBLDJ.js +0 -4
- package/dist/TextWidget-GNUQBLDJ.js.map +0 -1
- package/dist/TextWidget-PUZPMPOC.cjs +0 -17
- package/dist/TextWidget-PUZPMPOC.cjs.map +0 -1
- package/dist/ToDoWidget-AOAMWMN4.js +0 -5
- package/dist/ToDoWidget-AOAMWMN4.js.map +0 -1
- package/dist/ToDoWidget-L6TXR37G.cjs +0 -18
- package/dist/ToDoWidget-L6TXR37G.cjs.map +0 -1
- package/dist/VideoWidget-T6S2D4WS.cjs +0 -17
- package/dist/VideoWidget-T6S2D4WS.cjs.map +0 -1
- package/dist/VideoWidget-TI72FPLK.js +0 -4
- package/dist/VideoWidget-TI72FPLK.js.map +0 -1
- package/dist/chunk-22AKFT5D.cjs +0 -274
- package/dist/chunk-22AKFT5D.cjs.map +0 -1
- package/dist/chunk-2NPVYROG.js +0 -117
- package/dist/chunk-2NPVYROG.js.map +0 -1
- package/dist/chunk-3EGVZDJH.cjs +0 -448
- package/dist/chunk-3EGVZDJH.cjs.map +0 -1
- package/dist/chunk-4ODOZF7H.js +0 -192
- package/dist/chunk-4ODOZF7H.js.map +0 -1
- package/dist/chunk-4ZFOJT6H.js +0 -271
- package/dist/chunk-4ZFOJT6H.js.map +0 -1
- package/dist/chunk-57ZUEL25.js +0 -14
- package/dist/chunk-57ZUEL25.js.map +0 -1
- package/dist/chunk-5VJYKNCS.cjs +0 -195
- package/dist/chunk-5VJYKNCS.cjs.map +0 -1
- package/dist/chunk-6GF46P3S.js +0 -33
- package/dist/chunk-6GF46P3S.js.map +0 -1
- package/dist/chunk-6RNVWRDD.cjs +0 -179
- package/dist/chunk-6RNVWRDD.cjs.map +0 -1
- package/dist/chunk-6ZECDBGI.js +0 -3
- package/dist/chunk-6ZECDBGI.js.map +0 -1
- package/dist/chunk-AQO2AKU2.cjs +0 -35
- package/dist/chunk-AQO2AKU2.cjs.map +0 -1
- package/dist/chunk-D43XJWX3.js +0 -300
- package/dist/chunk-D43XJWX3.js.map +0 -1
- package/dist/chunk-E5ERYB7Q.js +0 -39
- package/dist/chunk-E5ERYB7Q.js.map +0 -1
- package/dist/chunk-EPTJJSHT.cjs +0 -500
- package/dist/chunk-EPTJJSHT.cjs.map +0 -1
- package/dist/chunk-FDAUWHSY.cjs +0 -268
- package/dist/chunk-FDAUWHSY.cjs.map +0 -1
- package/dist/chunk-FSLUSFJ2.cjs +0 -75
- package/dist/chunk-FSLUSFJ2.cjs.map +0 -1
- package/dist/chunk-GC4SZ75B.js +0 -47
- package/dist/chunk-GC4SZ75B.js.map +0 -1
- package/dist/chunk-HDUFHTQC.js +0 -1024
- package/dist/chunk-HDUFHTQC.js.map +0 -1
- package/dist/chunk-HREBEVS5.cjs +0 -42
- package/dist/chunk-HREBEVS5.cjs.map +0 -1
- package/dist/chunk-IF36TB2H.js +0 -459
- package/dist/chunk-IF36TB2H.js.map +0 -1
- package/dist/chunk-J6HCPXT5.cjs +0 -40
- package/dist/chunk-J6HCPXT5.cjs.map +0 -1
- package/dist/chunk-JIS2K5YR.js +0 -13
- package/dist/chunk-JIS2K5YR.js.map +0 -1
- package/dist/chunk-JYWKXNUO.cjs +0 -37
- package/dist/chunk-JYWKXNUO.cjs.map +0 -1
- package/dist/chunk-KYCPG2DN.cjs +0 -17
- package/dist/chunk-KYCPG2DN.cjs.map +0 -1
- package/dist/chunk-L3HN4J2Y.js +0 -175
- package/dist/chunk-L3HN4J2Y.js.map +0 -1
- package/dist/chunk-LZJVUYSQ.cjs +0 -462
- package/dist/chunk-LZJVUYSQ.cjs.map +0 -1
- package/dist/chunk-MXWFM5J2.js +0 -493
- package/dist/chunk-MXWFM5J2.js.map +0 -1
- package/dist/chunk-NPTCR22X.cjs +0 -1031
- package/dist/chunk-NPTCR22X.cjs.map +0 -1
- package/dist/chunk-P4VXS3BG.cjs +0 -464
- package/dist/chunk-P4VXS3BG.cjs.map +0 -1
- package/dist/chunk-P6AKK6TA.cjs +0 -382
- package/dist/chunk-P6AKK6TA.cjs.map +0 -1
- package/dist/chunk-PLXOZ5BH.cjs +0 -140
- package/dist/chunk-PLXOZ5BH.cjs.map +0 -1
- package/dist/chunk-Q5YXTDPX.cjs +0 -150
- package/dist/chunk-Q5YXTDPX.cjs.map +0 -1
- package/dist/chunk-QB6UW6DD.js +0 -250
- package/dist/chunk-QB6UW6DD.js.map +0 -1
- package/dist/chunk-QG2INAJC.js +0 -461
- package/dist/chunk-QG2INAJC.js.map +0 -1
- package/dist/chunk-QXIIJNQK.cjs +0 -15
- package/dist/chunk-QXIIJNQK.cjs.map +0 -1
- package/dist/chunk-RKDOQV4T.js +0 -73
- package/dist/chunk-RKDOQV4T.js.map +0 -1
- package/dist/chunk-ROLEPF3N.js +0 -399
- package/dist/chunk-ROLEPF3N.js.map +0 -1
- package/dist/chunk-RPNLSRUS.cjs +0 -120
- package/dist/chunk-RPNLSRUS.cjs.map +0 -1
- package/dist/chunk-SINQXEBL.js +0 -160
- package/dist/chunk-SINQXEBL.js.map +0 -1
- package/dist/chunk-SLGOKKU7.cjs +0 -402
- package/dist/chunk-SLGOKKU7.cjs.map +0 -1
- package/dist/chunk-U6ODF4YB.cjs +0 -303
- package/dist/chunk-U6ODF4YB.cjs.map +0 -1
- package/dist/chunk-UXFD52LT.js +0 -137
- package/dist/chunk-UXFD52LT.js.map +0 -1
- package/dist/chunk-UZ7TYGUO.js +0 -147
- package/dist/chunk-UZ7TYGUO.js.map +0 -1
- package/dist/chunk-UZF75XZJ.js +0 -379
- package/dist/chunk-UZF75XZJ.js.map +0 -1
- package/dist/chunk-WTQNKZKV.cjs +0 -253
- package/dist/chunk-WTQNKZKV.cjs.map +0 -1
- package/dist/chunk-WWKBIVET.cjs +0 -163
- package/dist/chunk-WWKBIVET.cjs.map +0 -1
- package/dist/chunk-YDLNXR7R.js +0 -265
- package/dist/chunk-YDLNXR7R.js.map +0 -1
- package/dist/chunk-YOJRRPOG.js +0 -33
- package/dist/chunk-YOJRRPOG.js.map +0 -1
- package/dist/chunk-YU5DAILW.cjs +0 -14
- package/dist/chunk-YU5DAILW.cjs.map +0 -1
- package/dist/chunk-YZATKTYO.cjs +0 -50
- package/dist/chunk-YZATKTYO.cjs.map +0 -1
- package/dist/chunk-ZLTPLVOF.js +0 -445
- package/dist/chunk-ZLTPLVOF.js.map +0 -1
- package/dist/chunk-ZWFK5UUU.js +0 -11
- package/dist/chunk-ZWFK5UUU.js.map +0 -1
- package/dist/components/index.d.ts +0 -8
- package/dist/components/index.js +0 -11
- package/dist/components/index.js.map +0 -1
- package/dist/contexts/index.cjs.map +0 -1
- package/dist/contexts/index.js +0 -4
- package/dist/contexts/index.js.map +0 -1
- package/dist/core/index.cjs.map +0 -1
- package/dist/core/index.d.ts +0 -64
- package/dist/core/index.js +0 -6
- package/dist/core/index.js.map +0 -1
- package/dist/ui/index.cjs.map +0 -1
- package/dist/ui/index.d.ts +0 -10
- package/dist/ui/index.js +0 -4
- package/dist/ui/index.js.map +0 -1
- package/dist/widgets/index.d.ts +0 -604
- package/dist/widgets/index.js +0 -55
- package/dist/widgets/index.js.map +0 -1
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
const require_chunk = require("./chunk-CZWwpsFl.cjs");
|
|
2
|
+
const require_scroll_arrows = require("./scroll-arrows-BZIlsE_x.cjs");
|
|
3
|
+
const require_MediaRenderer = require("./MediaRenderer-CcJvyOJ1.cjs");
|
|
4
|
+
let _fluid_app_rep_core_registries = require("@fluid-app/rep-core/registries");
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
let react = require("react");
|
|
7
|
+
let dompurify = require("dompurify");
|
|
8
|
+
dompurify = require_chunk.__toESM(dompurify);
|
|
9
|
+
let _fluid_app_ui_primitives = require("@fluid-app/ui-primitives");
|
|
10
|
+
//#region src/widgets/CarouselWidget.tsx
|
|
11
|
+
var CarouselWidget_exports = /* @__PURE__ */ require_chunk.__exportAll({
|
|
12
|
+
CarouselWidget: () => CarouselWidget,
|
|
13
|
+
carouselWidgetPropertySchema: () => carouselWidgetPropertySchema
|
|
14
|
+
});
|
|
15
|
+
const DEFAULT_SLIDES = [];
|
|
16
|
+
function CarouselWidget({ slides = DEFAULT_SLIDES, autoScrollInterval = 3e3, enableAutoScroll = false, carouselHeight = "400px", align = {
|
|
17
|
+
vertical: "bottom",
|
|
18
|
+
horizontal: "left"
|
|
19
|
+
}, overlayIntensity = 40, borderRadius = "none", padding = 0, textWidth = "100%", headerSize = "lg", headerColor = "background", textSize = "md", textColor = "background", showButton = true, buttonColor = "background", buttonSize = "default", overlayEnabled = true, overlayType = "solid", className, ...props }) {
|
|
20
|
+
const [currentIndex, setCurrentIndex] = (0, react.useState)(0);
|
|
21
|
+
const [isHovered, setIsHovered] = (0, react.useState)(false);
|
|
22
|
+
const hasSlides = slides.length > 0;
|
|
23
|
+
const totalSlides = slides.length;
|
|
24
|
+
const goToNext = (0, react.useCallback)(() => {
|
|
25
|
+
if (!hasSlides) return;
|
|
26
|
+
setCurrentIndex((prev) => {
|
|
27
|
+
if (prev === totalSlides - 1) return 0;
|
|
28
|
+
return prev + 1;
|
|
29
|
+
});
|
|
30
|
+
}, [hasSlides, totalSlides]);
|
|
31
|
+
const goToPrevious = (0, react.useCallback)(() => {
|
|
32
|
+
if (!hasSlides) return;
|
|
33
|
+
setCurrentIndex((prev) => {
|
|
34
|
+
if (prev === 0) return totalSlides - 1;
|
|
35
|
+
return prev - 1;
|
|
36
|
+
});
|
|
37
|
+
}, [hasSlides, totalSlides]);
|
|
38
|
+
const goToSlide = (0, react.useCallback)((index) => {
|
|
39
|
+
if (!hasSlides) return;
|
|
40
|
+
if (index >= 0 && index < totalSlides) setCurrentIndex(index);
|
|
41
|
+
}, [hasSlides, totalSlides]);
|
|
42
|
+
(0, react.useEffect)(() => {
|
|
43
|
+
if (!enableAutoScroll || !hasSlides || isHovered) return;
|
|
44
|
+
const intervalId = setInterval(() => {
|
|
45
|
+
goToNext();
|
|
46
|
+
}, autoScrollInterval);
|
|
47
|
+
return () => clearInterval(intervalId);
|
|
48
|
+
}, [
|
|
49
|
+
enableAutoScroll,
|
|
50
|
+
autoScrollInterval,
|
|
51
|
+
hasSlides,
|
|
52
|
+
isHovered,
|
|
53
|
+
goToNext
|
|
54
|
+
]);
|
|
55
|
+
(0, react.useEffect)(() => {
|
|
56
|
+
if (currentIndex >= totalSlides && totalSlides > 0) setCurrentIndex(0);
|
|
57
|
+
}, [totalSlides, currentIndex]);
|
|
58
|
+
if (!hasSlides) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
59
|
+
className: `rounded-${borderRadius} ${className} w-full overflow-hidden`,
|
|
60
|
+
style: { minHeight: carouselHeight },
|
|
61
|
+
...props,
|
|
62
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
63
|
+
className: "bg-muted flex h-full w-full items-center justify-center",
|
|
64
|
+
style: { minHeight: carouselHeight },
|
|
65
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
66
|
+
className: "text-muted-foreground flex flex-col items-center gap-2",
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
69
|
+
className: "text-4xl",
|
|
70
|
+
children: "🎠"
|
|
71
|
+
}),
|
|
72
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
73
|
+
className: "text-sm",
|
|
74
|
+
children: "No slides added"
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
77
|
+
className: "text-muted-foreground/70 text-xs",
|
|
78
|
+
children: "Add slides to create a carousel"
|
|
79
|
+
})
|
|
80
|
+
]
|
|
81
|
+
})
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
85
|
+
className: `relative w-full overflow-hidden rounded-${borderRadius} ${className}`,
|
|
86
|
+
style: { minHeight: carouselHeight },
|
|
87
|
+
onMouseEnter: () => setIsHovered(true),
|
|
88
|
+
onMouseLeave: () => setIsHovered(false),
|
|
89
|
+
...props,
|
|
90
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
91
|
+
className: "relative h-full w-full",
|
|
92
|
+
style: { minHeight: carouselHeight },
|
|
93
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
94
|
+
className: "flex h-full transition-transform duration-500 ease-in-out",
|
|
95
|
+
style: { transform: `translateX(-${currentIndex * 100}%)` },
|
|
96
|
+
children: slides.map((slide) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
97
|
+
className: "relative h-full w-full flex-shrink-0",
|
|
98
|
+
style: {
|
|
99
|
+
minWidth: "100%",
|
|
100
|
+
minHeight: carouselHeight
|
|
101
|
+
},
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
104
|
+
className: "absolute inset-0 h-full w-full",
|
|
105
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MediaRenderer.MediaRenderer, { ...require_MediaRenderer.getMediaPropsFromWidgetSchema(slide.content) })
|
|
106
|
+
}),
|
|
107
|
+
overlayEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
108
|
+
className: `absolute inset-0 z-9 ${overlayType === "gradient" ? "bg-gradient-to-t from-black to-transparent" : "bg-black"}`,
|
|
109
|
+
style: { opacity: (Number(String(overlayIntensity).replace("%", "")) || 40) / 100 }
|
|
110
|
+
}),
|
|
111
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
112
|
+
className: `absolute inset-x-0 z-10 flex px-3 ${align.horizontal === "left" ? "justify-start" : align.horizontal === "center" ? "justify-center" : "justify-end"} ${align.vertical === "top" ? "top-0 pt-13" : align.vertical === "center" ? "top-1/2 -translate-y-1/2" : "bottom-0 pb-13"}`,
|
|
113
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
114
|
+
className: `p-${padding} flex flex-col gap-3`,
|
|
115
|
+
style: { maxWidth: textWidth },
|
|
116
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
117
|
+
className: `flex flex-col text-${align.horizontal}`,
|
|
118
|
+
children: [slide.title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
|
|
119
|
+
className: `mb-2 leading-tight font-bold text-${headerColor} text-${headerSize === "md" ? "base" : headerSize}`,
|
|
120
|
+
children: slide.title
|
|
121
|
+
}), slide.description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
122
|
+
className: `leading-snug text-${textColor} text-${textSize === "md" ? "base" : textSize} line-clamp-2`,
|
|
123
|
+
dangerouslySetInnerHTML: { __html: dompurify.default.sanitize(slide.description, {
|
|
124
|
+
ALLOWED_TAGS: [
|
|
125
|
+
"br",
|
|
126
|
+
"strong",
|
|
127
|
+
"em",
|
|
128
|
+
"b",
|
|
129
|
+
"i",
|
|
130
|
+
"ul",
|
|
131
|
+
"ol",
|
|
132
|
+
"li",
|
|
133
|
+
"p"
|
|
134
|
+
],
|
|
135
|
+
ALLOWED_ATTR: []
|
|
136
|
+
}) }
|
|
137
|
+
})]
|
|
138
|
+
}), slide.buttonText && slide.buttonEnabled && showButton && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
139
|
+
className: `text-${align.horizontal}`,
|
|
140
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.Button, {
|
|
141
|
+
size: buttonSize,
|
|
142
|
+
className: `rounded-md py-1 font-semibold bg-${buttonColor} text-${buttonColor}-foreground hover:bg-${buttonColor}/90`,
|
|
143
|
+
asChild: true,
|
|
144
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
145
|
+
href: slide.buttonLink,
|
|
146
|
+
children: slide.buttonText
|
|
147
|
+
})
|
|
148
|
+
})
|
|
149
|
+
})]
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
]
|
|
153
|
+
}, slide.id))
|
|
154
|
+
})
|
|
155
|
+
}), totalSlides > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
156
|
+
className: `p-${padding} absolute bottom-0 z-10 flex w-full items-center justify-between ${align.horizontal === "center" ? "h-full" : ""}`,
|
|
157
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
158
|
+
className: `flex items-center ${align.horizontal === "center" ? `p-${padding} absolute inset-x-0 bottom-3 justify-center` : ""}`,
|
|
159
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
160
|
+
className: `flex items-center gap-2 ${align.horizontal === "center" ? "justify-center" : ""}`,
|
|
161
|
+
children: slides.map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
162
|
+
className: `h-[6px] w-[6px] rounded-full transition-colors ${index === currentIndex ? "bg-background" : "bg-background/40 hover:bg-background/60"}`,
|
|
163
|
+
onClick: () => goToSlide(index),
|
|
164
|
+
"aria-label": `Go to slide ${index + 1}`,
|
|
165
|
+
"aria-current": index === currentIndex ? "true" : "false"
|
|
166
|
+
}, `dot-${index}`))
|
|
167
|
+
})
|
|
168
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
169
|
+
className: `flex items-center gap-[10px] ${align.horizontal === "center" ? `absolute inset-x-0 top-1/2 justify-between px-${padding}` : ""}`,
|
|
170
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_scroll_arrows.ScrollArrows, {
|
|
171
|
+
onPrevious: goToPrevious,
|
|
172
|
+
onNext: goToNext
|
|
173
|
+
})
|
|
174
|
+
})]
|
|
175
|
+
})]
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
const carouselWidgetPropertySchema = {
|
|
179
|
+
widgetType: "CarouselWidget",
|
|
180
|
+
displayName: "Carousel",
|
|
181
|
+
tabsConfig: [
|
|
182
|
+
{
|
|
183
|
+
id: "styling",
|
|
184
|
+
label: "Styling"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: "behavior",
|
|
188
|
+
label: "Behavior"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
id: "data",
|
|
192
|
+
label: "Data"
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
dataSourceTargetProps: ["slides"],
|
|
196
|
+
fields: [
|
|
197
|
+
(0, _fluid_app_rep_core_registries.getFontSizeField)({
|
|
198
|
+
defaultValue: "lg",
|
|
199
|
+
key: "headerSize",
|
|
200
|
+
label: "Header Font Size",
|
|
201
|
+
description: "Font size for the slide header",
|
|
202
|
+
tab: "styling",
|
|
203
|
+
group: "Text Styling"
|
|
204
|
+
}),
|
|
205
|
+
(0, _fluid_app_rep_core_registries.getColorField)({
|
|
206
|
+
defaultValue: "background",
|
|
207
|
+
key: "headerColor",
|
|
208
|
+
label: "Header Color",
|
|
209
|
+
description: "Color variant for the slide header",
|
|
210
|
+
tab: "styling",
|
|
211
|
+
group: "Text Styling"
|
|
212
|
+
}),
|
|
213
|
+
{
|
|
214
|
+
key: "separator",
|
|
215
|
+
type: "separator",
|
|
216
|
+
label: "Separator",
|
|
217
|
+
tab: "styling",
|
|
218
|
+
group: "Text Styling"
|
|
219
|
+
},
|
|
220
|
+
(0, _fluid_app_rep_core_registries.getFontSizeField)({
|
|
221
|
+
defaultValue: "md",
|
|
222
|
+
key: "textSize",
|
|
223
|
+
label: "Text Font Size",
|
|
224
|
+
description: "Font size for the slide text",
|
|
225
|
+
tab: "styling",
|
|
226
|
+
group: "Text Styling"
|
|
227
|
+
}),
|
|
228
|
+
(0, _fluid_app_rep_core_registries.getColorField)({
|
|
229
|
+
defaultValue: "background",
|
|
230
|
+
key: "textColor",
|
|
231
|
+
label: "Text Color",
|
|
232
|
+
description: "Color variant for the slide text",
|
|
233
|
+
tab: "styling",
|
|
234
|
+
group: "Text Styling"
|
|
235
|
+
}),
|
|
236
|
+
{
|
|
237
|
+
key: "align",
|
|
238
|
+
label: "Alignment",
|
|
239
|
+
type: "alignment",
|
|
240
|
+
description: "Alignment of the carousel content",
|
|
241
|
+
defaultValue: {
|
|
242
|
+
vertical: "bottom",
|
|
243
|
+
horizontal: "left"
|
|
244
|
+
},
|
|
245
|
+
options: {
|
|
246
|
+
verticalEnabled: true,
|
|
247
|
+
horizontalEnabled: true
|
|
248
|
+
},
|
|
249
|
+
tab: "styling",
|
|
250
|
+
group: "Layout"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
key: "textWidth",
|
|
254
|
+
label: "Content Width",
|
|
255
|
+
type: "text",
|
|
256
|
+
description: "Maximum width for slide content (e.g., 100%, 50%, 600px)",
|
|
257
|
+
defaultValue: "100%",
|
|
258
|
+
tab: "styling",
|
|
259
|
+
group: "Layout"
|
|
260
|
+
},
|
|
261
|
+
(0, _fluid_app_rep_core_registries.getHeightField)({
|
|
262
|
+
key: "carouselHeight",
|
|
263
|
+
label: "Carousel Height",
|
|
264
|
+
description: "Height of the carousel",
|
|
265
|
+
min: 100,
|
|
266
|
+
max: 1200,
|
|
267
|
+
step: 10,
|
|
268
|
+
defaultValue: "400px",
|
|
269
|
+
tab: "styling",
|
|
270
|
+
group: "Design"
|
|
271
|
+
}),
|
|
272
|
+
{
|
|
273
|
+
key: "separator2",
|
|
274
|
+
type: "separator",
|
|
275
|
+
label: "Separator",
|
|
276
|
+
tab: "styling",
|
|
277
|
+
group: "Design"
|
|
278
|
+
},
|
|
279
|
+
(0, _fluid_app_rep_core_registries.getBorderRadiusField)({
|
|
280
|
+
defaultValue: "md",
|
|
281
|
+
key: "borderRadius",
|
|
282
|
+
label: "Border Radius",
|
|
283
|
+
description: "Rounded corners for the carousel",
|
|
284
|
+
tab: "styling",
|
|
285
|
+
group: "Design"
|
|
286
|
+
}),
|
|
287
|
+
(0, _fluid_app_rep_core_registries.getPaddingField)({
|
|
288
|
+
defaultValue: 4,
|
|
289
|
+
key: "padding",
|
|
290
|
+
label: "Padding",
|
|
291
|
+
description: "Padding for the carousel",
|
|
292
|
+
tab: "styling",
|
|
293
|
+
group: "Design"
|
|
294
|
+
}),
|
|
295
|
+
{
|
|
296
|
+
key: "overlayEnabled",
|
|
297
|
+
label: "Enable Overlay",
|
|
298
|
+
type: "boolean",
|
|
299
|
+
description: "Add background overlay to slide content",
|
|
300
|
+
defaultValue: true,
|
|
301
|
+
tab: "styling",
|
|
302
|
+
group: "Design"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
key: "overlayType",
|
|
306
|
+
label: "Overlay Type",
|
|
307
|
+
type: "buttonGroup",
|
|
308
|
+
description: "Type of overlay to add to the slide content",
|
|
309
|
+
defaultValue: "gradient",
|
|
310
|
+
options: [{
|
|
311
|
+
label: "Solid",
|
|
312
|
+
value: "solid"
|
|
313
|
+
}, {
|
|
314
|
+
label: "Gradient",
|
|
315
|
+
value: "gradient"
|
|
316
|
+
}],
|
|
317
|
+
tab: "styling",
|
|
318
|
+
group: "Design",
|
|
319
|
+
requiresKeyToBeTrue: "overlayEnabled"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
key: "overlayIntensity",
|
|
323
|
+
label: "Overlay Intensity",
|
|
324
|
+
type: "slider",
|
|
325
|
+
description: "Opacity of the overlay background (0-100)",
|
|
326
|
+
min: 0,
|
|
327
|
+
max: 100,
|
|
328
|
+
step: 5,
|
|
329
|
+
defaultValue: 50,
|
|
330
|
+
unit: "%",
|
|
331
|
+
tab: "styling",
|
|
332
|
+
group: "Design",
|
|
333
|
+
requiresKeyToBeTrue: "overlayEnabled"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
key: "showButton",
|
|
337
|
+
label: "Show Button",
|
|
338
|
+
type: "boolean",
|
|
339
|
+
description: "Display the button in slide content",
|
|
340
|
+
defaultValue: true,
|
|
341
|
+
tab: "styling",
|
|
342
|
+
group: "Design"
|
|
343
|
+
},
|
|
344
|
+
(0, _fluid_app_rep_core_registries.getColorField)({
|
|
345
|
+
defaultValue: "primary",
|
|
346
|
+
key: "buttonColor",
|
|
347
|
+
label: "Button Color",
|
|
348
|
+
description: "Color variant for the slide button",
|
|
349
|
+
tab: "styling",
|
|
350
|
+
group: "Design",
|
|
351
|
+
requiresKeyToBeTrue: "showButton"
|
|
352
|
+
}),
|
|
353
|
+
(0, _fluid_app_rep_core_registries.getButtonSizeField)({
|
|
354
|
+
defaultValue: "default",
|
|
355
|
+
key: "buttonSize",
|
|
356
|
+
label: "Button Size",
|
|
357
|
+
description: "Size of the slide button",
|
|
358
|
+
tab: "styling",
|
|
359
|
+
group: "Design",
|
|
360
|
+
requiresKeyToBeTrue: "showButton"
|
|
361
|
+
}),
|
|
362
|
+
{
|
|
363
|
+
key: "enableAutoScroll",
|
|
364
|
+
label: "Enable Auto-Scroll",
|
|
365
|
+
type: "boolean",
|
|
366
|
+
description: "Automatically advance to the next slide",
|
|
367
|
+
defaultValue: false,
|
|
368
|
+
tab: "behavior",
|
|
369
|
+
group: "Auto-Scroll"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
key: "autoScrollInterval",
|
|
373
|
+
label: "Auto-Scroll Interval (ms)",
|
|
374
|
+
type: "number",
|
|
375
|
+
description: "Time in milliseconds between automatic slide transitions",
|
|
376
|
+
min: 1e3,
|
|
377
|
+
max: 1e4,
|
|
378
|
+
step: 500,
|
|
379
|
+
defaultValue: 3e3,
|
|
380
|
+
tab: "behavior",
|
|
381
|
+
group: "Auto-Scroll",
|
|
382
|
+
requiresKeyToBeTrue: "enableAutoScroll"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
key: "dataSource",
|
|
386
|
+
label: "Data Source",
|
|
387
|
+
type: "dataSource",
|
|
388
|
+
description: "",
|
|
389
|
+
tab: "data",
|
|
390
|
+
group: "Data Configuration"
|
|
391
|
+
}
|
|
392
|
+
],
|
|
393
|
+
itemConfigSchema: {
|
|
394
|
+
description: "Configure settings for this slide",
|
|
395
|
+
fields: [
|
|
396
|
+
{
|
|
397
|
+
key: "title",
|
|
398
|
+
label: "Custom Title",
|
|
399
|
+
type: "text",
|
|
400
|
+
description: "Override the item's title for this slide"
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
key: "description",
|
|
404
|
+
label: "Custom Description",
|
|
405
|
+
type: "textarea",
|
|
406
|
+
description: "Override the item's description for this slide",
|
|
407
|
+
rows: 3
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
key: "buttonEnabled",
|
|
411
|
+
label: "Show Button",
|
|
412
|
+
type: "boolean",
|
|
413
|
+
description: "Show the button in the slide",
|
|
414
|
+
defaultValue: false
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
key: "buttonText",
|
|
418
|
+
label: "Button Text",
|
|
419
|
+
type: "text",
|
|
420
|
+
description: "Text to display on the slide button",
|
|
421
|
+
requiresKeyToBeTrue: "buttonEnabled"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
key: "buttonLink",
|
|
425
|
+
label: "Button Link",
|
|
426
|
+
type: "text",
|
|
427
|
+
description: "URL for the slide button",
|
|
428
|
+
requiresKeyToBeTrue: "buttonEnabled"
|
|
429
|
+
}
|
|
430
|
+
]
|
|
431
|
+
}
|
|
432
|
+
};
|
|
433
|
+
//#endregion
|
|
434
|
+
Object.defineProperty(exports, "CarouselWidget", {
|
|
435
|
+
enumerable: true,
|
|
436
|
+
get: function() {
|
|
437
|
+
return CarouselWidget;
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
Object.defineProperty(exports, "CarouselWidget_exports", {
|
|
441
|
+
enumerable: true,
|
|
442
|
+
get: function() {
|
|
443
|
+
return CarouselWidget_exports;
|
|
444
|
+
}
|
|
445
|
+
});
|
|
446
|
+
Object.defineProperty(exports, "carouselWidgetPropertySchema", {
|
|
447
|
+
enumerable: true,
|
|
448
|
+
get: function() {
|
|
449
|
+
return carouselWidgetPropertySchema;
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
//# sourceMappingURL=CarouselWidget-DLADgLPJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CarouselWidget-DLADgLPJ.cjs","names":["MediaRenderer","getMediaPropsFromWidgetSchema","DOMPurify","Button","ScrollArrows"],"sources":["../src/widgets/CarouselWidget.tsx"],"sourcesContent":["import DOMPurify from \"dompurify\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport { ScrollArrows } from \"../ui/scroll-arrows\";\nimport type { ComponentProps } from \"react\";\nimport { useEffect, useState, useCallback } from \"react\";\nimport {\n MediaRenderer,\n getMediaPropsFromWidgetSchema,\n} from \"../components/MediaRenderer\";\nimport type {\n WidgetSchema,\n BorderRadiusOptions,\n ColorOptions,\n AlignOptions,\n FontSizeOptions,\n PaddingOptions,\n ButtonSizeOptions,\n} from \"@fluid-app/rep-core/types\";\nimport {\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/rep-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n getButtonSizeField,\n} from \"../core/fields\";\n\nconst DEFAULT_SLIDES: CarouselSlide[] = [];\n\ntype CarouselSlide = {\n id: string;\n content: WidgetSchema;\n title?: string;\n description?: string;\n buttonEnabled?: boolean;\n buttonText?: string;\n buttonVariant?:\n | \"default\"\n | \"secondary\"\n | \"outline\"\n | \"destructive\"\n | \"ghost\"\n | \"link\";\n buttonLink?: string;\n};\n\ntype CarouselWidgetProps = ComponentProps<\"div\"> & {\n slides?: CarouselSlide[];\n autoScrollInterval?: number;\n enableAutoScroll?: boolean;\n\n // Layout\n align?: AlignOptions;\n carouselHeight?: string;\n borderRadius?: BorderRadiusOptions;\n padding?: PaddingOptions;\n\n // Text Styling\n headerSize?: FontSizeOptions;\n headerColor?: ColorOptions;\n textSize?: FontSizeOptions;\n textColor?: ColorOptions;\n textWidth?: string;\n\n // Button\n showButton?: boolean;\n buttonColor?: ColorOptions;\n buttonSize?: ButtonSizeOptions;\n\n // Overlay\n overlayEnabled?: boolean;\n overlayType?: \"solid\" | \"gradient\";\n overlayIntensity?: number;\n};\n\nexport function CarouselWidget({\n slides = DEFAULT_SLIDES,\n autoScrollInterval = 3000,\n enableAutoScroll = false,\n carouselHeight = \"400px\",\n align = { vertical: \"bottom\", horizontal: \"left\" },\n overlayIntensity = 40,\n borderRadius = \"none\",\n padding = 0,\n textWidth = \"100%\",\n headerSize = \"lg\",\n headerColor = \"background\",\n textSize = \"md\",\n textColor = \"background\",\n showButton = true,\n buttonColor = \"background\",\n buttonSize = \"default\",\n overlayEnabled = true,\n overlayType = \"solid\",\n className,\n ...props\n}: CarouselWidgetProps) {\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isHovered, setIsHovered] = useState(false);\n\n const hasSlides = slides.length > 0;\n const totalSlides = slides.length;\n\n const goToNext = useCallback(() => {\n if (!hasSlides) return;\n setCurrentIndex((prev) => {\n if (prev === totalSlides - 1) {\n return 0;\n }\n return prev + 1;\n });\n }, [hasSlides, totalSlides]);\n\n const goToPrevious = useCallback(() => {\n if (!hasSlides) return;\n setCurrentIndex((prev) => {\n if (prev === 0) {\n return totalSlides - 1;\n }\n return prev - 1;\n });\n }, [hasSlides, totalSlides]);\n\n const goToSlide = useCallback(\n (index: number) => {\n if (!hasSlides) return;\n if (index >= 0 && index < totalSlides) {\n setCurrentIndex(index);\n }\n },\n [hasSlides, totalSlides],\n );\n\n // Auto-scroll effect\n useEffect(() => {\n if (!enableAutoScroll || !hasSlides || isHovered) return;\n\n const intervalId = setInterval(() => {\n goToNext();\n }, autoScrollInterval);\n\n return () => clearInterval(intervalId);\n }, [enableAutoScroll, autoScrollInterval, hasSlides, isHovered, goToNext]);\n\n // Reset to first slide if slides change\n useEffect(() => {\n if (currentIndex >= totalSlides && totalSlides > 0) {\n setCurrentIndex(0);\n }\n }, [totalSlides, currentIndex]);\n\n if (!hasSlides) {\n return (\n <div\n className={`rounded-${borderRadius} ${className} w-full overflow-hidden`}\n style={{ minHeight: carouselHeight }}\n {...props}\n >\n <div\n className=\"bg-muted flex h-full w-full items-center justify-center\"\n style={{ minHeight: carouselHeight }}\n >\n <div className=\"text-muted-foreground flex flex-col items-center gap-2\">\n <div className=\"text-4xl\">🎠</div>\n <p className=\"text-sm\">No slides added</p>\n <p className=\"text-muted-foreground/70 text-xs\">\n Add slides to create a carousel\n </p>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`relative w-full overflow-hidden rounded-${borderRadius} ${className}`}\n style={{ minHeight: carouselHeight }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...props}\n >\n {/* Slides Container */}\n <div\n className=\"relative h-full w-full\"\n style={{ minHeight: carouselHeight }}\n >\n <div\n className=\"flex h-full transition-transform duration-500 ease-in-out\"\n style={{\n transform: `translateX(-${currentIndex * 100}%)`,\n }}\n >\n {slides.map((slide) => (\n <div\n key={slide.id}\n className=\"relative h-full w-full flex-shrink-0\"\n style={{ minWidth: \"100%\", minHeight: carouselHeight }}\n >\n {/* Background image/content layer */}\n <div className=\"absolute inset-0 h-full w-full\">\n <MediaRenderer\n {...getMediaPropsFromWidgetSchema(slide.content)}\n />\n </div>\n\n {/* Dark overlay for text readability */}\n {overlayEnabled && (\n <div\n className={`absolute inset-0 z-9 ${\n overlayType === \"gradient\"\n ? \"bg-gradient-to-t from-black to-transparent\"\n : \"bg-black\"\n }`}\n style={{\n opacity:\n (Number(String(overlayIntensity).replace(\"%\", \"\")) ||\n 40) / 100,\n }}\n />\n )}\n\n {/* Content box */}\n <div\n className={`absolute inset-x-0 z-10 flex px-3 ${\n align.horizontal === \"left\"\n ? \"justify-start\"\n : align.horizontal === \"center\"\n ? \"justify-center\"\n : \"justify-end\"\n } ${\n align.vertical === \"top\"\n ? \"top-0 pt-13\"\n : align.vertical === \"center\"\n ? \"top-1/2 -translate-y-1/2\"\n : \"bottom-0 pb-13\"\n }`}\n >\n <div\n className={`p-${padding} flex flex-col gap-3`}\n style={{ maxWidth: textWidth }}\n >\n {/* Heading and text */}\n <div className={`flex flex-col text-${align.horizontal}`}>\n {slide.title && (\n <h2\n className={`mb-2 leading-tight font-bold text-${headerColor} text-${headerSize === \"md\" ? \"base\" : headerSize}`}\n >\n {slide.title}\n </h2>\n )}\n {slide.description && (\n <div\n className={`leading-snug text-${textColor} text-${textSize === \"md\" ? \"base\" : textSize} line-clamp-2`}\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(slide.description, {\n ALLOWED_TAGS: [\n \"br\",\n \"strong\",\n \"em\",\n \"b\",\n \"i\",\n \"ul\",\n \"ol\",\n \"li\",\n \"p\",\n ],\n ALLOWED_ATTR: [],\n }),\n }}\n />\n )}\n </div>\n\n {/* Button */}\n {slide.buttonText && slide.buttonEnabled && showButton && (\n <div className={`text-${align.horizontal}`}>\n <Button\n size={buttonSize}\n className={`rounded-md py-1 font-semibold bg-${buttonColor} text-${buttonColor}-foreground hover:bg-${buttonColor}/90`}\n asChild\n >\n <a href={slide.buttonLink}>{slide.buttonText}</a>\n </Button>\n </div>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n {/* Dots and Navigation */}\n {totalSlides > 1 && (\n <div\n className={`p-${padding} absolute bottom-0 z-10 flex w-full items-center justify-between ${align.horizontal === \"center\" ? \"h-full\" : \"\"}`}\n >\n {/* Pagination dots - always at bottom */}\n <div\n className={`flex items-center ${\n align.horizontal === \"center\"\n ? `p-${padding} absolute inset-x-0 bottom-3 justify-center`\n : \"\"\n }`}\n >\n <div\n className={`flex items-center gap-2 ${\n align.horizontal === \"center\" ? \"justify-center\" : \"\"\n }`}\n >\n {slides.map((_, index) => (\n <button\n key={`dot-${index}`}\n className={`h-[6px] w-[6px] rounded-full transition-colors ${\n index === currentIndex\n ? \"bg-background\"\n : \"bg-background/40 hover:bg-background/60\"\n }`}\n onClick={() => goToSlide(index)}\n aria-label={`Go to slide ${index + 1}`}\n aria-current={index === currentIndex ? \"true\" : \"false\"}\n />\n ))}\n </div>\n </div>\n\n {/* Navigation arrows - position changes based on alignment */}\n <div\n className={`flex items-center gap-[10px] ${\n align.horizontal === \"center\"\n ? `absolute inset-x-0 top-1/2 justify-between px-${padding}`\n : \"\"\n }`}\n >\n <ScrollArrows onPrevious={goToPrevious} onNext={goToNext} />\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const carouselWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"CarouselWidget\",\n displayName: \"Carousel\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"slides\"],\n fields: [\n // Styling tab - Text Styling group\n getFontSizeField({\n defaultValue: \"lg\",\n key: \"headerSize\",\n label: \"Header Font Size\",\n description: \"Font size for the slide header\",\n tab: \"styling\",\n group: \"Text Styling\",\n }),\n getColorField({\n defaultValue: \"background\",\n key: \"headerColor\",\n label: \"Header Color\",\n description: \"Color variant for the slide header\",\n tab: \"styling\",\n group: \"Text Styling\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Text Styling\",\n },\n getFontSizeField({\n defaultValue: \"md\",\n key: \"textSize\",\n label: \"Text Font Size\",\n description: \"Font size for the slide text\",\n tab: \"styling\",\n group: \"Text Styling\",\n }),\n getColorField({\n defaultValue: \"background\",\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Color variant for the slide text\",\n tab: \"styling\",\n group: \"Text Styling\",\n }),\n // Styling tab - Layout group\n {\n key: \"align\",\n label: \"Alignment\",\n type: \"alignment\",\n description: \"Alignment of the carousel content\",\n defaultValue: { vertical: \"bottom\", horizontal: \"left\" },\n options: {\n verticalEnabled: true,\n horizontalEnabled: true,\n },\n tab: \"styling\",\n group: \"Layout\",\n },\n {\n key: \"textWidth\",\n label: \"Content Width\",\n type: \"text\",\n description: \"Maximum width for slide content (e.g., 100%, 50%, 600px)\",\n defaultValue: \"100%\",\n tab: \"styling\",\n group: \"Layout\",\n },\n // Styling tab - Design group\n getHeightField({\n key: \"carouselHeight\",\n label: \"Carousel Height\",\n description: \"Height of the carousel\",\n min: 100,\n max: 1200,\n step: 10,\n defaultValue: \"400px\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator2\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getBorderRadiusField({\n defaultValue: \"md\",\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Rounded corners for the carousel\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getPaddingField({\n defaultValue: 4,\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding for the carousel\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"overlayEnabled\",\n label: \"Enable Overlay\",\n type: \"boolean\",\n description: \"Add background overlay to slide content\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"overlayType\",\n label: \"Overlay Type\",\n type: \"buttonGroup\",\n description: \"Type of overlay to add to the slide content\",\n defaultValue: \"gradient\",\n options: [\n { label: \"Solid\", value: \"solid\" },\n { label: \"Gradient\", value: \"gradient\" },\n ],\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"overlayIntensity\",\n label: \"Overlay Intensity\",\n type: \"slider\",\n description: \"Opacity of the overlay background (0-100)\",\n min: 0,\n max: 100,\n step: 5,\n defaultValue: 50,\n unit: \"%\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"showButton\",\n label: \"Show Button\",\n type: \"boolean\",\n description: \"Display the button in slide content\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n defaultValue: \"primary\",\n key: \"buttonColor\",\n label: \"Button Color\",\n description: \"Color variant for the slide button\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"showButton\",\n }),\n getButtonSizeField({\n defaultValue: \"default\",\n key: \"buttonSize\",\n label: \"Button Size\",\n description: \"Size of the slide button\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"showButton\",\n }),\n // Behavior tab - Auto-Scroll group\n {\n key: \"enableAutoScroll\",\n label: \"Enable Auto-Scroll\",\n type: \"boolean\",\n description: \"Automatically advance to the next slide\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Auto-Scroll\",\n },\n {\n key: \"autoScrollInterval\",\n label: \"Auto-Scroll Interval (ms)\",\n type: \"number\",\n description: \"Time in milliseconds between automatic slide transitions\",\n min: 1000,\n max: 10000,\n step: 500,\n defaultValue: 3000,\n tab: \"behavior\",\n group: \"Auto-Scroll\",\n requiresKeyToBeTrue: \"enableAutoScroll\",\n },\n // Data tab - Data Configuration group\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n // Per-item configuration schema for custom data sources\n itemConfigSchema: {\n description: \"Configure settings for this slide\",\n fields: [\n {\n key: \"title\",\n label: \"Custom Title\",\n type: \"text\",\n description: \"Override the item's title for this slide\",\n },\n {\n key: \"description\",\n label: \"Custom Description\",\n type: \"textarea\",\n description: \"Override the item's description for this slide\",\n rows: 3,\n },\n {\n key: \"buttonEnabled\",\n label: \"Show Button\",\n type: \"boolean\",\n description: \"Show the button in the slide\",\n defaultValue: false,\n },\n {\n key: \"buttonText\",\n label: \"Button Text\",\n type: \"text\",\n description: \"Text to display on the slide button\",\n requiresKeyToBeTrue: \"buttonEnabled\",\n },\n {\n key: \"buttonLink\",\n label: \"Button Link\",\n type: \"text\",\n description: \"URL for the slide button\",\n requiresKeyToBeTrue: \"buttonEnabled\",\n },\n ],\n },\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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AO;GACP,KAAK;GACL,OAAO;GACR;2DACoB;GACnB,cAAc;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,KAAK;GACL,OAAO;GACR,CAAC;sDACc;GACd,cAAc;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,KAAK;GACL,OAAO;GACR,CAAC;EACF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,SAAS,CACP;IAAE,OAAO;IAAS,OAAO;IAAS,EAClC;IAAE,OAAO;IAAY,OAAO;IAAY,CACzC;GACD,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,KAAK;GACL,MAAM;GACN,cAAc;GACd,MAAM;GACN,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;oDACa;GACZ,cAAc;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB,CAAC;yDACiB;GACjB,cAAc;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB,CAAC;EAEF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,KAAK;GACL,MAAM;GACN,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EAED;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,OAAO;GACR;EACF;CAED,kBAAkB;EAChB,aAAa;EACb,QAAQ;GACN;IACE,KAAK;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACd;GACD;IACE,KAAK;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,MAAM;IACP;GACD;IACE,KAAK;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,cAAc;IACf;GACD;IACE,KAAK;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,qBAAqB;IACtB;GACD;IACE,KAAK;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,qBAAqB;IACtB;GACF;EACF;CACF"}
|