@lumx/react 3.20.1-alpha.12 → 3.20.1-alpha.13
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/Button-f19e18df.js +96 -0
- package/_internal/Button-f19e18df.js.map +1 -0
- package/_internal/{cdddaed8.js → ButtonRoot-ab633b1d.js} +19 -20
- package/_internal/ButtonRoot-ab633b1d.js.map +1 -0
- package/_internal/{85e3a5ca.js → Chip-4c572eec.js} +38 -34
- package/_internal/Chip-4c572eec.js.map +1 -0
- package/_internal/{7093ba23.js → ClickAwayProvider-bcce6ceb.js} +4 -6
- package/_internal/ClickAwayProvider-bcce6ceb.js.map +1 -0
- package/_internal/{ea04260d.js → DisabledStateContext-077b7bef.js} +6 -6
- package/_internal/DisabledStateContext-077b7bef.js.map +1 -0
- package/_internal/{370bdaed.js → HeadingLevelProvider-e4817816.js} +5 -7
- package/_internal/HeadingLevelProvider-e4817816.js.map +1 -0
- package/_internal/IconButton-10585058.js +72 -0
- package/_internal/IconButton-10585058.js.map +1 -0
- package/_internal/ImageCaption-4279b2b6.js +65 -0
- package/_internal/ImageCaption-4279b2b6.js.map +1 -0
- package/_internal/{f5508d3d.js → List-d5f5d465.js} +55 -56
- package/_internal/List-d5f5d465.js.map +1 -0
- package/_internal/{b1af5979.js → PopoverDialog-21e5c9dd.js} +165 -171
- package/_internal/PopoverDialog-21e5c9dd.js.map +1 -0
- package/_internal/{3f86608e.js → Portal-c43d098b.js} +2 -5
- package/_internal/Portal-c43d098b.js.map +1 -0
- package/_internal/{2c2b6a89.js → RawClickable-c76bbc4c.js} +7 -9
- package/_internal/RawClickable-c76bbc4c.js.map +1 -0
- package/_internal/{34c59f5b.js → Slides-01f513ce.js} +106 -112
- package/_internal/Slides-01f513ce.js.map +1 -0
- package/_internal/{3181f000.js → ThemeContext-3181f000.js} +1 -1
- package/_internal/ThemeContext-3181f000.js.map +1 -0
- package/_internal/{628468c4.js → Thumbnail-30d2a781.js} +50 -51
- package/_internal/Thumbnail-30d2a781.js.map +1 -0
- package/_internal/{3a4e4636.js → components/alert-dialog-8f1c163c.js} +39 -54
- package/_internal/components/alert-dialog-8f1c163c.js.map +1 -0
- package/_internal/{179a84d1.js → components/autocomplete-bfbdeb3c.js} +72 -67
- package/_internal/components/autocomplete-bfbdeb3c.js.map +1 -0
- package/_internal/components/avatar-6990e3e9.js +87 -0
- package/_internal/components/avatar-6990e3e9.js.map +1 -0
- package/_internal/{9c9df5f2.js → components/badge-81543bc7.js} +20 -19
- package/_internal/components/badge-81543bc7.js.map +1 -0
- package/_internal/{f93fe83e.js → components/button-927abe71.js} +14 -11
- package/_internal/components/button-927abe71.js.map +1 -0
- package/_internal/components/checkbox-dc4caec8.js +131 -0
- package/_internal/{f0900583.js.map → components/checkbox-dc4caec8.js.map} +1 -1
- package/_internal/{c0414b89.js → components/chip-fb3d0c76.js} +13 -10
- package/_internal/components/chip-fb3d0c76.js.map +1 -0
- package/_internal/components/comment-block-b84c4694.js +121 -0
- package/_internal/components/comment-block-b84c4694.js.map +1 -0
- package/_internal/components/date-picker-a425534c.js +2 -0
- package/_internal/components/date-picker-a425534c.js.map +1 -0
- package/_internal/{2f1716fa.js → components/dialog-7dbcb485.js} +69 -80
- package/_internal/components/dialog-7dbcb485.js.map +1 -0
- package/_internal/{3e653144.js → components/divider-12e9b6a0.js} +13 -9
- package/_internal/components/divider-12e9b6a0.js.map +1 -0
- package/_internal/components/drag-handle-a38ff757.js +53 -0
- package/_internal/components/drag-handle-a38ff757.js.map +1 -0
- package/_internal/{1ea72630.js → components/dropdown-38b0b6a0.js} +19 -17
- package/_internal/components/dropdown-38b0b6a0.js.map +1 -0
- package/_internal/{68c10f98.js → components/expansion-panel-c4b93653.js} +46 -54
- package/_internal/components/expansion-panel-c4b93653.js.map +1 -0
- package/_internal/{c2388b10.js → components/flag-c5e2f5f0.js} +19 -22
- package/_internal/components/flag-c5e2f5f0.js.map +1 -0
- package/_internal/{329b5f12.js → components/flex-box-c8701a85.js} +13 -10
- package/_internal/components/flex-box-c8701a85.js.map +1 -0
- package/_internal/{a84f4981.js → components/generic-block-0d6ad5a6.js} +30 -37
- package/_internal/components/generic-block-0d6ad5a6.js.map +1 -0
- package/_internal/{2f6c7f84.js → components/grid-3b194fe8.js} +22 -16
- package/_internal/components/grid-3b194fe8.js.map +1 -0
- package/_internal/{501f2f9f.js → components/grid-column-985b9327.js} +10 -8
- package/_internal/components/grid-column-985b9327.js.map +1 -0
- package/_internal/{193521fa.js → components/heading-5e954dfc.js} +13 -11
- package/_internal/components/heading-5e954dfc.js.map +1 -0
- package/_internal/{8ab42752.js → components/icon-2e7345ad.js} +29 -29
- package/_internal/components/icon-2e7345ad.js.map +1 -0
- package/_internal/components/image-block-8d21dd7e.js +109 -0
- package/_internal/components/image-block-8d21dd7e.js.map +1 -0
- package/_internal/{7f54e947.js → components/image-lightbox-4a5ab962.js} +105 -120
- package/_internal/components/image-lightbox-4a5ab962.js.map +1 -0
- package/_internal/{15eab19b.js → components/inline-list-4884f004.js} +25 -26
- package/_internal/components/inline-list-4884f004.js.map +1 -0
- package/_internal/{5f8f9454.js → components/input-helper-e644e05e.js} +14 -11
- package/_internal/components/input-helper-e644e05e.js.map +1 -0
- package/_internal/{b0a7a999.js → components/input-label-5e509a1b.js} +14 -12
- package/_internal/components/input-label-5e509a1b.js.map +1 -0
- package/_internal/{86aa4aa4.js → components/lightbox-bec1b95f.js} +59 -64
- package/_internal/components/lightbox-bec1b95f.js.map +1 -0
- package/_internal/components/link-9637b9e4.js +70 -0
- package/_internal/components/link-9637b9e4.js.map +1 -0
- package/_internal/components/link-preview-7a4a6e4b.js +108 -0
- package/_internal/components/link-preview-7a4a6e4b.js.map +1 -0
- package/_internal/{95cfd814.js → components/list-5c8f7122.js} +21 -14
- package/_internal/components/list-5c8f7122.js.map +1 -0
- package/_internal/{0be1006e.js → components/message-a67067d9.js} +27 -28
- package/_internal/components/message-a67067d9.js.map +1 -0
- package/_internal/components/mosaic-92b66c80.js +92 -0
- package/_internal/components/mosaic-92b66c80.js.map +1 -0
- package/_internal/components/navigation-4fd3917d.js +210 -0
- package/_internal/components/navigation-4fd3917d.js.map +1 -0
- package/_internal/{5ec059fe.js → components/notification-9063c963.js} +47 -52
- package/_internal/components/notification-9063c963.js.map +1 -0
- package/_internal/components/popover-3c4c54bd.js +3 -0
- package/_internal/components/popover-3c4c54bd.js.map +1 -0
- package/_internal/components/post-block-0cfc2206.js +99 -0
- package/_internal/components/post-block-0cfc2206.js.map +1 -0
- package/_internal/{f23cdf84.js → components/progress-eaf5b33d.js} +53 -46
- package/_internal/components/progress-eaf5b33d.js.map +1 -0
- package/_internal/{edab29ce.js → components/progress-tracker-4a65718d.js} +70 -69
- package/_internal/components/progress-tracker-4a65718d.js.map +1 -0
- package/_internal/components/radio-button-3ef8a325.js +148 -0
- package/_internal/components/radio-button-3ef8a325.js.map +1 -0
- package/_internal/components/select-d46cfe35.js +404 -0
- package/_internal/components/select-d46cfe35.js.map +1 -0
- package/_internal/{b477da26.js → components/side-navigation-75b22f19.js} +62 -67
- package/_internal/components/side-navigation-75b22f19.js.map +1 -0
- package/_internal/{6da19518.js → components/skeleton-361ce335.js} +34 -25
- package/_internal/components/skeleton-361ce335.js.map +1 -0
- package/_internal/{db4fdc7b.js → components/slider-8094cb5c.js} +60 -65
- package/_internal/components/slider-8094cb5c.js.map +1 -0
- package/_internal/{eaa8b1d8.js → components/slideshow-2e8cd372.js} +41 -41
- package/_internal/components/slideshow-2e8cd372.js.map +1 -0
- package/_internal/components/switch-5516949b.js +118 -0
- package/_internal/components/switch-5516949b.js.map +1 -0
- package/_internal/{be6da9b0.js → components/table-fa198ee6.js} +76 -73
- package/_internal/components/table-fa198ee6.js.map +1 -0
- package/_internal/{65f91970.js → components/tabs-bb9bc2a5.js} +48 -47
- package/_internal/components/tabs-bb9bc2a5.js.map +1 -0
- package/_internal/components/text-289c0526.js +2 -0
- package/_internal/components/text-289c0526.js.map +1 -0
- package/_internal/{b0b2e33d.js → components/text-field-82733568.js} +109 -122
- package/_internal/components/text-field-82733568.js.map +1 -0
- package/_internal/{76be70dd.js → components/thumbnail-e3acff82.js} +3 -3
- package/_internal/components/thumbnail-e3acff82.js.map +1 -0
- package/_internal/{bae266a9.js → components/toolbar-155562be.js} +18 -19
- package/_internal/components/toolbar-155562be.js.map +1 -0
- package/_internal/{9a4dfad0.js → components/tooltip-84ffb4f9.js} +42 -50
- package/_internal/components/tooltip-84ffb4f9.js.map +1 -0
- package/_internal/{9fdc715b.js → components/uploader-896a1d89.js} +38 -40
- package/_internal/components/uploader-896a1d89.js.map +1 -0
- package/_internal/{0d1a078c.js → components/user-block-8fd15895.js} +44 -45
- package/_internal/components/user-block-8fd15895.js.map +1 -0
- package/_internal/{4cd870a5.js → constants-b9e57936.js} +2 -2
- package/_internal/constants-b9e57936.js.map +1 -0
- package/_internal/{478b5c92.js → constants-d0e3f49e.js} +2 -2
- package/_internal/constants-d0e3f49e.js.map +1 -0
- package/_internal/{9d1336a1.js → context-21aeb1c7.js} +6 -6
- package/_internal/context-21aeb1c7.js.map +1 -0
- package/_internal/forwardRef-49d2bb84.js +80 -0
- package/_internal/forwardRef-49d2bb84.js.map +1 -0
- package/_internal/{230173a8.js → getFocusableElements-230173a8.js} +1 -1
- package/_internal/getFocusableElements-230173a8.js.map +1 -0
- package/_internal/{0420e67b.js → index-b4d256e7.js} +14 -15
- package/_internal/index-b4d256e7.js.map +1 -0
- package/_internal/{84dfe68f.js → index-f415b08e.js} +46 -52
- package/_internal/index-f415b08e.js.map +1 -0
- package/_internal/{78df9309.js → isComponent-78df9309.js} +1 -1
- package/_internal/isComponent-78df9309.js.map +1 -0
- package/_internal/{e806b848.js → isComponentType-e806b848.js} +1 -1
- package/_internal/isComponentType-e806b848.js.map +1 -0
- package/_internal/{f0d7d6ea.js → mergeRefs-f0d7d6ea.js} +1 -1
- package/_internal/mergeRefs-f0d7d6ea.js.map +1 -0
- package/_internal/{4daccdd5.js → partitionMulti-4daccdd5.js} +1 -1
- package/_internal/partitionMulti-4daccdd5.js.map +1 -0
- package/_internal/{825ac334.js → state-db358714.js} +2 -2
- package/_internal/state-db358714.js.map +1 -0
- package/_internal/{2a3d237c.js → useBooleanState-2a3d237c.js} +1 -1
- package/_internal/useBooleanState-2a3d237c.js.map +1 -0
- package/_internal/{d5f316cb.js → useCallbackOnEscape-ea4d9eb4.js} +3 -3
- package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +1 -0
- package/_internal/{36bd7352.js → useDisableBodyScroll-36bd7352.js} +1 -1
- package/_internal/useDisableBodyScroll-36bd7352.js.map +1 -0
- package/_internal/{b8667090.js → useDisableStateProps-fffc365f.js} +2 -2
- package/_internal/useDisableStateProps-fffc365f.js.map +1 -0
- package/_internal/{5fe09341.js → useFocusTrap-c3c6378b.js} +4 -4
- package/_internal/useFocusTrap-c3c6378b.js.map +1 -0
- package/_internal/{3a1facc0.js → useId-3a1facc0.js} +1 -1
- package/_internal/useId-3a1facc0.js.map +1 -0
- package/_internal/{7daf0f24.js → useRovingTabIndex-7daf0f24.js} +1 -1
- package/_internal/useRovingTabIndex-7daf0f24.js.map +1 -0
- package/_internal/{e6dd117e.js → useTransitionVisibility-321fdbfa.js} +2 -2
- package/_internal/useTransitionVisibility-321fdbfa.js.map +1 -0
- package/_internal/{37b007a4.js → wrapChildrenIconWithSpaces-f86106ce.js} +3 -3
- package/_internal/wrapChildrenIconWithSpaces-f86106ce.js.map +1 -0
- package/index.d.ts +7 -352
- package/index.js +65 -111
- package/index.js.map +1 -1
- package/package.json +3 -3
- package/utils/index.d.ts +1 -1
- package/utils/index.js +3 -3
- package/_internal/0420e67b.js.map +0 -1
- package/_internal/0a490b07.js +0 -75
- package/_internal/0a490b07.js.map +0 -1
- package/_internal/0b9c76cb.js +0 -6
- package/_internal/0b9c76cb.js.map +0 -1
- package/_internal/0be1006e.js.map +0 -1
- package/_internal/0d1a078c.js.map +0 -1
- package/_internal/15eab19b.js.map +0 -1
- package/_internal/179a84d1.js.map +0 -1
- package/_internal/193521fa.js.map +0 -1
- package/_internal/1a90ea3d.js +0 -51
- package/_internal/1a90ea3d.js.map +0 -1
- package/_internal/1deba7d7.js +0 -224
- package/_internal/1deba7d7.js.map +0 -1
- package/_internal/1ea72630.js.map +0 -1
- package/_internal/21b83d16.js +0 -137
- package/_internal/21b83d16.js.map +0 -1
- package/_internal/230173a8.js.map +0 -1
- package/_internal/297bed8f.js +0 -457
- package/_internal/297bed8f.js.map +0 -1
- package/_internal/2a3d237c.js.map +0 -1
- package/_internal/2c2b6a89.js.map +0 -1
- package/_internal/2f1716fa.js.map +0 -1
- package/_internal/2f6c7f84.js.map +0 -1
- package/_internal/3181f000.js.map +0 -1
- package/_internal/329b5f12.js.map +0 -1
- package/_internal/332e9844.js +0 -2
- package/_internal/332e9844.js.map +0 -1
- package/_internal/34c59f5b.js.map +0 -1
- package/_internal/36bd7352.js.map +0 -1
- package/_internal/370bdaed.js.map +0 -1
- package/_internal/37b007a4.js.map +0 -1
- package/_internal/3a1facc0.js.map +0 -1
- package/_internal/3a4e4636.js.map +0 -1
- package/_internal/3e653144.js.map +0 -1
- package/_internal/3f86608e.js.map +0 -1
- package/_internal/478b5c92.js.map +0 -1
- package/_internal/4962be5b.js +0 -121
- package/_internal/4962be5b.js.map +0 -1
- package/_internal/49bbeed3.js +0 -6
- package/_internal/49bbeed3.js.map +0 -1
- package/_internal/4cd870a5.js.map +0 -1
- package/_internal/4daccdd5.js.map +0 -1
- package/_internal/501f2f9f.js.map +0 -1
- package/_internal/5e7b90e2.js +0 -2
- package/_internal/5e7b90e2.js.map +0 -1
- package/_internal/5ec059fe.js.map +0 -1
- package/_internal/5f8f9454.js.map +0 -1
- package/_internal/5fe09341.js.map +0 -1
- package/_internal/628468c4.js.map +0 -1
- package/_internal/6589b796.js +0 -280
- package/_internal/6589b796.js.map +0 -1
- package/_internal/65f91970.js.map +0 -1
- package/_internal/66f691d3.js +0 -74
- package/_internal/66f691d3.js.map +0 -1
- package/_internal/68c10f98.js.map +0 -1
- package/_internal/690ca33e.js +0 -109
- package/_internal/690ca33e.js.map +0 -1
- package/_internal/6ca04271.js +0 -108
- package/_internal/6ca04271.js.map +0 -1
- package/_internal/6da19518.js.map +0 -1
- package/_internal/7093ba23.js.map +0 -1
- package/_internal/74a4a214.js +0 -82
- package/_internal/74a4a214.js.map +0 -1
- package/_internal/76be70dd.js.map +0 -1
- package/_internal/78df9309.js.map +0 -1
- package/_internal/7b221b05.js +0 -9
- package/_internal/7b221b05.js.map +0 -1
- package/_internal/7daf0f24.js.map +0 -1
- package/_internal/7f54e947.js.map +0 -1
- package/_internal/825ac334.js.map +0 -1
- package/_internal/827b804a.js +0 -6
- package/_internal/827b804a.js.map +0 -1
- package/_internal/84dfe68f.js.map +0 -1
- package/_internal/85e3a5ca.js.map +0 -1
- package/_internal/86aa4aa4.js.map +0 -1
- package/_internal/88ec77c2.js +0 -130
- package/_internal/88ec77c2.js.map +0 -1
- package/_internal/8ab42752.js.map +0 -1
- package/_internal/95cfd814.js.map +0 -1
- package/_internal/9a4dfad0.js.map +0 -1
- package/_internal/9c9df5f2.js.map +0 -1
- package/_internal/9d1336a1.js.map +0 -1
- package/_internal/9fdc715b.js.map +0 -1
- package/_internal/a003602b.js +0 -116
- package/_internal/a003602b.js.map +0 -1
- package/_internal/a34639bd.js +0 -97
- package/_internal/a34639bd.js.map +0 -1
- package/_internal/a84f4981.js.map +0 -1
- package/_internal/b0a7a999.js.map +0 -1
- package/_internal/b0b2e33d.js.map +0 -1
- package/_internal/b1af5979.js.map +0 -1
- package/_internal/b477da26.js.map +0 -1
- package/_internal/b8667090.js.map +0 -1
- package/_internal/bae266a9.js.map +0 -1
- package/_internal/be6da9b0.js.map +0 -1
- package/_internal/c0414b89.js.map +0 -1
- package/_internal/c2388b10.js.map +0 -1
- package/_internal/c459a04d.js +0 -148
- package/_internal/c459a04d.js.map +0 -1
- package/_internal/c6ca7494.js +0 -2
- package/_internal/c6ca7494.js.map +0 -1
- package/_internal/cdddaed8.js.map +0 -1
- package/_internal/d0dd1815.js +0 -10
- package/_internal/d0dd1815.js.map +0 -1
- package/_internal/d45e3f16.js +0 -15
- package/_internal/d45e3f16.js.map +0 -1
- package/_internal/d5f316cb.js.map +0 -1
- package/_internal/d95844c1.d.ts +0 -7
- package/_internal/db4fdc7b.js.map +0 -1
- package/_internal/dbe0cf24.js +0 -75
- package/_internal/dbe0cf24.js.map +0 -1
- package/_internal/de24f857.js +0 -4
- package/_internal/de24f857.js.map +0 -1
- package/_internal/e2afb13f.js +0 -75
- package/_internal/e2afb13f.js.map +0 -1
- package/_internal/e52f0d3f.js +0 -94
- package/_internal/e52f0d3f.js.map +0 -1
- package/_internal/e6dd117e.js.map +0 -1
- package/_internal/e806b848.js.map +0 -1
- package/_internal/ea04260d.js.map +0 -1
- package/_internal/eaa8b1d8.js.map +0 -1
- package/_internal/eaf6c45a.js +0 -4
- package/_internal/eaf6c45a.js.map +0 -1
- package/_internal/edab29ce.js.map +0 -1
- package/_internal/ef5d1aac.js +0 -4
- package/_internal/ef5d1aac.js.map +0 -1
- package/_internal/f0900583.js +0 -142
- package/_internal/f0d7d6ea.js.map +0 -1
- package/_internal/f23cdf84.js.map +0 -1
- package/_internal/f52e979e.js +0 -3
- package/_internal/f52e979e.js.map +0 -1
- package/_internal/f5508d3d.js.map +0 -1
- package/_internal/f93fe83e.js.map +0 -1
package/_internal/690ca33e.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { m as getRootClassName, A as Alignment, n as forwardRef, b as Theme, l as classNames } from './6589b796.js';
|
|
2
|
-
import { h as handleBasicClasses } from './e2afb13f.js';
|
|
3
|
-
import { u as useTheme } from './3181f000.js';
|
|
4
|
-
import { I as ImageCaption } from './dbe0cf24.js';
|
|
5
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
-
import { T as Thumbnail } from './628468c4.js';
|
|
7
|
-
|
|
8
|
-
const ImageBlockCaptionPosition = {
|
|
9
|
-
below: 'below',
|
|
10
|
-
over: 'over'
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Image block sizes.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Defines the props of the component.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Component display name.
|
|
23
|
-
*/
|
|
24
|
-
const COMPONENT_NAME = 'ImageBlock';
|
|
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
|
-
captionPosition: ImageBlockCaptionPosition.below,
|
|
36
|
-
align: Alignment.left
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* ImageBlock component.
|
|
41
|
-
*
|
|
42
|
-
* @param props Component props.
|
|
43
|
-
* @param ref Component ref.
|
|
44
|
-
* @return React element.
|
|
45
|
-
*/
|
|
46
|
-
const ImageBlock = forwardRef((props, ref) => {
|
|
47
|
-
const defaultTheme = useTheme() || Theme.light;
|
|
48
|
-
const {
|
|
49
|
-
actions,
|
|
50
|
-
align = DEFAULT_PROPS.align,
|
|
51
|
-
alt,
|
|
52
|
-
captionPosition = DEFAULT_PROPS.captionPosition,
|
|
53
|
-
captionStyle,
|
|
54
|
-
className,
|
|
55
|
-
description,
|
|
56
|
-
descriptionProps,
|
|
57
|
-
fillHeight,
|
|
58
|
-
image,
|
|
59
|
-
size,
|
|
60
|
-
tags,
|
|
61
|
-
theme = defaultTheme,
|
|
62
|
-
thumbnailProps,
|
|
63
|
-
title,
|
|
64
|
-
titleProps,
|
|
65
|
-
...forwardedProps
|
|
66
|
-
} = props;
|
|
67
|
-
return /*#__PURE__*/jsxs("figure", {
|
|
68
|
-
ref: ref,
|
|
69
|
-
...forwardedProps,
|
|
70
|
-
className: classNames(className, handleBasicClasses({
|
|
71
|
-
prefix: CLASSNAME,
|
|
72
|
-
captionPosition,
|
|
73
|
-
align,
|
|
74
|
-
size,
|
|
75
|
-
theme
|
|
76
|
-
}), fillHeight && `${CLASSNAME}--fill-height`),
|
|
77
|
-
children: [/*#__PURE__*/jsx(Thumbnail, {
|
|
78
|
-
...thumbnailProps,
|
|
79
|
-
className: classNames(`${CLASSNAME}__image`, thumbnailProps?.className),
|
|
80
|
-
fillHeight: fillHeight,
|
|
81
|
-
align: align,
|
|
82
|
-
image: image,
|
|
83
|
-
size: size,
|
|
84
|
-
theme: theme,
|
|
85
|
-
alt: alt || title
|
|
86
|
-
}), /*#__PURE__*/jsx(ImageCaption, {
|
|
87
|
-
as: "figcaption",
|
|
88
|
-
baseClassName: CLASSNAME,
|
|
89
|
-
theme: theme,
|
|
90
|
-
title: title,
|
|
91
|
-
titleProps: titleProps,
|
|
92
|
-
description: description,
|
|
93
|
-
descriptionProps: descriptionProps,
|
|
94
|
-
tags: tags,
|
|
95
|
-
captionStyle: captionStyle,
|
|
96
|
-
align: align,
|
|
97
|
-
truncate: captionPosition === 'over'
|
|
98
|
-
}), actions && /*#__PURE__*/jsx("div", {
|
|
99
|
-
className: `${CLASSNAME}__actions`,
|
|
100
|
-
children: actions
|
|
101
|
-
})]
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
ImageBlock.displayName = COMPONENT_NAME;
|
|
105
|
-
ImageBlock.className = CLASSNAME;
|
|
106
|
-
ImageBlock.defaultProps = DEFAULT_PROPS;
|
|
107
|
-
|
|
108
|
-
export { ImageBlock, ImageBlockCaptionPosition };
|
|
109
|
-
//# sourceMappingURL=690ca33e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"690ca33e.js","sources":["../../src/components/image-block/ImageBlock.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Alignment, HorizontalAlignment, Size, Theme, Thumbnail } from '@lumx/react';\n\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { ThumbnailProps } from '../thumbnail/Thumbnail';\nimport { ImageCaption, ImageCaptionMetadata } from './ImageCaption';\n\n/**\n * Image block variants.\n */\nexport const ImageBlockCaptionPosition = {\n below: 'below',\n over: 'over',\n} as const;\nexport type ImageBlockCaptionPosition = ValueOf<typeof ImageBlockCaptionPosition>;\n\n/**\n * Image block sizes.\n */\nexport type ImageBlockSize = Extract<Size, 'xl' | 'xxl'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ImageBlockProps extends GenericProps, HasTheme, ImageCaptionMetadata {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Alignment. */\n align?: HorizontalAlignment;\n /** Image alternative text. */\n alt: string;\n /** Caption position. */\n captionPosition?: ImageBlockCaptionPosition;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Image URL. */\n image: string;\n /** Size variant. */\n size?: ImageBlockSize;\n /** Props to pass to the thumbnail (minus those already set by the ImageBlock props). */\n thumbnailProps?: Omit<ThumbnailProps, 'image' | 'size' | 'theme' | 'align' | 'fillHeight'>;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ImageBlock';\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<ImageBlockProps> = {\n captionPosition: ImageBlockCaptionPosition.below,\n align: Alignment.left,\n};\n\n/**\n * ImageBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ImageBlock = forwardRef<ImageBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n align = DEFAULT_PROPS.align,\n alt,\n captionPosition = DEFAULT_PROPS.captionPosition,\n captionStyle,\n className,\n description,\n descriptionProps,\n fillHeight,\n image,\n size,\n tags,\n theme = defaultTheme,\n thumbnailProps,\n title,\n titleProps,\n ...forwardedProps\n } = props;\n return (\n <figure\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n captionPosition,\n align,\n size,\n theme,\n }),\n fillHeight && `${CLASSNAME}--fill-height`,\n )}\n >\n <Thumbnail\n {...thumbnailProps}\n className={classNames(`${CLASSNAME}__image`, thumbnailProps?.className)}\n fillHeight={fillHeight}\n align={align}\n image={image}\n size={size}\n theme={theme}\n alt={(alt || title) as string}\n />\n <ImageCaption\n as=\"figcaption\"\n baseClassName={CLASSNAME}\n theme={theme}\n title={title}\n titleProps={titleProps}\n description={description}\n descriptionProps={descriptionProps}\n tags={tags}\n captionStyle={captionStyle}\n align={align}\n truncate={captionPosition === 'over'}\n />\n {actions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </figure>\n );\n});\nImageBlock.displayName = COMPONENT_NAME;\nImageBlock.className = CLASSNAME;\nImageBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["ImageBlockCaptionPosition","below","over","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","captionPosition","align","Alignment","left","ImageBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","alt","captionStyle","className","description","descriptionProps","fillHeight","image","size","tags","theme","thumbnailProps","title","titleProps","forwardedProps","_jsxs","classNames","handleBasicClasses","prefix","children","_jsx","Thumbnail","ImageCaption","as","baseClassName","truncate","displayName","defaultProps"],"mappings":"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"}
|
package/_internal/6ca04271.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { m as getRootClassName, O as Orientation, n as forwardRef, b as Theme, l as classNames } from './6589b796.js';
|
|
2
|
-
import isObject from 'lodash/isObject';
|
|
3
|
-
import { h as handleBasicClasses } from './e2afb13f.js';
|
|
4
|
-
import { u as useTheme } from './3181f000.js';
|
|
5
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
-
import { ThumbnailVariant } from './76be70dd.js';
|
|
7
|
-
import { T as Thumbnail } from './628468c4.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Component display name.
|
|
11
|
-
*/
|
|
12
|
-
const COMPONENT_NAME = 'PostBlock';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Component default class name and class prefix.
|
|
16
|
-
*/
|
|
17
|
-
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Component default props.
|
|
21
|
-
*/
|
|
22
|
-
const DEFAULT_PROPS = {
|
|
23
|
-
orientation: Orientation.horizontal
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* PostBlock component.
|
|
28
|
-
*
|
|
29
|
-
* @param props Component props.
|
|
30
|
-
* @param ref Component ref.
|
|
31
|
-
* @return React element.
|
|
32
|
-
*/
|
|
33
|
-
const PostBlock = forwardRef((props, ref) => {
|
|
34
|
-
const defaultTheme = useTheme() || Theme.light;
|
|
35
|
-
const {
|
|
36
|
-
actions,
|
|
37
|
-
attachments,
|
|
38
|
-
author,
|
|
39
|
-
className,
|
|
40
|
-
meta,
|
|
41
|
-
onClick,
|
|
42
|
-
orientation = DEFAULT_PROPS.orientation,
|
|
43
|
-
tags,
|
|
44
|
-
text,
|
|
45
|
-
theme = defaultTheme,
|
|
46
|
-
thumbnailProps,
|
|
47
|
-
title,
|
|
48
|
-
...forwardedProps
|
|
49
|
-
} = props;
|
|
50
|
-
return /*#__PURE__*/jsxs("div", {
|
|
51
|
-
ref: ref,
|
|
52
|
-
className: classNames(className, handleBasicClasses({
|
|
53
|
-
prefix: CLASSNAME,
|
|
54
|
-
orientation,
|
|
55
|
-
theme
|
|
56
|
-
})),
|
|
57
|
-
...forwardedProps,
|
|
58
|
-
children: [thumbnailProps && /*#__PURE__*/jsx("div", {
|
|
59
|
-
className: `${CLASSNAME}__thumbnail`,
|
|
60
|
-
children: /*#__PURE__*/jsx(Thumbnail, {
|
|
61
|
-
...thumbnailProps,
|
|
62
|
-
theme: theme,
|
|
63
|
-
variant: ThumbnailVariant.rounded
|
|
64
|
-
})
|
|
65
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
66
|
-
className: `${CLASSNAME}__wrapper`,
|
|
67
|
-
children: [author && /*#__PURE__*/jsx("div", {
|
|
68
|
-
className: `${CLASSNAME}__author`,
|
|
69
|
-
children: author
|
|
70
|
-
}), title && /*#__PURE__*/jsx("button", {
|
|
71
|
-
type: "button",
|
|
72
|
-
className: `${CLASSNAME}__title`,
|
|
73
|
-
onClick: onClick,
|
|
74
|
-
children: title
|
|
75
|
-
}), meta && /*#__PURE__*/jsx("span", {
|
|
76
|
-
className: `${CLASSNAME}__meta`,
|
|
77
|
-
children: meta
|
|
78
|
-
}), isObject(text) && text.__html ?
|
|
79
|
-
/*#__PURE__*/
|
|
80
|
-
// eslint-disable-next-line react/no-danger
|
|
81
|
-
jsx("p", {
|
|
82
|
-
dangerouslySetInnerHTML: text,
|
|
83
|
-
className: `${CLASSNAME}__text`
|
|
84
|
-
}) : /*#__PURE__*/jsx("p", {
|
|
85
|
-
className: `${CLASSNAME}__text`,
|
|
86
|
-
children: text
|
|
87
|
-
}), attachments && /*#__PURE__*/jsx("div", {
|
|
88
|
-
className: `${CLASSNAME}__attachments`,
|
|
89
|
-
children: attachments
|
|
90
|
-
}), (tags || actions) && /*#__PURE__*/jsxs("div", {
|
|
91
|
-
className: `${CLASSNAME}__toolbar`,
|
|
92
|
-
children: [tags && /*#__PURE__*/jsx("div", {
|
|
93
|
-
className: `${CLASSNAME}__tags`,
|
|
94
|
-
children: tags
|
|
95
|
-
}), actions && /*#__PURE__*/jsx("div", {
|
|
96
|
-
className: `${CLASSNAME}__actions`,
|
|
97
|
-
children: actions
|
|
98
|
-
})]
|
|
99
|
-
})]
|
|
100
|
-
})]
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
PostBlock.displayName = COMPONENT_NAME;
|
|
104
|
-
PostBlock.className = CLASSNAME;
|
|
105
|
-
PostBlock.defaultProps = DEFAULT_PROPS;
|
|
106
|
-
|
|
107
|
-
export { PostBlock };
|
|
108
|
-
//# sourceMappingURL=6ca04271.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"6ca04271.js","sources":["../../src/components/post-block/PostBlock.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport isObject from 'lodash/isObject';\n\nimport { Orientation, Theme, Thumbnail, ThumbnailProps, ThumbnailVariant } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface PostBlockProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Attachment content. */\n attachments?: ReactNode;\n /** Author content. */\n author?: ReactNode;\n /** Metadata content. */\n meta?: ReactNode;\n /** Orientation. */\n orientation?: Orientation;\n /** Tag content. */\n tags?: ReactNode;\n /** Content (string, or sanitized html). */\n text?: string | { __html: string };\n /** Thumbnail. */\n thumbnailProps?: ThumbnailProps;\n /** Title. */\n title: string;\n /** On click callback. */\n onClick?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'PostBlock';\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<PostBlockProps> = {\n orientation: Orientation.horizontal,\n};\n\n/**\n * PostBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const PostBlock = forwardRef<PostBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n attachments,\n author,\n className,\n meta,\n onClick,\n orientation = DEFAULT_PROPS.orientation,\n tags,\n text,\n theme = defaultTheme,\n thumbnailProps,\n title,\n ...forwardedProps\n } = props;\n\n return (\n <div\n ref={ref}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, orientation, theme }))}\n {...forwardedProps}\n >\n {thumbnailProps && (\n <div className={`${CLASSNAME}__thumbnail`}>\n <Thumbnail {...thumbnailProps} theme={theme} variant={ThumbnailVariant.rounded} />\n </div>\n )}\n <div className={`${CLASSNAME}__wrapper`}>\n {author && <div className={`${CLASSNAME}__author`}>{author}</div>}\n\n {title && (\n <button type=\"button\" className={`${CLASSNAME}__title`} onClick={onClick}>\n {title}\n </button>\n )}\n\n {meta && <span className={`${CLASSNAME}__meta`}>{meta}</span>}\n\n {isObject(text) && text.__html ? (\n // eslint-disable-next-line react/no-danger\n <p dangerouslySetInnerHTML={text} className={`${CLASSNAME}__text`} />\n ) : (\n <p className={`${CLASSNAME}__text`}>{text}</p>\n )}\n\n {attachments && <div className={`${CLASSNAME}__attachments`}>{attachments}</div>}\n {(tags || actions) && (\n <div className={`${CLASSNAME}__toolbar`}>\n {tags && <div className={`${CLASSNAME}__tags`}>{tags}</div>}\n {actions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </div>\n )}\n </div>\n </div>\n );\n});\nPostBlock.displayName = COMPONENT_NAME;\nPostBlock.className = CLASSNAME;\nPostBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","orientation","Orientation","horizontal","PostBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","attachments","author","className","meta","onClick","tags","text","theme","thumbnailProps","title","forwardedProps","_jsxs","classNames","handleBasicClasses","prefix","children","_jsx","Thumbnail","variant","ThumbnailVariant","rounded","type","isObject","__html","dangerouslySetInnerHTML","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"6da19518.js","sources":["../../src/components/skeleton/SkeletonCircle.tsx","../../src/components/skeleton/SkeletonRectangle.tsx","../../src/components/skeleton/SkeletonTypography.tsx"],"sourcesContent":["import classNames from 'classnames';\n\nimport { GlobalSize, Theme, ColorPalette } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface SkeletonCircleProps extends GenericProps, HasTheme {\n /** Size variant. */\n size: GlobalSize;\n /** The color of the skeleton. */\n color?: ColorPalette;\n}\n\nconst DEFAULT_PROPS: Partial<SkeletonCircleProps> = {};\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SkeletonCircle';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SkeletonCircle component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SkeletonCircle = forwardRef<SkeletonCircleProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const { className, size, color, theme = defaultTheme, ...forwardedProps } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, size, color, theme }))}\n />\n );\n});\nSkeletonCircle.displayName = COMPONENT_NAME;\nSkeletonCircle.defaultProps = DEFAULT_PROPS;\nSkeletonCircle.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { AspectRatio, GlobalSize, Theme, ColorPalette } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Skeleton variants.\n */\nexport const SkeletonRectangleVariant = { squared: 'squared', rounded: 'rounded', pill: 'pill' } as const;\nexport type SkeletonRectangleVariant = ValueOf<typeof SkeletonRectangleVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface SkeletonRectangleProps extends GenericProps, HasTheme {\n /** Aspect ratio (use with width and not height). */\n aspectRatio?: Extract<AspectRatio, 'square' | 'horizontal' | 'vertical' | 'wide'>;\n /** Height size. */\n height?: GlobalSize;\n /** Border variant. */\n variant?: SkeletonRectangleVariant;\n /** Width size. */\n width?: GlobalSize;\n /** The color of the skeleton. */\n color?: ColorPalette;\n}\n\nconst DEFAULT_PROPS: Partial<SkeletonRectangleProps> = {\n variant: SkeletonRectangleVariant.squared,\n};\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SkeletonRectangle';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SkeletonRectangle component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SkeletonRectangle = forwardRef<SkeletonRectangleProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n aspectRatio,\n className,\n height,\n theme = defaultTheme,\n variant = DEFAULT_PROPS.variant,\n width,\n color,\n ...forwardedProps\n } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n aspectRatio,\n height: aspectRatio ? undefined : height,\n theme,\n variant,\n width,\n color,\n }),\n )}\n >\n <div className={`${CLASSNAME}__inner`} />\n </div>\n );\n});\nSkeletonRectangle.displayName = COMPONENT_NAME;\nSkeletonRectangle.className = CLASSNAME;\nSkeletonRectangle.defaultProps = DEFAULT_PROPS;\n","import { CSSProperties } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Theme, TypographyInterface, ColorPalette } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface SkeletonTypographyProps extends GenericProps, HasTheme {\n /** Typography variant. */\n typography: TypographyInterface;\n /** Width CSS property. */\n width?: CSSProperties['width'];\n /** The color of the skeleton. */\n color?: ColorPalette;\n}\n\nconst DEFAULT_PROPS: Partial<SkeletonTypographyProps> = {};\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SkeletonTypography';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SkeletonTypography component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SkeletonTypography = forwardRef<SkeletonTypographyProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const { className, theme = defaultTheme, typography, width, color, ...forwardedProps } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme, typography, color }))}\n style={{ ...forwardedProps.style, width }}\n >\n <div className={`${CLASSNAME}__inner`} />\n </div>\n );\n});\nSkeletonTypography.displayName = COMPONENT_NAME;\nSkeletonTypography.defaultProps = DEFAULT_PROPS;\nSkeletonTypography.className = CLASSNAME;\n"],"names":["DEFAULT_PROPS","COMPONENT_NAME","CLASSNAME","getRootClassName","SkeletonCircle","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","className","size","color","theme","forwardedProps","_jsx","classNames","handleBasicClasses","prefix","displayName","defaultProps","SkeletonRectangleVariant","squared","rounded","pill","variant","SkeletonRectangle","aspectRatio","height","width","undefined","children","SkeletonTypography","typography","style"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"7093ba23.js","sources":["../../src/hooks/useClickAway.tsx","../../src/utils/ClickAwayProvider/ClickAwayProvider.tsx"],"sourcesContent":["import { RefObject, useEffect } from 'react';\n\nimport { Falsy } from '@lumx/react/utils/type';\n\nimport isEmpty from 'lodash/isEmpty';\n\nconst EVENT_TYPES = ['mousedown', 'touchstart'];\n\nfunction isClickAway(targets: HTMLElement[], refs: Array<RefObject<HTMLElement>>): boolean {\n // The targets elements are not contained in any of the listed element references.\n return !refs.some((ref) => targets.some((target) => ref?.current?.contains(target)));\n}\n\nexport interface ClickAwayParameters {\n /**\n * A callback function to call when the user clicks away from the elements.\n */\n callback: EventListener | Falsy;\n /**\n * Elements considered within the click away context (clicking outside them will trigger the click away callback).\n */\n childrenRefs: RefObject<Array<RefObject<HTMLElement>>>;\n}\n\n/**\n * Listen to clicks away from the given elements and callback the passed in function.\n *\n * Warning: If you need to detect click away on nested React portals, please use the `ClickAwayProvider` component.\n */\nexport function useClickAway({ callback, childrenRefs }: ClickAwayParameters): void {\n useEffect(() => {\n const { current: currentRefs } = childrenRefs;\n if (!callback || !currentRefs || isEmpty(currentRefs)) {\n return undefined;\n }\n const listener: EventListener = (evt) => {\n const targets = [evt.composedPath?.()[0], evt.target] as HTMLElement[];\n if (isClickAway(targets, currentRefs)) {\n callback(evt);\n }\n };\n\n EVENT_TYPES.forEach((evtType) => document.addEventListener(evtType, listener));\n return () => {\n EVENT_TYPES.forEach((evtType) => document.removeEventListener(evtType, listener));\n };\n }, [callback, childrenRefs]);\n}\n","import { createContext, RefObject, useContext, useEffect, useMemo, useRef } from 'react';\nimport { ClickAwayParameters, useClickAway } from '@lumx/react/hooks/useClickAway';\n\ninterface ContextValue {\n childrenRefs: Array<RefObject<HTMLElement>>;\n addRefs(...newChildrenRefs: Array<RefObject<HTMLElement>>): void;\n}\n\nconst ClickAwayAncestorContext = createContext<ContextValue | null>(null);\n\ninterface ClickAwayProviderProps extends ClickAwayParameters {\n /**\n * (Optional) Element that should be considered as part of the parent\n */\n parentRef?: RefObject<HTMLElement>;\n /**\n * Children\n */\n children?: React.ReactNode;\n}\n\n/**\n * Component combining the `useClickAway` hook with a React context to hook into the React component tree and make sure\n * we take into account both the DOM tree and the React tree to detect click away.\n *\n * @return the react component.\n */\nexport const ClickAwayProvider: React.FC<ClickAwayProviderProps> = ({\n children,\n callback,\n childrenRefs,\n parentRef,\n}) => {\n const parentContext = useContext(ClickAwayAncestorContext);\n const currentContext = useMemo(() => {\n const context: ContextValue = {\n childrenRefs: [],\n /**\n * Add element refs to the current context and propagate to the parent context.\n */\n addRefs(...newChildrenRefs) {\n // Add element refs that should be considered as inside the click away context.\n context.childrenRefs.push(...newChildrenRefs);\n\n if (parentContext) {\n // Also add then to the parent context\n parentContext.addRefs(...newChildrenRefs);\n if (parentRef) {\n // The parent element is also considered as inside the parent click away context but not inside the current context\n parentContext.addRefs(parentRef);\n }\n }\n },\n };\n return context;\n }, [parentContext, parentRef]);\n\n useEffect(() => {\n const { current: currentRefs } = childrenRefs;\n if (!currentRefs) {\n return;\n }\n currentContext.addRefs(...currentRefs);\n }, [currentContext, childrenRefs]);\n\n useClickAway({ callback, childrenRefs: useRef(currentContext.childrenRefs) });\n return <ClickAwayAncestorContext.Provider value={currentContext}>{children}</ClickAwayAncestorContext.Provider>;\n};\nClickAwayProvider.displayName = 'ClickAwayProvider';\n"],"names":["EVENT_TYPES","isClickAway","targets","refs","some","ref","target","current","contains","useClickAway","callback","childrenRefs","useEffect","currentRefs","isEmpty","undefined","listener","evt","composedPath","forEach","evtType","document","addEventListener","removeEventListener","ClickAwayAncestorContext","createContext","ClickAwayProvider","children","parentRef","parentContext","useContext","currentContext","useMemo","context","addRefs","newChildrenRefs","push","useRef","_jsx","Provider","value","displayName"],"mappings":"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"}
|
package/_internal/74a4a214.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { m as getRootClassName, c as Size, n as forwardRef, b as Theme, l as classNames, i as AspectRatio } from './6589b796.js';
|
|
2
|
-
import { h as handleBasicClasses } from './e2afb13f.js';
|
|
3
|
-
import { u as useTheme } from './3181f000.js';
|
|
4
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
-
import { T as Thumbnail } from './628468c4.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Component display name.
|
|
9
|
-
*/
|
|
10
|
-
const COMPONENT_NAME = 'Avatar';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Component default class name and class prefix.
|
|
14
|
-
*/
|
|
15
|
-
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Component default props.
|
|
19
|
-
*/
|
|
20
|
-
const DEFAULT_PROPS = {
|
|
21
|
-
size: Size.m
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Avatar component.
|
|
26
|
-
*
|
|
27
|
-
* @param props Component props.
|
|
28
|
-
* @param ref Component ref.
|
|
29
|
-
* @return React element.
|
|
30
|
-
*/
|
|
31
|
-
const Avatar = forwardRef((props, ref) => {
|
|
32
|
-
const defaultTheme = useTheme() || Theme.light;
|
|
33
|
-
const {
|
|
34
|
-
actions,
|
|
35
|
-
alt,
|
|
36
|
-
badge,
|
|
37
|
-
className,
|
|
38
|
-
image,
|
|
39
|
-
linkProps,
|
|
40
|
-
linkAs,
|
|
41
|
-
onClick,
|
|
42
|
-
onKeyPress,
|
|
43
|
-
size = DEFAULT_PROPS.size,
|
|
44
|
-
theme = defaultTheme,
|
|
45
|
-
thumbnailProps,
|
|
46
|
-
...forwardedProps
|
|
47
|
-
} = props;
|
|
48
|
-
return /*#__PURE__*/jsxs("div", {
|
|
49
|
-
ref: ref,
|
|
50
|
-
...forwardedProps,
|
|
51
|
-
className: classNames(className, handleBasicClasses({
|
|
52
|
-
prefix: CLASSNAME,
|
|
53
|
-
size,
|
|
54
|
-
theme
|
|
55
|
-
})),
|
|
56
|
-
children: [/*#__PURE__*/jsx(Thumbnail, {
|
|
57
|
-
linkProps: linkProps,
|
|
58
|
-
linkAs: linkAs,
|
|
59
|
-
className: `${CLASSNAME}__thumbnail`,
|
|
60
|
-
onClick: onClick,
|
|
61
|
-
onKeyPress: onKeyPress,
|
|
62
|
-
...thumbnailProps,
|
|
63
|
-
aspectRatio: AspectRatio.square,
|
|
64
|
-
size: size,
|
|
65
|
-
image: image,
|
|
66
|
-
alt: alt,
|
|
67
|
-
theme: theme
|
|
68
|
-
}), actions && /*#__PURE__*/jsx("div", {
|
|
69
|
-
className: `${CLASSNAME}__actions`,
|
|
70
|
-
children: actions
|
|
71
|
-
}), badge && /*#__PURE__*/jsx("div", {
|
|
72
|
-
className: `${CLASSNAME}__badge`,
|
|
73
|
-
children: badge
|
|
74
|
-
})]
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
Avatar.displayName = COMPONENT_NAME;
|
|
78
|
-
Avatar.className = CLASSNAME;
|
|
79
|
-
Avatar.defaultProps = DEFAULT_PROPS;
|
|
80
|
-
|
|
81
|
-
export { Avatar };
|
|
82
|
-
//# sourceMappingURL=74a4a214.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"74a4a214.js","sources":["../../src/components/avatar/Avatar.tsx"],"sourcesContent":["import { KeyboardEventHandler, MouseEventHandler, ReactElement, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { AspectRatio, Size, Theme, Thumbnail, ThumbnailProps } from '@lumx/react';\n\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Avatar sizes.\n */\nexport type AvatarSize = Extract<Size, 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface AvatarProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Image alternative text. */\n alt: string;\n /** Badge. */\n badge?: ReactElement;\n /** Image URL. */\n image: string;\n /** Props to pass to the link wrapping the thumbnail. */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** On click callback. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** On key press callback. */\n onKeyPress?: KeyboardEventHandler<HTMLDivElement>;\n /** Size variant. */\n size?: AvatarSize;\n /** Props to pass to the thumbnail (minus those already set by the Avatar props). */\n thumbnailProps?: Omit<\n ThumbnailProps,\n 'image' | 'alt' | 'size' | 'theme' | 'align' | 'fillHeight' | 'variant' | 'aspectRatio'\n >;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Avatar';\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<AvatarProps> = {\n size: Size.m,\n};\n\n/**\n * Avatar component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Avatar = forwardRef<AvatarProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n alt,\n badge,\n className,\n image,\n linkProps,\n linkAs,\n onClick,\n onKeyPress,\n size = DEFAULT_PROPS.size,\n theme = defaultTheme,\n thumbnailProps,\n ...forwardedProps\n } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, size, theme }))}\n >\n <Thumbnail\n linkProps={linkProps}\n linkAs={linkAs}\n className={`${CLASSNAME}__thumbnail`}\n onClick={onClick}\n onKeyPress={onKeyPress}\n {...thumbnailProps}\n aspectRatio={AspectRatio.square}\n size={size}\n image={image}\n alt={alt}\n theme={theme}\n />\n {actions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n {badge && <div className={`${CLASSNAME}__badge`}>{badge}</div>}\n </div>\n );\n});\nAvatar.displayName = COMPONENT_NAME;\nAvatar.className = CLASSNAME;\nAvatar.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","size","Size","m","Avatar","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","alt","badge","className","image","linkProps","linkAs","onClick","onKeyPress","theme","thumbnailProps","forwardedProps","_jsxs","classNames","handleBasicClasses","prefix","children","_jsx","Thumbnail","aspectRatio","AspectRatio","square","displayName","defaultProps"],"mappings":";;;;;;AA6CA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,QAAQ,CAAA;;AAE/B;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAmC,GAAG;EACxCC,IAAI,EAAEC,IAAI,CAACC,CAAAA;AACf,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,MAAM,GAAGC,UAAU,CAA8B,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC1E,MAAMC,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;IACFC,OAAO;IACPC,GAAG;IACHC,KAAK;IACLC,SAAS;IACTC,KAAK;IACLC,SAAS;IACTC,MAAM;IACNC,OAAO;IACPC,UAAU;IACVnB,IAAI,GAAGD,aAAa,CAACC,IAAI;AACzBoB,IAAAA,KAAK,GAAGb,YAAY;IACpBc,cAAc;IACd,GAAGC,cAAAA;AACP,GAAC,GAAGjB,KAAK,CAAA;AAET,EAAA,oBACIkB,IAAA,CAAA,KAAA,EAAA;AACIjB,IAAAA,GAAG,EAAEA,GAAI;AAAA,IAAA,GACLgB,cAAc;AAClBR,IAAAA,SAAS,EAAEU,UAAU,CAACV,SAAS,EAAEW,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAE7B,SAAS;MAAEG,IAAI;AAAEoB,MAAAA,KAAAA;AAAM,KAAC,CAAC,CAAE;IAAAO,QAAA,EAAA,cAEzFC,GAAA,CAACC,SAAS,EAAA;AACNb,MAAAA,SAAS,EAAEA,SAAU;AACrBC,MAAAA,MAAM,EAAEA,MAAO;MACfH,SAAS,EAAE,CAAGjB,EAAAA,SAAS,CAAc,WAAA,CAAA;AACrCqB,MAAAA,OAAO,EAAEA,OAAQ;AACjBC,MAAAA,UAAU,EAAEA,UAAW;AAAA,MAAA,GACnBE,cAAc;MAClBS,WAAW,EAAEC,WAAW,CAACC,MAAO;AAChChC,MAAAA,IAAI,EAAEA,IAAK;AACXe,MAAAA,KAAK,EAAEA,KAAM;AACbH,MAAAA,GAAG,EAAEA,GAAI;AACTQ,MAAAA,KAAK,EAAEA,KAAAA;AAAM,KAChB,CAAC,EACDT,OAAO,iBAAIiB,GAAA,CAAA,KAAA,EAAA;MAAKd,SAAS,EAAE,CAAGjB,EAAAA,SAAS,CAAY,SAAA,CAAA;AAAA8B,MAAAA,QAAA,EAAEhB,OAAAA;AAAO,KAAM,CAAC,EACnEE,KAAK,iBAAIe,GAAA,CAAA,KAAA,EAAA;MAAKd,SAAS,EAAE,CAAGjB,EAAAA,SAAS,CAAU,OAAA,CAAA;AAAA8B,MAAAA,QAAA,EAAEd,KAAAA;AAAK,KAAM,CAAC,CAAA;AAAA,GAC7D,CAAC,CAAA;AAEd,CAAC,EAAC;AACFV,MAAM,CAAC8B,WAAW,GAAGrC,cAAc,CAAA;AACnCO,MAAM,CAACW,SAAS,GAAGjB,SAAS,CAAA;AAC5BM,MAAM,CAAC+B,YAAY,GAAGnC,aAAa;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"76be70dd.js","sources":["../../src/components/thumbnail/types.ts"],"sourcesContent":["import React from 'react';\nimport { AspectRatio, Size } from '@lumx/react';\nimport { ValueOf } from '@lumx/react/utils/type';\n\n/**\n * Focal point using vertical alignment, horizontal alignment or coordinates (from -1 to 1).\n */\nexport type FocusPoint = { x?: number; y?: number };\n\n/**\n * Loading attribute is not yet supported in typescript, so we need\n * to add it in order to avoid a ts error.\n * https://github.com/typescript-cheatsheets/react-typescript-cheatsheet/blob/master/ADVANCED.md#adding-non-standard-attributes\n */\ndeclare module 'react' {\n interface ImgHTMLAttributes<T> extends React.HTMLAttributes<T> {\n loading?: 'eager' | 'lazy';\n }\n}\n\n/**\n * All available aspect ratios.\n * @deprecated\n */\nexport const ThumbnailAspectRatio: Record<string, AspectRatio> = { ...AspectRatio };\n\n/**\n * Thumbnail sizes.\n */\nexport type ThumbnailSize = Extract<Size, 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl'>;\n\n/**\n * Thumbnail variants.\n */\nexport const ThumbnailVariant = {\n squared: 'squared',\n rounded: 'rounded',\n} as const;\nexport type ThumbnailVariant = ValueOf<typeof ThumbnailVariant>;\n\n/**\n * Thumbnail object fit.\n */\nexport const ThumbnailObjectFit = {\n cover: 'cover',\n contain: 'contain',\n} as const;\nexport type ThumbnailObjectFit = ValueOf<typeof ThumbnailObjectFit>;\n"],"names":["ThumbnailAspectRatio","AspectRatio","ThumbnailVariant","squared","rounded","ThumbnailObjectFit","cover","contain"],"mappings":";;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACO,MAAMA,oBAAiD,GAAG;EAAE,GAAGC,WAAAA;AAAY,EAAC;;AAEnF;AACA;AACA;;AAGA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAG;AAC5BC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,OAAO,EAAE,SAAA;AACb,EAAU;AAGV;AACA;AACA;AACO,MAAMC,kBAAkB,GAAG;AAC9BC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,OAAO,EAAE,SAAA;AACb;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"78df9309.js","sources":["../../src/utils/type/isComponent.ts"],"sourcesContent":["import type { ReactElement, ReactNode } from 'react';\nimport get from 'lodash/get';\nimport type { Comp } from './Comp';\n\n/**\n * Properties of a component to use to determine it's name.\n * In the order of preference.\n */\nconst NAME_PROPERTIES: string[] = [\n 'type',\n 'type.displayName',\n 'displayName',\n 'name',\n 'type.name',\n 'props.mdxType',\n '_reactInternalFiber.elementType.name',\n];\n/**\n * Create a predicate function that checks if a ReactNode is a react element from the given component.\n *\n * @param component React function component or the component name\n * @return predicate returning true if value is instance of the component\n */\nexport const isComponent =\n <C>(component: Comp<C, any> | string) =>\n (instance: ReactNode): instance is ReactElement => {\n const componentName = typeof component === 'string' ? component : component.displayName;\n\n return (\n !!get(instance, '$$typeof') &&\n NAME_PROPERTIES.some((nameProperty: string): boolean => get(instance, nameProperty) === componentName)\n );\n };\n"],"names":["NAME_PROPERTIES","isComponent","component","instance","componentName","displayName","get","some","nameProperty"],"mappings":";;AAIA;AACA;AACA;AACA;AACA,MAAMA,eAAyB,GAAG,CAC9B,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,sCAAsC,CACzC,CAAA;AACD;AACA;AACA;AACA;AACA;AACA;MACaC,WAAW,GAChBC,SAAgC,IACnCC,QAAmB,IAA+B;EAC/C,MAAMC,aAAa,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACG,WAAW,CAAA;EAEvF,OACI,CAAC,CAACC,GAAG,CAACH,QAAQ,EAAE,UAAU,CAAC,IAC3BH,eAAe,CAACO,IAAI,CAAEC,YAAoB,IAAcF,GAAG,CAACH,QAAQ,EAAEK,YAAY,CAAC,KAAKJ,aAAa,CAAC,CAAA;AAE9G;;;;"}
|
package/_internal/7b221b05.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/** Resolve color & color variant from a `ColorWithVariants` and optionally a `ColorVariant`. */
|
|
2
|
-
function resolveColorWithVariants(colorWithVariants, colorVariant) {
|
|
3
|
-
if (!colorWithVariants) return [undefined, colorVariant];
|
|
4
|
-
const [color, baseColorVariant] = colorWithVariants.split('-');
|
|
5
|
-
return [color, colorVariant || baseColorVariant];
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export { resolveColorWithVariants as r };
|
|
9
|
-
//# sourceMappingURL=7b221b05.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"7b221b05.js","sources":["../../../lumx-core/src/js/utils/className/resolveColorWithVariants.ts"],"sourcesContent":["import { ColorPalette, ColorVariant, ColorWithVariants } from '../../constants';\n\n/** Resolve color & color variant from a `ColorWithVariants` and optionally a `ColorVariant`. */\nexport function resolveColorWithVariants(\n colorWithVariants?: ColorWithVariants,\n colorVariant?: ColorVariant,\n): [color?: ColorPalette, colorVariant?: ColorVariant] {\n if (!colorWithVariants) return [undefined, colorVariant];\n const [color, baseColorVariant] = colorWithVariants.split('-');\n return [color as ColorPalette, (colorVariant || baseColorVariant) as ColorVariant];\n}\n"],"names":["resolveColorWithVariants","colorWithVariants","colorVariant","undefined","color","baseColorVariant","split"],"mappings":"AAEA;AACO,SAASA,wBAAwBA,CACpCC,iBAAqC,EACrCC,YAA2B,EACwB;EACnD,IAAI,CAACD,iBAAiB,EAAE,OAAO,CAACE,SAAS,EAAED,YAAY,CAAC,CAAA;EACxD,MAAM,CAACE,KAAK,EAAEC,gBAAgB,CAAC,GAAGJ,iBAAiB,CAACK,KAAK,CAAC,GAAG,CAAC,CAAA;AAC9D,EAAA,OAAO,CAACF,KAAK,EAAmBF,YAAY,IAAIG,gBAAgB,CAAkB,CAAA;AACtF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"7daf0f24.js","sources":["../../src/hooks/useRovingTabIndex.tsx"],"sourcesContent":["import { RefObject, useEffect } from 'react';\n\ninterface UseRovingTabIndexOptions {\n parentRef: RefObject<HTMLElement>;\n elementSelector: string;\n keepTabIndex?: boolean;\n /** Action to trigger when an element is focused using roving tab index */\n onElementFocus?: (element: HTMLElement) => void;\n /** List of values to be used as extra dependencies of the useEffect */\n extraDependencies?: any[];\n}\n\nexport const useRovingTabIndex = ({\n parentRef,\n elementSelector,\n keepTabIndex,\n onElementFocus,\n extraDependencies = [],\n}: UseRovingTabIndexOptions): void => {\n useEffect(\n () => {\n const parent = parentRef?.current;\n if (!parent) {\n return undefined;\n }\n\n const elements = parent.querySelectorAll(elementSelector) as NodeListOf<HTMLElement>;\n const initialFocusableElement = parent?.querySelector(`${elementSelector}[tabindex=\"0\"]`);\n\n const handleKeyDown = (index: number) => (evt: KeyboardEvent) => {\n let newTabFocus = index;\n if (!(evt.key === 'ArrowRight' || evt.key === 'ArrowLeft')) {\n return;\n }\n\n if (evt.key === 'ArrowRight') {\n // Move right\n newTabFocus += 1;\n // If we're at the end, go to the start\n if (newTabFocus >= elements.length) {\n newTabFocus = 0;\n }\n } else if (evt.key === 'ArrowLeft') {\n // Move left\n newTabFocus -= 1;\n if (newTabFocus < 0) {\n // If we're at the start, move to the end\n newTabFocus = elements.length - 1;\n }\n }\n const newElement = elements[newTabFocus];\n newElement?.focus();\n\n // When an element is focused using roving tab index, trigger the onElementFocus callback\n if (newElement && onElementFocus) {\n onElementFocus(newElement);\n }\n\n if (keepTabIndex) {\n (evt.currentTarget as HTMLElement).setAttribute('tabindex', '-1');\n newElement?.setAttribute('tabindex', '0');\n }\n };\n\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n // if no element has tabindex set to 0, set the first element as focusable\n if (!initialFocusableElement && key === 0) {\n el.setAttribute('tabindex', '0');\n // set all other to -1\n } else if (initialFocusableElement !== el) {\n el.setAttribute('tabindex', '-1');\n }\n // add event listener\n el.addEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n\n // Cleanup listeners\n return () => {\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n el.removeEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [parentRef, ...extraDependencies],\n );\n};\n"],"names":["useRovingTabIndex","parentRef","elementSelector","keepTabIndex","onElementFocus","extraDependencies","useEffect","parent","current","undefined","elements","querySelectorAll","initialFocusableElement","querySelector","handleKeyDown","index","evt","newTabFocus","key","length","newElement","focus","currentTarget","setAttribute","forEach","el","addEventListener","removeEventListener"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"7f54e947.js","sources":["../../../lumx-icons/dist/esm/magnify-minus-outline.js","../../../lumx-icons/dist/esm/magnify-plus-outline.js","../../src/components/image-lightbox/constants.ts","../../src/hooks/useSizeOnWindowResize.ts","../../src/hooks/useImageSize.ts","../../src/utils/object/isEqual.ts","../../src/components/image-lightbox/internal/usePointerZoom.ts","../../src/components/image-lightbox/internal/useAnimateScroll.ts","../../src/components/image-lightbox/internal/ImageSlide.tsx","../../src/components/image-lightbox/internal/ImageSlideshow.tsx","../../src/utils/react/unref.ts","../../src/utils/browser/DOM/startViewTransition.ts","../../src/utils/browser/DOM/findImage.tsx","../../src/components/image-lightbox/useImageLightbox.tsx","../../src/components/image-lightbox/ImageLightbox.tsx"],"sourcesContent":["export const mdiMagnifyMinusOutline = 'M15.5 14h-.79l-.28-.27A6.5 6.5 0 0 0 16 9.5 6.5 6.5 0 0 0 9.5 3 6.5 6.5 0 0 0 3 9.5 6.5 6.5 0 0 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 5 1.5-1.5zm-6 0C7 14 5 12 5 9.5S7 5 9.5 5 14 7 14 9.5 12 14 9.5 14M7 9h5v1H7z';","export const mdiMagnifyPlusOutline = 'm15.5 14 5 5-1.5 1.5-5-5v-.79l-.27-.28A6.5 6.5 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3 6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.57 4.23l.28.27zm-6 0C12 14 14 12 14 9.5S12 5 9.5 5 5 7 5 9.5 7 14 9.5 14m2.5-4h-2v2H9v-2H7V9h2V7h1v2h2z';","import { getRootClassName } from '@lumx/core/js/utils/className';\n\n/**\n * Component display name.\n */\nexport const COMPONENT_NAME = 'ImageLightbox';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n","import React from 'react';\n\nimport throttle from 'lodash/throttle';\nimport { RectSize } from '@lumx/react/utils/type';\n\n/**\n * Observe element size (only works if it's size depends on the window size).\n *\n * (Not using ResizeObserver for better browser backward compat)\n *\n * @param elementRef Element to observe\n * @return the size and a manual update callback\n */\nexport function useSizeOnWindowResize(elementRef: React.RefObject<HTMLElement>): [RectSize | null, () => void] {\n const [size, setSize] = React.useState<null | RectSize>(null);\n const updateSize = React.useMemo(\n () =>\n throttle(() => {\n const newSize = elementRef.current?.getBoundingClientRect();\n if (newSize) setSize(newSize);\n }, 10),\n [elementRef],\n );\n React.useEffect(() => {\n updateSize();\n window.addEventListener('resize', updateSize);\n return () => window.removeEventListener('resize', updateSize);\n }, [updateSize]);\n return [size, updateSize];\n}\n","import React from 'react';\nimport { RectSize } from '@lumx/react/utils/type';\n\n/** Get natural image size after load. */\nexport function useImageSize(imgRef: React.RefObject<HTMLImageElement>, getInitialSize?: () => RectSize | null) {\n const [imageSize, setImageSize] = React.useState<null | RectSize>(getInitialSize || null);\n React.useEffect(() => {\n const { current: img } = imgRef;\n if (!img) {\n return undefined;\n }\n const onLoad = () => setImageSize({ width: img.naturalWidth, height: img.naturalHeight });\n img.addEventListener('load', onLoad);\n return () => img.removeEventListener('load', onLoad);\n }, [imgRef]);\n return imageSize;\n}\n","/** Minimal recursive deep equal of JS values */\nexport function isEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) return true;\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) return false;\n return keys1.every((key1) => isEqual(obj1[key1], obj2[key1]));\n }\n return false;\n}\n","import React from 'react';\nimport type { Point } from '@lumx/react/utils/type';\nimport type { useAnimateScroll } from './useAnimateScroll';\n\n/**\n * Listen to mouse wheel + ctrl and multi-pointer pinch to zoom\n */\nexport function usePointerZoom(\n scrollAreaRef: React.RefObject<HTMLDivElement>,\n onScaleChange: ((value: number) => void) | undefined,\n animateScroll: ReturnType<typeof useAnimateScroll>,\n) {\n const [isPointerZooming, setPointerZooming] = React.useState(false);\n React.useEffect(() => {\n const scrollArea = scrollAreaRef.current as HTMLDivElement;\n if (!scrollArea || !onScaleChange) {\n return undefined;\n }\n\n let animationFrame: number | null;\n let zoomStateTimeoutId: ReturnType<typeof setTimeout> | null;\n\n function updateScaleOnNextFrame(newScale: number, mousePosition: Point): void {\n // Cancel previously scheduled frame\n if (animationFrame) cancelAnimationFrame(animationFrame);\n\n // Cancel previously scheduled zoom state change\n if (zoomStateTimeoutId) clearTimeout(zoomStateTimeoutId);\n\n function nextFrame() {\n setPointerZooming(true);\n onScaleChange?.(newScale);\n\n animationFrame = null;\n // Wait a bit before indicating the pointer zooming is finished\n zoomStateTimeoutId = setTimeout(() => setPointerZooming(false), 100);\n }\n animationFrame = requestAnimationFrame(nextFrame);\n\n // Animate scroll in parallel (centering on the current mouse position)\n animateScroll(mousePosition, {\n width: scrollArea.scrollWidth,\n height: scrollArea.scrollHeight,\n });\n }\n\n function onWheel(event: WheelEvent) {\n if (!event.ctrlKey) {\n return;\n }\n event.preventDefault();\n const newScale = Math.exp(-event.deltaY / 50);\n\n // Update scale on next frame (focused on the mouse position)\n updateScaleOnNextFrame(newScale, {\n x: event.clientX,\n y: event.clientY,\n });\n }\n\n const activePointers: Record<PointerEvent['pointerId'], PointerEvent> = {};\n let prevDistance: number | null = null;\n let previousCenterPoint: Point | null = null;\n\n function onPointerDown(event: PointerEvent) {\n activePointers[event.pointerId] = event;\n }\n function onPointerMove(event: PointerEvent) {\n // Update pointer in cache\n if (activePointers[event.pointerId]) {\n activePointers[event.pointerId] = event;\n }\n\n const pointers = Object.values(activePointers);\n\n // Make sure we run computation on one of the pointer in the group\n if (pointers[0]?.pointerId !== event.pointerId) {\n return;\n }\n\n // Centered point between all pointers\n const centerPoint: Point = {\n x: pointers.reduce((x, { clientX }) => x + clientX, 0) / pointers.length,\n y: pointers.reduce((y, { clientY }) => y + clientY, 0) / pointers.length,\n };\n\n // Movement of the center point\n const deltaCenterPoint = previousCenterPoint && {\n left: previousCenterPoint.x - centerPoint.x,\n top: previousCenterPoint.y - centerPoint.y,\n };\n\n // Pan X & Y\n if (deltaCenterPoint) {\n // Apply movement of the center point to the scroll\n scrollArea.scrollBy({\n top: deltaCenterPoint.top / 2,\n left: deltaCenterPoint.left / 2,\n });\n }\n\n // Pinch to zoom\n if (pointers.length === 2) {\n const [pointer1, pointer2] = pointers;\n const distance = Math.hypot(pointer2.clientX - pointer1.clientX, pointer2.clientY - pointer1.clientY);\n\n if (prevDistance && deltaCenterPoint) {\n const delta = prevDistance - distance;\n const absDelta = Math.abs(delta);\n\n // Zoom only if we are \"pinching\" more than we are moving the pointers\n if (absDelta > Math.abs(deltaCenterPoint.left) && absDelta > Math.abs(deltaCenterPoint.top)) {\n // Update scale on next frame (focused on the center point between the two pointers)\n const newScale = Math.exp(-delta / 100);\n updateScaleOnNextFrame(newScale, centerPoint);\n }\n }\n\n prevDistance = distance;\n }\n\n previousCenterPoint = centerPoint;\n }\n function onPointerUp(event: PointerEvent) {\n prevDistance = null;\n previousCenterPoint = null;\n delete activePointers[event.pointerId];\n }\n\n scrollArea.addEventListener('wheel', onWheel, { passive: false });\n const isMultiTouch = navigator.maxTouchPoints >= 2;\n if (isMultiTouch) {\n scrollArea.addEventListener('pointerdown', onPointerDown);\n scrollArea.addEventListener('pointermove', onPointerMove);\n scrollArea.addEventListener('pointerup', onPointerUp);\n }\n return () => {\n scrollArea.removeEventListener('wheel', onWheel);\n if (isMultiTouch) {\n scrollArea.removeEventListener('pointerdown', onPointerDown);\n scrollArea.removeEventListener('pointermove', onPointerMove);\n scrollArea.removeEventListener('pointerup', onPointerUp);\n }\n };\n }, [animateScroll, onScaleChange, scrollAreaRef]);\n\n return isPointerZooming;\n}\n","import React from 'react';\nimport type { Point, RectSize } from '@lumx/react/utils/type';\n\n/** Maintains the scroll position centered relative to the original scroll area's dimensions when the content scales. */\nexport function useAnimateScroll(scrollAreaRef: React.RefObject<HTMLDivElement>) {\n return React.useMemo(() => {\n let animationFrame: number | null = null;\n\n return function animate(centerPoint?: Point, initialScrollAreaSize?: RectSize) {\n const scrollArea = scrollAreaRef.current as HTMLDivElement;\n if (!scrollArea) {\n return;\n }\n\n // Cancel previously running animation\n if (animationFrame) cancelAnimationFrame(animationFrame);\n\n // Center on the given point or else on the scroll area visual center\n const clientHeightRatio = centerPoint?.y ? centerPoint.y / scrollArea.clientHeight : 0.5;\n const clientWidthRatio = centerPoint?.x ? centerPoint.x / scrollArea.clientWidth : 0.5;\n\n const initialScrollHeight = initialScrollAreaSize?.height || scrollArea.scrollHeight;\n const initialScrollWidth = initialScrollAreaSize?.width || scrollArea.scrollWidth;\n\n const heightCenter = scrollArea.scrollTop + scrollArea.clientHeight * clientHeightRatio;\n const heightRatio = heightCenter / initialScrollHeight;\n\n const widthCenter = scrollArea.scrollLeft + scrollArea.clientWidth * clientWidthRatio;\n const widthRatio = widthCenter / initialScrollWidth;\n\n let prevScrollHeight = 0;\n let prevScrollWidth = 0;\n\n function nextFrame() {\n const { scrollHeight, scrollWidth, clientHeight, clientWidth } = scrollArea;\n\n // Scroll area stopped expanding => stop animation\n if (scrollHeight === prevScrollHeight && scrollWidth === prevScrollWidth) {\n animationFrame = null;\n return;\n }\n\n // Compute next scroll position\n const top = heightRatio * scrollHeight - clientHeight * clientHeightRatio;\n const left = widthRatio * scrollWidth - clientWidth * clientWidthRatio;\n\n scrollArea.scrollTo({ top, left });\n prevScrollHeight = scrollHeight;\n prevScrollWidth = scrollWidth;\n animationFrame = requestAnimationFrame(nextFrame);\n }\n animationFrame = requestAnimationFrame(nextFrame);\n };\n }, [scrollAreaRef]);\n}\n","import React from 'react';\n\nimport { SlideshowItem, Thumbnail } from '@lumx/react';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useSizeOnWindowResize } from '@lumx/react/hooks/useSizeOnWindowResize';\nimport { useImageSize } from '@lumx/react/hooks/useImageSize';\nimport { isReducedMotion } from '@lumx/react/utils/browser/isReducedMotion';\nimport { isEqual } from '@lumx/react/utils/object/isEqual';\n\nimport { CLASSNAME } from '../constants';\nimport { usePointerZoom } from './usePointerZoom';\nimport { useAnimateScroll } from './useAnimateScroll';\nimport type { ImageProps } from '../types';\n\nexport interface ImageSlideProps {\n image: ImageProps;\n isActive?: boolean;\n scale?: number;\n onScaleChange?: (value: number) => void;\n}\n\n/** Internal image slide component for ImageLightbox */\nexport const ImageSlide = React.memo((props: ImageSlideProps) => {\n const {\n isActive,\n scale,\n onScaleChange,\n image: { image, imgRef: propImgRef, imgProps, alt, loadingPlaceholderImageRef },\n } = props;\n\n // Get scroll area size\n const scrollAreaRef = React.useRef<HTMLDivElement>(null);\n const [scrollAreaSize, updateSize] = useSizeOnWindowResize(scrollAreaRef);\n React.useEffect(() => {\n // Update size when active\n if (isActive) updateSize();\n }, [isActive, updateSize]);\n\n // Get image size\n const imgRef = React.useRef<HTMLImageElement>(null);\n const imageSize = useImageSize(imgRef, () => {\n const width = Number.parseInt(imgProps?.width as any, 10);\n const height = Number.parseInt(imgProps?.height as any, 10);\n return width && height ? { width, height } : null;\n });\n\n // Calculate new image size with scale\n const scaledImageSize = React.useMemo(() => {\n if (!scrollAreaSize || !imageSize) {\n return null;\n }\n const horizontalScale = scrollAreaSize.width / imageSize.width;\n const verticalScale = scrollAreaSize.height / imageSize.height;\n const baseScale = Math.min(1, Math.min(horizontalScale, verticalScale));\n return {\n width: imageSize.width * baseScale * (scale ?? 1),\n height: imageSize.height * baseScale * (scale ?? 1),\n };\n }, [scrollAreaSize, imageSize, scale]);\n\n // Animate scroll to preserve the center of the current visible window in the scroll area\n const animateScroll = useAnimateScroll(scrollAreaRef);\n\n // Zoom via mouse wheel or multi-touch pinch zoom\n const isPointerZooming = usePointerZoom(scrollAreaRef, onScaleChange, animateScroll);\n\n // Animate scroll on scale change\n React.useLayoutEffect(() => {\n if (scale && !isPointerZooming) {\n animateScroll();\n }\n }, [isPointerZooming, scale, animateScroll]);\n\n const isScrollable =\n scaledImageSize &&\n scrollAreaSize &&\n (scaledImageSize.width > scrollAreaSize.width || scaledImageSize.height > scrollAreaSize.height);\n\n return (\n <SlideshowItem\n ref={scrollAreaRef}\n // Make it accessible to keyboard nav when the zone is scrollable\n tabIndex={isScrollable ? 0 : undefined}\n className={`${CLASSNAME}__image-slide`}\n >\n <Thumbnail\n imgRef={useMergeRefs(imgRef, propImgRef)}\n image={image}\n alt={alt}\n className={`${CLASSNAME}__thumbnail`}\n imgProps={{\n ...imgProps,\n style: {\n ...imgProps?.style,\n ...(scaledImageSize || {\n maxHeight: scrollAreaSize?.height,\n maxWidth: scrollAreaSize?.width,\n }),\n // Only animate when scale is set, and we are not pointer zooming and the user does not prefer reduced motion\n transition: scale && !isPointerZooming && !isReducedMotion() ? 'all 250ms' : undefined,\n },\n }}\n loadingPlaceholderImageRef={loadingPlaceholderImageRef}\n />\n </SlideshowItem>\n );\n}, isEqual);\n","import React from 'react';\n\nimport { mdiMagnifyMinusOutline, mdiMagnifyPlusOutline } from '@lumx/icons';\nimport { FlexBox, IconButton, Slides, SlideshowControls } from '@lumx/react';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\n\nimport memoize from 'lodash/memoize';\nimport { ImageCaption } from '../../image-block/ImageCaption';\nimport { CLASSNAME } from '../constants';\nimport type { ImagesProps, InheritedSlideShowProps, ZoomButtonProps } from '../types';\nimport { ImageSlide } from './ImageSlide';\n\nexport interface ImageSlideshowProps extends InheritedSlideShowProps, ZoomButtonProps, ImagesProps {\n currentPaginationItemRef?: React.Ref<HTMLButtonElement>;\n footerRef?: React.Ref<HTMLDivElement>;\n}\n\n/** Internal image slideshow component for ImageLightbox */\nexport const ImageSlideshow: React.FC<ImageSlideshowProps> = ({\n activeImageIndex,\n images,\n slideGroupLabel,\n zoomInButtonProps,\n zoomOutButtonProps,\n slideshowControlsProps,\n currentPaginationItemRef,\n footerRef,\n activeImageRef,\n}) => {\n const {\n activeIndex,\n slideshowId,\n setSlideshow,\n slideshowSlidesId,\n slidesCount,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n toggleAutoPlay,\n } = SlideshowControls.useSlideshowControls({\n itemsCount: images.length,\n activeIndex: activeImageIndex,\n });\n\n // Image metadata (caption)\n const title = images[activeIndex]?.title;\n const description = images[activeIndex]?.description;\n const tags = images[activeIndex]?.tags;\n const metadata =\n title || description || tags ? (\n <ImageCaption as=\"div\" title={title} description={description} tags={tags} align=\"center\" />\n ) : null;\n\n // Slideshow controls\n const slideShowControls =\n slidesCount > 1 && slideshowControlsProps ? (\n <SlideshowControls\n activeIndex={activeIndex}\n slidesCount={slidesCount}\n onNextClick={onNextClick}\n onPreviousClick={onPreviousClick}\n onPaginationClick={onPaginationClick}\n {...slideshowControlsProps}\n paginationItemProps={(index: number) => {\n const props = slideshowControlsProps?.paginationItemProps?.(index) || {};\n return {\n ...props,\n ref: mergeRefs(\n (props as any)?.ref,\n // Focus the active pagination item once on mount\n activeIndex === index ? currentPaginationItemRef : undefined,\n ),\n };\n }}\n />\n ) : null;\n\n // Zoom controls\n const [scale, setScale] = React.useState<number | undefined>(undefined);\n const zoomEnabled = zoomInButtonProps && zoomOutButtonProps;\n const onScaleChange = React.useMemo(() => {\n if (!zoomEnabled) return undefined;\n return (newScale: number) => {\n setScale((prevScale = 1) => Math.max(1, newScale * prevScale));\n };\n }, [zoomEnabled]);\n const zoomIn = React.useCallback(() => onScaleChange?.(1.5), [onScaleChange]);\n const zoomOut = React.useCallback(() => onScaleChange?.(0.5), [onScaleChange]);\n React.useEffect(() => {\n // Reset scale on slide change\n if (typeof activeIndex === 'number') setScale(undefined);\n }, [activeIndex]);\n const zoomControls = zoomEnabled && (\n <>\n <IconButton {...zoomInButtonProps} emphasis=\"low\" icon={mdiMagnifyPlusOutline} onClick={zoomIn} />\n <IconButton\n {...zoomOutButtonProps}\n emphasis=\"low\"\n isDisabled={!scale || scale <= 1}\n icon={mdiMagnifyMinusOutline}\n onClick={zoomOut}\n />\n </>\n );\n\n const getImgRef = React.useMemo(\n () =>\n memoize(\n (index: number, isActive: boolean) => {\n return mergeRefs(images?.[index].imgRef, isActive ? activeImageRef : undefined);\n },\n // memoize based on both arguments\n (...args) => args.join(),\n ),\n [images, activeImageRef],\n );\n\n return (\n <>\n <Slides\n activeIndex={activeIndex}\n slideGroupLabel={slideGroupLabel}\n fillHeight\n id={slideshowId}\n ref={setSlideshow}\n slidesId={slideshowSlidesId}\n toggleAutoPlay={toggleAutoPlay}\n >\n {images.map(({ image, imgRef, ...imageProps }, index) => {\n const isActive = index === activeIndex;\n return (\n <ImageSlide\n isActive={isActive}\n key={image}\n image={{\n ...imageProps,\n image,\n imgRef: getImgRef(index, isActive),\n }}\n scale={isActive ? scale : undefined}\n onScaleChange={onScaleChange}\n />\n );\n })}\n </Slides>\n {(metadata || slideShowControls || zoomControls) && (\n <FlexBox\n ref={footerRef}\n className={`${CLASSNAME}__footer`}\n orientation=\"vertical\"\n vAlign=\"center\"\n gap=\"big\"\n >\n {metadata}\n\n <FlexBox className={`${CLASSNAME}__footer-actions`} orientation=\"horizontal\" gap=\"regular\">\n {slideShowControls}\n {zoomControls}\n </FlexBox>\n </FlexBox>\n )}\n </>\n );\n};\n","import { MaybeElementOrRef } from '@lumx/react/utils/type';\n\n/** Unref a react ref or element */\nexport function unref(maybeElement: MaybeElementOrRef<HTMLElement>) {\n if (maybeElement instanceof HTMLElement) return maybeElement;\n return maybeElement?.current;\n}\n","import ReactDOM from 'react-dom';\n\nimport { MaybeElementOrRef } from '@lumx/react/utils/type';\n\nimport { unref } from '../../react/unref';\nimport { isReducedMotion } from '../isReducedMotion';\n\nfunction setupViewTransitionName(elementRef: MaybeElementOrRef<HTMLElement>, name: string) {\n let originalName: string | null = null;\n return {\n set() {\n const element = unref(elementRef);\n if (!element) return;\n originalName = element.style.viewTransitionName;\n element.style.viewTransitionName = name;\n },\n unset() {\n const element = unref(elementRef);\n if (!element || originalName === null) return;\n element.style.viewTransitionName = originalName;\n },\n };\n}\n\n/**\n * Wrapper around the `document.startViewTransition` handling browser incompatibilities, react DOM flush and\n * user preference.\n *\n * @param changes callback containing the changes to apply within the view transition.\n * @param setViewTransitionName set the `viewTransitionName` style on a `source` & `target` to morph these elements.\n */\nexport async function startViewTransition({\n changes,\n viewTransitionName,\n}: {\n changes: () => void;\n viewTransitionName: {\n source: MaybeElementOrRef<HTMLElement>;\n target: MaybeElementOrRef<HTMLElement>;\n name: string;\n };\n}) {\n const start = (document as any)?.startViewTransition?.bind(document);\n const prefersReducedMotion = isReducedMotion();\n const { flushSync } = ReactDOM as any;\n if (prefersReducedMotion || !start || !flushSync || !viewTransitionName?.source || !viewTransitionName?.target) {\n // Skip, apply changes without a transition\n changes();\n return;\n }\n\n // Setup set/unset transition name on source & target\n const sourceTransitionName = setupViewTransitionName(viewTransitionName.source, viewTransitionName.name);\n const targetTransitionName = setupViewTransitionName(viewTransitionName.target, viewTransitionName.name);\n\n sourceTransitionName.set();\n\n // Start view transition, apply changes & flush to DOM\n await start(() => {\n sourceTransitionName.unset();\n\n flushSync(changes);\n\n targetTransitionName.set();\n }).updateCallbackDone;\n\n targetTransitionName.unset();\n}\n","/** Find image in element including the element */\nexport const findImage = (element: HTMLElement | null): HTMLImageElement | null =>\n element?.matches('img') ? (element as HTMLImageElement) : element?.querySelector('img') || null;\n","import React from 'react';\n\nimport memoize from 'lodash/memoize';\n\nimport { startViewTransition } from '@lumx/react/utils/browser/DOM/startViewTransition';\nimport { findImage } from '@lumx/react/utils/browser/DOM/findImage';\n\nimport type { ImageLightboxProps } from './types';\nimport { CLASSNAME } from './constants';\n\n/** Subset of the ImageLightboxProps managed by the useImageLightbox hook */\ntype ManagedProps = Pick<\n ImageLightboxProps,\n 'isOpen' | 'images' | 'parentElement' | 'activeImageRef' | 'onClose' | 'activeImageIndex'\n>;\n\nconst EMPTY_PROPS: ManagedProps = { isOpen: false, images: [], parentElement: React.createRef() };\n\ntype TriggerOptions = Pick<ImageLightboxProps, 'activeImageIndex'>;\n\n/**\n * Set up an ImageLightbox with images and triggers.\n *\n * - Associate a trigger with the lightbox to properly focus the trigger on close\n * - Associate a trigger with an image to display on open\n * - Automatically provide a view transition between an image trigger and the displayed image on open & close\n *\n * @param props Images to display in the image lightbox\n */\nexport function useImageLightbox<P extends Partial<ImageLightboxProps>>(\n props: P,\n): {\n /**\n * Generates trigger props\n * @param index Provide an index to choose which image to display when the image lightbox opens.\n * */\n getTriggerProps: (options?: TriggerOptions) => { onClick: React.MouseEventHandler; ref: React.Ref<any> };\n /** Props to forward to the ImageLightbox */\n imageLightboxProps: ManagedProps & P;\n} {\n const propsRef = React.useRef(props);\n\n React.useEffect(() => {\n propsRef.current = props;\n }, [props]);\n\n // Keep reference for each image elements\n const imageRefsRef = React.useRef<Array<React.RefObject<HTMLImageElement>>>([]);\n\n const currentImageRef = React.useRef<HTMLImageElement>(null);\n const [imageLightboxProps, setImageLightboxProps] = React.useState(\n () => ({ ...EMPTY_PROPS, ...props }) as ManagedProps & P,\n );\n\n const getTriggerProps = React.useMemo(() => {\n const triggerImageRefs: Record<number, React.RefObject<HTMLImageElement>> = {};\n\n async function close() {\n const currentImage = currentImageRef.current;\n if (!currentImage) {\n return;\n }\n const currentIndex = imageRefsRef.current.findIndex(\n (imageRef) => imageRef.current === currentImage,\n ) as number;\n\n await startViewTransition({\n changes() {\n // Close lightbox\n setImageLightboxProps((prevProps) => ({ ...prevProps, isOpen: false }));\n },\n // Morph from the image in lightbox to the image in trigger\n viewTransitionName: {\n source: currentImageRef,\n target: triggerImageRefs[currentIndex],\n name: CLASSNAME,\n },\n });\n }\n\n async function open(triggerElement: HTMLElement, { activeImageIndex }: TriggerOptions = {}) {\n // If we find an image inside the trigger, animate it in transition with the opening image\n const triggerImage = triggerImageRefs[activeImageIndex as any]?.current || findImage(triggerElement);\n\n // Inject refs to improve transition and loading style\n const images = propsRef.current?.images?.map((image, idx) => {\n // Get or create image reference\n let imgRef = imageRefsRef.current[idx];\n if (!imgRef) {\n imgRef = React.createRef();\n imageRefsRef.current[idx] = imgRef;\n }\n\n // Try to use the trigger image as the loading placeholder\n const loadingPlaceholderImageRef =\n triggerImage && idx === activeImageIndex ? { current: triggerImage } : undefined;\n\n return { loadingPlaceholderImageRef, ...image, imgRef };\n });\n\n await startViewTransition({\n changes: () => {\n // Open lightbox with setup props\n setImageLightboxProps((prevProps) => ({\n ...prevProps,\n ...propsRef.current,\n activeImageRef: currentImageRef,\n parentElement: { current: triggerElement },\n isOpen: true,\n onClose: () => {\n close();\n propsRef.current?.onClose?.();\n },\n images,\n activeImageIndex: activeImageIndex || 0,\n }));\n },\n // Morph from the image in trigger to the image in lightbox\n viewTransitionName: {\n source: triggerImage,\n target: currentImageRef,\n name: CLASSNAME,\n },\n });\n }\n\n return memoize((options?: TriggerOptions) => ({\n ref(element: HTMLElement | null) {\n // Track trigger image ref if any\n if (options?.activeImageIndex !== undefined && element) {\n triggerImageRefs[options.activeImageIndex] = { current: findImage(element) };\n }\n },\n onClick(e: React.MouseEvent) {\n open(e.target as HTMLElement, options);\n },\n }));\n }, []);\n\n return { getTriggerProps, imageLightboxProps };\n}\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { Lightbox, ThemeProvider } from '@lumx/react';\nimport { ClickAwayProvider } from '@lumx/react/utils';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { ImageSlideshow } from './internal/ImageSlideshow';\nimport { useImageLightbox } from './useImageLightbox';\nimport type { ImageLightboxProps } from './types';\nimport { CLASSNAME, COMPONENT_NAME } from './constants';\n\nconst Inner = forwardRef<ImageLightboxProps, HTMLDivElement>((props, ref) => {\n const {\n className,\n isOpen,\n closeButtonProps,\n onClose,\n parentElement,\n activeImageIndex,\n slideshowControlsProps,\n slideGroupLabel,\n images,\n zoomOutButtonProps,\n zoomInButtonProps,\n activeImageRef: propImageRef,\n ...forwardedProps\n } = props;\n const currentPaginationItemRef = React.useRef(null);\n const footerRef = React.useRef(null);\n const imageRef = React.useRef(null);\n const clickAwayChildrenRefs = React.useRef([imageRef, footerRef]);\n\n const onClickAway = React.useCallback(\n (evt: Event) => {\n const targetElement = evt.target;\n if (!(targetElement instanceof HTMLElement) || !(evt instanceof MouseEvent)) return;\n\n // Skip click away if clicking on the scrollbar\n if (targetElement.clientWidth < evt.clientX || targetElement.clientHeight < evt.clientY) return;\n\n onClose?.();\n },\n [onClose],\n );\n\n return (\n <Lightbox\n ref={ref}\n className={classNames(className, CLASSNAME)}\n parentElement={parentElement}\n isOpen={isOpen}\n onClose={onClose}\n closeButtonProps={closeButtonProps}\n focusElement={currentPaginationItemRef}\n {...forwardedProps}\n // Disable the close on click away as we want a custom one here\n preventAutoClose\n >\n <ClickAwayProvider childrenRefs={clickAwayChildrenRefs} callback={onClickAway}>\n <ThemeProvider value=\"dark\">\n <ImageSlideshow\n activeImageIndex={activeImageIndex}\n slideGroupLabel={slideGroupLabel}\n slideshowControlsProps={slideshowControlsProps}\n images={images}\n zoomInButtonProps={zoomInButtonProps}\n zoomOutButtonProps={zoomOutButtonProps}\n footerRef={footerRef}\n activeImageRef={useMergeRefs(propImageRef, imageRef)}\n currentPaginationItemRef={currentPaginationItemRef}\n />\n </ThemeProvider>\n </ClickAwayProvider>\n </Lightbox>\n );\n});\nInner.displayName = COMPONENT_NAME;\nInner.className = CLASSNAME;\n\n/**\n * ImageLightbox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ImageLightbox = Object.assign(Inner, { useImageLightbox });\n"],"names":["mdiMagnifyMinusOutline","mdiMagnifyPlusOutline","COMPONENT_NAME","CLASSNAME","getRootClassName","useSizeOnWindowResize","elementRef","size","setSize","React","useState","updateSize","useMemo","throttle","newSize","current","getBoundingClientRect","useEffect","window","addEventListener","removeEventListener","useImageSize","imgRef","getInitialSize","imageSize","setImageSize","img","undefined","onLoad","width","naturalWidth","height","naturalHeight","isEqual","obj1","obj2","keys1","Object","keys","keys2","length","every","key1","usePointerZoom","scrollAreaRef","onScaleChange","animateScroll","isPointerZooming","setPointerZooming","scrollArea","animationFrame","zoomStateTimeoutId","updateScaleOnNextFrame","newScale","mousePosition","cancelAnimationFrame","clearTimeout","nextFrame","setTimeout","requestAnimationFrame","scrollWidth","scrollHeight","onWheel","event","ctrlKey","preventDefault","Math","exp","deltaY","x","clientX","y","clientY","activePointers","prevDistance","previousCenterPoint","onPointerDown","pointerId","onPointerMove","pointers","values","centerPoint","reduce","deltaCenterPoint","left","top","scrollBy","pointer1","pointer2","distance","hypot","delta","absDelta","abs","onPointerUp","passive","isMultiTouch","navigator","maxTouchPoints","useAnimateScroll","animate","initialScrollAreaSize","clientHeightRatio","clientHeight","clientWidthRatio","clientWidth","initialScrollHeight","initialScrollWidth","heightCenter","scrollTop","heightRatio","widthCenter","scrollLeft","widthRatio","prevScrollHeight","prevScrollWidth","scrollTo","ImageSlide","memo","props","isActive","scale","image","propImgRef","imgProps","alt","loadingPlaceholderImageRef","useRef","scrollAreaSize","Number","parseInt","scaledImageSize","horizontalScale","verticalScale","baseScale","min","useLayoutEffect","isScrollable","_jsx","SlideshowItem","ref","tabIndex","className","children","Thumbnail","useMergeRefs","style","maxHeight","maxWidth","transition","isReducedMotion","ImageSlideshow","activeImageIndex","images","slideGroupLabel","zoomInButtonProps","zoomOutButtonProps","slideshowControlsProps","currentPaginationItemRef","footerRef","activeImageRef","activeIndex","slideshowId","setSlideshow","slideshowSlidesId","slidesCount","onNextClick","onPaginationClick","onPreviousClick","toggleAutoPlay","SlideshowControls","useSlideshowControls","itemsCount","title","description","tags","metadata","ImageCaption","as","align","slideShowControls","paginationItemProps","index","mergeRefs","setScale","zoomEnabled","prevScale","max","zoomIn","useCallback","zoomOut","zoomControls","_jsxs","_Fragment","IconButton","emphasis","icon","onClick","isDisabled","getImgRef","memoize","args","join","Slides","fillHeight","id","slidesId","map","imageProps","FlexBox","orientation","vAlign","gap","unref","maybeElement","HTMLElement","setupViewTransitionName","name","originalName","set","element","viewTransitionName","unset","startViewTransition","changes","start","document","bind","prefersReducedMotion","flushSync","ReactDOM","source","target","sourceTransitionName","targetTransitionName","updateCallbackDone","findImage","matches","querySelector","EMPTY_PROPS","isOpen","parentElement","createRef","useImageLightbox","propsRef","imageRefsRef","currentImageRef","imageLightboxProps","setImageLightboxProps","getTriggerProps","triggerImageRefs","close","currentImage","currentIndex","findIndex","imageRef","prevProps","open","triggerElement","triggerImage","idx","onClose","options","e","Inner","forwardRef","closeButtonProps","propImageRef","forwardedProps","clickAwayChildrenRefs","onClickAway","evt","targetElement","MouseEvent","Lightbox","classNames","focusElement","preventAutoClose","ClickAwayProvider","childrenRefs","callback","ThemeProvider","value","displayName","ImageLightbox","assign"],"mappings":"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"}
|