@lumx/react 3.20.1-alpha.32 → 3.20.1-alpha.34
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/_internal/00560d40.js +11 -0
- package/_internal/00560d40.js.map +1 -0
- package/_internal/{components/grid-column-99652545.js → 00cc46ee.js} +2 -2
- package/_internal/00cc46ee.js.map +1 -0
- package/_internal/{useFocusTrap-c3c6378b.js → 0350c865.js} +5 -27
- package/_internal/0350c865.js.map +1 -0
- package/_internal/063618dc.js +21 -0
- package/_internal/063618dc.js.map +1 -0
- package/_internal/07f6dc7c.js +16 -0
- package/_internal/07f6dc7c.js.map +1 -0
- package/_internal/0846b7f3.js +4 -0
- package/_internal/0846b7f3.js.map +1 -0
- package/_internal/08948b47.js +109 -0
- package/_internal/08948b47.js.map +1 -0
- package/_internal/08b0de35.js +14 -0
- package/_internal/08b0de35.js.map +1 -0
- package/_internal/094c811d.js +24 -0
- package/_internal/094c811d.js.map +1 -0
- package/_internal/09d97180.js +18 -0
- package/_internal/09d97180.js.map +1 -0
- package/_internal/0a2c57a2.js +9 -0
- package/_internal/0a2c57a2.js.map +1 -0
- package/_internal/0a7f4911.js +64 -0
- package/_internal/0a7f4911.js.map +1 -0
- package/_internal/0aa9027f.js +10 -0
- package/_internal/0aa9027f.js.map +1 -0
- package/_internal/0c58c8e2.js +59 -0
- package/_internal/0c58c8e2.js.map +1 -0
- package/_internal/{Button-1b7d3b79.js → 0d7cc1e0.js} +8 -8
- package/_internal/0d7cc1e0.js.map +1 -0
- package/_internal/0db022d6.js +58 -0
- package/_internal/0db022d6.js.map +1 -0
- package/_internal/0e16222d.js +9 -0
- package/_internal/0e16222d.js.map +1 -0
- package/_internal/0f849025.js +4 -0
- package/_internal/0f849025.js.map +1 -0
- package/_internal/0fe87dc7.js +72 -0
- package/_internal/0fe87dc7.js.map +1 -0
- package/_internal/1060c47e.js +4 -0
- package/_internal/1060c47e.js.map +1 -0
- package/_internal/{isComponentType-e806b848.js → 111e65e5.js} +2 -2
- package/_internal/111e65e5.js.map +1 -0
- package/_internal/{useId-3a1facc0.js → 11687649.js} +2 -2
- package/_internal/11687649.js.map +1 -0
- package/_internal/14390eeb.js +7 -0
- package/_internal/14390eeb.js.map +1 -0
- package/_internal/145228a7.js +47 -0
- package/_internal/145228a7.js.map +1 -0
- package/_internal/{components/uploader-2e1b080e.js → 15fb66ce.js} +8 -8
- package/_internal/15fb66ce.js.map +1 -0
- package/_internal/160cf9fe.js +24 -0
- package/_internal/160cf9fe.js.map +1 -0
- package/_internal/1616343a.js +37 -0
- package/_internal/1616343a.js.map +1 -0
- package/_internal/{components/divider-0e93aa3d.js → 162672de.js} +3 -3
- package/_internal/162672de.js.map +1 -0
- package/_internal/168f211f.js +17 -0
- package/_internal/168f211f.js.map +1 -0
- package/_internal/{wrapChildrenIconWithSpaces-fb85a743.js → 16f5497d.js} +4 -4
- package/_internal/16f5497d.js.map +1 -0
- package/_internal/179a2989.js +129 -0
- package/_internal/179a2989.js.map +1 -0
- package/_internal/185778b8.js +4 -0
- package/_internal/185778b8.js.map +1 -0
- package/_internal/1afd2506.js +60 -0
- package/_internal/1afd2506.js.map +1 -0
- package/_internal/1c1cdfa2.js +159 -0
- package/_internal/1c1cdfa2.js.map +1 -0
- package/_internal/1c3b349b.js +4 -0
- package/_internal/1c3b349b.js.map +1 -0
- package/_internal/1d7267a1.js +173 -0
- package/_internal/1d7267a1.js.map +1 -0
- package/_internal/1df25415.js +53 -0
- package/_internal/1df25415.js.map +1 -0
- package/_internal/1ee5415f.js +27 -0
- package/_internal/1ee5415f.js.map +1 -0
- package/_internal/1ff933af.js +5 -0
- package/_internal/1ff933af.js.map +1 -0
- package/_internal/200c2ce1.js +17 -0
- package/_internal/200c2ce1.js.map +1 -0
- package/_internal/{index-77f213b1.js → 203b01d8.js} +6 -36
- package/_internal/203b01d8.js.map +1 -0
- package/_internal/2040beb8.js +169 -0
- package/_internal/2040beb8.js.map +1 -0
- package/_internal/20f07616.js +14 -0
- package/_internal/20f07616.js.map +1 -0
- package/_internal/215781b4.js +6 -0
- package/_internal/215781b4.js.map +1 -0
- package/_internal/{components/mosaic-c8084ee8.js → 226a2eac.js} +4 -4
- package/_internal/226a2eac.js.map +1 -0
- package/_internal/2291b633.js +52 -0
- package/_internal/2291b633.js.map +1 -0
- package/_internal/{components/inline-list-5ba8bb0f.js → 2403668c.js} +2 -2
- package/_internal/2403668c.js.map +1 -0
- package/_internal/24b48881.js +133 -0
- package/_internal/24b48881.js.map +1 -0
- package/_internal/2517d1d6.js +9 -0
- package/_internal/2517d1d6.js.map +1 -0
- package/_internal/256f8eff.js +4 -0
- package/_internal/256f8eff.js.map +1 -0
- package/_internal/{components/input-label-30d199c3.js → 26a92990.js} +3 -3
- package/_internal/26a92990.js.map +1 -0
- package/_internal/27a93417.js +223 -0
- package/_internal/27a93417.js.map +1 -0
- package/_internal/{mergeRefs-f0d7d6ea.js → 27df0cb6.js} +2 -2
- package/_internal/27df0cb6.js.map +1 -0
- package/_internal/28f344bd.js +52 -0
- package/_internal/28f344bd.js.map +1 -0
- package/_internal/2c5a950d.js +55 -0
- package/_internal/2c5a950d.js.map +1 -0
- package/_internal/2cdd9ec6.js +16 -0
- package/_internal/2cdd9ec6.js.map +1 -0
- package/_internal/2cfeae78.js +150 -0
- package/_internal/2cfeae78.js.map +1 -0
- package/_internal/{components/dropdown-25170b7c.js → 2d1acaa0.js} +8 -48
- package/_internal/2d1acaa0.js.map +1 -0
- package/_internal/2d69d0f5.js +4 -0
- package/_internal/2d69d0f5.js.map +1 -0
- package/_internal/2dcfa1df.js +18 -0
- package/_internal/2dcfa1df.js.map +1 -0
- package/_internal/2dff9a38.js +150 -0
- package/_internal/2dff9a38.js.map +1 -0
- package/_internal/2e5288d0.js +15 -0
- package/_internal/2e5288d0.js.map +1 -0
- package/_internal/2fc47dc4.js +133 -0
- package/_internal/2fc47dc4.js.map +1 -0
- package/_internal/30ecdee3.js +9 -0
- package/_internal/30ecdee3.js.map +1 -0
- package/_internal/{components/input-helper-2e4e49fd.js → 3119c1fe.js} +4 -15
- package/_internal/3119c1fe.js.map +1 -0
- package/_internal/31b6784b.js +14 -0
- package/_internal/31b6784b.js.map +1 -0
- package/_internal/341034b4.js +48 -0
- package/_internal/341034b4.js.map +1 -0
- package/_internal/341ceaa9.js +4 -0
- package/_internal/341ceaa9.js.map +1 -0
- package/_internal/355f875f.js +9 -0
- package/_internal/355f875f.js.map +1 -0
- package/_internal/{components/side-navigation-385825d4.js → 36008a95.js} +13 -49
- package/_internal/36008a95.js.map +1 -0
- package/_internal/378a6fb1.js +126 -0
- package/_internal/378a6fb1.js.map +1 -0
- package/_internal/37f5ba95.js +12 -0
- package/_internal/37f5ba95.js.map +1 -0
- package/_internal/{Portal-3f86608e.js → 38ac8c66.js} +3 -15
- package/_internal/38ac8c66.js.map +1 -0
- package/_internal/38ce97de.js +29 -0
- package/_internal/38ce97de.js.map +1 -0
- package/_internal/39534d28.js +30 -0
- package/_internal/39534d28.js.map +1 -0
- package/_internal/{ImageCaption-6f2f4131.js → 3996d544.js} +5 -5
- package/_internal/3996d544.js.map +1 -0
- package/_internal/3a7fd4bf.js +60 -0
- package/_internal/3a7fd4bf.js.map +1 -0
- package/_internal/3cfcb0a4.js +122 -0
- package/_internal/3cfcb0a4.js.map +1 -0
- package/_internal/3d5e1fd0.js +46 -0
- package/_internal/3d5e1fd0.js.map +1 -0
- package/_internal/3db5a3e4.js +258 -0
- package/_internal/3db5a3e4.js.map +1 -0
- package/_internal/{useBooleanState-2a3d237c.js → 3e2f0517.js} +2 -2
- package/_internal/3e2f0517.js.map +1 -0
- package/_internal/3eba1faf.js +87 -0
- package/_internal/3eba1faf.js.map +1 -0
- package/_internal/3f48eb48.js +73 -0
- package/_internal/3f48eb48.js.map +1 -0
- package/_internal/3f51175c.js +61 -0
- package/_internal/3f51175c.js.map +1 -0
- package/_internal/3f54fe9e.js +4 -0
- package/_internal/3f54fe9e.js.map +1 -0
- package/_internal/{components/text-field-8597b7f7.js → 41a8b20f.js} +13 -12
- package/_internal/41a8b20f.js.map +1 -0
- package/_internal/42b26576.js +4 -0
- package/_internal/42b26576.js.map +1 -0
- package/_internal/45ef51db.js +29 -0
- package/_internal/45ef51db.js.map +1 -0
- package/_internal/48148353.js +100 -0
- package/_internal/48148353.js.map +1 -0
- package/_internal/4bb19934.js +4 -0
- package/_internal/4bb19934.js.map +1 -0
- package/_internal/4c471276.js +75 -0
- package/_internal/4c471276.js.map +1 -0
- package/_internal/{components/image-block-4f3fe64c.js → 4c891480.js} +5 -5
- package/_internal/4c891480.js.map +1 -0
- package/_internal/4d540596.js +131 -0
- package/_internal/4d540596.js.map +1 -0
- package/_internal/4d751800.js +40 -0
- package/_internal/4d751800.js.map +1 -0
- package/_internal/4f71fd36.js +4 -0
- package/_internal/4f71fd36.js.map +1 -0
- package/_internal/507d9459.js +67 -0
- package/_internal/507d9459.js.map +1 -0
- package/_internal/5178b7ba.js +10 -0
- package/_internal/5178b7ba.js.map +1 -0
- package/_internal/51921a16.js +30 -0
- package/_internal/51921a16.js.map +1 -0
- package/_internal/535aa51f.js +44 -0
- package/_internal/535aa51f.js.map +1 -0
- package/_internal/{DisabledStateContext-ea04260d.js → 536517c5.js} +2 -2
- package/_internal/536517c5.js.map +1 -0
- package/_internal/53b8dea1.js +48 -0
- package/_internal/53b8dea1.js.map +1 -0
- package/_internal/5745f198.js +12 -0
- package/_internal/5745f198.js.map +1 -0
- package/_internal/57f2079b.js +10 -0
- package/_internal/57f2079b.js.map +1 -0
- package/_internal/{components/thumbnail-4928bba2.js → 58418448.js} +1 -2
- package/_internal/58418448.js.map +1 -0
- package/_internal/{index-d3e86bd8.js → 595d0e66.js} +5 -6
- package/_internal/595d0e66.js.map +1 -0
- package/_internal/{IconButton-e11b5e74.js → 5a0207d9.js} +7 -7
- package/_internal/5a0207d9.js.map +1 -0
- package/_internal/5a6b1aa5.js +139 -0
- package/_internal/5a6b1aa5.js.map +1 -0
- package/_internal/5c3e15ea.js +107 -0
- package/_internal/5c3e15ea.js.map +1 -0
- package/_internal/{components/lightbox-10ff28f9.js → 5c4e10a0.js} +14 -14
- package/_internal/5c4e10a0.js.map +1 -0
- package/_internal/5da9ff06.js +47 -0
- package/_internal/5da9ff06.js.map +1 -0
- package/_internal/60139f6a.js +9 -0
- package/_internal/60139f6a.js.map +1 -0
- package/_internal/612b7365.js +231 -0
- package/_internal/612b7365.js.map +1 -0
- package/_internal/612f6fb4.js +155 -0
- package/_internal/612f6fb4.js.map +1 -0
- package/_internal/617d453e.js +28 -0
- package/_internal/617d453e.js.map +1 -0
- package/_internal/{components/slider-78cfaa67.js → 62c6c615.js} +11 -43
- package/_internal/62c6c615.js.map +1 -0
- package/_internal/6417ddb1.js +24 -0
- package/_internal/6417ddb1.js.map +1 -0
- package/_internal/658e09de.js +7 -0
- package/_internal/658e09de.js.map +1 -0
- package/_internal/659a1cdd.js +144 -0
- package/_internal/659a1cdd.js.map +1 -0
- package/_internal/6671d28b.js +40 -0
- package/_internal/6671d28b.js.map +1 -0
- package/_internal/66950686.js +14 -0
- package/_internal/66950686.js.map +1 -0
- package/_internal/671b986c.js +14 -0
- package/_internal/671b986c.js.map +1 -0
- package/_internal/{components/notification-97a8a04a.js → 6893b89e.js} +10 -33
- package/_internal/6893b89e.js.map +1 -0
- package/_internal/68f13c1c.js +4 -0
- package/_internal/68f13c1c.js.map +1 -0
- package/_internal/{components/link-9d1bd2f6.js → 69eb2393.js} +6 -6
- package/_internal/69eb2393.js.map +1 -0
- package/_internal/{constants-d0e3f49e.js → 6af61e2f.js} +3 -3
- package/_internal/6af61e2f.js.map +1 -0
- package/_internal/{components/checkbox-f7751583.js → 6b510f5e.js} +11 -13
- package/_internal/6b510f5e.js.map +1 -0
- package/_internal/6b61b268.js +9 -0
- package/_internal/6b61b268.js.map +1 -0
- package/_internal/6f0ce1bb.js +67 -0
- package/_internal/6f0ce1bb.js.map +1 -0
- package/_internal/6f17bf65.js +8 -0
- package/_internal/6f17bf65.js.map +1 -0
- package/_internal/{close-circle-ef5d1aac.js → 6f37d603.js} +2 -2
- package/_internal/6f37d603.js.map +1 -0
- package/_internal/6f3bb7d6.js +16 -0
- package/_internal/6f3bb7d6.js.map +1 -0
- package/_internal/705f415e.js +67 -0
- package/_internal/705f415e.js.map +1 -0
- package/_internal/722ea461.js +9 -0
- package/_internal/722ea461.js.map +1 -0
- package/_internal/728684f6.js +6 -0
- package/_internal/728684f6.js.map +1 -0
- package/_internal/730f75dc.js +93 -0
- package/_internal/730f75dc.js.map +1 -0
- package/_internal/735bcfa5.js +38 -0
- package/_internal/735bcfa5.js.map +1 -0
- package/_internal/{ClickAwayProvider-7093ba23.js → 739f2f15.js} +4 -38
- package/_internal/739f2f15.js.map +1 -0
- package/_internal/7531ee4d.js +72 -0
- package/_internal/7531ee4d.js.map +1 -0
- package/_internal/75f285fb.js +104 -0
- package/_internal/75f285fb.js.map +1 -0
- package/_internal/78a9c3cd.js +4 -0
- package/_internal/78a9c3cd.js.map +1 -0
- package/_internal/7a2da67a.js +64 -0
- package/_internal/7a2da67a.js.map +1 -0
- package/_internal/7af4a428.js +39 -0
- package/_internal/7af4a428.js.map +1 -0
- package/_internal/7d4eb1c5.js +62 -0
- package/_internal/7d4eb1c5.js.map +1 -0
- package/_internal/{components/chip-1ed080fb.js → 7d9c0855.js} +2 -50
- package/_internal/7d9c0855.js.map +1 -0
- package/_internal/7eca7fcd.js +28 -0
- package/_internal/7eca7fcd.js.map +1 -0
- package/_internal/81a6a29a.js +55 -0
- package/_internal/81a6a29a.js.map +1 -0
- package/_internal/{components/user-block-5fd51607.js → 82159c03.js} +5 -5
- package/_internal/82159c03.js.map +1 -0
- package/_internal/82c6852b.js +19 -0
- package/_internal/82c6852b.js.map +1 -0
- package/_internal/{components/drag-handle-eec23fc2.js → 840e9690.js} +5 -6
- package/_internal/840e9690.js.map +1 -0
- package/_internal/{context-9d1336a1.js → 841c2303.js} +2 -2
- package/_internal/841c2303.js.map +1 -0
- package/_internal/8429fc80.js +141 -0
- package/_internal/8429fc80.js.map +1 -0
- package/_internal/84978777.js +55 -0
- package/_internal/84978777.js.map +1 -0
- package/_internal/{components/switch-24fea8d7.js → 851a3109.js} +7 -7
- package/_internal/851a3109.js.map +1 -0
- package/_internal/879fa64d.js +6 -0
- package/_internal/879fa64d.js.map +1 -0
- package/_internal/883321fd.js +17 -0
- package/_internal/883321fd.js.map +1 -0
- package/_internal/893eb653.js +4 -0
- package/_internal/893eb653.js.map +1 -0
- package/_internal/897e2dbb.js +80 -0
- package/_internal/897e2dbb.js.map +1 -0
- package/_internal/89ee5eb2.js +22 -0
- package/_internal/89ee5eb2.js.map +1 -0
- package/_internal/8acd6aff.js +82 -0
- package/_internal/8acd6aff.js.map +1 -0
- package/_internal/8d318b2b.js +138 -0
- package/_internal/8d318b2b.js.map +1 -0
- package/_internal/8e3efbc4.js +65 -0
- package/_internal/8e3efbc4.js.map +1 -0
- package/_internal/{useDisableBodyScroll-36bd7352.js → 8e8c5ab6.js} +2 -29
- package/_internal/8e8c5ab6.js.map +1 -0
- package/_internal/8fe4c01f.js +20 -0
- package/_internal/8fe4c01f.js.map +1 -0
- package/_internal/91f36a80.js +34 -0
- package/_internal/91f36a80.js.map +1 -0
- package/_internal/928fa938.js +102 -0
- package/_internal/928fa938.js.map +1 -0
- package/_internal/9361ef65.js +6 -0
- package/_internal/9361ef65.js.map +1 -0
- package/_internal/99513933.js +145 -0
- package/_internal/99513933.js.map +1 -0
- package/_internal/9976fe9a.js +28 -0
- package/_internal/9976fe9a.js.map +1 -0
- package/_internal/9a0544c4.js +34 -0
- package/_internal/9a0544c4.js.map +1 -0
- package/_internal/9a5db774.js +6 -0
- package/_internal/9a5db774.js.map +1 -0
- package/_internal/{components/radio-button-929c7bee.js → 9ae8998a.js} +21 -54
- package/_internal/9ae8998a.js.map +1 -0
- package/_internal/{ButtonRoot-a70baf82.js → 9b0c0489.js} +6 -6
- package/_internal/9b0c0489.js.map +1 -0
- package/_internal/9d063548.js +49 -0
- package/_internal/9d063548.js.map +1 -0
- package/_internal/{components/link-preview-9525e97f.js → 9e3b78fa.js} +5 -5
- package/_internal/9e3b78fa.js.map +1 -0
- package/_internal/a0a42aca.js +14 -0
- package/_internal/a0a42aca.js.map +1 -0
- package/_internal/{components/toolbar-e7c984e6.js → a1974f13.js} +2 -2
- package/_internal/a1974f13.js.map +1 -0
- package/_internal/a2b9eb60.js +90 -0
- package/_internal/a2b9eb60.js.map +1 -0
- package/_internal/a2c7c463.js +4 -0
- package/_internal/a2c7c463.js.map +1 -0
- package/_internal/a32628a1.js +4 -0
- package/_internal/a32628a1.js.map +1 -0
- package/_internal/a3f2000f.js +198 -0
- package/_internal/a3f2000f.js.map +1 -0
- package/_internal/a45cc1b9.js +128 -0
- package/_internal/a45cc1b9.js.map +1 -0
- package/_internal/a6be9f05.js +75 -0
- package/_internal/a6be9f05.js.map +1 -0
- package/_internal/{RawClickable-2c2b6a89.js → a6dc95cd.js} +3 -6
- package/_internal/a6dc95cd.js.map +1 -0
- package/_internal/a7abe967.js +20 -0
- package/_internal/a7abe967.js.map +1 -0
- package/_internal/{components/expansion-panel-df812318.js → a89bf7bc.js} +10 -9
- package/_internal/a89bf7bc.js.map +1 -0
- package/_internal/a9d0f94d.js +53 -0
- package/_internal/a9d0f94d.js.map +1 -0
- package/_internal/ab3e5463.js +39 -0
- package/_internal/ab3e5463.js.map +1 -0
- package/_internal/{components/generic-block-964b2724.js → ac3f7e4d.js} +6 -12
- package/_internal/ac3f7e4d.js.map +1 -0
- package/_internal/acd6bed6.js +6 -0
- package/_internal/acd6bed6.js.map +1 -0
- package/_internal/{close-eaf6c45a.js → ad7c38b0.js} +2 -2
- package/_internal/ad7c38b0.js.map +1 -0
- package/_internal/ae4dc9f0.js +62 -0
- package/_internal/ae4dc9f0.js.map +1 -0
- package/_internal/aeba575c.js +4 -0
- package/_internal/aeba575c.js.map +1 -0
- package/_internal/b0780b33.js +60 -0
- package/_internal/b0780b33.js.map +1 -0
- package/_internal/b0846836.js +4 -0
- package/_internal/b0846836.js.map +1 -0
- package/_internal/b1154f4b.js +14 -0
- package/_internal/b1154f4b.js.map +1 -0
- package/_internal/{Chip-8fbedc93.js → b125b718.js} +6 -22
- package/_internal/b125b718.js.map +1 -0
- package/_internal/b23a92ab.js +56 -0
- package/_internal/b23a92ab.js.map +1 -0
- package/_internal/b4018f8d.js +107 -0
- package/_internal/b4018f8d.js.map +1 -0
- package/_internal/b402784b.js +11 -0
- package/_internal/b402784b.js.map +1 -0
- package/_internal/b4dfa648.js +32 -0
- package/_internal/b4dfa648.js.map +1 -0
- package/_internal/b573621e.js +26 -0
- package/_internal/b573621e.js.map +1 -0
- package/_internal/b5edf49e.js +8 -0
- package/_internal/b5edf49e.js.map +1 -0
- package/_internal/b85a5f3f.js +57 -0
- package/_internal/b85a5f3f.js.map +1 -0
- package/_internal/b93aa71c.js +89 -0
- package/_internal/b93aa71c.js.map +1 -0
- package/_internal/b977b471.js +5 -0
- package/_internal/b977b471.js.map +1 -0
- package/_internal/{components/message-edd6a28a.js → b9e3e436.js} +9 -7
- package/_internal/b9e3e436.js.map +1 -0
- package/_internal/b9ed1f7a.js +4 -0
- package/_internal/b9ed1f7a.js.map +1 -0
- package/_internal/{components/button-c4127e86.js → bae815e2.js} +2 -4
- package/_internal/bae815e2.js.map +1 -0
- package/_internal/bb05343d.js +36 -0
- package/_internal/bb05343d.js.map +1 -0
- package/_internal/bb5fb0f9.js +28 -0
- package/_internal/bb5fb0f9.js.map +1 -0
- package/_internal/{useRovingTabIndex-7daf0f24.js → bb8088e1.js} +2 -2
- package/_internal/bb8088e1.js.map +1 -0
- package/_internal/bc393aec.js +8 -0
- package/_internal/bc393aec.js.map +1 -0
- package/_internal/{components/heading-6cc0f178.js → bd1cd49f.js} +6 -6
- package/_internal/bd1cd49f.js.map +1 -0
- package/_internal/{forwardRef-8bce732e.js → bd8b3ec8.js} +2 -2
- package/_internal/bd8b3ec8.js.map +1 -0
- package/_internal/be29f79e.js +52 -0
- package/_internal/be29f79e.js.map +1 -0
- package/_internal/bf202fa2.js +47 -0
- package/_internal/bf202fa2.js.map +1 -0
- package/_internal/bf411e5a.js +109 -0
- package/_internal/bf411e5a.js.map +1 -0
- package/_internal/c01c3bec.js +12 -0
- package/_internal/c01c3bec.js.map +1 -0
- package/_internal/{getFocusableElements-230173a8.js → c0a6dba6.js} +2 -7
- package/_internal/c0a6dba6.js.map +1 -0
- package/_internal/{components/post-block-7e63c4f4.js → c241db12.js} +5 -5
- package/_internal/c241db12.js.map +1 -0
- package/_internal/c3ccd387.js +20 -0
- package/_internal/c3ccd387.js.map +1 -0
- package/_internal/{components/alert-dialog-5326cf04.js → c51d37f8.js} +11 -9
- package/_internal/c51d37f8.js.map +1 -0
- package/_internal/c625d242.js +14 -0
- package/_internal/c625d242.js.map +1 -0
- package/_internal/c72d4f8b.js +4 -0
- package/_internal/c72d4f8b.js.map +1 -0
- package/_internal/c9a3b27f.js +6 -0
- package/_internal/c9a3b27f.js.map +1 -0
- package/_internal/c9bd0e84.js +29 -0
- package/_internal/c9bd0e84.js.map +1 -0
- package/_internal/{partitionMulti-4daccdd5.js → cb19eca6.js} +2 -2
- package/_internal/cb19eca6.js.map +1 -0
- package/_internal/cb525c68.js +165 -0
- package/_internal/cb525c68.js.map +1 -0
- package/_internal/cb7ac456.js +165 -0
- package/_internal/cb7ac456.js.map +1 -0
- package/_internal/{components/comment-block-343e1922.js → cc5cac50.js} +5 -5
- package/_internal/cc5cac50.js.map +1 -0
- package/_internal/{components/dialog-d0e090b1.js → cd8457fc.js} +17 -47
- package/_internal/cd8457fc.js.map +1 -0
- package/_internal/d0b96efd.js +8 -0
- package/_internal/d0b96efd.js.map +1 -0
- package/_internal/d3286249.js +72 -0
- package/_internal/d3286249.js.map +1 -0
- package/_internal/d57d3fc6.js +6 -0
- package/_internal/d57d3fc6.js.map +1 -0
- package/_internal/d5f5f3f5.js +18 -0
- package/_internal/d5f5f3f5.js.map +1 -0
- package/_internal/d672fc0e.js +24 -0
- package/_internal/d672fc0e.js.map +1 -0
- package/_internal/d7ee7efe.js +40 -0
- package/_internal/d7ee7efe.js.map +1 -0
- package/_internal/{ThemeContext-3181f000.js → d8ee966d.js} +2 -2
- package/_internal/d8ee966d.js.map +1 -0
- package/_internal/db88500d.js +10 -0
- package/_internal/db88500d.js.map +1 -0
- package/_internal/dbc379f8.js +45 -0
- package/_internal/dbc379f8.js.map +1 -0
- package/_internal/dbe906f1.js +179 -0
- package/_internal/dbe906f1.js.map +1 -0
- package/_internal/de52a4b9.js +20 -0
- package/_internal/de52a4b9.js.map +1 -0
- package/_internal/df688aab.js +121 -0
- package/_internal/df688aab.js.map +1 -0
- package/_internal/dfa00cf7.js +35 -0
- package/_internal/dfa00cf7.js.map +1 -0
- package/_internal/{state-db358714.js → e0398237.js} +3 -3
- package/_internal/e0398237.js.map +1 -0
- package/_internal/e142a98d.js +22 -0
- package/_internal/e142a98d.js.map +1 -0
- package/_internal/e429bd82.js +12 -0
- package/_internal/e429bd82.js.map +1 -0
- package/_internal/{check-circle-de24f857.js → e47dacb8.js} +2 -2
- package/_internal/e47dacb8.js.map +1 -0
- package/_internal/e4a199c0.js +20 -0
- package/_internal/e4a199c0.js.map +1 -0
- package/_internal/e50f2a75.js +27 -0
- package/_internal/e50f2a75.js.map +1 -0
- package/_internal/{components/slideshow-e0880d40.js → e5657997.js} +11 -32
- package/_internal/e5657997.js.map +1 -0
- package/_internal/e7aa44d1.js +13 -0
- package/_internal/e7aa44d1.js.map +1 -0
- package/_internal/e8e4d09e.js +95 -0
- package/_internal/e8e4d09e.js.map +1 -0
- package/_internal/e918f20b.js +57 -0
- package/_internal/e918f20b.js.map +1 -0
- package/_internal/e9c3b1e0.js +4 -0
- package/_internal/e9c3b1e0.js.map +1 -0
- package/_internal/ebd44733.js +7 -0
- package/_internal/ebd44733.js.map +1 -0
- package/_internal/{isComponent-78df9309.js → ebe24fd7.js} +2 -2
- package/_internal/ebe24fd7.js.map +1 -0
- package/_internal/ed03c692.js +17 -0
- package/_internal/ed03c692.js.map +1 -0
- package/_internal/eea52073.js +27 -0
- package/_internal/eea52073.js.map +1 -0
- package/_internal/eec574e6.js +40 -0
- package/_internal/eec574e6.js.map +1 -0
- package/_internal/eef5d63f.js +21 -0
- package/_internal/eef5d63f.js.map +1 -0
- package/_internal/ef907c21.js +41 -0
- package/_internal/ef907c21.js.map +1 -0
- package/_internal/{useDisableStateProps-69e16b7c.js → ef982c3d.js} +3 -3
- package/_internal/ef982c3d.js.map +1 -0
- package/_internal/f0052b9b.js +27 -0
- package/_internal/f0052b9b.js.map +1 -0
- package/_internal/f2e34298.js +75 -0
- package/_internal/f2e34298.js.map +1 -0
- package/_internal/f419ecef.js +4 -0
- package/_internal/f419ecef.js.map +1 -0
- package/_internal/f4baa1da.js +34 -0
- package/_internal/f4baa1da.js.map +1 -0
- package/_internal/{useTransitionVisibility-321fdbfa.js → f6bc7948.js} +3 -8
- package/_internal/f6bc7948.js.map +1 -0
- package/_internal/f7520b8e.js +52 -0
- package/_internal/f7520b8e.js.map +1 -0
- package/_internal/f8c49b24.js +14 -0
- package/_internal/f8c49b24.js.map +1 -0
- package/_internal/fb201a04.js +65 -0
- package/_internal/fb201a04.js.map +1 -0
- package/_internal/fb36ff46.js +51 -0
- package/_internal/fb36ff46.js.map +1 -0
- package/_internal/{components/flag-c8d690bc.js → fcc7c462.js} +5 -5
- package/_internal/fcc7c462.js.map +1 -0
- package/_internal/fcf83937.js +28 -0
- package/_internal/fcf83937.js.map +1 -0
- package/_internal/fd3e2f21.js +30 -0
- package/_internal/fd3e2f21.js.map +1 -0
- package/_internal/fdcf3942.js +157 -0
- package/_internal/fdcf3942.js.map +1 -0
- package/_internal/{components/flex-box-4eeba972.js → fdebc718.js} +2 -2
- package/_internal/fdebc718.js.map +1 -0
- package/_internal/ff96951d.js +8 -0
- package/_internal/ff96951d.js.map +1 -0
- package/_internal/{components/avatar-52bb217f.js → ffb2f7fa.js} +4 -4
- package/_internal/ffb2f7fa.js.map +1 -0
- package/index.js +95 -63
- package/index.js.map +1 -1
- package/package.json +3 -3
- package/utils/index.js +4 -3
- package/utils/index.js.map +1 -1
- package/_internal/Button-1b7d3b79.js.map +0 -1
- package/_internal/ButtonRoot-a70baf82.js.map +0 -1
- package/_internal/Chip-8fbedc93.js.map +0 -1
- package/_internal/ClickAwayProvider-7093ba23.js.map +0 -1
- package/_internal/DisabledStateContext-ea04260d.js.map +0 -1
- package/_internal/HeadingLevelProvider-ebdcb0c7.js +0 -61
- package/_internal/HeadingLevelProvider-ebdcb0c7.js.map +0 -1
- package/_internal/IconButton-e11b5e74.js.map +0 -1
- package/_internal/ImageCaption-6f2f4131.js.map +0 -1
- package/_internal/List-4e95288a.js +0 -820
- package/_internal/List-4e95288a.js.map +0 -1
- package/_internal/PopoverDialog-d85ff977.js +0 -656
- package/_internal/PopoverDialog-d85ff977.js.map +0 -1
- package/_internal/Portal-3f86608e.js.map +0 -1
- package/_internal/RawClickable-2c2b6a89.js.map +0 -1
- package/_internal/Slides-68a7d0e6.js +0 -683
- package/_internal/Slides-68a7d0e6.js.map +0 -1
- package/_internal/ThemeContext-3181f000.js.map +0 -1
- package/_internal/Thumbnail-22bbea7e.js +0 -315
- package/_internal/Thumbnail-22bbea7e.js.map +0 -1
- package/_internal/check-circle-de24f857.js.map +0 -1
- package/_internal/chevron-right-827b804a.js +0 -6
- package/_internal/chevron-right-827b804a.js.map +0 -1
- package/_internal/chevron-up-0b9c76cb.js +0 -6
- package/_internal/chevron-up-0b9c76cb.js.map +0 -1
- package/_internal/close-circle-ef5d1aac.js.map +0 -1
- package/_internal/close-eaf6c45a.js.map +0 -1
- package/_internal/components/alert-dialog-5326cf04.js.map +0 -1
- package/_internal/components/autocomplete-7d9581e8.js +0 -262
- package/_internal/components/autocomplete-7d9581e8.js.map +0 -1
- package/_internal/components/avatar-52bb217f.js.map +0 -1
- package/_internal/components/badge-ccf47147.js +0 -82
- package/_internal/components/badge-ccf47147.js.map +0 -1
- package/_internal/components/button-c4127e86.js.map +0 -1
- package/_internal/components/checkbox-f7751583.js.map +0 -1
- package/_internal/components/chip-1ed080fb.js.map +0 -1
- package/_internal/components/comment-block-343e1922.js.map +0 -1
- package/_internal/components/date-picker-b6b3dc77.js +0 -2
- package/_internal/components/date-picker-b6b3dc77.js.map +0 -1
- package/_internal/components/dialog-d0e090b1.js.map +0 -1
- package/_internal/components/divider-0e93aa3d.js.map +0 -1
- package/_internal/components/drag-handle-eec23fc2.js.map +0 -1
- package/_internal/components/dropdown-25170b7c.js.map +0 -1
- package/_internal/components/expansion-panel-df812318.js.map +0 -1
- package/_internal/components/flag-c8d690bc.js.map +0 -1
- package/_internal/components/flex-box-4eeba972.js.map +0 -1
- package/_internal/components/generic-block-964b2724.js.map +0 -1
- package/_internal/components/grid-8c08dc4b.js +0 -105
- package/_internal/components/grid-8c08dc4b.js.map +0 -1
- package/_internal/components/grid-column-99652545.js.map +0 -1
- package/_internal/components/heading-6cc0f178.js.map +0 -1
- package/_internal/components/icon-9cf785b1.js +0 -2
- package/_internal/components/icon-9cf785b1.js.map +0 -1
- package/_internal/components/image-block-4f3fe64c.js.map +0 -1
- package/_internal/components/image-lightbox-7b172571.js +0 -760
- package/_internal/components/image-lightbox-7b172571.js.map +0 -1
- package/_internal/components/inline-list-5ba8bb0f.js.map +0 -1
- package/_internal/components/input-helper-2e4e49fd.js.map +0 -1
- package/_internal/components/input-label-30d199c3.js.map +0 -1
- package/_internal/components/lightbox-10ff28f9.js.map +0 -1
- package/_internal/components/link-9d1bd2f6.js.map +0 -1
- package/_internal/components/link-preview-9525e97f.js.map +0 -1
- package/_internal/components/list-c8c7a6eb.js +0 -72
- package/_internal/components/list-c8c7a6eb.js.map +0 -1
- package/_internal/components/message-edd6a28a.js.map +0 -1
- package/_internal/components/mosaic-c8084ee8.js.map +0 -1
- package/_internal/components/navigation-c9121998.js +0 -226
- package/_internal/components/navigation-c9121998.js.map +0 -1
- package/_internal/components/notification-97a8a04a.js.map +0 -1
- package/_internal/components/popover-f93484cd.js +0 -3
- package/_internal/components/popover-f93484cd.js.map +0 -1
- package/_internal/components/post-block-7e63c4f4.js.map +0 -1
- package/_internal/components/progress-44bb0301.js +0 -183
- package/_internal/components/progress-44bb0301.js.map +0 -1
- package/_internal/components/progress-tracker-c9758d83.js +0 -310
- package/_internal/components/progress-tracker-c9758d83.js.map +0 -1
- package/_internal/components/radio-button-929c7bee.js.map +0 -1
- package/_internal/components/select-bea40e77.js +0 -459
- package/_internal/components/select-bea40e77.js.map +0 -1
- package/_internal/components/side-navigation-385825d4.js.map +0 -1
- package/_internal/components/skeleton-1ea8c82a.js +0 -167
- package/_internal/components/skeleton-1ea8c82a.js.map +0 -1
- package/_internal/components/slider-78cfaa67.js.map +0 -1
- package/_internal/components/slideshow-e0880d40.js.map +0 -1
- package/_internal/components/switch-24fea8d7.js.map +0 -1
- package/_internal/components/table-834af792.js +0 -298
- package/_internal/components/table-834af792.js.map +0 -1
- package/_internal/components/tabs-bebfe959.js +0 -299
- package/_internal/components/tabs-bebfe959.js.map +0 -1
- package/_internal/components/text-9074f440.js +0 -2
- package/_internal/components/text-9074f440.js.map +0 -1
- package/_internal/components/text-field-8597b7f7.js.map +0 -1
- package/_internal/components/thumbnail-4928bba2.js.map +0 -1
- package/_internal/components/toolbar-e7c984e6.js.map +0 -1
- package/_internal/components/tooltip-21018736.js +0 -328
- package/_internal/components/tooltip-21018736.js.map +0 -1
- package/_internal/components/uploader-2e1b080e.js.map +0 -1
- package/_internal/components/user-block-5fd51607.js.map +0 -1
- package/_internal/constants-43721918.js +0 -2170
- package/_internal/constants-43721918.js.map +0 -1
- package/_internal/constants-d0e3f49e.js.map +0 -1
- package/_internal/context-9d1336a1.js.map +0 -1
- package/_internal/forwardRef-8bce732e.js.map +0 -1
- package/_internal/getFocusableElements-230173a8.js.map +0 -1
- package/_internal/index-77f213b1.js.map +0 -1
- package/_internal/index-aa6d1d90.js +0 -437
- package/_internal/index-aa6d1d90.js.map +0 -1
- package/_internal/index-d3e86bd8.js.map +0 -1
- package/_internal/information-49bbeed3.js +0 -6
- package/_internal/information-49bbeed3.js.map +0 -1
- package/_internal/isComponent-78df9309.js.map +0 -1
- package/_internal/isComponentType-e806b848.js.map +0 -1
- package/_internal/mergeRefs-f0d7d6ea.js.map +0 -1
- package/_internal/partitionMulti-4daccdd5.js.map +0 -1
- package/_internal/state-db358714.js.map +0 -1
- package/_internal/useBooleanState-2a3d237c.js.map +0 -1
- package/_internal/useCallbackOnEscape-ea4d9eb4.js +0 -62
- package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +0 -1
- package/_internal/useDisableBodyScroll-36bd7352.js.map +0 -1
- package/_internal/useDisableStateProps-69e16b7c.js.map +0 -1
- package/_internal/useFocusTrap-c3c6378b.js.map +0 -1
- package/_internal/useId-3a1facc0.js.map +0 -1
- package/_internal/useRovingTabIndex-7daf0f24.js.map +0 -1
- package/_internal/useTransitionVisibility-321fdbfa.js.map +0 -1
- package/_internal/wrapChildrenIconWithSpaces-fb85a743.js.map +0 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
|
|
4
|
+
import { forwardRef } from './bd8b3ec8.js';
|
|
5
|
+
import { useDisableStateProps } from './ef982c3d.js';
|
|
6
|
+
import { useTabProviderContext } from './e0398237.js';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
import { mdiRadioboxMarked } from './a2c7c463.js';
|
|
9
|
+
import { mdiRadioboxBlank } from './4f71fd36.js';
|
|
10
|
+
import { Icon } from './595d0e66.js';
|
|
11
|
+
import { Size, Kind } from '@lumx/core/js/constants';
|
|
12
|
+
import { InputLabel } from './26a92990.js';
|
|
13
|
+
import { InputHelper } from './3119c1fe.js';
|
|
14
|
+
import { mdiCheckCircle } from './e47dacb8.js';
|
|
15
|
+
import { mdiAlertCircle } from './893eb653.js';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Component display name.
|
|
19
|
+
*/
|
|
20
|
+
const COMPONENT_NAME = 'ProgressTrackerStep';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Component default class name and class prefix.
|
|
24
|
+
*/
|
|
25
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Component default props.
|
|
29
|
+
*/
|
|
30
|
+
const DEFAULT_PROPS = {};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* ProgressTrackerStep component.
|
|
34
|
+
*
|
|
35
|
+
* Implements WAI-ARIA `tab` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}
|
|
36
|
+
*
|
|
37
|
+
* @param props Component props.
|
|
38
|
+
* @param ref Component ref.
|
|
39
|
+
* @return React element.
|
|
40
|
+
*/
|
|
41
|
+
const ProgressTrackerStep = forwardRef((props, ref) => {
|
|
42
|
+
const {
|
|
43
|
+
isAnyDisabled,
|
|
44
|
+
otherProps
|
|
45
|
+
} = useDisableStateProps(props);
|
|
46
|
+
const {
|
|
47
|
+
className,
|
|
48
|
+
hasError,
|
|
49
|
+
helper,
|
|
50
|
+
id,
|
|
51
|
+
isActive: propIsActive,
|
|
52
|
+
isComplete,
|
|
53
|
+
label,
|
|
54
|
+
onFocus,
|
|
55
|
+
onKeyPress,
|
|
56
|
+
tabIndex = -1,
|
|
57
|
+
...forwardedProps
|
|
58
|
+
} = otherProps;
|
|
59
|
+
const state = useTabProviderContext('tab', id);
|
|
60
|
+
const isActive = propIsActive || state?.isActive;
|
|
61
|
+
const changeToCurrentTab = useCallback(() => {
|
|
62
|
+
if (isAnyDisabled) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
state?.changeToTab();
|
|
66
|
+
}, [isAnyDisabled, state]);
|
|
67
|
+
const handleFocus = useCallback(event => {
|
|
68
|
+
onFocus?.(event);
|
|
69
|
+
if (state?.shouldActivateOnFocus) {
|
|
70
|
+
changeToCurrentTab();
|
|
71
|
+
}
|
|
72
|
+
}, [changeToCurrentTab, onFocus, state?.shouldActivateOnFocus]);
|
|
73
|
+
const handleKeyPress = useCallback(event => {
|
|
74
|
+
onKeyPress?.(event);
|
|
75
|
+
if (event.key !== 'Enter') {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
changeToCurrentTab();
|
|
79
|
+
}, [changeToCurrentTab, onKeyPress]);
|
|
80
|
+
const getIcon = () => {
|
|
81
|
+
if (isComplete) {
|
|
82
|
+
return mdiCheckCircle;
|
|
83
|
+
}
|
|
84
|
+
if (isActive) {
|
|
85
|
+
return hasError ? mdiAlertCircle : mdiRadioboxMarked;
|
|
86
|
+
}
|
|
87
|
+
return mdiRadioboxBlank;
|
|
88
|
+
};
|
|
89
|
+
return /*#__PURE__*/jsxs("button", {
|
|
90
|
+
ref: ref,
|
|
91
|
+
...forwardedProps,
|
|
92
|
+
type: "button",
|
|
93
|
+
id: state?.tabId,
|
|
94
|
+
className: classNames(className, handleBasicClasses({
|
|
95
|
+
prefix: CLASSNAME,
|
|
96
|
+
hasError,
|
|
97
|
+
isActive,
|
|
98
|
+
isClickable: state && !isAnyDisabled,
|
|
99
|
+
isComplete
|
|
100
|
+
})),
|
|
101
|
+
onClick: changeToCurrentTab,
|
|
102
|
+
onKeyPress: handleKeyPress,
|
|
103
|
+
onFocus: handleFocus,
|
|
104
|
+
role: "tab",
|
|
105
|
+
tabIndex: isActive ? 0 : tabIndex,
|
|
106
|
+
"aria-disabled": isAnyDisabled,
|
|
107
|
+
"aria-selected": isActive,
|
|
108
|
+
"aria-controls": state?.tabPanelId,
|
|
109
|
+
children: [/*#__PURE__*/jsx(Icon, {
|
|
110
|
+
className: `${CLASSNAME}__state`,
|
|
111
|
+
icon: getIcon(),
|
|
112
|
+
size: Size.s
|
|
113
|
+
}), /*#__PURE__*/jsx(InputLabel, {
|
|
114
|
+
htmlFor: state?.tabId || '',
|
|
115
|
+
className: `${CLASSNAME}__label`,
|
|
116
|
+
children: label
|
|
117
|
+
}), helper && /*#__PURE__*/jsx(InputHelper, {
|
|
118
|
+
kind: hasError ? Kind.error : Kind.info,
|
|
119
|
+
className: `${CLASSNAME}__helper`,
|
|
120
|
+
children: helper
|
|
121
|
+
})]
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
ProgressTrackerStep.displayName = COMPONENT_NAME;
|
|
125
|
+
ProgressTrackerStep.className = CLASSNAME;
|
|
126
|
+
ProgressTrackerStep.defaultProps = DEFAULT_PROPS;
|
|
127
|
+
|
|
128
|
+
export { ProgressTrackerStep };
|
|
129
|
+
//# sourceMappingURL=179a2989.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"179a2989.js","sources":["../../src/components/progress-tracker/ProgressTrackerStep.tsx"],"sourcesContent":["import { FocusEventHandler, KeyboardEventHandler, useCallback } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiRadioboxBlank, mdiRadioboxMarked } from '@lumx/icons';\nimport { Icon, InputHelper, InputLabel, Kind, Size } from '@lumx/react';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { useTabProviderContext } from '../tabs/state';\n\n/**\n * Defines the props of the component.\n */\nexport interface ProgressTrackerStepProps extends GenericProps {\n /** Children are not supported. */\n children?: never;\n /** Whether the step should be in error state or not. */\n hasError?: boolean;\n /** Helper text. */\n helper?: string | null;\n /** Native id property. */\n id?: string;\n /** Whether the current step is active or not. */\n isActive?: boolean;\n /** Whether the current step is completed or not. */\n isComplete?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label text. */\n label?: string | null;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ProgressTrackerStep';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ProgressTrackerStepProps> = {};\n\n/**\n * ProgressTrackerStep component.\n *\n * Implements WAI-ARIA `tab` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ProgressTrackerStep = forwardRef<ProgressTrackerStepProps, HTMLButtonElement>((props, ref) => {\n const { isAnyDisabled, otherProps } = useDisableStateProps(props);\n const {\n className,\n hasError,\n helper,\n id,\n isActive: propIsActive,\n isComplete,\n label,\n onFocus,\n onKeyPress,\n tabIndex = -1,\n ...forwardedProps\n } = otherProps;\n const state = useTabProviderContext('tab', id);\n const isActive = propIsActive || state?.isActive;\n\n const changeToCurrentTab = useCallback(() => {\n if (isAnyDisabled) {\n return;\n }\n state?.changeToTab();\n }, [isAnyDisabled, state]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n onFocus?.(event);\n if (state?.shouldActivateOnFocus) {\n changeToCurrentTab();\n }\n },\n [changeToCurrentTab, onFocus, state?.shouldActivateOnFocus],\n );\n\n const handleKeyPress: KeyboardEventHandler = useCallback(\n (event) => {\n onKeyPress?.(event);\n if (event.key !== 'Enter') {\n return;\n }\n changeToCurrentTab();\n },\n [changeToCurrentTab, onKeyPress],\n );\n\n const getIcon = (): string => {\n if (isComplete) {\n return mdiCheckCircle;\n }\n\n if (isActive) {\n return hasError ? mdiAlertCircle : mdiRadioboxMarked;\n }\n\n return mdiRadioboxBlank;\n };\n\n return (\n <button\n ref={ref}\n {...forwardedProps}\n type=\"button\"\n id={state?.tabId}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n hasError,\n isActive,\n isClickable: state && !isAnyDisabled,\n isComplete,\n }),\n )}\n onClick={changeToCurrentTab}\n onKeyPress={handleKeyPress}\n onFocus={handleFocus}\n role=\"tab\"\n tabIndex={isActive ? 0 : tabIndex}\n aria-disabled={isAnyDisabled}\n aria-selected={isActive}\n aria-controls={state?.tabPanelId}\n >\n <Icon className={`${CLASSNAME}__state`} icon={getIcon()} size={Size.s} />\n\n <InputLabel htmlFor={state?.tabId || ''} className={`${CLASSNAME}__label`}>\n {label}\n </InputLabel>\n\n {helper && (\n <InputHelper kind={hasError ? Kind.error : Kind.info} className={`${CLASSNAME}__helper`}>\n {helper}\n </InputHelper>\n )}\n </button>\n );\n});\nProgressTrackerStep.displayName = COMPONENT_NAME;\nProgressTrackerStep.className = CLASSNAME;\nProgressTrackerStep.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","ProgressTrackerStep","forwardRef","props","ref","isAnyDisabled","otherProps","useDisableStateProps","className","hasError","helper","id","isActive","propIsActive","isComplete","label","onFocus","onKeyPress","tabIndex","forwardedProps","state","useTabProviderContext","changeToCurrentTab","useCallback","changeToTab","handleFocus","event","shouldActivateOnFocus","handleKeyPress","key","getIcon","mdiCheckCircle","mdiAlertCircle","mdiRadioboxMarked","mdiRadioboxBlank","_jsxs","type","tabId","classNames","handleBasicClasses","prefix","isClickable","onClick","role","tabPanelId","children","_jsx","Icon","icon","size","Size","s","InputLabel","htmlFor","InputHelper","kind","Kind","error","info","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"185778b8.js","sources":["../../../lumx-icons/dist/esm/play-circle-outline.js"],"sourcesContent":["export const mdiPlayCircleOutline = 'M12 20a8.01 8.01 0 0 1 0-16 8.01 8.01 0 0 1 0 16m0-18A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m-2 14.5 6-4.5-6-4.5z';"],"names":["mdiPlayCircleOutline"],"mappings":"AAAO,MAAMA,oBAAoB,GAAG;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useReducer, useEffect } from 'react';
|
|
2
|
+
import { reducer, INIT_STATE, TabProviderContext } from './e0398237.js';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
const DEFAULT_PROPS = {
|
|
6
|
+
isLazy: INIT_STATE.isLazy,
|
|
7
|
+
shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* This component provides a context in which steps can be defined and linked to their step panel.
|
|
12
|
+
*
|
|
13
|
+
* It does not produce any markup so you can wrap it around any React elements and then split the ProgressTracker and ProgressTrackerPanel
|
|
14
|
+
* components in the react tree.
|
|
15
|
+
*
|
|
16
|
+
* This works exactly as TabProvider so it uses TabProviderContext and tabs state.
|
|
17
|
+
*
|
|
18
|
+
* @param props React component props.
|
|
19
|
+
* @return React element.
|
|
20
|
+
*/
|
|
21
|
+
const ProgressTrackerProvider = props => {
|
|
22
|
+
const {
|
|
23
|
+
children,
|
|
24
|
+
onChange,
|
|
25
|
+
...propState
|
|
26
|
+
} = props;
|
|
27
|
+
const [state, dispatch] = useReducer(reducer, INIT_STATE);
|
|
28
|
+
|
|
29
|
+
// On prop state change => dispatch update.
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
dispatch({
|
|
32
|
+
type: 'update',
|
|
33
|
+
payload: {
|
|
34
|
+
...DEFAULT_PROPS,
|
|
35
|
+
...propState,
|
|
36
|
+
activeTabIndex: propState.activeStepIndex || INIT_STATE.activeTabIndex
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
+
[dispatch, ...Object.values(propState)]);
|
|
42
|
+
|
|
43
|
+
// On active tab index state change => send update to the onChange.
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (state === INIT_STATE || !onChange || propState.activeStepIndex === state.activeTabIndex) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
onChange(state.activeTabIndex);
|
|
49
|
+
},
|
|
50
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
51
|
+
[onChange, state.activeTabIndex]);
|
|
52
|
+
return /*#__PURE__*/jsx(TabProviderContext.Provider, {
|
|
53
|
+
value: [state, dispatch],
|
|
54
|
+
children: children
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
ProgressTrackerProvider.defaultProps = DEFAULT_PROPS;
|
|
58
|
+
|
|
59
|
+
export { ProgressTrackerProvider };
|
|
60
|
+
//# sourceMappingURL=1afd2506.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1afd2506.js","sources":["../../src/components/progress-tracker/ProgressTrackerProvider.tsx"],"sourcesContent":["import { ReactNode, useEffect, useReducer } from 'react';\nimport { INIT_STATE, TabProviderContext, reducer } from '../tabs/state';\n\nexport interface ProgressTrackerProviderProps {\n /** Active step index. */\n activeStepIndex?: number;\n /** ProgressTrackerProvider children. */\n children: ReactNode;\n /** Step panel children should not render if the step panel is hidden. */\n isLazy?: boolean;\n /** Activate tabs on focus. */\n shouldActivateOnFocus?: boolean;\n /** Step change callback. */\n onChange?(index: number): void;\n}\n\nconst DEFAULT_PROPS: Partial<ProgressTrackerProviderProps> = {\n isLazy: INIT_STATE.isLazy,\n shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus,\n};\n\n/**\n * This component provides a context in which steps can be defined and linked to their step panel.\n *\n * It does not produce any markup so you can wrap it around any React elements and then split the ProgressTracker and ProgressTrackerPanel\n * components in the react tree.\n *\n * This works exactly as TabProvider so it uses TabProviderContext and tabs state.\n *\n * @param props React component props.\n * @return React element.\n */\nexport const ProgressTrackerProvider: React.FC<ProgressTrackerProviderProps> = (props) => {\n const { children, onChange, ...propState } = props;\n const [state, dispatch] = useReducer(reducer, INIT_STATE);\n\n // On prop state change => dispatch update.\n useEffect(\n () => {\n dispatch({\n type: 'update',\n payload: {\n ...DEFAULT_PROPS,\n ...propState,\n activeTabIndex: propState.activeStepIndex || INIT_STATE.activeTabIndex,\n },\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch, ...Object.values(propState)],\n );\n\n // On active tab index state change => send update to the onChange.\n useEffect(\n () => {\n if (state === INIT_STATE || !onChange || propState.activeStepIndex === state.activeTabIndex) {\n return;\n }\n onChange(state.activeTabIndex);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange, state.activeTabIndex],\n );\n\n return <TabProviderContext.Provider value={[state, dispatch]}>{children}</TabProviderContext.Provider>;\n};\nProgressTrackerProvider.defaultProps = DEFAULT_PROPS;\n"],"names":["DEFAULT_PROPS","isLazy","INIT_STATE","shouldActivateOnFocus","ProgressTrackerProvider","props","children","onChange","propState","state","dispatch","useReducer","reducer","useEffect","type","payload","activeTabIndex","activeStepIndex","Object","values","_jsx","TabProviderContext","Provider","value","defaultProps"],"mappings":";;;;AAgBA,MAAMA,aAAoD,GAAG;EACzDC,MAAM,EAAEC,UAAU,CAACD,MAAM;EACzBE,qBAAqB,EAAED,UAAU,CAACC,qBAAAA;AACtC,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,uBAA+D,GAAIC,KAAK,IAAK;EACtF,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAE,GAAGC,SAAAA;AAAU,GAAC,GAAGH,KAAK,CAAA;EAClD,MAAM,CAACI,KAAK,EAAEC,QAAQ,CAAC,GAAGC,UAAU,CAACC,OAAO,EAAEV,UAAU,CAAC,CAAA;;AAEzD;AACAW,EAAAA,SAAS,CACL,MAAM;AACFH,IAAAA,QAAQ,CAAC;AACLI,MAAAA,IAAI,EAAE,QAAQ;AACdC,MAAAA,OAAO,EAAE;AACL,QAAA,GAAGf,aAAa;AAChB,QAAA,GAAGQ,SAAS;AACZQ,QAAAA,cAAc,EAAER,SAAS,CAACS,eAAe,IAAIf,UAAU,CAACc,cAAAA;AAC5D,OAAA;AACJ,KAAC,CAAC,CAAA;GACL;AACD;EACA,CAACN,QAAQ,EAAE,GAAGQ,MAAM,CAACC,MAAM,CAACX,SAAS,CAAC,CAC1C,CAAC,CAAA;;AAED;AACAK,EAAAA,SAAS,CACL,MAAM;AACF,IAAA,IAAIJ,KAAK,KAAKP,UAAU,IAAI,CAACK,QAAQ,IAAIC,SAAS,CAACS,eAAe,KAAKR,KAAK,CAACO,cAAc,EAAE;AACzF,MAAA,OAAA;AACJ,KAAA;AACAT,IAAAA,QAAQ,CAACE,KAAK,CAACO,cAAc,CAAC,CAAA;GACjC;AACD;AACA,EAAA,CAACT,QAAQ,EAAEE,KAAK,CAACO,cAAc,CACnC,CAAC,CAAA;AAED,EAAA,oBAAOI,GAAA,CAACC,kBAAkB,CAACC,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAE,CAACd,KAAK,EAAEC,QAAQ,CAAE;AAAAJ,IAAAA,QAAA,EAAEA,QAAAA;AAAQ,GAA8B,CAAC,CAAA;AAC1G,EAAC;AACDF,uBAAuB,CAACoB,YAAY,GAAGxB,aAAa;;;;"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
2
|
+
import { useInterval } from './45ef51db.js';
|
|
3
|
+
import { AUTOPLAY_DEFAULT_INTERVAL } from './e50f2a75.js';
|
|
4
|
+
import { useId } from './11687649.js';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_OPTIONS = {
|
|
7
|
+
activeIndex: 0,
|
|
8
|
+
groupBy: 1,
|
|
9
|
+
interval: AUTOPLAY_DEFAULT_INTERVAL
|
|
10
|
+
};
|
|
11
|
+
const useSlideshowControls = ({
|
|
12
|
+
activeIndex = DEFAULT_OPTIONS.activeIndex,
|
|
13
|
+
groupBy = DEFAULT_OPTIONS.groupBy,
|
|
14
|
+
interval = DEFAULT_OPTIONS.interval,
|
|
15
|
+
autoPlay,
|
|
16
|
+
defaultActiveIndex,
|
|
17
|
+
onChange,
|
|
18
|
+
itemsCount,
|
|
19
|
+
id,
|
|
20
|
+
slidesId
|
|
21
|
+
}) => {
|
|
22
|
+
const [currentIndex, setCurrentIndex] = useState(activeIndex);
|
|
23
|
+
// Use state instead of a ref to make the slideshow controls update directly when the element is set.
|
|
24
|
+
const [element, setElement] = useState(null);
|
|
25
|
+
|
|
26
|
+
// Number of slides when using groupBy prop.
|
|
27
|
+
const slidesCount = Math.ceil(itemsCount / Math.min(groupBy, itemsCount));
|
|
28
|
+
|
|
29
|
+
// Change current index to display next slide.
|
|
30
|
+
const goToNextSlide = useCallback((loopback = true) => {
|
|
31
|
+
setCurrentIndex(index => {
|
|
32
|
+
if (loopback && index === slidesCount - 1) {
|
|
33
|
+
// Loopback to the start.
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
if (index < slidesCount - 1) {
|
|
37
|
+
// Next slide.
|
|
38
|
+
return index + 1;
|
|
39
|
+
}
|
|
40
|
+
return index;
|
|
41
|
+
});
|
|
42
|
+
}, [slidesCount, setCurrentIndex]);
|
|
43
|
+
|
|
44
|
+
// Change current index to display previous slide.
|
|
45
|
+
const goToPreviousSlide = useCallback((loopback = true) => {
|
|
46
|
+
setCurrentIndex(index => {
|
|
47
|
+
if (loopback && index === 0) {
|
|
48
|
+
// Loopback to the end.
|
|
49
|
+
return slidesCount - 1;
|
|
50
|
+
}
|
|
51
|
+
if (index > 0) {
|
|
52
|
+
// Previous slide.
|
|
53
|
+
return index - 1;
|
|
54
|
+
}
|
|
55
|
+
return index;
|
|
56
|
+
});
|
|
57
|
+
}, [slidesCount, setCurrentIndex]);
|
|
58
|
+
|
|
59
|
+
// Auto play
|
|
60
|
+
const [isAutoPlaying, setIsAutoPlaying] = useState(Boolean(autoPlay));
|
|
61
|
+
const [isForcePaused, setIsForcePaused] = useState(false);
|
|
62
|
+
const isSlideshowAutoPlaying = isForcePaused ? false : isAutoPlaying;
|
|
63
|
+
// Start
|
|
64
|
+
useInterval(goToNextSlide, isSlideshowAutoPlaying && slidesCount > 1 ? interval : null);
|
|
65
|
+
|
|
66
|
+
// Reset current index if it become invalid.
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
if (currentIndex > slidesCount - 1) {
|
|
69
|
+
setCurrentIndex(defaultActiveIndex);
|
|
70
|
+
}
|
|
71
|
+
}, [currentIndex, slidesCount, defaultActiveIndex]);
|
|
72
|
+
const startAutoPlay = () => {
|
|
73
|
+
setIsAutoPlaying(Boolean(autoPlay));
|
|
74
|
+
};
|
|
75
|
+
const stopAutoPlay = () => {
|
|
76
|
+
setIsAutoPlaying(false);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// Handle click on a bullet to go to a specific slide.
|
|
80
|
+
const onPaginationClick = useCallback(index => {
|
|
81
|
+
stopAutoPlay();
|
|
82
|
+
setIsForcePaused(true);
|
|
83
|
+
if (index >= 0 && index < slidesCount) {
|
|
84
|
+
setCurrentIndex(index);
|
|
85
|
+
}
|
|
86
|
+
}, [slidesCount, setCurrentIndex]);
|
|
87
|
+
|
|
88
|
+
// Handle click or keyboard event to go to next slide.
|
|
89
|
+
const onNextClick = useCallback((loopback = true) => {
|
|
90
|
+
stopAutoPlay();
|
|
91
|
+
setIsForcePaused(true);
|
|
92
|
+
goToNextSlide(loopback);
|
|
93
|
+
}, [goToNextSlide]);
|
|
94
|
+
|
|
95
|
+
// Handle click or keyboard event to go to previous slide.
|
|
96
|
+
const onPreviousClick = useCallback((loopback = true) => {
|
|
97
|
+
stopAutoPlay();
|
|
98
|
+
setIsForcePaused(true);
|
|
99
|
+
goToPreviousSlide(loopback);
|
|
100
|
+
}, [goToPreviousSlide]);
|
|
101
|
+
|
|
102
|
+
// If the activeIndex props changes, update the current slide
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
setCurrentIndex(activeIndex);
|
|
105
|
+
}, [activeIndex]);
|
|
106
|
+
|
|
107
|
+
// If the slide changes, with autoplay for example, trigger "onChange"
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
if (!onChange) return;
|
|
110
|
+
onChange(currentIndex);
|
|
111
|
+
}, [currentIndex, onChange]);
|
|
112
|
+
const generatedSlideshowId = useId();
|
|
113
|
+
const slideshowId = id || generatedSlideshowId;
|
|
114
|
+
const generatedSlidesId = useId();
|
|
115
|
+
const slideshowSlidesId = slidesId || generatedSlidesId;
|
|
116
|
+
const toggleAutoPlay = () => {
|
|
117
|
+
if (isSlideshowAutoPlaying) {
|
|
118
|
+
stopAutoPlay();
|
|
119
|
+
} else {
|
|
120
|
+
startAutoPlay();
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const toggleForcePause = () => {
|
|
124
|
+
const shouldBePaused = !isForcePaused;
|
|
125
|
+
setIsForcePaused(shouldBePaused);
|
|
126
|
+
if (!shouldBePaused) {
|
|
127
|
+
startAutoPlay();
|
|
128
|
+
} else {
|
|
129
|
+
stopAutoPlay();
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// Start index and end index of visible slides.
|
|
134
|
+
const startIndexVisible = currentIndex * groupBy;
|
|
135
|
+
const endIndexVisible = startIndexVisible + groupBy;
|
|
136
|
+
return {
|
|
137
|
+
startIndexVisible,
|
|
138
|
+
endIndexVisible,
|
|
139
|
+
setSlideshow: setElement,
|
|
140
|
+
slideshow: element,
|
|
141
|
+
slideshowId,
|
|
142
|
+
slideshowSlidesId,
|
|
143
|
+
onPreviousClick,
|
|
144
|
+
onNextClick,
|
|
145
|
+
onPaginationClick,
|
|
146
|
+
isAutoPlaying: isSlideshowAutoPlaying,
|
|
147
|
+
toggleAutoPlay,
|
|
148
|
+
activeIndex: currentIndex,
|
|
149
|
+
slidesCount,
|
|
150
|
+
setActiveIndex: setCurrentIndex,
|
|
151
|
+
startAutoPlay,
|
|
152
|
+
stopAutoPlay,
|
|
153
|
+
isForcePaused,
|
|
154
|
+
toggleForcePause
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
export { DEFAULT_OPTIONS, useSlideshowControls };
|
|
159
|
+
//# sourceMappingURL=1c1cdfa2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1c1cdfa2.js","sources":["../../src/hooks/useSlideshowControls.ts"],"sourcesContent":["import { useState, useCallback, useEffect } from 'react';\n\nimport { useInterval } from '@lumx/react/hooks/useInterval';\nimport { AUTOPLAY_DEFAULT_INTERVAL } from '@lumx/react/components/slideshow/constants';\nimport { useId } from '@lumx/react/hooks/useId';\n\nexport interface UseSlideshowControlsOptions {\n /** default active index to be displayed */\n defaultActiveIndex?: number;\n /** total slides to display */\n itemsCount: number;\n /** Index of the current slide. */\n activeIndex?: number;\n /** Whether the automatic rotation of the slideshow is enabled or not. */\n autoPlay?: boolean;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Number of slides to group together. */\n groupBy?: number;\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Callback when slide changes */\n onChange?(index: number): void;\n /** slideshow HTML id attribute */\n id?: string;\n /** slides wrapper HTML id attribute */\n slidesId?: string;\n}\n\nexport interface UseSlideshowControls {\n /** Index for the first visible slide, should be used when groupBy is passed in */\n startIndexVisible: number;\n /** Index for the last visible slide, should be used when groupBy is passed in */\n endIndexVisible: number;\n /** total slides to be displayed */\n slidesCount: number;\n /** callback to set */\n setSlideshow: (element: HTMLDivElement | null) => void;\n /** reference to the slideshow element */\n slideshow: HTMLDivElement | null;\n /** id to be used for the slideshow */\n slideshowId: string;\n /** id to be used for the wrapper that contains the slides */\n slideshowSlidesId: string;\n /** callback that triggers the previous slide while using the slideshow controls */\n onPreviousClick: (loopback: boolean) => void;\n /** callback that triggers the next slide while using the slideshow controls */\n onNextClick: (loopback: boolean) => void;\n /** callback that triggers a specific page while using the slideshow controls */\n onPaginationClick: (index: number) => void;\n /** whether the slideshow is autoplaying or not */\n isAutoPlaying: boolean;\n /** whether the slideshow was force paused or not */\n isForcePaused: boolean;\n /** callback to change whether the slideshow is autoplaying or not */\n toggleAutoPlay: () => void;\n /** calback to change whether the slideshow should be force paused or not */\n toggleForcePause: () => void;\n /** current active slide index */\n activeIndex: number;\n /** set the current index as the active one */\n setActiveIndex: (index: number) => void;\n /** callback that stops the auto play */\n stopAutoPlay: () => void;\n /** callback that starts the auto play */\n startAutoPlay: () => void;\n}\n\nexport const DEFAULT_OPTIONS = {\n activeIndex: 0,\n groupBy: 1,\n interval: AUTOPLAY_DEFAULT_INTERVAL,\n} as const;\n\nexport const useSlideshowControls = ({\n activeIndex = DEFAULT_OPTIONS.activeIndex,\n groupBy = DEFAULT_OPTIONS.groupBy,\n interval = DEFAULT_OPTIONS.interval,\n autoPlay,\n defaultActiveIndex,\n onChange,\n itemsCount,\n id,\n slidesId,\n}: UseSlideshowControlsOptions): UseSlideshowControls => {\n const [currentIndex, setCurrentIndex] = useState(activeIndex as number);\n // Use state instead of a ref to make the slideshow controls update directly when the element is set.\n const [element, setElement] = useState<HTMLDivElement | null>(null);\n\n // Number of slides when using groupBy prop.\n const slidesCount = Math.ceil(itemsCount / Math.min(groupBy as number, itemsCount));\n\n // Change current index to display next slide.\n const goToNextSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === slidesCount - 1) {\n // Loopback to the start.\n return 0;\n }\n if (index < slidesCount - 1) {\n // Next slide.\n return index + 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Change current index to display previous slide.\n const goToPreviousSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === 0) {\n // Loopback to the end.\n return slidesCount - 1;\n }\n if (index > 0) {\n // Previous slide.\n return index - 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Auto play\n const [isAutoPlaying, setIsAutoPlaying] = useState(Boolean(autoPlay));\n const [isForcePaused, setIsForcePaused] = useState(false);\n\n const isSlideshowAutoPlaying = isForcePaused ? false : isAutoPlaying;\n // Start\n useInterval(goToNextSlide, isSlideshowAutoPlaying && slidesCount > 1 ? (interval as number) : null);\n\n // Reset current index if it become invalid.\n useEffect(() => {\n if (currentIndex > slidesCount - 1) {\n setCurrentIndex(defaultActiveIndex as number);\n }\n }, [currentIndex, slidesCount, defaultActiveIndex]);\n\n const startAutoPlay = () => {\n setIsAutoPlaying(Boolean(autoPlay));\n };\n\n const stopAutoPlay = () => {\n setIsAutoPlaying(false);\n };\n\n // Handle click on a bullet to go to a specific slide.\n const onPaginationClick = useCallback(\n (index: number) => {\n stopAutoPlay();\n setIsForcePaused(true);\n\n if (index >= 0 && index < slidesCount) {\n setCurrentIndex(index);\n }\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Handle click or keyboard event to go to next slide.\n const onNextClick = useCallback(\n (loopback = true) => {\n stopAutoPlay();\n setIsForcePaused(true);\n goToNextSlide(loopback);\n },\n [goToNextSlide],\n );\n\n // Handle click or keyboard event to go to previous slide.\n const onPreviousClick = useCallback(\n (loopback = true) => {\n stopAutoPlay();\n setIsForcePaused(true);\n goToPreviousSlide(loopback);\n },\n [goToPreviousSlide],\n );\n\n // If the activeIndex props changes, update the current slide\n useEffect(() => {\n setCurrentIndex(activeIndex as number);\n }, [activeIndex]);\n\n // If the slide changes, with autoplay for example, trigger \"onChange\"\n useEffect(() => {\n if (!onChange) return;\n onChange(currentIndex);\n }, [currentIndex, onChange]);\n\n const generatedSlideshowId = useId();\n const slideshowId = id || generatedSlideshowId;\n\n const generatedSlidesId = useId();\n const slideshowSlidesId = slidesId || generatedSlidesId;\n\n const toggleAutoPlay = () => {\n if (isSlideshowAutoPlaying) {\n stopAutoPlay();\n } else {\n startAutoPlay();\n }\n };\n\n const toggleForcePause = () => {\n const shouldBePaused = !isForcePaused;\n\n setIsForcePaused(shouldBePaused);\n\n if (!shouldBePaused) {\n startAutoPlay();\n } else {\n stopAutoPlay();\n }\n };\n\n // Start index and end index of visible slides.\n const startIndexVisible = currentIndex * (groupBy as number);\n const endIndexVisible = startIndexVisible + (groupBy as number);\n\n return {\n startIndexVisible,\n endIndexVisible,\n setSlideshow: setElement,\n slideshow: element,\n slideshowId,\n slideshowSlidesId,\n onPreviousClick,\n onNextClick,\n onPaginationClick,\n isAutoPlaying: isSlideshowAutoPlaying,\n toggleAutoPlay,\n activeIndex: currentIndex,\n slidesCount,\n setActiveIndex: setCurrentIndex,\n startAutoPlay,\n stopAutoPlay,\n isForcePaused,\n toggleForcePause,\n };\n};\n"],"names":["DEFAULT_OPTIONS","activeIndex","groupBy","interval","AUTOPLAY_DEFAULT_INTERVAL","useSlideshowControls","autoPlay","defaultActiveIndex","onChange","itemsCount","id","slidesId","currentIndex","setCurrentIndex","useState","element","setElement","slidesCount","Math","ceil","min","goToNextSlide","useCallback","loopback","index","goToPreviousSlide","isAutoPlaying","setIsAutoPlaying","Boolean","isForcePaused","setIsForcePaused","isSlideshowAutoPlaying","useInterval","useEffect","startAutoPlay","stopAutoPlay","onPaginationClick","onNextClick","onPreviousClick","generatedSlideshowId","useId","slideshowId","generatedSlidesId","slideshowSlidesId","toggleAutoPlay","toggleForcePause","shouldBePaused","startIndexVisible","endIndexVisible","setSlideshow","slideshow","setActiveIndex"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1c3b349b.js","sources":["../../../lumx-icons/dist/esm/check.js"],"sourcesContent":["export const mdiCheck = 'M21 7 9 19l-5.5-5.5 1.41-1.41L9 16.17 19.59 5.59z';"],"names":["mdiCheck"],"mappings":"AAAO,MAAMA,QAAQ,GAAG;;;;"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import React__default, { useCallback, useMemo } from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import range from 'lodash/range';
|
|
4
|
+
import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
|
|
5
|
+
import { WINDOW } from './6af61e2f.js';
|
|
6
|
+
import { useSlideshowControls, DEFAULT_OPTIONS } from './1c1cdfa2.js';
|
|
7
|
+
import { useRovingTabIndex } from './bb8088e1.js';
|
|
8
|
+
import { forwardRef } from './bd8b3ec8.js';
|
|
9
|
+
import { useTheme } from './d8ee966d.js';
|
|
10
|
+
import { useSwipeNavigate } from './de52a4b9.js';
|
|
11
|
+
import { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './e50f2a75.js';
|
|
12
|
+
import { usePaginationVisibleRange } from './5da9ff06.js';
|
|
13
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
14
|
+
import { mdiPauseCircleOutline } from './4bb19934.js';
|
|
15
|
+
import { mdiPlayCircleOutline } from './185778b8.js';
|
|
16
|
+
import { Theme, Emphasis } from '@lumx/core/js/constants';
|
|
17
|
+
import { IconButton } from './5a0207d9.js';
|
|
18
|
+
import { mdiChevronLeft } from './e9c3b1e0.js';
|
|
19
|
+
import { mdiChevronRight } from './aeba575c.js';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Component display name.
|
|
23
|
+
*/
|
|
24
|
+
const COMPONENT_NAME = 'SlideshowControls';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Component default class name and class prefix.
|
|
28
|
+
*/
|
|
29
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Component default props.
|
|
33
|
+
*/
|
|
34
|
+
const DEFAULT_PROPS = {
|
|
35
|
+
activeIndex: 0
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* SlideshowControls component.
|
|
40
|
+
*
|
|
41
|
+
* @param props Component props.
|
|
42
|
+
* @param ref Component ref.
|
|
43
|
+
* @return React element.
|
|
44
|
+
*/
|
|
45
|
+
const InternalSlideshowControls = forwardRef((props, ref) => {
|
|
46
|
+
const defaultTheme = useTheme() || Theme.light;
|
|
47
|
+
const {
|
|
48
|
+
activeIndex = DEFAULT_PROPS.activeIndex,
|
|
49
|
+
className,
|
|
50
|
+
nextButtonProps,
|
|
51
|
+
onNextClick,
|
|
52
|
+
onPaginationClick,
|
|
53
|
+
onPreviousClick,
|
|
54
|
+
parentRef,
|
|
55
|
+
previousButtonProps,
|
|
56
|
+
paginationProps,
|
|
57
|
+
slidesCount,
|
|
58
|
+
theme = defaultTheme,
|
|
59
|
+
isAutoPlaying = false,
|
|
60
|
+
playButtonProps,
|
|
61
|
+
paginationItemLabel,
|
|
62
|
+
paginationItemProps,
|
|
63
|
+
...forwardedProps
|
|
64
|
+
} = props;
|
|
65
|
+
let parent;
|
|
66
|
+
if (WINDOW) {
|
|
67
|
+
// Checking window object to avoid errors in SSR.
|
|
68
|
+
parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;
|
|
69
|
+
}
|
|
70
|
+
const paginationRef = React__default.useRef(null);
|
|
71
|
+
// Listen to touch swipe navigate left & right.
|
|
72
|
+
useSwipeNavigate(parent,
|
|
73
|
+
// Go next without loopback.
|
|
74
|
+
useCallback(() => onNextClick?.(false), [onNextClick]),
|
|
75
|
+
// Go previous without loopback.
|
|
76
|
+
useCallback(() => onPreviousClick?.(false), [onPreviousClick]));
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Add roving tab index pattern to pagination items and activate slide on focus.
|
|
80
|
+
*/
|
|
81
|
+
useRovingTabIndex({
|
|
82
|
+
parentRef: paginationRef,
|
|
83
|
+
elementSelector: 'button',
|
|
84
|
+
keepTabIndex: true,
|
|
85
|
+
onElementFocus: element => {
|
|
86
|
+
element.click();
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Pagination "bullet" range.
|
|
91
|
+
const visibleRange = usePaginationVisibleRange(activeIndex, slidesCount);
|
|
92
|
+
|
|
93
|
+
// Inline style of wrapper element.
|
|
94
|
+
const wrapperStyle = {
|
|
95
|
+
transform: `translateX(-${PAGINATION_ITEM_SIZE * visibleRange.min}px)`
|
|
96
|
+
};
|
|
97
|
+
return /*#__PURE__*/jsxs("div", {
|
|
98
|
+
ref: ref,
|
|
99
|
+
...forwardedProps,
|
|
100
|
+
className: classNames(className, handleBasicClasses({
|
|
101
|
+
prefix: CLASSNAME,
|
|
102
|
+
theme
|
|
103
|
+
}), {
|
|
104
|
+
[`${CLASSNAME}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX
|
|
105
|
+
}),
|
|
106
|
+
children: [/*#__PURE__*/jsx(IconButton, {
|
|
107
|
+
...previousButtonProps,
|
|
108
|
+
icon: mdiChevronLeft,
|
|
109
|
+
className: `${CLASSNAME}__navigation`,
|
|
110
|
+
color: theme === Theme.dark ? 'light' : 'dark',
|
|
111
|
+
emphasis: Emphasis.low,
|
|
112
|
+
onClick: onPreviousClick
|
|
113
|
+
}), /*#__PURE__*/jsx("div", {
|
|
114
|
+
ref: paginationRef,
|
|
115
|
+
className: `${CLASSNAME}__pagination`,
|
|
116
|
+
children: /*#__PURE__*/jsx("div", {
|
|
117
|
+
className: `${CLASSNAME}__pagination-items`,
|
|
118
|
+
style: wrapperStyle,
|
|
119
|
+
role: "tablist",
|
|
120
|
+
...paginationProps,
|
|
121
|
+
children: useMemo(() => range(slidesCount).map(index => {
|
|
122
|
+
const isOnEdge = index !== 0 && index !== slidesCount - 1 && (index === visibleRange.min || index === visibleRange.max);
|
|
123
|
+
const isActive = activeIndex === index;
|
|
124
|
+
const isOutRange = index < visibleRange.min || index > visibleRange.max;
|
|
125
|
+
const {
|
|
126
|
+
className: itemClassName = undefined,
|
|
127
|
+
label = undefined,
|
|
128
|
+
...itemProps
|
|
129
|
+
} = paginationItemProps ? paginationItemProps(index) : {};
|
|
130
|
+
const ariaLabel = label || paginationItemLabel?.(index) || `${index + 1} / ${slidesCount}`;
|
|
131
|
+
return /*#__PURE__*/jsx("button", {
|
|
132
|
+
className: classNames(handleBasicClasses({
|
|
133
|
+
prefix: `${CLASSNAME}__pagination-item`,
|
|
134
|
+
isActive,
|
|
135
|
+
isOnEdge,
|
|
136
|
+
isOutRange
|
|
137
|
+
}), itemClassName),
|
|
138
|
+
type: "button",
|
|
139
|
+
tabIndex: isActive ? undefined : -1,
|
|
140
|
+
role: "tab",
|
|
141
|
+
"aria-selected": isActive,
|
|
142
|
+
onClick: () => onPaginationClick?.(index),
|
|
143
|
+
"aria-label": ariaLabel,
|
|
144
|
+
...itemProps
|
|
145
|
+
}, index);
|
|
146
|
+
}), [slidesCount, visibleRange.min, visibleRange.max, activeIndex, paginationItemProps, paginationItemLabel, onPaginationClick])
|
|
147
|
+
})
|
|
148
|
+
}), playButtonProps ? /*#__PURE__*/jsx(IconButton, {
|
|
149
|
+
...playButtonProps,
|
|
150
|
+
icon: isAutoPlaying ? mdiPauseCircleOutline : mdiPlayCircleOutline,
|
|
151
|
+
className: `${CLASSNAME}__play`,
|
|
152
|
+
color: theme === Theme.dark ? 'light' : 'dark',
|
|
153
|
+
emphasis: Emphasis.low
|
|
154
|
+
}) : null, /*#__PURE__*/jsx(IconButton, {
|
|
155
|
+
...nextButtonProps,
|
|
156
|
+
icon: mdiChevronRight,
|
|
157
|
+
className: `${CLASSNAME}__navigation`,
|
|
158
|
+
color: theme === Theme.dark ? 'light' : 'dark',
|
|
159
|
+
emphasis: Emphasis.low,
|
|
160
|
+
onClick: onNextClick
|
|
161
|
+
})]
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
InternalSlideshowControls.displayName = COMPONENT_NAME;
|
|
165
|
+
InternalSlideshowControls.className = CLASSNAME;
|
|
166
|
+
InternalSlideshowControls.defaultProps = DEFAULT_PROPS;
|
|
167
|
+
const SlideshowControls = Object.assign(InternalSlideshowControls, {
|
|
168
|
+
useSlideshowControls,
|
|
169
|
+
useSlideshowControlsDefaultOptions: DEFAULT_OPTIONS
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
export { SlideshowControls };
|
|
173
|
+
//# sourceMappingURL=1d7267a1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1d7267a1.js","sources":["../../src/components/slideshow/SlideshowControls.tsx"],"sourcesContent":["import React, { RefObject, useCallback, useMemo } from 'react';\n\nimport classNames from 'classnames';\nimport range from 'lodash/range';\n\nimport { mdiChevronLeft, mdiChevronRight, mdiPlayCircleOutline, mdiPauseCircleOutline } from '@lumx/icons';\nimport { Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { WINDOW } from '@lumx/react/constants';\nimport { useSlideshowControls, DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';\nimport { useRovingTabIndex } from '@lumx/react/hooks/useRovingTabIndex';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useSwipeNavigate } from './useSwipeNavigate';\nimport { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './constants';\nimport { usePaginationVisibleRange } from './usePaginationVisibleRange';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowControlsProps extends GenericProps, HasTheme {\n /** Index of the current slide. */\n activeIndex?: number;\n /** Props to pass to the next button (minus those already set by the SlideshowControls props). */\n nextButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Reference to the parent element on which we want to listen touch swipe. */\n parentRef?: RefObject<HTMLDivElement> | HTMLDivElement | null;\n /** Props to pass to the previous button (minus those already set by the SlideshowControls props). */\n previousButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Props to pass to the pagination wrapper */\n paginationProps?: Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'role'>;\n /** Number of slides. */\n slidesCount: number;\n /** On next button click callback. */\n onNextClick?(loopback?: boolean): void;\n /** On pagination change callback. */\n onPaginationClick?(index: number): void;\n /** On previous button click callback. */\n onPreviousClick?(loopback?: boolean): void;\n /** whether the slideshow is currently playing */\n isAutoPlaying?: boolean;\n /**\n * function to be executed in order to retrieve the label for the pagination item\n * @deprecated Use paginationItemProps instead.\n * */\n paginationItemLabel?: (index: number) => string;\n /**\n * function to be executed in order to retrieve the props for a pagination item.\n */\n paginationItemProps?: (itemIndex: number) => React.HTMLAttributes<HTMLButtonElement> & { label?: string };\n /** Props to pass to the lay button (minus those already set by the SlideshowControls props). */\n playButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowControls';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<SlideshowControlsProps> = {\n activeIndex: 0,\n};\n\n/**\n * SlideshowControls component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nconst InternalSlideshowControls = forwardRef<SlideshowControlsProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n activeIndex = DEFAULT_PROPS.activeIndex,\n className,\n nextButtonProps,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n parentRef,\n previousButtonProps,\n paginationProps,\n slidesCount,\n theme = defaultTheme,\n isAutoPlaying = false,\n playButtonProps,\n paginationItemLabel,\n paginationItemProps,\n ...forwardedProps\n } = props;\n\n let parent;\n if (WINDOW) {\n // Checking window object to avoid errors in SSR.\n parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;\n }\n const paginationRef = React.useRef(null);\n // Listen to touch swipe navigate left & right.\n useSwipeNavigate(\n parent,\n // Go next without loopback.\n useCallback(() => onNextClick?.(false), [onNextClick]),\n // Go previous without loopback.\n useCallback(() => onPreviousClick?.(false), [onPreviousClick]),\n );\n\n /**\n * Add roving tab index pattern to pagination items and activate slide on focus.\n */\n useRovingTabIndex({\n parentRef: paginationRef,\n elementSelector: 'button',\n keepTabIndex: true,\n onElementFocus: (element) => {\n element.click();\n },\n });\n\n // Pagination \"bullet\" range.\n const visibleRange = usePaginationVisibleRange(activeIndex as number, slidesCount);\n\n // Inline style of wrapper element.\n const wrapperStyle = { transform: `translateX(-${PAGINATION_ITEM_SIZE * visibleRange.min}px)` };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX,\n })}\n >\n <IconButton\n {...previousButtonProps}\n icon={mdiChevronLeft}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onPreviousClick}\n />\n <div ref={paginationRef} className={`${CLASSNAME}__pagination`}>\n <div\n className={`${CLASSNAME}__pagination-items`}\n style={wrapperStyle}\n role=\"tablist\"\n {...paginationProps}\n >\n {useMemo(\n () =>\n range(slidesCount).map((index) => {\n const isOnEdge =\n index !== 0 &&\n index !== slidesCount - 1 &&\n (index === visibleRange.min || index === visibleRange.max);\n const isActive = activeIndex === index;\n const isOutRange = index < visibleRange.min || index > visibleRange.max;\n const {\n className: itemClassName = undefined,\n label = undefined,\n ...itemProps\n } = paginationItemProps ? paginationItemProps(index) : {};\n\n const ariaLabel =\n label || paginationItemLabel?.(index) || `${index + 1} / ${slidesCount}`;\n\n return (\n <button\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__pagination-item`,\n isActive,\n isOnEdge,\n isOutRange,\n }),\n itemClassName,\n )}\n key={index}\n type=\"button\"\n tabIndex={isActive ? undefined : -1}\n role=\"tab\"\n aria-selected={isActive}\n onClick={() => onPaginationClick?.(index)}\n aria-label={ariaLabel}\n {...itemProps}\n />\n );\n }),\n [\n slidesCount,\n visibleRange.min,\n visibleRange.max,\n activeIndex,\n paginationItemProps,\n paginationItemLabel,\n onPaginationClick,\n ],\n )}\n </div>\n </div>\n\n {playButtonProps ? (\n <IconButton\n {...playButtonProps}\n icon={isAutoPlaying ? mdiPauseCircleOutline : mdiPlayCircleOutline}\n className={`${CLASSNAME}__play`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n />\n ) : null}\n\n <IconButton\n {...nextButtonProps}\n icon={mdiChevronRight}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onNextClick}\n />\n </div>\n );\n});\n\nInternalSlideshowControls.displayName = COMPONENT_NAME;\nInternalSlideshowControls.className = CLASSNAME;\nInternalSlideshowControls.defaultProps = DEFAULT_PROPS;\n\nexport const SlideshowControls = Object.assign(InternalSlideshowControls, {\n useSlideshowControls,\n useSlideshowControlsDefaultOptions: DEFAULT_OPTIONS,\n});\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","activeIndex","InternalSlideshowControls","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","className","nextButtonProps","onNextClick","onPaginationClick","onPreviousClick","parentRef","previousButtonProps","paginationProps","slidesCount","theme","isAutoPlaying","playButtonProps","paginationItemLabel","paginationItemProps","forwardedProps","parent","WINDOW","HTMLElement","current","paginationRef","React","useRef","useSwipeNavigate","useCallback","useRovingTabIndex","elementSelector","keepTabIndex","onElementFocus","element","click","visibleRange","usePaginationVisibleRange","wrapperStyle","transform","PAGINATION_ITEM_SIZE","min","_jsxs","classNames","handleBasicClasses","prefix","PAGINATION_ITEMS_MAX","children","_jsx","IconButton","icon","mdiChevronLeft","color","dark","emphasis","Emphasis","low","onClick","style","role","useMemo","range","map","index","isOnEdge","max","isActive","isOutRange","itemClassName","undefined","label","itemProps","ariaLabel","type","tabIndex","mdiPauseCircleOutline","mdiPlayCircleOutline","mdiChevronRight","displayName","defaultProps","SlideshowControls","Object","assign","useSlideshowControls","useSlideshowControlsDefaultOptions","DEFAULT_OPTIONS"],"mappings":"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"}
|